jw3b@crosshair15: ~/cooling
~❯JW3B.

~❯ cat Cooling_Mod_Report.md

MSI Crosshair 15 // Cooling Mod Guide

Four hardware mods with researched alternatives, a zero-hardware software path, a decision matrix, and Linux-native tuning and validation for the i9-12900H and RTX 3070 Ti. Every number below was read from this machine.

./start --free ./decide ./validate git clone

// baseline 2026-09-06 · tools/thermal_baseline.sh
pkg_temp96 °C CRIT
core_spread29 °C
fans6857 / 6233 rpm boost=on
PL1 / PL230 W / 45 W spec 45/115
throttle_count3,231,620 +6/s
gpu45 °C · 25 W · idle
msi-ecshift=unknown(192) fan=auto
kernel7.0.0-31 · ubuntu 24.04.4 · x11
verdict: TIM failed or mount uneven → Mod 4 first
~❯ less readme.md jw3b.dev

This document contains the deep-dive build guides, complete parts lists, and risk mitigation strategies for all four major cooling modifications. As your MSI Crosshair 15 (i9-12900H, RTX 3070 Ti) is being used as a desktop replacement, these guides assume you are comfortable permanently altering the chassis.

~❯ less part-0.md jw3b.dev

#Part 0: System Baseline (Ubuntu, 2026-09-06)

Before any mod, these are the numbers this specific machine produced under light desktop load (a browser and a DisplayLink dock, load average 0.8). Everything below was read from the running Ubuntu system, not from Windows tools.

##The Machine

ItemValue
ModelMSI Crosshair 15 B12UGSZ (Micro-Star International)
CPU / GPU12th Gen Intel Core i9-12900H (6P + 8E, 20 threads) / NVIDIA GeForce RTX 3070 Ti Laptop
Memory / Disk64 GiB / 3.1 TB (two NVMe drives)
FirmwareBIOS E1583IMS.112, EC firmware 1583EMS1.111 (2024-08-07)
OSUbuntu 24.04.4 LTS, kernel 7.0.0-31-generic, GNOME 46 on X11
Drivers loadedmsi_ec, msi_wmi_platform (fan RPM), coretemp, nvidia 595.84, thermald active

##Live Thermal Snapshot

MetricReadingComment
CPU package temperature96 °C (CRIT alarm)At near-idle. Package hit 90 °C again seconds after dropping to 70 °C.
Hottest vs coolest coreCore 4 = 96 °C, Core 8 = 67 °C29 °C spread. A healthy mount shows under 10 to 15 °C.
Fans6857 / 6233 RPMcooler_boost=on, fan_mode=auto. The fans are already at maximum.
MSI shift modeunknown (192)msi-ec cannot map the current EC mode on this firmware. Modes offered: eco, comfort, turbo.
CPU power limits (RAPL)PL1 = 30 W, PL2 = 45 WIntel spec for the 12900H is 45 W / 115 W. The EC is already power-throttling hard.
CPU governorpowersave (intel_pstate), 4.9 GHz maxActual clocks during the snapshot: 1.8 to 2.6 GHz.
Package throttle counter3,231,620 and rising ~6 per secondThe CPU is being throttled continuously, even at idle.
GPU45 °C at 25 W idle, 795 MHzPower limit 115 W default, 140 W max reported by the driver.
NVMe / Wi-Fi44 to 47 °C / 53 °CFine.

##What The Numbers Say

  • The thermal interface has failed or the heatsink is not seated evenly. Ninety-six degrees at idle with both fans at full speed and a 29 °C gap between cores on the same die is the signature of pumped-out or dried factory paste, or a heatsink that only touches part of the die. More airflow (Mod 1) cannot fix this. Do Mod 4 (or at minimum Mod 0 step 1, the dust clean) before anything else.
  • The 30 W / 45 W power limits are a symptom, not a setting. No MSI performance mode on this platform is that low: Notebookcheck measured a 121 W PL2 on the sister Crosshair 15 R6E in every mode [S1]. The EC has clamped power in response to its own thermal telemetry. Raising the limits in software before fixing the cooling will only push temperatures higher; raise them after Mod 4 (Part 5b) and expect the EC to keep re-asserting them until the sensors calm down.
  • Check for bi-directional PROCHOT. MSI firmware can throttle the CPU because the GPU or VRM sensor is hot, even when the CPU die is not [S6][S18]. The throttle counter climbing at idle with a 45 °C GPU makes a CPU-side cause more likely here, but the combined soak in Part 6b is what settles it.
  • The GPU is fine right now because it is idle. Its 115 W limit and the shared heatpipes mean it will push the CPU hotter under gaming load, so validate both together (Part 6b).
  • Re-capture after every change with tools/thermal_baseline.sh 2 <label> (Part 6b) so every mod has a before and after CSV.
~❯ less mod-0.md jw3b.dev

#Mod 0: The Zero-Hardware Software Path

Everything here is free, reversible and done from a terminal on Ubuntu. Do it in this order, re-logging with thermal_baseline.sh after each step, and stop as soon as the idle package temperature is sane. If step 1 alone drops idle by 10 °C or more, the problem was dust and Mod 4 can wait.

##Options

  • Option A: Dust clean (do this first, $0): Bottom cover off, compressed air out through the fin stacks from the inside, fans held still with a finger. Generic guides put dust alone at 10 to 15 °C on a 2 to 4 year old gaming laptop; combined with a repaste 20 to 30 °C [S27]. Low-medium confidence on the numbers, high confidence it costs nothing.
  • Option B: Set the EC modes from Linux: This box runs the out-of-tree msi-ec DKMS driver, version 0.13 [L1]. Its config for firmware 1583EMS1 knows three shift modes (eco, comfort, turbo) and three fan modes (auto, silent, advanced); there is no custom fan-curve attribute in any msi-ec version [L3]. The unknown (192) reading is EC value 0xC0, which is "sport" in the driver's other config tables but missing from this model's table, so the EC is most likely in its default sport mode and the driver simply cannot name it (medium confidence, read from the driver source).
  cat /sys/devices/platform/msi-ec/available_shift_modes      # eco comfort turbo
  echo turbo   | sudo tee /sys/devices/platform/msi-ec/shift_mode    # after Mod 4; use comfort until then
  echo silent  | sudo tee /sys/devices/platform/msi-ec/fan_mode      # auto | silent | advanced
  echo off     | sudo tee /sys/devices/platform/msi-ec/cooler_boost  # it is stuck on right now

Revert: write the previous value back. msi_wmi_platform (in-tree, gives the fan RPM) shares the same EC memory [L7]; leave it loaded for the RPM readings, but do not run two tools that write the EC at once.

  • Option C: Cap the CPU power and calm the governor: Alder Lake-H keeps most of its multi-core performance up to about 65 to 75 W; above that the extra watts are mostly heat [S7]. This machine is already at 30 / 45 W by the EC's choice, so today the useful move is the opposite: stop the sawtooth, not cut further. EPP is already performance here, which fights the powersave governor; set it to balanced until the mount is fixed.
  echo balance_performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
  echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo      # kill turbo spikes; revert with 0
  sudo cpupower frequency-set -u 3.0GHz                                # or cap the ceiling; revert with -u 4.9GHz

[L39] [L35]

  • Option D: Frame-rate cap in games: CPU and GPU power scale with rendered frames; one Overclock.net report saw roughly 50 W less CPU package power from a cap in a CPU-bound title [S29]. Set it per game or install MangoHud (fps_limit=); it is not installed here yet.
  • Option E: Drive the desktop from the Intel iGPU: Right now Xorg lists NVIDIA-0 as the source output, so the 3070 Ti draws the desktop and idles at 25 W. Switching to PRIME render offload (iGPU primary, NVIDIA as an offload GPU, runtime D3 already enabled on this driver) removes that heat and the GPU's share of the heatpipes [L26] [L27]. This is a display-stack change: on MSI it usually also means picking hybrid mode in the BIOS. It does not touch the CPU idle problem, so it is last on the list.
  • Option F: Pin the browser to E-cores: taskset -c 12-19 brave keeps a chatty browser off the P-cores that are hitting 96 °C. Anecdotal benefit, zero risk.

##What not to expect

  • CPU voltage undervolting does not exist on this CPU. Non-HX 12th-gen mobile parts ship with the voltage-offset MSR locked; Notebookcheck's summary is that Intel and the OEMs killed it [S3] [L33]. The hidden-BIOS unlock in Part 5 is unverified on BIOS E1583IMS.112 and may show the toggles without them working.
  • Cooling pads do not fix idle temperatures. Every pad and vacuum-cooler result found is a load-temperature result [H9]. If idle is 96 °C, no fan under the laptop changes that.
~❯ less mod-1.md jw3b.dev

#Mod 1: The "Forced Induction" Blower Pad & Chassis Cut

This modification leverages an industrial-grade sealed centrifugal blower to force massive amounts of air through your laptop, overriding the laptop's weak internal fans. We will maximize this by cutting away the restrictive plastic intake grills.

##Options

  • Option A: The Extreme Pressure Setup (IETS GT600 / Llano V3): The most powerful, most expensive (~$100), and loudest option. Uses a magnetic memory foam seal to guarantee 100% static pressure. Best performance.
  • Option B: The Mid-Tier Setup (IETS GT300 / KLIM Ultimate): Cheaper (~$50-$70) and slightly quieter, but uses weaker blowers. Good if you want to avoid ear-piercing noise but still want a massive upgrade over stock fans.
  • Option C: DIY Noctua Shroud: 3D-printing a custom base that seals to your laptop and holds two 120mm Noctua industrialPPC fans. Requires CAD skills but offers the best noise-to-performance ratio.

##More Options (2026 research)

  • Option D: Side-exhaust vacuum cooler (IETS GT202UB class, $25 to $40): Clips over the rear exhaust and pulls air through the laptop. Independent-ish sources put it at 8 to 15 °C on load temps, usually ahead of under-blowing pads, but only if its pull direction matches the laptop's own exhaust; if it fights the internal fans it does nothing [H10][H11]. Fully reversible, no disassembly.
  • Option E: A plain stand, or nothing but elevation ($0 to $20): Jarrod'sTech's multi-laptop pad test (via secondary summaries) found a bare stand gave 4 to 10 °C on some laptops, matching cheaper pads [H9]. Try this before buying anything; it isolates how much of the problem is the desk blocking the intake.
  • Option F: Open bottom with a mesh filter ($10): Run without the bottom cover, with a magnetic mesh filter over the exposed intakes. Zero restriction, but every bump risks the fans and the exposed board. Only for a machine that never leaves the desk.
  • Option G: DIY blower from a server fan: A Delta or Nidec 97 mm blower in a 3D-printed duct. No sourced results exist for this on laptops; it is a project, not a purchase. Unverified.

Reality check on vendor claims. The only disclosed-methodology test found is Notebookcheck's: a generic top-selling pad on an MSI GP65 dropped the CPU 12 °C (92 to 80 °C) and the GPU 6 °C, at the cost of 5 dBA more noise [H9]. Sealed-pad vendor claims of 15 to 20 °C look inflated against that; plan on about 10 °C from Option A and 5 °C from Option B [H1][H5][H7]. Two corrections to the shopping list: no "IETS GT700" exists as a listed product, and "Tryone" coolers could not be verified at all, so neither is in the parts list. None of this moves an idle temperature; airflow options only help after Mod 4 fixes the mount.

##Parts List (For Option A)

  1. High-Pressure Cooling Pad: IETS GT600 (V1 or V2) or Llano V3.
  2. Rotary Tool: Dremel with a plastic-cutting wheel or fine sanding drum.
  3. Filing tools / Sandpaper: To smooth the cut edges.

##Build Guide

  1. Disassembly: Unplug the laptop, remove all bottom screws, and carefully pry off the bottom plastic chassis cover. Do not cut the chassis while it is attached to the motherboard.
  2. Marking the Cuts: Look at the bottom chassis cover. Identify the vent areas that sit directly over the two laptop fans. Mark a circle that exactly matches the circumference of the fans.
  3. Cutting: Using the Dremel, carefully cut away the plastic grill covering the fans. You are essentially creating two large, unobstructed holes directly above the fan intakes.
  4. Deburring: Sand the edges of your cuts so no plastic shavings can fall into the fans.
  5. Reassembly: Reattach the bottom chassis.
  6. Mating to the Blower: Place the laptop on the cooler. Adjust the foam blocks so they create a 100% airtight seal against the bottom of the laptop.
  7. Operation: The sealed foam means all air pushed by the blower must exhaust out of the laptop's side/rear vents. You can now lower the laptop's internal fan curve to reduce wear.

##Risk Mitigation

  • Dust Accumulation: The blower pad will push more dust into your system. Both the IETS and Llano have washable dust filters on their intakes. Clean them weekly.
  • Over-spinning Internal Fans: Blower pads push so much air they can manually spin your laptop fans faster than they are designed to go, wearing out their bearings. Set your laptop fans to a constant 50% speed in MSI Center to engage their motors and provide resistance.
Mod Illustration
~❯ less mod-2.md jw3b.dev

#Mod 2: The "Frankenstein" Desktop Air Cooler Swap

This mod bypasses the laptop's heatsink entirely and uses standard PC tower coolers for massive thermal mass and silent fans.

##Options

  • Option A: Low-Profile Downdraft Coolers (Noctua NH-L9i / ID-COOLING IS-30): The safest option. These are lighter, reducing the risk of cracking the die, and the fans blow down onto the motherboard, cooling the VRMs and VRAM naturally.
  • Option B: Dual Tower Coolers (Thermalright Peerless Assassin 120): Extreme thermal mass. Allows passive or completely silent cooling. However, they are incredibly heavy and pose a severe risk of cracking the laptop die if bumped.
  • Option C: Server 1U Copper Heatsinks: Using flat, heavy 1U server copper blocks with a high-RPM fan wall blowing across them. Easier to mount safely than towers, very industrial look.

##More Options (2026 research)

  • Option D: A fresh stock heatsink assembly ($40 to $80): Before bolting anything exotic on, consider that a warped baseplate is one of the causes of the 29 °C core spread. Heatsink part E32-2500871-HH7 is listed as shared across Katana GF66, Sword 15, Pulse GL66, WF66, Creator M16 and Crosshair 15 [H30], so replacements are plentiful. Same cooling capacity as stock, but flat.
  • Option E: AIO cold plate direct on the dies: Documented one-off builds exist (a desktop cooler bolted to a GTX 1060 laptop, the Overclockers.com cooler mod) [H43][H44]. Same zip-tie mounting risks as Options A and B, but the pump-block is lighter than a tower and the radiator can live off the board. Medium confidence that it works; single-builder evidence.
  • Option F: Peltier / TEC on a heatsink: Not recommended. The TEC's hot side needs its own big cooler, and the cold side sits below dew point in any humid room; condensation on a laptop board is the documented failure mode [H45][H46]. Nobody found has run one inside a laptop for long.
  • Heatsink lapping: Only desktop cases were found. Laptop baseplates are thin copper or vapor chamber sections and easier to ruin than a tower base; treat as unverified and high risk.

Dropped idea: the "donor heatsink from a bigger MSI". No community thread shows a Raider GE66 or Vector GP66 heatsink dropping into this chassis; GE66 is a different chassis, and the Pulse/Katana family shares the same cooler as the Crosshair, so there is no upgrade to borrow [H30][H32].

##Parts List (For Option A)

  1. Desktop Coolers: 2x low-profile coolers (e.g., Noctua NH-L9i).
  2. Thermal Interface: Honeywell PTM7950 phase-change pads.
  3. Mounting Hardware: Heavy-duty nylon zip ties, custom 3D printed brackets, and nylon washers.
  4. Fan Adapters: VGA/Laptop PWM fan to standard 4-pin PC fan adapter cables.

##Build Guide

  1. Teardown: Remove the bottom chassis permanently. Unplug the battery and remove the stock MSI heatsink.
  2. Prep the Dies: Clean the bare silicon of the 12900H and RTX 3070 Ti. Apply PTM7950 pads.
  3. Cooler Placement: Place the desktop heatsink cold-plates directly onto the dies.
  4. Mounting: Standard coolers do not fit laptop holes. Thread heavy-duty zip ties through the motherboard's heatsink screw holes, loop them through the desktop cooler brackets, and pull tight. Use nylon washers between the zip-tie head and motherboard to avoid scraping traces.
  5. Fan Wiring: Connect the desktop fans to the laptop's motherboard using the adapter cables.
  6. Invert the Setup: The laptop must now sit upside down, or be mounted vertically.

##Risk Mitigation

  • Die Cracking (Critical Risk): Laptop CPUs/GPUs are "bare die". If you tighten the zip ties unevenly, the cooler will tilt and crack the silicon, destroying the laptop. Tighten in a cross-pattern, millimeter by millimeter.
  • VRM/VRAM Cooling (If using Option B): Tower coolers do not blow air onto the motherboard. You must attach small adhesive copper heatsinks to the VRAM chips and VRMs, and aim a separate fan at them.
Mod Illustration
~❯ less mod-3.md jw3b.dev

#Mod 3: External Water Cooling Loop

The ultimate cooling mod. We will attach a water-cooling loop directly to the laptop's existing vapor chamber or directly to the dies.

##Options

  • Option A: The Copper Tube Mod: The most common. Flattened copper tubes are soldered or thermally glued to the top of your existing MSI laptop heatsink. You keep the laptop fans, but add a massive external water loop to assist.
  • Option B: Direct-Die Universal Waterblocks: Removing the stock heatsink entirely and zip-tying small generic 40x40mm copper waterblocks directly to the CPU and GPU dies. Requires separate VRM cooling but offers better die temperatures than Option A.
  • Option C: Custom Milled Coldplate: The ultimate, most expensive route. Designing a custom copper block in CAD that covers the CPU, GPU, VRAM, and VRMs perfectly, and having it CNC milled.

##More Options (2026 research)

  • Option D: Clamp-on copper block over the existing heatpipes: A flat copper water block clamped (not glued or soldered) across the heatpipe run above the CPU. Forum builds report it works with paste between block and pipe, at lower efficiency than a bonded tube but with no risk of cooking the vapor chamber [H39]. Reversible.
  • Option E: Quick-disconnect loop: Alphacool Eiszapfen G1/4 no-drip couplers let the laptop unplug from the radiator stand without draining. Still a desktop-parts build; no current commercial laptop water-cooling kit exists in 2024 to 2026 despite what AliExpress listings imply [dropped].
  • Option F: Chiller or TEC sub-ambient loop: The dew-point control maths is real and used on desktop benches [H40][H41][H42], but no source runs it inside a laptop chassis. Keep coolant above room temperature; anything colder is unproven on a laptop and one humid day from a dead board.

##Parts List (For Option A)

  1. Mod Kit: Search AliExpress for "Laptop Water Cooling Copper Tube". Needs flat copper tubing (2mm-3mm thick).
  2. Thermal Adhesive: High-conductivity thermal glue (e.g., Fujikura) OR low-temperature solder paste.
  3. External Loop: 240mm/360mm PC Radiator, 12V Pump/Res combo, Quick-disconnect fittings, silicone tubing.

##Build Guide

  1. Chassis Modification: Dremel a slot in the bottom chassis where the water tubes will exit.
  2. Prepping the Heatsink: Identify the flattest area of the heatpipes above the CPU/GPU. Sand the black paint off until bare copper is exposed.
  3. Attaching the Tubes:
  • Bend the flat copper tube to follow the heatsink and exit the chassis hole.
  • Method A (Glue): Coat the sanded heatpipe with thermal epoxy, press the flat water tube onto it, and clamp tightly for 24 hours.
  • Method B (Solder): Apply low-melt solder paste, clamp tubes, and use a heat gun to reflow. (Warning: high heat can boil and ruin the stock heatpipes. Glue is safer).
  1. Plumbing: Reinstall the heatsink. Attach soft tubing to the new copper tube. Route to your external pump/radiator.
  2. Filling: Fill the external reservoir with distilled water + biocide. Run the pump to bleed air.

##Risk Mitigation

  • Solder vs Glue: Soldering provides better heat transfer but is extremely risky for the stock vapor chamber.
  • Condensation: If your loop runs too cold compared to the room, condensation will form and short the motherboard. Keep water temp slightly above ambient.
~❯ less mod-4.md jw3b.dev

#Mod 4: The Core Thermal Interface Overhaul

Regardless of the mod you choose, fixing the factory thermal interface is the mandatory foundation.

##Options

  • Option A: Phase Change Material (Honeywell PTM7950): The highly recommended route. Melts at 45C to act like liquid, solidifies when cool. Zero pump-out effect, lasts years, no electrical shorting risk. Performs almost as well as liquid metal.
  • Option B: Liquid Metal (Thermal Grizzly Conductonaut): Absolute best thermal transfer. Extremely dangerous. Requires applying conformal coating (nail polish for electronics) to the microscopic resistors around the CPU/GPU to prevent shorts, and creating foam dams to stop the metal from spilling out.
  • Option C: High-End Traditional Paste (SYY-157 / Thermalright TF8): The easiest. Very thick pastes designed to resist "pump-out" on direct-die laptops. Requires repasting every 6-8 months as they dry out.

##More Options (2026 research)

  • Option D: Thermal Grizzly KryoSheet graphene pad ($20 to $25): Correction to common advice: it is electrically conductive. Thermal Grizzly sells Kapton sheets specifically to insulate around it; treat it like liquid metal for shorting risk, minus the migration [H16][H18]. Head-to-head it trails PTM7950 by 2 to 3 °C, and one 14-week test saw it separate and form voids while PTM7950 stayed bonded [H19]. On a laptop that flexes, stay with Option A.
  • Option E: Diagnose and fix mount pressure first: When the heatsink comes off, read the paste footprint. A thin, even squish means contact was fine and the paste simply failed; a thick patch on one side means the heatsink is not touching the whole die, which is what a 29 °C core spread looks like [H36]. Fix in this order: check the baseplate for warp (replace it, Mod 2 Option D); then a thin copper shim with paste both sides if the die sits low [H37][H38]; only then consider washers. Stacking washers unevenly is itself a documented cause of uneven pressure [H35], so add identical washers to every screw or none.
  • Option F: PTM7958 and Heilos as PTM7950 substitutes: PTM7958 is the same Honeywell material under a customer part number (Framework sells it), also available as a paste, so buy whichever is cheaper [H14][H15]. Thermalright Heilos tested as a "medium quality" 0.2 mm pad in Igor'sLab's five-way roundup and may be a rebrand; it is a budget fallback, not an equal [H20][H21].
  • Option G: Conductonaut Extreme instead of Conductonaut: Roughly 18 % higher conductivity on the spec sheet and a wider temperature range, but no laptop-specific measurement exists; treat it as a small increment on top of Option B's risks [H22][H23].
  • VRAM and VRM putty, resolved: Upsiren U6 Pro (about 12.8 W/mK, non-conductive) is the easy one; UX Pro measures 1 to 2 °C better but is harder to work with [H25][H26]. K5 Pro could not be verified in this pass. Putty matters more on this chassis than most: the teardown snippet reports the sixth heatpipe that serves the VRM and VRAM is not tied into either fan's fin stack [H27], so those parts rely on contact quality alone.

Chassis-specific notes. Thickness matters: a 0.05 mm mismatch in the PTM7950 cut can cost 3 to 5 °C on a thin die [H13], so cut to the die outline, not larger. Use MSI's own MS-15P2 Crosshair (GL) service guide for the screw order [H34], after confirming its model code matches the B12UGSZ label under the battery. The LaptopMedia teardown reports two CPU heatpipes and three GPU heatpipes with two fans [H27][H28]; it could not be fetched in full, so verify against the machine when it is open.

##Parts List (For Option A)

  1. Thermal Interface: Honeywell PTM7950 Phase Change Thermal Pad (40x80mm sheet).
  2. Thermal Putty: Upsiren U6 Pro or K5 Pro (for VRAM/VRMs).
  3. Cleaning Supplies: 99% Isopropyl Alcohol, Q-tips.

##Build Guide

  1. Disassembly: Remove the bottom chassis and stock heatsink.
  2. Cleaning: Completely remove all factory grey thermal paste from the dies and factory thermal pads from the memory/VRMs. Clean until shiny.
  3. PTM7950 Application:
  • Put the PTM7950 sheet in the freezer for 10 minutes.
  • Cut a piece exactly to the size of the bare silicon CPU die and GPU die.
  • Peel one side, stick to the die, and carefully peel the top plastic using tweezers.
  1. Thermal Putty Application: Apply small "balls" of Upsiren U6 Pro/K5 Pro onto every VRM and VRAM chip. Putty squishes perfectly, ensuring the heatsink sits 100% flat on the die with maximum pressure (unlike aftermarket thermal pads which are often too thick).
  2. Reassembly: Screw the heatsink back down in the numbered order.
Mod Illustration
~❯ less readme.md jw3b.dev

#Alternatives to Modding

Not every fix is a mod. These are the routes that avoid cutting plastic, ranked by how much of the problem they actually address on this machine.

RouteCostFixes the 96 °C idle?Verdict for this laptop
Dust clean + repaste by a shopRoughly $50 to $150 labour (unverified 2026 pricing, confirm locally [S27]) plus $15 of PTM7950 if you supply itYes, if that is the causeThe sane default if you do not want to open it yourself. Insist on PTM7950 or a thick paste, not generic grey paste.
Warranty / RMAFree if coveredYesA 2022 B12U unit is almost certainly outside MSI's standard two-year warranty in 2026 unless extended cover was bought [inferred, not sourced]. Worth one call before any chassis cut voids it for good.
External GPU$300 to $600NoNot available. The Crosshair 15 has no Thunderbolt 4; its USB-C is 3.2 Gen 1 [S22][S23]. Only an OCuLink M.2 hack would work, and it does nothing for CPU heat anyway.
Desktop offload / thin clientCost of the other machineSidesteps itIf the heavy work moves to a desktop or server and the laptop just displays it, the laptop runs cool by definition. Already the pattern for anyone with a GPU box on the LAN.
Replace the machine$1,500+YesThe honest comparison point for Mods 2 and 3: a $300 water loop on a 2022 laptop competes with a used 2024 laptop with a healthier cooler.
Live with a power capFreePartlyCap PL1 around 45 to 65 W and lock a frame rate. Most of the multi-core performance is captured by about 65 to 75 W on Alder Lake-H [S7]; above that, watts buy heat, not speed. Does not fix a bad mount, but stops the throttle sawtooth.

When each beats the mods: the shop repaste beats Mod 4 only on time, not result. Replacement beats Mods 2 and 3 on cost once you count the tools and the risk of a cracked die. Nothing in this table beats Mod 1 for a desktop-replacement machine that is already repasted, because a sealed blower is cheap, reversible and needs no disassembly.

~❯ less readme.md jw3b.dev

#Tiers and Decision Matrix

Every option in this guide, ordered by how much you have to commit. Expected gains are for sustained load on this chassis after a good mount; "idle fix" says whether the option addresses the 96 °C idle problem from Part 0. Costs are 2026 street prices, unverified for your region.

##The Ladder

TierWhat it isCostReversibleWarrantyExpected gain
T0 FreeMod 0: dust clean, msi-ec modes, power caps, frame cap, stand$0 to $20YesKept5 to 15 °C if dust is the cause; stops the throttle sawtooth [S3]
T1 Under $50Vacuum cooler or mid-tier pad (Mod 1 D/B); PTM7950 + putty repaste (Mod 4 A)$25 to $50YesVoided only if a seal is brokenRepaste: typically 10 to 20 °C on a failed mount [H13]; pad: 5 to 12 °C load [H9]
T2 Under $150Sealed blower pad (Mod 1 A); fresh heatsink (Mod 2 D); liquid metal (Mod 4 B)$60 to $150MostlyGone if the heatsink is replacedPad about 10 °C load; LM 1 to 5 °C over PTM7950 [H19]
T3 Chassis cutMod 1 with intake grills cut outPad + $30 toolsNoGoneA few °C over T2, mainly lower fan noise
T4 ExtremeMod 2 desktop cooler or Mod 3 water loop$150 to $400NoGone20 °C+ and near-silent, at real risk of a cracked die

##Decision Matrix

OptionCostRisk to hardwareIdle fix?Load gainReversibleWorks from Linux
Mod 0 dust clean$0LowLikely partial5 to 15 °CYesn/a
Mod 0 power caps and EPP$0NoneNo (masks it)Stops throttling, costs speedYesYes, RAPL and msi-ec (Part 5b)
Mod 0 frame cap$0NoneNoUp to tens of watts less [S29]YesYes, per game or via MangoHud
Mod 1 A sealed pad$80 to $110Low, dustNoAbout 10 °CYesn/a
Mod 1 D vacuum cooler$25 to $40LowNo8 to 15 °CYesn/a
Mod 1 chassis cutToolsMediumNoSmall extraNon/a
Mod 2 D fresh heatsink$40 to $80LowYes, if warpedRestores stockYesn/a
Mod 2 A/B/E desktop cooler$60 to $150High, die crackYes20 °C+NoFan control lost
Mod 3 A/D water on heatpipes$150 to $300Medium to highYes15 to 25 °CPartly (D)External pump only
Mod 4 A PTM7950 + putty$25LowYes10 to 20 °CYesn/a
Mod 4 B liquid metal$15 + coatingMedium, shortsYesBest by 1 to 5 °CMessyn/a
Mod 4 D KryoSheet$25Medium, conductiveYes2 to 3 °C worse than AYesn/a
Mod 4 E shim / pressure$5Medium, over-torqueYesFixes the spreadYesn/a
Shop repaste$50 to $150LowYesSame as Mod 4 AYesn/a
Replace laptop$1,500+NoneYesEverythingn/aDepends

Recommended path for this machine: T0 dust clean and re-log; T1 repaste with a mount-pressure check (Mod 4 A + E) and re-log; then, because it lives on a desk, T1 vacuum cooler or T2 sealed pad; then Part 5b to lift the power limits and Part 6b to prove it. Only if the combined soak still throttles does T4 make sense.

~❯ less part-5.md jw3b.dev

#Part 5: Post-Mod Power Tuning & Software

Unlocking your thermals is only half the battle. You must adjust the software to pull more wattage.

##1. CPU Tuning (Undervolting & Unlocking)

  • Unlocking the BIOS: Reboot. In the BIOS, hold Right Ctrl + Right Shift + Left Alt and press F2.
  • Enable Overclocking: Go to Advanced -> OverClocking Performance Menu. Enable OverClocking and XTU Interface.
  • Undervolting: Boot into Windows, download ThrottleStop. Apply a -50mV to -70mV core voltage offset. This allows the CPU to sustain its maximum turbo indefinitely.

##2. GPU Tuning (Overclocking & VBIOS Flashing)

  • MSI Afterburner: Apply a +150MHz Core Clock and +500MHz Memory Clock offset. The GPU will no longer downclock itself due to heat.
  • VBIOS Flashing (Extreme): If using water cooling (Mod 3) and temps are under 60°C, you can flash a higher-TGP VBIOS from a heavier MSI laptop (like the Raider GE76) using nvflash. Warning: High risk of bricking the GPU if the wrong ROM is used.

##3. Fan Control

  • Mod 1: Set a flat 40-50% fan curve in MSI Center so internal fans don't over-spin.
  • Mod 3: Set internal fans to silent RPM (just enough for VRMs), control external radiator fans via an Aquacomputer OCTO.
Mod Illustration
~❯ less part-5b.md jw3b.dev

#Part 5b: Linux Power Tuning

Part 5 assumes Windows. This is the same tuning on Ubuntu 24.04 with what actually works on this hardware, verified locally where marked. Every command needs root and has a revert line; nothing here persists across a reboot unless you add the systemd unit at the end.

##Tool Map

Windows tool in Part 5Linux equivalent on this machineStatus
MSI Center (shift mode, fans, Cooler Boost)/sys/devices/platform/msi-ec/* or the MControlCenter GUI, which since v0.5 drives msi-ec [L11]Working, three fixed fan modes only
ThrottleStop (PL1/PL2)RAPL powercap sysfs, setPL, or the throttled daemon [S8][S9]Working; see the re-clamp note
ThrottleStop (undervolt)intel-undervolt / undervolt after a BIOS unlock [L32]Locked on this CPU, unverified after unlock
MSI Afterburner (GPU clocks)nvidia-settings with Coolbits (already set to 28 in /etc/X11/xorg.conf.d/11-nvidia-coolbits.conf), or LACT [L15]Clock offsets work on X11; no voltage control
MSI Afterburner (GPU power limit)nvidia-smi -plRejected on RTX 30 mobile since driver 535 [L18]
HWiNFO64sensors, turbostat (root), nvtop, s-tui, thermal_baseline.shWorking; no GPU hotspot on Linux
Cinebench / 3DMarkstress-ng, glmark2, vkmark, Unigine, FurMark 2 for LinuxSee Part 6b

##1. Lift the CPU power limits (after Mod 4 only)

The kernel exposes PL1 as constraint_0 (long term, 30 W now), PL2 as constraint_1 (short term, 45 W, 2.4 ms window) and a peak limit constraint_2 (215 W). Writes take effect immediately and are lost on reboot.

R=/sys/class/powercap/intel-rapl:0
echo 45000000  | sudo tee $R/constraint_0_power_limit_uw    # PL1 45 W (Intel spec)
echo 90000000  | sudo tee $R/constraint_1_power_limit_uw    # PL2 90 W; the sister R6E chassis sustains 121 W with a healthy cooler [S1]
# revert: 30000000 and 45000000

Then watch whether it sticks. Two things can pull it back down:

  • thermald. It is active here, with a custom /etc/thermald/thermal-cpu-cdev-order.xml (backup dated 2026-09-05), and RAPL is one of its cooling devices, so it will re-clamp PL1 when its trip points fire [L36]. Either raise the trip in thermal-conf.xml or, for testing only, sudo systemctl stop thermald and compare.
  • The EC. No source documents the MSI EC re-asserting RAPL by itself; on Ubuntu that job is thermald's via DPTF. If the limit still drops with thermald stopped, the EC is doing it and the throttled daemon, which rewrites the limits on a timer, is the workaround [S8]. RAPL throttling does not show in package_throttle_count; watch PkgWatt in turbostat instead [L46].

Persist with a oneshot unit once the values are proven:

# /etc/systemd/system/rapl-limits.service
[Unit]
Description=Set RAPL PL1/PL2
After=multi-user.target thermald.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo 45000000 > /sys/class/powercap/intel-rapl:0/constraint_0_power_limit_uw; echo 90000000 > /sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw'
[Install]
WantedBy=multi-user.target

sudo systemctl enable --now rapl-limits. Add a copy under /usr/lib/systemd/system-sleep/ if the limits reset after suspend. Do not install TLP and auto-cpufreq together; they fight over the same knobs [L38].

##2. Governor and EPP

intel_pstate is in active mode with HWP, so scaling_governor is really an EPP hint, not a clamp [L39]. For a repasted desktop-replacement:

sudo cpupower frequency-set -g performance
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
# revert: -g powersave, balance_performance

##3. GPU

  • Power limit: nvidia-smi -pl 140 returns "not supported" on RTX 30 laptop GPUs on current drivers; the 140 W "max" the driver reports is Dynamic Boost headroom, not a user setting [L18]. Dynamic Boost needs nvidia-powerd, which is not installed here (systemctl status nvidia-powerd says not found). Installing it is the only Linux route to the extra 25 W, and it is forum-grade evidence that it delivers.
  • Clocks: nvidia-smi -lgc is also commonly ignored on laptops. What works is the Coolbits offset already configured on this box:
  nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffsetAllPerformanceLevels=150'
  nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffsetAllPerformanceLevels=1000'   # +500 MHz effective
  # revert: set both to 0

There is no voltage offset on Ampere under the Linux driver; "undervolting" a laptop GPU on Linux means a positive clock offset so the same clock lands at a lower voltage point on the curve, or nothing [L23].

  • Hotspot: nvidia-smi --query-gpu=temperature.gpu.tlimit is a valid key on driver 595.84 but returns N/A on this GPU (checked). Only the core temperature is available on Linux, so the Part 6 hotspot-delta check becomes the core-spread check in Part 6b.
  • VBIOS flashing: nvflash for Linux exists but the higher-TGP ROM advice in Part 5 is Windows-community lore with no Linux reports; unverified and unchanged in risk.

##4. Fan control per mod

msi-ec offers auto, silent and advanced; no curve. Mod 1 with a sealed blower: advanced gives the internal fans a fixed floor so the pad cannot over-spin them. Mod 3: silent. If you need a real curve, the unmaintained msi-fanctl project claims to write the EC curve table directly [L12]; single source, unverified, and it writes the same EC the two kernel drivers use, so test it with both unloaded.

##Unverified on this firmware

  • The hidden BIOS menu and its OC Lock / CFG Lock / Undervolt Protection toggles on E1583IMS.112.
  • Any undervolt tool on Alder Lake-H after that unlock.
  • Whether the EC re-asserts PL1/PL2 independently of thermald.
  • Write conflicts between msi-ec and msi_wmi_platform on this board.
  • LACT's power-limit and offset features on a mobile GA104 with driver 595.84.
~❯ less part-6.md jw3b.dev

#Part 6: Testing & Validation

You must stress-test the new mounting pressure and thermal interface.

##The Validation Suite

  1. HWiNFO64: Run in "Sensors Only". Monitor CPU Package Temp, GPU Temperature, and GPU Hotspot Temperature.
  2. Cinebench R23 (CPU): Run a 10-minute loop. The 12900H should never hit 100°C with an extreme mod.
  3. 3DMark TimeSpy (GPU): The RTX 3070 Ti should maintain maximum boost clocks (~1700-1900MHz).

##What to watch out for:

  • The "Hotspot Delta": Look at the difference between GPU Temperature and GPU Hotspot Temperature in HWiNFO64. Normal is 10°C to 15°C. If your delta is >25°C, your heatsink is mounted unevenly.
  • VRM Throttling: If CPU/GPU temps are low but clock speeds abruptly drop under heavy load, your VRMs are overheating. Your K5 Pro application was too thin, or there isn't enough airflow over the motherboard.
Mod Illustration
~❯ less part-6b.md jw3b.dev

#Part 6b: Linux Validation Suite

The Windows suite in Part 6 (HWiNFO64, Cinebench, 3DMark) does not exist on Ubuntu. This is the equivalent, built around the thermal_baseline.sh logger that ships next to this report. Every mod gets a labelled CSV before and after, so the decision matrix in this guide can be checked against your own numbers rather than someone else's.

Do not run the stress protocol on this machine until Mod 4 (or at least the Mod 0 dust clean) is done. The baseline already shows 96 °C at idle. A 10-minute all-core load in that state will hit the 100 °C trip point and the EC will hard-shut the laptop.

##Install

sudo apt install stress-ng s-tui lm-sensors linux-tools-common   # turbostat lives in linux-tools
# already present on this box: nvtop, glmark2, sensors, turbostat

##The Logger: thermal_baseline.sh

Samples every N seconds into logs/thermal_<label>_<timestamp>.csv and prints nothing until you press Ctrl-C, when it prints a one-line summary. Columns: package °C, min/max core °C, core spread (the Linux stand-in for HWiNFO's hotspot delta), average CPU MHz, both fan RPMs, package watts, the kernel's package throttle counter, GPU °C / W / SM MHz / utilisation.

tools/thermal_baseline.sh 2 stock-idle          # 2 s interval, label "stock-idle"; Ctrl-C to stop
sudo tools/thermal_baseline.sh 2 after-mod4     # sudo unlocks RAPL package watts (energy_uj is root-only)

Sample output on this laptop, stock, seven seconds at the desktop:

samples=7  pkg avg=75.0C max=90C  worst core spread=18C  throttle delta=40  gpu max=44C

A throttle delta of 40 in seven seconds at idle is the headline problem; after a good repaste it should be zero for the whole run.

##The Protocol

Run each stage with the logger in a second terminal, one label per stage. Keep the room temperature and the laptop position the same between before and after runs.

  1. Idle, 5 min. Nothing open but the terminal. Establishes the floor.
  2. CPU soak, 10 min. All 20 threads, a heavy floating-point kernel, so turbo and PL2 are fully exercised:
   stress-ng --cpu 0 --cpu-method matrixprod --tz --metrics-brief --timeout 10m   # --cpu 0 = one worker per thread; --tz prints thermal zones

Jarrod'sTech's published method is three 10-minute passes averaged, so a single pass understates the steady state [S12].

  1. GPU soak, 10 min. OpenGL loop that pins the 3070 Ti at its power limit:
   glmark2 --run-forever --fullscreen      # light load; vkmark is the Vulkan twin
   # heavier and closer to 3DMark: Unigine Superposition, or FurMark 2's native Linux build

Watch clocks and power with nvtop or nvidia-smi dmon -s pucT alongside.

  1. Combined, 10 min. Stages 2 and 3 at once. This is the desktop-replacement worst case and the only stage that reveals shared-heatpipe problems.
  2. Live view while it runs: sudo s-tui (temps, clocks, power, throttle flags in one screen) or sudo turbostat --show Package,Busy%,Bzy_MHz,PkgTmp,PkgWatt --interval 5.

##Pass Criteria

CheckPassWhy it matters
Package temp, sustained< 95 °C at minute 10 of the CPU soakTrip point is 100 °C; 95 leaves margin for summer.
throttle_count delta0 across the whole runAny increment means the CPU hit its thermal trip during the run. Power-limit throttling does not count here; catch it as PkgWatt pinned at PL1 in turbostat.
Core spread (max minus min core)< 15 °C under load, < 10 °C idealWider means uneven mount or a void in the thermal interface. This laptop started at 29 °C. Forum consensus puts a bad mount around 15 °C [S15][S16]; the Linux driver gives no GPU hotspot, so this is the only mount check available.
Package watts vs PL1Holds the configured PL1 (Part 5b) for the full 10 minIf watts fall below PL1 with temp under 95 °C, the EC or thermald is clamping, not the silicon.
CPU clockAverage MHz flat after minute 2, not sawtoothingSawtooth = repeated thermal or power throttle events.
GPU SM clock≥ 1700 MHz sustained at 115 WBelow that the GPU is power- or temperature-limited.
GPU temp< 85 °C under the combined soakNVIDIA mobile GPUs pull clocks back above roughly 85 °C.
FansNot stuck at maximum during the idle stageFull-speed fans at idle mean the EC still sees a hot sensor.

##Reading Failures

  • Low temps but clocks drop under combined load only: VRM or VRAM heat. The putty in Mod 4 was too thin, or nothing is blowing across the board. Add a fan or re-pad.
  • Package fine, one core 20 °C hotter: The heatsink is tilted. Redo the mount in a cross pattern, or add the washer mod from Mod 4.
  • Watts capped below PL1 with cool temps: Software, not hardware. Check thermald, the EC shift mode, and RAPL as described in Part 5b.
  • Temps climb slowly for 10 minutes and never plateau: Not enough heatsink mass or airflow for the sustained load. That is what Mods 1 to 3 solve; Mod 4 alone cannot.
~❯ less readme.md jw3b.dev

#Sources

Citations in the text use the prefix of the research pass that found them: H hardware alternatives, L Linux tooling, S software-only path and validation. The full digests, with per-claim confidence ratings and the lists of claims that were dropped as unsupported, are in research/ next to this report.

##Hardware alternatives

##Linux tooling

##Software-only path and validation