Repository navigation
Conversation
91a317a to
4e0ae8b
Compare
6113e63 to
0ac3e68
Compare
…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.
0ac3e68 to
1d4815f
Compare
Automated AI review
Verified: the Cooler Boost watcher's decision logic matches the description, and both new tests pass at head (45 and 27 checks). The install path does not deliver the feature through Omarchy's own install flow, though. The RTL8125 scan never matches. Three of the packages cannot be installed by RTL8125 scan in
|
| DMI product (family) | Device | Result |
|---|---|---|
Creator Z590 P100X (Desktop) |
desktop | accepted |
Modern ADL-P AM242 (AIO) |
all-in-one | accepted |
GF63 8RC, Thin GF63 12HW, Sword 15 A11UD (GF) |
laptop | rejected |
MEG Z490 Trident X, MAG Z590 Codex X5 (Desktop) |
desktop | rejected (correct) |
msi-ec also supports GF75 Thin, GP/GL Leopard and Sword firmwares, which the family list misses. On real MSI laptops, product_family is a series name (GT for the Titan GT77HX, or GF, GS, GE, Modern, Prestige), not the full model line used in the test fixtures.
Impact: some MSI desktops and all-in-ones get the laptop driver setup, and common laptop lines (GF, Thin, Sword, Leopard) get none of it.
Suggested change: match the MSI vendor plus the existing omarchy-hw-laptop check instead of a family list. omarchy-hw-msi-titan matches the real Titan GT77HX 13VH string correctly.
Optional test improvement: diagnostic mutants run against the new tests show which changes still pass. Removing the watcher's Titan gate passes both tests. So does ignoring GPU temperature in the polling path, removing the thermald disable or the watcher enable from msi.sh, or pointing the unit's ExecStart at a missing path. The install assertions grep msi.sh text rather than running it, which is also how the RTL8125 scan got through. docs/testing.md describes the expected approach: stub sudo and the helpers on PATH, run the real script, and assert on the call log and the files it writes.
Smaller notes:
install/leaf scripts are sourced byrun_loggedand intentionally have no shebang (agents/skills/install-scripts.md).msi.shis also the onlyinstall/hardwareleaf that setsset -euo pipefail. Withpipefail,lsmod | grep -q …can report failure whenlsmodgets SIGPIPE. This was shown with a stublsmod; how often the real one hits it was not tested.[[ -d /sys/module/r8125 ]]avoids the pipe./etc/X11/xorg.conf.d/10-nvidia-dpms.confcontains no DPMS option, despite its name. Omarchy runs Hyprland, and SDDM runs on Wayland, so the file only affects an Xorg server, which stock Omarchy does not start.
Verified:
- Watcher logic. At the default 5 s interval, boost stays off for six polls at or above 85C and turns on at the 7th. Exactly 85C counts, and a dip below 85C resets the counter. At or below 70C it turns off, and 71 to 84C holds the current state. GPU-only heat also turns boost on. A failed EC write is reported and
--onceexits 1, while the daemon keeps polling. - msi-ec interface. The sysfs files the watcher uses match the out-of-tree msi-ec driver:
cooler_booston/off, and integercpu/andgpu/realtime_temperature. The GT77HX firmwares17Q2IMS1.107/.10Dare in its supported table. - Unit file.
After=multi-user.targettogether withWantedBy=multi-user.targetdoes not create an ordering cycle.ExecStartand the$OMARCHY_PATH/default/...source path match how the Omarchy packages install files. - Repository checks. The new commands pass
bin-style-test.sh, thetest/climetadata lint andprivileged-heredoc-test.sh.
Review information
Test scope: reviewed at head 1d4815f. None of the changes on current quattro affect these findings (the package and hardware-match helpers only gained -- separators). Source review of the changed files, the hardware install flow, the msi-ec driver (out-of-tree and in-kernel Linux 7.2), AUR and Arch package metadata, the omarchy-pkgs and omarchy-iso build inputs, and public MSI DMI dumps. The PR tests, related repository tests, the watcher and a stubbed run of msi.sh followed by intel/thermald.sh were executed in a sandbox with fixture DMI, PCI and EC trees and stubbed sudo, pacman, systemctl and lsmod. No MSI hardware was available, so real EC behavior, boot-time unit start and the real lsmod SIGPIPE rate are untested.
AI process: Opus 5.5 Medium coordination and synthesis, Opus 5.5 Xhigh technical review and final fact check, GPT 6 Sol Xhigh search for related issues, Opus 5.5 Medium editorial check.
Opt out: To stop receiving these reviews, reply to this comment saying so.
|
Thanks for the detailed write-up. On top of the install-path points in the Sep 27 review, two policy points for whoever decides scope:
Could you narrow the install script to the hardware you verified on, or say why the wider match is safe? |
Summary
Single commit
1d4815f3, rebased on upstream quattro. Closes #11583.On MSI Titan GT77HX 13VI (and other MSI laptop families), Omarchy now:
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_boostflag flipsoff -> onafter 30s of sustained >=85C, and all four EC fans ramp to ~4,900 RPM.Hardware
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.shwhenomarchy-hw-msireturns 0.OMARCHY_PCI_DEVICES_PATH) for vendor 0x10ec / device 0x8125 (avoidslspciwhich wakes suspended GPUs on hybrid laptops — see PR Avoid lspci in favor of sysfs #11259). Installsr8125-dkmsand blacklistsr8169only whenr8125is actually loaded./sys/devices/platform/msi-ec) for Cooler Boost, fan curves, battery thresholds.thermaldfor fan management.Cooler Boost Watcher (
bin/omarchy-msi-cooler-boost-watch)msi-ecCPU/GPU temperature every 5s--once(single check),--decide <state> <cpu> <gpu>(unit-testable decision function)Systemd Unit (
default/systemd/system/omarchy-msi-cooler-boost-watch.service)multi-user.targetConditionPathExists=/sys/devices/platform/msi-ec/cooler_boost— only on systems with msi-ec loadedMSI_COOLER_BOOST_ON_AT=85,MSI_COOLER_BOOST_OFF_AT=70,MSI_COOLER_BOOST_SUSTAIN=30,MSI_COOLER_BOOST_INTERVAL=5Tests (
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 thresholdsmsi-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 thresholdsWhat's NOT in This PR
msi-perkeyrgbdoes 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).omarchy-hw-msiexplicitly excludes MEG/MAG/MPG boards that lack laptop family markers in product_family/product_name.Testing
Verified on real GT77HX 13VI hardware (2026-09-16), 32-thread sustained load:
cooler_boost off -> on (cpu=91C gpu=51C)msi_wmi_platform)cooler_boost on -> off (cpu=63C)Service active + enabled;
omarchy-hw-msiandomarchy-hw-msi-titanboth exit 0 on this hardware;r8125loaded withr8169blacklisted;coolercontroldrunning withthermalddisabled.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