Skip to content

Add MSI Titan GT77HX driver wiring and Cooler Boost after 30s sustained 85C - #12003

Open
andyholst wants to merge 1 commit into
omacom:quattrofrom
andyholst:feat/msi-titan-cooler-boost
Open

andyholst wants to merge 1 commit into
omacom:quattrofrom
andyholst:feat/msi-titan-cooler-boost

Conversation

@andyholst

@andyholst andyholst commented Sep 15, 2026

Copy link
Copy Markdown

Summary

Single commit 1d4815f3, rebased on upstream quattro. Closes #11583.

On MSI Titan GT77HX 13VI (and other MSI laptop families), Omarchy now:

  1. Installs and configures required hardware drivers
  2. Enables Cooler Boost only after CPU/GPU stay at or above 85C for more than 30 seconds, via a systemd watcher

Silent/auto EC fan curves never flip the Cooler Boost flag at any temperature. CoolerControl cannot PWM these fans (RPM-only), so the watcher flips the flag itself. Verified live on a GT77HX 13VI: the EC cooler_boost flag flips off -> on after 30s of sustained >=85C, and all four EC fans ramp to ~4,900 RPM.

Hardware

Component Detail
Model MSI Titan GT77HX 13VI
CPU Intel i9-13980HX (24C/32T)
GPU NVIDIA RTX 4090 Laptop (AD103M) — hybrid Optimus
Ethernet Killer E3000 (RTL8125B, 2.5GbE)
WiFi Intel Wi-Fi 6E (CNVi, not replaceable)
EC MSI EC via msi-ec-dkms-git
Boot Limine (UKI), not GRUB

What's Added

Detection Scripts (bin/)

  • omarchy-hw-msi — reads DMI IDs from $OMARCHY_DMI_ID_PATH (test stub) or /sys/class/dmi/id. Matches vendor "Micro-Star International Co., Ltd." + 14 laptop family names (Titan, Stealth, Raider, Vector, Crosshair, Summit, Creator, Modern, Katana, Cyborg, Pulse, Bravo, Alpha, Prestige). Exits 0 on MSI laptop, 1 otherwise. Exits 1 on desktop boards (MEG, MAG, MPG families without laptop markers).
  • omarchy-hw-msi-titan — hidden, narrow check for "Titan GT77HX" specifically. Gates the cooler boost watcher.

Install Script (install/hardware/msi.sh)

Runs from install/hardware/all.sh when omarchy-hw-msi returns 0.

  1. RTL8125B Ethernet — scans PCI devices via sysfs (OMARCHY_PCI_DEVICES_PATH) for vendor 0x10ec / device 0x8125 (avoids lspci which wakes suspended GPUs on hybrid laptops — see PR Avoid lspci in favor of sysfs #11259). Installs r8125-dkms and blacklists r8169 only when r8125 is actually loaded.
  2. msi-ec-dkms-git — enables EC sysfs (/sys/devices/platform/msi-ec) for Cooler Boost, fan curves, battery thresholds.
  3. CoolerControl — replaces thermald for fan management.
  4. Battery thresholds — start 60%, end 80% via msi-ec sysfs.
  5. nvidia-settings — NVIDIA DPMS config.

Cooler Boost Watcher (bin/omarchy-msi-cooler-boost-watch)

  • Daemon that polls msi-ec CPU/GPU temperature every 5s
  • ON only after CPU or GPU has been at or above 85C for more than 30 seconds — a short spike does not trigger it, and the sustain counter resets on any dip below 85C
  • OFF when both are at or below 70C
  • Hysteresis between the two thresholds prevents rapid toggling
  • CLI supports --once (single check), --decide <state> <cpu> <gpu> (unit-testable decision function)
  • Exits cleanly on non-Titan hardware

Systemd Unit (default/systemd/system/omarchy-msi-cooler-boost-watch.service)

  • Starts after multi-user.target
  • ConditionPathExists=/sys/devices/platform/msi-ec/cooler_boost — only on systems with msi-ec loaded
  • Env: MSI_COOLER_BOOST_ON_AT=85, MSI_COOLER_BOOST_OFF_AT=70, MSI_COOLER_BOOST_SUSTAIN=30, MSI_COOLER_BOOST_INTERVAL=5
  • Auto-restarts on failure

Tests (test/shell.d/)

  • hw-msi-test.sh (181 lines) — DMI detection across the 14 families, edge cases (family-only/name-only), office desktops rejected, install-script assertions, systemd unit thresholds
  • msi-cooler-boost-test.sh (167 lines) — decision logic (84C stays off, 85C turns on, 70C turns off, hysteresis, garbage temps), sustained-trigger behavior (6 polls at 86C do not enable; the 7th does; exactly 85C counts; the counter resets on a dip), non-Titan hardware exits without touching the EC, unit thresholds

What's NOT in This PR

  • RGB support — The Titan GT77HX uses a Cherry MX mechanical keyboard that msi-perkeyrgb does NOT support. The tool exits 0 but produces no lighting. RGB was explicitly removed from scope (see issue comments). If re-added, it must clearly state which models it works on (e.g., GE63/GE73 with 1038:1122).
  • MSI desktop boardsomarchy-hw-msi explicitly excludes MEG/MAG/MPG boards that lack laptop family markers in product_family/product_name.
  • Other MSI laptop families — Cooler Boost watcher is Titan GT77HX-only. Other MSI families (Stealth, Raider, etc.) get driver packaging only.

Testing

bash test/shell.d/msi-cooler-boost-test.sh   # 27 assertions — all pass
bash test/shell.d/hw-msi-test.sh             # 45 assertions — all pass

Verified on real GT77HX 13VI hardware (2026-09-16), 32-thread sustained load:

Event Time Detail
First >=85C t+13s CPU 85C+ under load
Cooler Boost ON t+44s 31s of sustained >=85C (7 consecutive 5s polls); journal: cooler_boost off -> on (cpu=91C gpu=51C)
Fan response all four EC fans ~2,100 -> ~4,900 RPM (hwmon msi_wmi_platform)
Cooler Boost OFF t+74s first poll at/under 70C during cooldown; journal: cooler_boost on -> off (cpu=63C)

Service active + enabled; omarchy-hw-msi and omarchy-hw-msi-titan both exit 0 on this hardware; r8125 loaded with r8169 blacklisted; coolercontrold running with thermald disabled.

Detection for other MSI families (Stealth, Raider, etc.) and non-MSI rejection is covered by the stubbed DMI tests only — no other hardware was available to verify physically.

Related

@andyholst
andyholst force-pushed the feat/msi-titan-cooler-boost branch from 91a317a to 4e0ae8b Compare September 15, 2026 19:36
@andyholst andyholst changed the title Enable MSI Titan Cooler Boost at 85C Add MSI Titan GT77HX driver wiring and Cooler Boost at 85C Sep 15, 2026
@andyholst
andyholst force-pushed the feat/msi-titan-cooler-boost branch 3 times, most recently from 6113e63 to 0ac3e68 Compare September 16, 2026 00:06
…mp trigger

Wire MSI laptop drivers (Killer E3000/RTL8125B, msi-ec, CoolerControl,
nvidia-settings) into the hardware install path behind omarchy-hw-msi
detection, and add a Titan GT77HX watcher that enables the EC Cooler Boost
flag only after CPU/GPU stay at or above 85C for more than 30 seconds,
turning it off again at 70C. Matches omacom#11583: Extreme 100% at 85C and
Silent staying low until 70C.
@andyholst
andyholst force-pushed the feat/msi-titan-cooler-boost branch from 0ac3e68 to 1d4815f Compare September 16, 2026 00:52
@andyholst andyholst changed the title Add MSI Titan GT77HX driver wiring and Cooler Boost at 85C Add MSI Titan GT77HX driver wiring and Cooler Boost after 30s sustained 85C Sep 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MSI Titan GT77HX: driver packaging and Cooler Boost at 85C

1 participant