Skip to content
wygodadPublic

About

GhostDeck - independent, driver-free power & fan control for MSI laptops (EC via WMI). Restores Silent profile; custom fan curve, charge limit, gaming overlay/OSD, global hotkeys, 15 languages. Unofficial, not affiliated with MSI.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

64 stars

Watchers

3 watching

Forks

GhostDeck - for MSI laptops

GhostDeck - one byte brings Silent back

(formerly “MSI Profile Switcher” - renamed to keep the project clearly independent of MSI; see docs/ABOUT_THE_NAME.md)

Digitally signed releases Latest release Downloads Downloads of the latest release Build .NET 8 Desktop Runtime No kernel driver 15 languages License

A lightweight, independent Windows tray app to switch MSI laptop power profiles - Silent / Balanced / Extreme / Super Battery - instantly via global hotkeys, the tray menu, or auto-switch on AC/battery, with an on-screen overlay showing the active profile. Every release is digitally signed - Windows shows the verified publisher instead of "Unknown", and a tampered file fails the check (details).

Built because MSI Center 2.0 removed the Silent profile. This app talks to the Embedded Controller (EC) through MSI's own WMI interface, carried by Windows' built-in ACPI driver - no kernel driver, no disabling of Windows security - and it does not need MSI Center running. One prerequisite on a freshly installed Windows: MSI Center must be installed once to deploy the MSI WMI schema Windows needs (it can be uninstalled afterwards) - see docs/MSI-WMI-SCHEMA.md.

⚠️ Hardware-specific. Developed and tested on MSI Raider GE78HX 13V (board MS-17S1, i9-13950HX, EC firmware 17S1IMS1.114), and confirmed by owners on the Vector 17 HX A14V (17S2IMS2, a different board with the same EC layout). EC registers are model/firmware-specific - read docs/TECHNICAL.md before trying it on another model. Use at your own risk.

📋 157 MSI models recognised - 53 models confirmed on real hardware by their owners (GE78HX/Vector boards, Vector GP68 HX 13V, Raider GE78 HX 14VHG, Prestige 16 AI Studio B1VFG, Raider 16 Max HX B2WJ, Prestige 14 AI Studio, Prestige 16 Studio / Summit E16 Flip, Katana GF66 12U / Sword 15 A12UC, Stealth 14 Studio A13VF, Stealth 16 Studio A13VG, Raider GE68 HX / Vector 16 HX A13V, Raider GE68 HX 14VGG, Crosshair 15 B12U, Crosshair A16 HX, Crosshair 16 HX AI, Crosshair 17 HX AI, Crosshair 18 HX AI, Sword 16 HX, Sword 17 HX B14VGKG, GE67 HX, GE66 Raider / GP66 Leopard, both Cyborg 15s, Cyborg A15 AI, both GF63 Thins, Raider GE76 12UE/12UGS, GE76 Raider 11U / GP76 Leopard 11UG, Raider A18 HX, Vector A18 HX, Vector 16 HX AI / Raider 16 HX AI, Vector A16 HX A8WIG, Titan 18 HX Dragon, Titan 18 HX A14V / Raider 18 HX A14V, Bravo 15 B7ED, Bravo 17, Katana GF66 11U, Pulse/Katana 17 B13V, Katana 15 HX B14W, Modern 14 C12M, Pulse 16 AI C1V, Pulse 17 AI C1V, Pulse A16 AI+ C3HWFKG, Creator M16 / Pulse 15 / Katana 15 B13 / Crosshair 16 A13V, Creator M14 A13VE, Alpha 17 C7VF/C7VG, Thin 15 B12U, Vector 17 HX AI A2XWHG, Summit E14 Flip Evo / Prestige 14 H, Stealth 16 AI+ B3W, Stealth A16 AI+ A3XWHG, Stealth 18 HX AI A2XW), the rest are experimental (opt-in). See the full supported-models list, or browse it live in the app's Models tab.

Tip

❓ Five minutes well spent: the FAQ. Honest, sourced answers to the questions everyone asks sooner or later: why there is no watt slider - and the one real route to get one - running GhostDeck next to MSI Center, why the MUX switch needs a reboot on every brand (and what is quietly cooking there…), whether any of this can damage your laptop, and what to do when an antivirus grumbles.

→ Browse the full FAQ

Silent, Balanced, Extreme, Super Battery - the profiles MSI Center dropped

Features

  • 🖥️ Tray icon (color = active profile) with a profile menu, plus a tabbed main window (Scenarios / Status / Fan curve / Models / Report / Updates) with a light / dark theme; Settings is organized into icon sub-tabs (a Start page with tiles + General / Power / Automation / Gaming / Hotkeys / System) and reopens on the sub-tab you used last (or always on Start, your choice). On a narrow window the sub-tab strip shrinks to icons instead of pushing a scrollbar, and clicking the tab you are already on takes you back to its first page
  • ⚡ Apex switch (boards whose entry records a fourth performance value) - the state above Extreme's normal turbo, the one some MSI Center versions bury as a switch inside their top scenario: a toggle on the Extreme tile makes Extreme write the Apex value instead, with an APEX badge on the tile and in the OSD while it is on. Whether it buys real performance is measured, not promised: on a Raider 16 Max HX the Power test clocked +34 % more delivered work than Balanced with Apex, against +16 % for plain Extreme - on other boards it may only spin the fans faster, and the Power test measures Apex as its own step so you can check yours. A one-time consent card explains the noise and heat cost, the switch is remembered per model, and a panic reset always returns to plain Balanced
  • 🪟 Windows power: CPU turbo boost + power mode - two settings Windows keeps to itself, brought next to the profiles they belong with (Settings → Power). The CPU turbo boost switch edits the normally hidden Processor performance boost mode of the active power plan - a cooler, quieter machine under load at the cost of peak speed; the previous plugged-in and battery values are saved per plan, shown in the card and come back with one click. Two lists pick the exact turbo mode Windows offers (Enabled, Aggressive, Efficient Enabled and the rest), plugged in and on battery separately, each with a plain description of what it does, and the By profile table can set them per GhostDeck profile (guide). The Windows power mode (best efficiency / balanced / best performance) is set directly or left on Auto: profile, which follows the GhostDeck profile through a mapping you can edit. Restore Windows settings puts back everything the app changed and lists exactly what. Documented Windows power APIs only, no EC involved - so it works on any laptop, including ones whose EC the app cannot reach; CLI --turbo on|off|status
  • 🎬 Scenes - one-click macros that set any mix of profile + fan-curve preset + CPU turbo boost + refresh rate + screen brightness + HDR + overlay + charge limit + keyboard backlight + webcam + microphone + Windows-key lock + touchpad + Fan Boost in a single stroke ("Gaming": Extreme, 240 Hz, 80 % brightness, HDR on · "Work": Silent, 60 Hz, 45 %, HDR off). Run them from cards on the Scenarios tab, the tray menu, a per-scene hotkey, the tray scroll wheel or the CLI (--scene "Name"); an example set is one click away
  • ⏰ Scene schedule - different settings for work hours, nights and weekends: rules (weekdays + a time window, overnight ranges fine) apply a scene when the window starts, also right after boot. Edge-triggered, so your manual tweaks inside a window are respected; first matching rule wins (Settings → Automation)
  • 🔋 Battery-level rules - e.g. below 30 % → Super Battery, above 80 % → Balanced: two direction-aware thresholds (the low one fires while discharging, the high one while charging, once per crossing), each running any profile or scene (Settings → Power)
  • 🌡️ Temperature in the tray (opt-in) - show CPU, GPU and/or SSD temperature as their own icons next to the profile ghost, each marked in a colour of its own (a bar under the digits, a dot or a corner - your pick) so you can tell them apart at a glance, with your own warning / hot thresholds and colours; the temperature icons answer the mouse exactly like the main icon (click, middle-click, wheel, the same right-click menu)
  • 🖱️ Tray-icon mouse actions - scroll the wheel over the tray icon to switch profiles (or scenes / backlight), middle-click for Fan Boost; left, middle and wheel are all configurable in Settings (open a tab, toggle overlay, panic reset, …)
  • ⌨️ Global, rebindable hotkeys (default Ctrl+Alt+F1–F4, Ctrl+Alt+P = cycle)
  • 💡 Keyboard-backlight level (off / low / mid / high) on supported models (single-colour keyboards, per msi-ec's register map; per-key RGB laptops keep their own Fn key - why) - a brick on Scenarios, a cycle hotkey, a wheel mode, a CLI switch and a scene field; follows the Fn key
  • 📷 Webcam switch - the EC-level camera cut-off the Fn key uses (the camera drops off USB, below Windows privacy settings), as a brick / hotkey / CLI switch / scene field - plus an advanced hard camera block that even the Fn key can't override (a panic reset always restores the camera)
  • 🔁 Fn / Windows key swap - swap the two keys in hardware on boards where msi-ec documents the fn_win_swap register (163 firmware prefixes): pick the side the Fn key sits on in Settings → System or with --fnswap left|right; the setting lives in the EC itself, so it survives reboots
  • 🚫 Windows-key lock - block both Win keys while gaming so the Start menu never steals focus: a brick on Scenarios, a scene field, a hotkey shipped as Ctrl+Alt+F8 (off by default) and --winlock on|off. Software hook, works on any laptop; fine print: Win+L is blocked too while active, Ctrl+Alt+Del never is, and a panic reset always unlocks
  • ☀️ Screen brightness in scenes & CLI - the internal panel's brightness as a scene field (Gaming 80 % · Work 45 % · Travel 25 %) or --brightness <0-100>; driver-free Windows WMI, works on any laptop (external monitors excluded)
  • 🌈 HDR in scenes & CLI - switch HDR on for games and films and off for work, automatically as part of a scene or with --hdr on|off (Windows DisplayConfig API; shown only on HDR-capable displays)
  • 🖱️ Touchpad switch - turn the precision touchpad off for gaming from a scene, a brick, a hotkey (Ctrl+Alt+F9, off by default) or --touchpad on|off - device-level, works on any laptop; the hotkey and a panic reset always re-enable it
  • 🎤 Microphone switch - mute and unmute the default Windows recording device for every app at once: a brick on Scenarios, a hotkey (Ctrl+Alt+F11, off by default) and --mic on|off. It is the Windows mute flag itself, so it follows a mute made elsewhere and works on any laptop
  • 🔔 On-screen overlay (OSD) on every profile change
  • 🎮 Detachable gaming overlay (HUD) - a small always-on-top panel with FPS / frametime, temps / fan RPM / profile / load / GPU% / iGPU% / VRAM / clocks / CPU model / RAM / battery, in a card or bar layout. Pick which metrics to show, drag it anywhere (position remembered) or snap to a corner, toggle with a hotkey (default Ctrl+Shift+O). Rendered per-pixel with independent background & content opacity, smooth anti-aliased text, a readability shadow, optional click-through lock (Ctrl+Shift+L)
  • ⌖ Crosshair - a crosshair drawn at the centre of the screen over any game in windowed or borderless mode, without touching the game (no injection, no hooks into the process). Eleven built-in shapes (cross, gap cross, dot, circle, T, X, chevron, reticle, …) or your own PNG (transparency kept, up to 512 px / 1 MB), each with colour, size, line thickness, dark rim, opacity, softness, rotation and an X/Y offset; optional click effect (spread / pulse / flash), hide-while-aiming on the right button, follow-the-pointer mode. Named presets without limit, a short share code (GDX1.…) to pass a crosshair to a friend, PNG / SVG export; a live preview on a dark and a light background. Toggle it with a hotkey (Ctrl+Alt+F12, disabled by default), the Scenarios tile, the tray menu, a scene, --crosshair on|off or ghostdeck://crosshair/on
  • 🎨 MSI True Color profiles (experimental) - switch the display colour profile of MSI's own True Color application (sRGB, Gamer, Movie, Anti-Blue, Office, AdobeRGB, Display P3) from GhostDeck: by hand on a Settings card, from the tray menu, as a scene field (so a scene brings its colour profile back, the way MSI Center's scenarios did), --truecolor movie or ghostdeck://truecolor/movie. GhostDeck asks the running True Color to do it through an undocumented MSI interface; it writes nothing to True Color's files or settings and never calculates colours itself. Off by default, opt-in under Settings → System with a consent card; confirmed on True Color 5.1.24.0 only (one GE78HX, 17 October 2026), on any other version the switch stays off until you run the one-click test on your own machine. No guarantee, use at your own risk; details in the FAQ and TECHNICAL.md §80
  • 🎯 FPS & frametime of any game - measured driver-free from Windows' own ETW Present events (the same source Intel PresentMon uses): no DLL injection, nothing touches the game, anti-cheat-safe. Live FPS + frametime in the overlay, and a Status → Gaming tab with a 60 s frametime chart (stutter markers), 1% lows and a stutter counter. The monitor runs only while the overlay or the Gaming tab is open - zero idle cost
  • 🏁 Game-session report - when a game exits, GhostDeck pairs the FPS story with the EC story nobody else has: "1 h 42 min · avg 87 FPS · 1% low 54 · CPU max 91 °C" in a sleek borderless popup (frametime sparkline included) with one-click save as PNG and data export (JSON/CSV), plus a summary card on Status → Gaming and a change-history entry
  • 🌍 15 languages - EN / PL / DE / FR / ES / 中文(简体) / PT-BR / RU / 日本語 / 한국어 / 中文(繁體) / TR / VI / ID / IT - native-speaker corrections welcome as pull requests (Core/Lang.cs)
  • 🎨 Custom color per profile
  • 🔀 Your own profile order - Standard, By power (Super Battery up to Extreme) or any order you like; the tiles, the tray menu, the profile lists and "next profile" (cycle hotkey, tray wheel) all follow it
  • 📊 Status - live CPU/GPU temperature & fan rings, fan RPM, CPU usage & approx. clock, GPU load % / VRAM of the discrete card, integrated-GPU load and shared memory on two-card laptops, RAM, battery %, plus NVMe/SSD temperature, estimated battery time left, the GPU core clock against its own ceiling (a busy card held under its ceiling is the firmware limiting it - read from Windows itself, no vendor software, with a click-open ? bubble naming the adapter) and a live EC profile-byte matrix (what each profile writes vs. the current values). Extra metrics are read driver-free (Windows PDH/WMI - no kernel driver, anti-cheat-safe)
  • 🌀 Fan curve editor - drag a custom CPU/GPU curve and run it on Balanced / Extreme / Super Battery (MSI Center only allows one in Extreme); fully reversible. Speeds go up to 150 %, the same scale MSI Center's own sliders use - some boards genuinely spin faster above "100 %" (built-in presets stay at or below 100 %; the range above is only ever reached by dragging a slider there yourself). Silent is the exception: its power cap lives in the same EC byte the curve needs, so turning a curve on in Silent necessarily leaves Silent for Balanced - the app warns and switches for you. Single-fan-curve boards (where MSI Center shows one slider, e.g. Thin GF63 12VE) automatically get a single full-width curve editor, and the unused GPU tables are never written
  • 🎛️ Four views of the same curve - Chart (drag the nodes; a live operating point shows where the fan really sits, faint audibility zones, intent tiles Quiet / Balanced / Cool / Max derived from the factory default, up to three comparison layers of saved presets, and a coupled points table with typed-in percentages), Equalizer (one fader per node, mouse wheel for fine steps), Deck (rotary dials, live VU bars and a crossfader that blends the whole curve between two shapes) and In action - your curve with the last hour of real readings drawn over it, so you can see what the fans actually did rather than what the curve asks. Everything explained in docs/FAN-CURVE.md
  • 🔬 Fan sweep - holds the fans at 30 / 45 / 60 / 80 / 100 % for 6 s each and records the tachometers, then restores your curve, fan mode and profile: a duty → rpm table measured on your own machine, behind a consent dialog that names every address it writes. It says in plain language what the numbers show - whether each fan followed the command, whether one lags, how fast they settle - keeps the last 30 runs so you can compare, and copies a report ready to paste into an issue
  • 🗂️ Fan-curve presets - save curves under a name, switch them from the editor or the tray menu, assign a preset per profile (auto-applied on every switch; Silent stays stock), and export / import / share presets as JSON - a Share button opens a prefilled GitHub Discussion with your model and curve
  • 📈 History charts - local trend of CPU/GPU temperature, fan curve target, fan RPM and game FPS over the last 5-60 minutes (Status → History) with a crosshair value readout; memory-only, nothing is stored or sent anywhere - unless you hit Export… to save the window as CSV/JSON for your own analysis
  • ⌨️ Command line - GhostDeck.exe --profile Silent, --fanboost on [seconds], --curve "<preset>", --scene "<name>", --refresh 240, --charge 80, --travel 7, --brightness 45, --hdr on, --touchpad off, --kbd high, --webcam off, --fnswap left, --winlock on, --panic, --diag and --status (rich JSON: temps, fans/RPM, battery, disks, states) for Task Scheduler, Stream Deck and scripts - same safety gates as the UI
  • 📌 Taskbar jump list - right-click the GhostDeck button on the taskbar (or the icon once you pin GhostDeck there) for the profiles in your own order, every scene, Fan Boost on / off and the panic reset; a pinned GhostDeck also takes the icon style chosen in Settings
  • 🔗 ghostdeck:// links - ghostdeck://scene/Gaming, ghostdeck://profile/silent or ghostdeck://fanboost/on/300 from a browser, a Stream Deck "open" action, AutoHotkey or a plain shortcut: the same commands as the CLI, no plugin and no administrator prompt while the app runs (Settings → System)
  • 🌪️ Fan Boost - force both fans to full speed with one click, a tray entry or a global hotkey (default Ctrl+Alt+F5), independent of the active profile; shown as a compact toggle "brick" on the Scenarios tab (equivalent of MSI's Cooler Boost), with an optional auto-off timer (30 s to 15 min, or your own value) so a quick cooling blast never turns into a forgotten hurricane
  • 📜 Change-history log - a running log of recent profile switches and EC writes (time, source: hotkey / tray / auto-AC / fan curve / external sync, the bytes written, and a readback), with a full-log window - handy for model-support reports
  • 🛡️ Firmware-change guard - after a BIOS/EC update the app detects the changed firmware, blocks automatic writes and asks you to re-verify the model before it touches the EC again
  • 🌡️ Temperature alert (opt-in) - an OSD toast and/or a GhostDeck card (each switchable) when the CPU or GPU stays above a chosen threshold (70-100 °C) for a chosen time (5-60 s), with a cool-down between alerts and an entry in the change history; the OSD display time is adjustable (1-15 s, alerts stay up at least 5 s). A separate SSD temperature alert (opt-in) watches the hottest drive (55-80 °C) through the Windows storage APIs, so it works on every machine - even unsupported models
  • 🆘 Panic reset hotkey (default Ctrl+Alt+F10) - one press returns the machine to a safe stock state: Fan Boost off, Balanced profile, fans back on the automatic curve
  • 💾 Settings backup - export every preference (colors, hotkeys, rules, overlay, alerts) to a JSON file and import it after a reinstall or on another machine; machine-specific state (firmware guard, window position) stays local
  • 🧭 Backup WMI path for older firmware - laptops of the Dragon Center generation (Delta 15, GF65 Thin, GS75 and relatives) ship firmware that refuses MSI's EC control interface, so GhostDeck used to be a thermometer there. On a model whose block layout is on record the app now works through the device's WMI data blocks: profiles, temperatures, fan duty and RPM, and on the GF65 Thin 10UE the fan curve. Profile switching starts locked and a built-in path test (about a minute and a half: read, one reversible setting, the four profiles under short loads, restore, with a text report on the desktop) unlocks it on your machine once it passes - every write on this path goes through one gate and an allow-list of slots and values. A laptop with the known block layout but no entry yet runs in monitoring only mode (temperatures and fan speeds) and Report my model captures the blocks per scenario, so the model can be added through the signed database without a release
  • 🩺 One-click diagnostic package (Settings → System) - a single zip with a read-only EC dump, settings, change history and error log, ready to attach to a bug report; no personal data involved
  • 📊 Power test (Report / verify ⚑ → Power test) - measures your profiles instead of asking you to judge them by ear. The same load runs on the processor and the discrete graphics chip in Silent, Balanced and Extreme while temperatures, fan speed, fan RPM, clock and the work the processor actually completes are sampled every second, so a model report carries a comparison table rather than impressions - and a profile that only lifts a budget the two chips share shows up too, which a CPU-only load cannot see. The baseline is measured twice (Balanced opens and closes the run), so a run carried by heat soak or running order reports its own drift instead of pretending. On boards whose entry records a fourth performance value (the switch some MSI Center versions put inside the top scenario) it also probes whether that value can be set from outside, reading the register back after the write and again after the revert. Every address it may touch is listed before you start, it needs mains power and your consent, and your profile is restored at the end. Takes about seven minutes. Unlike the other two report wizards it does not need MSI Center - and the whole Report page now opens on a start screen that says what each of the three tests answers and what it needs
  • 🔌 Optional auto-switch on AC / battery (off by default, so it won't fight MSI software)
  • ♻️ Startup / wake restore (opt-in, Settings → Power) - the EC resets to factory state on every cold boot (and sometimes wakes in Super Battery on its own); GhostDeck can re-assert both your profile and your custom fan curve a few seconds after startup and resume, so the machine always comes back exactly as you left it. Startup profile: keep "last used", or pick one fixed profile that every app start applies (waking from sleep still returns the profile you had)
  • 🖥️ Refresh-rate auto-switch (opt-in) - drop the panel to 60 Hz on battery and jump back to 144/240 Hz on AC, automatically; pickers list only the modes your panel reports and always target the built-in panel, even with an external monitor set as primary. Pure Windows display API, so it works on every laptop - even unrecognised models
  • 🔋 Battery charge limit - the three presets MSI offers (60 / 80 / 100 %) plus any value from 20 to 100 % on a slider - with a travel mode - one click charges to 100 % for a trip and the previous limit returns automatically after 3-30 days - plus a battery health panel (design vs full-charge capacity, wear %, charge cycles) in Settings → Power
  • 🚀 Start with Windows (elevated scheduled task - no UAC nag at logon)
  • 🔄 Syncs the UI if the profile is changed externally (e.g. by MSI Center)
  • 📚 Models tab in five sub-tabs - Start (your laptop and what works on it, the database in numbers, a growth chart, the models closest to tested, recent changes), List (filters, NEW badges, expandable details, nothing cut off), Features (coverage and a dot matrix), Series (tested share per series) and Community (everyone who helped and the timeline), all computed from the model database and updated with it
  • 🗄️ Signed model-database updates - support for newly verified models and fan curves arrives without waiting for a release: the app fetches a digitally signed model database from the repo at every start, when you open the Models tab, or on demand from Settings → System, and applies it straight away when it is newer. Signature verified on every load, older files rejected, anything invalid falls back to the built-in tables - a bad download can never break the app
  • ⬇️ In-app updates - a daily update check (can be disabled) with a GhostDeck card, plus one-click install from the Updates tab: it downloads the new release, shows a progress bar and restarts itself on the new version (the previous .exe is kept as a .bak and cleaned up on next start); falls back to the download page if the download fails. The tab also lists the last 20 releases with download counts and full release notes readable inline (click an entry to expand), and recovers from a lost connection on its own (retry button + automatic re-check)
  • 🔏 Digitally signed releases - every release published since v1.24.0 carries a verified publisher signature ("WYGODA DAWID FENIX INSPIRE"), so Windows can confirm who built it and that nobody tampered with it - see Download for what that means in practice
  • 📣 Announcements & feedback - occasional in-app notices (a GhostDeck card + a dismissible banner) fetched read-only from the repo on the same daily check; a Send feedback… tray entry opens GitHub Discussions. No data is collected by the app (a plain download, same privacy footprint as the update check); both can be turned off with the update-check toggle

Keep it cool. Keep it quiet. Keep control.

Comparison with MSI software

GhostDeck is a small, focused tool - it deliberately does one thing (power/fan profiles) well, rather than replacing MSI Center. The table shows where it helps most: the Silent profile MSI removed, a fan curve outside just Extreme, no background services, and full transparency of what it writes to the EC.

Feature MSI Center 2.0 GhostDeck
Silent profile ❌ (removed in 2.0) ✅
Balanced / Extreme / Super Battery modes ✅ ✅
Apex (the state above turbo) as a plain switch ⚠️ (inside the top scenario, selected models) ✅ (toggle on the Extreme tile, gain measurable via the Power test)
Full fan speed (Fan Boost / MSI Cooler Boost) ✅ ✅ (+ auto-off timer)
Battery charge limit ✅ (60/80/100) ✅ (60/80/100 or any value 20-100 %)
Charge-limit travel mode (auto-revert after a trip) ❌ ✅ (3-30 days, CLI 1-90)
Custom fan curve Limited¹ ✅ *(Balanced / Extreme / Super Battery)*¹
Measured fan characteristic (duty → RPM sweep) ❌ ✅ (30-100 %, per-machine history, plain-language findings)
Global rebindable hotkeys Limited² ✅
Scenes (one-click multi-setting macros) ❌ ✅ (profile + curve + Hz + overlay + more)
Tray-icon wheel / middle-click actions ❌ ✅ (configurable)
CPU / GPU temperature in the notification area ❌ ✅ (opt-in, own thresholds + colours)
Keyboard-backlight level (EC register) ✅ ✅ (supported single-colour models)
Webcam switch + hard camera block ✅ (switch) ✅ (switch + firmware-level block)
Screen brightness as part of a scene ❌ ✅
Time-based scene schedule (work hours / nights / weekends) ❌ ✅
Battery-level rules (below X % / above Y %) ❌ ✅
Auto-switch profile on AC / battery ❌ ✅
Auto refresh-rate switch on AC / battery ❌ ✅ (any model)
CPU turbo boost switch (previous values saved and restorable) ❌ ✅ (exact mode per power source and per profile, any laptop, CLI)
On-screen overlay (OSD) ✅ (profile / Fn keys) ✅ *(every function)*⁶
Detachable gaming overlay (HUD) ❌ ✅ (FPS / frametime / temps / RPM / GPU% / iGPU% / VRAM / clocks / RAM / battery; card or bar)
Crosshair overlay ✅ (Fn+↓, one style) ✅ (11 shapes or your own PNG; colour, size, rim, blur, rotation, offset; presets, share codes, click effect, hide while aiming)
Display colour profile (MSI True Color) per scenario ✅ (MSI Center scenarios) ⚠️ (experimental, opt-in; asks MSI's own True Color app; confirmed on True Color 5.1.24.0, other versions after your own test)
FPS + frametime counter (any game, no injection) ❌ ✅ (ETW, anti-cheat-safe)
Game-session report (FPS + temps/fans together) ❌ ✅ (on game exit)
Live EC profile-byte view / transparency ❌ ✅
Change & EC-write history log ❌ ✅
Temperature alert (threshold + duration) ❌ ✅ (opt-in, OSD + card)
SSD temperature alert ❌ ✅ (opt-in)
Panic reset hotkey (back to a safe stock state) ❌ ✅ (Ctrl+Alt+F10)
Settings backup (export / import) ❌ ✅
Fan-curve presets + per-profile auto-apply ❌ ✅ (share/import as JSON)
Local history charts (last 60 min) ❌ ✅ (temps + fans, memory-only)
Command-line interface (automation) ❌ ✅
Taskbar jump list (profiles, scenes, Fan Boost on right-click) ❌ ✅
ghostdeck:// links for Stream Deck, AutoHotkey, browsers ❌ ✅ (no plugin)
Hardware monitoring ✅ Limited³ (temps, fans, disks, battery health)
One-click diagnostic package for bug reports ❌ ✅
Measured comparison of the power profiles under load ❌ ✅ (Power test: same CPU + GPU load in each profile, sampled every second, baseline measured twice)
Works with any / no MSI Center version ❌ ✅
Older firmware without the EC control interface (Dragon Center generation) ✅ (Dragon Center only) ✅ (backup WMI path on models with a block layout on record; path test unlocks writes)
Installed size ~950 MB⁴ + background services ~2.5 MB⁵ (single portable .exe, no services)
RGB / per-key lighting / other MSI-Center features ✅ ❌
In-app self-update ✅ ✅ (one-click install + restart)
Open source ❌ ✅
  1. MSI Center only allows a custom fan curve in Extreme; this app runs one on Balanced / Extreme / Super Battery, fully reversible. Silent is a hardware exception: its power cap and the fan-curve mode share the same EC byte (0xD4), so enabling a curve in Silent necessarily switches the profile to Balanced (the app warns first).
  2. MSI Center's shortcuts are limited; here every hotkey is global and rebindable.
  3. Monitors CPU/GPU temperature, fan RPM, CPU & RAM usage via EC/WMI, plus GPU load % and VRAM per graphics card (discrete and integrated), an approximate CPU clock and battery % via driver-free Windows PDH counters, and game FPS / frametime via Windows ETW Present events - not MSI Center's full telemetry.
  4. MSI Center 2.0.x as the UWP app plus the files it installs to C:\Program Files (x86)\MSI on first launch.
  5. Self-contained single .exe - no installer, no background service, no separate .NET runtime.
  6. MSI Center shows an overlay for profile / Fn-key changes; this app shows one for every action it performs - profile switch and Fan Boost (and future functions) - so you always get feedback on what changed.

The comparison is against MSI Center 2.0 (the version that dropped Silent). This app is an unofficial, independent project - not affiliated with, endorsed, sponsored or supported by MSI. "MSI", "MSI Center" and "Cooler Boost" are trademarks of Micro-Star International Co., Ltd.; they are used here only descriptively to state compatibility.

GhostDeck

Crosshair

A crosshair drawn at the centre of the screen, over any game running in windowed or borderless mode. It is a small window of GhostDeck's own, like the gaming overlay: it never takes the focus, every click passes through to the game, and nothing is injected into the game or read from it. MSI Center's Fn+↓ crosshair cannot be taken over (that key goes from the laptop's controller straight to MSI's service), so GhostDeck draws its own, with its own hotkey.

The eleven built-in shapes on a dark and a light strip

Eleven built-in shapes or your own picture. Cross, cross with gap, gap cross with dot, dot, circle, circle with dot, T, X, chevron, square with dot and reticle, picked as tiles; or load a PNG with transparency (BMP and JPG work too, up to 512 × 512 px and 1 MB). Every shape has a colour (the GhostDeck palette or any colour), a size, a line thickness, a dark rim that keeps it readable on a bright and a dark scene alike, opacity, softness (a blur), rotation and an X / Y offset for games that aim a little below the centre. The position can also follow the mouse pointer.

Three looks: the default, a bold rim, a soft rotated one

Optional reactions to the mouse, both off by default: a click effect on the left button (spread, pulse or flash, 180 ms) and hide-while-aiming on the right button (held, or toggled per click). They watch the mouse through a low-level hook like the Windows-key lock, installed only while one of them is on.

The three click effects, frame by frame

Presets, share codes, export. Save as many presets as you like; a preset stays selected while you edit it and Save writes the look back. Hand a crosshair to a friend as a short share code (GDX1.…, Copy code / Paste code; the picture itself travels as an exported PNG), or export it as PNG or SVG. Switch the crosshair with a hotkey (Ctrl+Alt+F12, enable it under Settings → Shortcuts), the tile on Scenarios, the tray menu, a tray-click action, the taskbar jump list, a scene (off / on / on with a preset), GhostDeck.exe --crosshair on|off|preset "Name"|code GDX1.… or ghostdeck://crosshair/on. The settings backup carries the presets and the picture. Settings → Gaming opens on a Start view with one tile per feature, then the Gaming overlay and Crosshair views.

Two honest notes: a game in exclusive full-screen mode may hide any window over the screen, so use windowed or borderless mode; and in ranked online games prefer the crosshair built into the game. We found no documented ban for a plain window over the screen, but some anti-cheat clients (FACEIT, for example) block programs they do not recognise, and game rules can be broader than the technology. More in the FAQ and TECHNICAL.md §79.

MSI True Color (experimental)

MSI's own True Color application holds the display colour profiles (sRGB, Gamer, Movie, Anti-Blue, Office, AdobeRGB, Display P3), and MSI Center used to switch them together with its scenario. GhostDeck can switch them too: on a card under Settings → System, from the tray menu, as a scene field, with GhostDeck.exe --truecolor movie or a ghostdeck://truecolor/movie link. It asks the running True Color application to do it, through the window message True Color's own helper uses, and reads back the profile True Color recorded; it writes nothing to True Color's files or settings, never calculates colours itself and never starts True Color for you.

Settings → System → MSI True Color: the installed version, the switch, the seven profile tiles, the recorded profile and what GhostDeck last asked for

The feature is off by default. The first enable shows a consent card, and the card itself keeps the same disclaimer in plain view: experimental, with no guarantee that it works; you use it at your own risk and the author is not responsible for the effects of using an undocumented MSI interface; tested on 17 October 2026 on one MSI Raider GE78HX 13VH with True Color 5.1.24.0 and Windows 11 Home 26H2 (build 26300.9711), built-in display only. On any other True Color version the switch stays off - the card offers a one-click test instead: one switch to another profile for five seconds and back, then one question. A yes unlocks the switch on that computer, and a line in the project's confirmed-version list is all it takes to unlock it for everyone once a version is reported working.

Another True Color version: the switch stays off and the card offers the test

The question after the test; a yes unlocks the switch on this computer

External monitors and HDR were not tested (the message carries no monitor parameter). Details and the limits: FAQ, TECHNICAL.md §80, CLI.

Screenshots

Tray menu Scenarios
Tray menu - switch profile, run a scene, Status, Language, Settings Scenarios - profile tiles, quick-control bricks (Fan Boost, overlay, charge limit, refresh rate, webcam, Windows-key lock, touchpad, panic reset) and one-click scenes
Scenes Schedule rule
Scenes - every setting the scene touches as a chip; the profile pill wears that profile's color Scene schedule - a rule is a scene + weekdays + a time window (overnight ranges fine)
Scene editor Settings General
Scene editor - switch on only the settings a scene should apply (brightness, HDR, the crosshair with one of your presets, an MSI True Color profile, Windows-key lock and touchpad included); everything else stays as it is Settings → General - pick which bricks and sections the Scenarios tab shows; the gear on Scenarios jumps here and highlights this card
Status Settings
Status - temperature/fan rings, fan RPM, per-disk S.M.A.R.T. temperatures, battery time, RAM Settings - Start dashboard: icon sub-tabs and the live state of every group on its tile
Settings Power Settings System
Settings → Power - Windows power (turbo boost and power mode), charge limit with travel mode, battery-level rules, battery health, Fan Boost auto-off timer, refresh rate and HDR Settings → System - tray-icon mouse actions, tray temperature icons, camera privacy block, Windows-key lock, touchpad, Fn/Win keyboard layout, diagnostics, backup
Settings Hotkeys Updates
Settings → Hotkeys - every action rebindable, including one shortcut per scene Updates - one-click install, 20 releases with download counts and inline notes
Report my model Models - Start
Report my model - guided in-app EC capture → pre-filled GitHub issue Models - Start - your laptop and what works on it, the database in numbers, a growth chart you can point at, the models closest to tested, recent changes
Models - List Models - Features
Models - List - filter chips, a NEW badge, nothing cut off; a row opens every prefix, the dates, and each person thanked with every one of their reports Models - Features - how many models have each feature, and a dot per model
Models - Series Models - Community
Models - Series - how much of each series owners have tested; a click opens the list Models - Community - everyone who helped, and the timeline of new models and promotions
Report start screen GPU clock on Status
Report start screen - three tiles say what each test answers, what it needs and what it writes GPU clock on Status - core clock against its ceiling, no vendor software; the ? bubble explains the figure
Fan curve Fan curve in action
Fan curve - Chart - drag the nodes, with the live operating point, audibility zones, intent tiles, comparison layers and a coupled table Fan curve - In action - your curve with the last hour of real readings over it, plus the fan sweep and what its numbers say
Fan curve deck Status EC bytes
Fan curve - Deck - one rotary dial per node and a crossfader that blends the whole curve between two shapes Status (EC bytes) - live profile-byte matrix, legend and fan-curve tables
Change log Fan Boost timer
Change log - full history of profile switches and EC writes Fan Boost auto-off - the OSD note when the boost timer hands the fans back
Temperature in the tray Compact sub-tabs
Temperature in the tray - CPU, GPU and SSD as their own icons next to the clock, the digits coloured by your own thresholds Narrow window - the sub-tab strip drops to icons instead of pushing a scrollbar; the tab you are on keeps its label
Settings Automation Travel mode
Settings → Automation - the scene schedule, CPU/GPU and SSD temperature alerts with their own thresholds, OSD display time and one-click restore defaults Travel mode - charge to 100 % for a trip; the previous limit returns on its own after the chosen number of days
Windows power By profile editor
Windows power - the CPU turbo boost switch, the exact turbo mode plugged in and on battery with a plain description, the saved values in plain view, the Windows power mode as four segments, and By profile By profile editor - the power mode and the turbo mode for each power source a profile sets when it switches on
Apex switch Apex, first enable
Apex switch - on boards with a fourth performance value the Extreme tile carries its own toggle Apex, first enable - one card explains what Apex is and what the switch does before it is turned on for the first time
Restore Windows settings Name prompt
Restore Windows settings - one card lists what comes back before anything is written Name prompt - a preset name that is already taken is answered right under the field
Wrapped OSD toast Firmware guard
Notifications that explain themselves - when something outside the app changes a setting (here: the battery charge limit), the toast says what happened, who does that, and what to do; long messages wrap instead of stretching across the screen Firmware guard - after a BIOS update changes the EC firmware version the app pauses its automatic writes and says so in one card, with the way back
Profile order Own profile order
Profile order - two presets (Standard, By power) and an up and a down arrow per profile; the tiles, the tray menu, the profile lists and "next profile" follow Your own order - while the rows match neither preset, a note under the presets says that an own order is in use
Temperature in the tray settings Tray icon marker styles
Settings → System → Temperature in the tray - CPU, GPU and SSD icons (the SSD one is the hottest drive), the icon marker with a colour per source, and the warm / hot thresholds with their colours Icon marker - a bar under the digits (default), a dot, a corner or none, shown magnified and at real size on a dark and a light taskbar
Status with the integrated GPU Gaming overlay
Taskbar jump list: profiles, scenes, Fan Boost, panic reset Settings: the ghostdeck:// links switch
Settings → Gaming → Crosshair The eleven crosshair shapes
Settings → Gaming → Crosshair - shape tiles, your own PNG, a preview on a dark and a light half; colour, size, rim, softness, rotation and offset on the look card, with presets and a share code The eleven built-in shapes at 140 % scaling, each with the dark rim that keeps it readable on a bright and a dark scene
Settings → System → MSI True Color MSI True Color, first enable
Settings → System → MSI True Color - experimental: the installed version and whether it is confirmed, the switch, the seven profile tiles with the profile True Color recorded, and what GhostDeck last asked for MSI True Color, first enable - one card says what the switch does, that it uses an undocumented MSI interface, and where it was tested
Status on the backup WMI path Backup path test
Backup WMI path - firmware that refuses MSI's EC control interface: the model named from the BIOS string, profiles and fan readings through the device's data blocks, and the note saying what this path cannot do Path test - read, one reversible setting, the four profiles under short loads, the optional fan-curve check, restore; a pass unlocks profile switching on that machine and leaves a text report on the desktop
Monitoring only Backup path hint card
Monitoring only - a laptop with the known block layout but no entry yet: temperatures, fan duty and RPM, and the note pointing to the Report tab The card at start on such a laptop - one report captured from the data blocks is what adds the model, through the signed database

Every message from the tray is a GhostDeck card (an update, an announcement, the end of travel mode, a charge limit changed outside the app, the temperature and SSD alerts, refused shortcuts, a refused link):

The eight tray messages as GhostDeck cards | Status on a two-card laptop - "GPU load" is the discrete card alone, and the integrated card sits next to it with the shared memory it uses | Gaming overlay - every item switched on: the CPU model, CPU% next to GPU% and iGPU%, frametime, time left and the charge limit |

Download

Grab the latest GhostDeck-win-x64.exe from the Releases page. It's a single file, no install. GhostDeck 1.35.0+ requires the .NET 8 Desktop Runtime (x64) - most machines already have it, and Windows offers the download if it is missing. Run it and approve the UAC prompt (EC access requires administrator).

Upgrading from v1.34.x or earlier? Install v1.35.0 by hand. The release file is named differently now, so the in-app updater in older versions opens this page instead of replacing your copy.

Requirements: Windows 11 or Windows 10, 64-bit (x64) only - there is no 32-bit or ARM64 build. Needs the .NET 8 Desktop Runtime (x64), see above. Profile, fan and EC features need an MSI laptop; on any other machine, or on an unrecognised firmware, the app starts read-only.

Digitally signed releases

Every release since v1.24.0 is digitally signed. In plain terms: before publishing, the exe gets a cryptographic seal tied to the developer's registered business, verified by Microsoft (Azure Artifact Signing). That gives you three guarantees:

  • You know who made it - right-click the exe → Properties → Digital Signatures shows "WYGODA DAWID FENIX INSPIRE" (the developer's registered company). Windows shows the same name in the UAC prompt instead of "Unknown publisher".
  • Nobody tampered with it - if even one byte of the file were modified after signing (by malware, a broken download, or a fake mirror), the signature check fails visibly.
  • Publisher identity and integrity - Authenticode lets Windows and security tools identify who published the file and verify that nobody altered it after signing.

If a file presented as an official v1.24.0+ release does not carry this signature, don't run it.

What is signed, and how you can check it yourself

Three different things carry a signature, for three different reasons. None of them replaces another:

What Signed with What it proves How to check
The release .exe Authenticode (Azure Artifact Signing) The file you downloaded came from us and nothing altered it on the way Right-click the exe → Properties → Digital Signatures → "WYGODA DAWID FENIX INSPIRE"
data/models.json - the model database ECDSA P-256, public key in tools/model-signing.pub The model list the app downloads between releases is ours; a swapped or older file is refused The app verifies it on every load and falls back to its built-in tables if anything is off
Commits and tags in this repository SSH signing key registered on the GitHub account The history CI builds from really is the maintainer's, not someone using the same name in user.email GitHub shows Verified next to the commit; git verify-commit <sha> locally

The third one closes the last gap in the chain: a signed binary is only as trustworthy as the source it was built from. Commits are signed from 2026-08-16 onward - anything older predates the key and is unsigned, which is expected and not a warning sign.

Power & fan control for MSI laptops - no kernel driver

Supported models

Each model is ✅ tested (verified on real hardware) or ⚗️ experimental (built from the msi-ec register maps but not yet verified - the "Silent" power-cap behaviour is unconfirmed). On an unrecognized firmware the app runs read-only (Status works, writes disabled), so it never writes wrong registers on an untested machine.

Experimental models are opt-in per machine (since 1.36.0): when the detected laptop is experimental, Settings → System → "Startup & tray" shows an "Enable writes for this model (<firmware> - unverified)" switch that unlocks writes for that machine alone - a firmware change puts it back on read-only until you consent again. Experimental entries write only documented MSI shift/fan registers (low risk), but switching may not give the same low-power "Silent" until an owner confirms it.

157 models are recognised, grouped into EC families using hardware mapping information documented by msi-ec, with fan and temperature register layouts cross-checked against MControlCenter:

Tier Models EC firmware / registers Fan curve
✅ Tested Alpha 17 C7VF / C7VG, Bravo 15 B7ED, Bravo 17 C7VE / D7VF / D7VFK, Creator M14 A13VE, Creator M16 B13VF / Pulse 15 B13VGK / Katana 15 B13UDXK / B13VFK / B13VGK / Crosshair 16 A13V, Crosshair 15 B12UEZ / B12UGSZ, Crosshair 16 HX AI D2XW, Crosshair 17 HX AI D2XW, Crosshair 18 HX AI A2XW, Crosshair A16 HX (D7W/D8W), Cyborg 15 A12VF / A13VF / A13VE, Cyborg 15 B13WFKG / B2RWFKG / B2RWEKG, Cyborg A15 AI B2HWGKG / B2HWEKG, GE66 Raider / GP66 Leopard, GE76 Raider 11U / 11UH / GP76 Leopard 11UG, GF63 Thin 11UC / 11SC, GF65 Thin 10UE, Katana 15 HX B14WEK / B14WFK, Katana GF66 11UE / 11UG, Katana GF66 12U / Sword 15 A12UC, Modern 14 C12M, Prestige 14 AI Studio C1UDXG, Prestige 16 AI Studio B1VFG, Prestige 16 Studio A13VE / Summit E16 Flip A13VFT, Pulse 16 AI C1VGKG/C1VFKG, Pulse 17 AI C1VGKG / C1VFKG, Pulse A16 AI+ C3HWFKG, Pulse/Katana 17 B13V/GK, Raider 16 Max HX B2WJ, Raider A18 HX A7VIG, Raider GE67 HX 12U, Raider GE68 HX 14VGG, Raider GE68 HX 14VIG / Vector 16 HX A13V, Raider GE76 12UE / 12UGS, Raider GE78 HX 14VHG, Raider GE78HX 13V / Vector 17 HX A14V, Stealth 14 Studio A13VF, Stealth 16 AI+ B3WI / B3WH, Stealth 16 Studio A13VG, Stealth 18 HX AI A2XW, Stealth A16 AI+ A3XWHG, Summit E14 Flip Evo A12MT / Prestige 14 H B13U, Sword 16 HX B13V / B14V, Sword 17 HX B14VGKG, Thin 15 B12UCX / B12VE, Thin GF63 12VE, Titan 18 HX A14V / Raider 18 HX A14V, Titan 18 HX Dragon Edition, Vector 16 HX AI / Raider 16 HX AI A2XWHG / A2XWIG, Vector 17 HX AI A2XWHG, Vector A16 HX A8WIG, Vector A18 HX A9WHG / Raider A18 HX A9WIG / A9WJG 17KKIMS1.*, 158PIMS1.*, 17LNIMS1.*, 14P1IWS1.*, 1585EMS1.*, 1583EMS1.*, 15P4EMS1.*, 17T4EMS1.*, 1841EMS1.*, 15PLIMS1.*, 15K1IMS1.*, 15Q3EMS1.*, 15QLIMS1.*, 1543EMS1.*, 17K3EMS1.*, 16R6EMS1.*, 16W2EMS1.*, 1587EMS1.*, 1581EMS1.*, 1584EMS1.*, 14J1IMS1.*, 14N2EMS1.*, 15A2EMS1.*, 1594EMS1.*, 15P3EMS1.*, 17T3EMS1.*, 15PKIMS1.*, 17L5EMS1.*, 182KIMS1.*, 1545IMS1.*, 15M2IMS2.*, 15M1IMS2.*, 17K4EMS1.*, 17S1IMS2.*, 17S1IMS1.*, 17S2IMS2.*, 14K1EMS1.*, 2631EMS1.*, 2651EMS1.*, 15F2EMS1.*, 1833EMS1.*, 15FLIMS1.*, 14F1EMS1.*, 15P2EMS1.*, 17T2EMS1.*, 16R8IMS2.*, 16R8IMS1.*, 1822EMS1.*, 1824EMS1.*, 15M3EMS1.*, 17S3EMS1.*, 15MMIMS1.*, 182LIMS1.* - shift 0xD2 / fan 0xD4 ✅ editable
⚗️ G2 family (71) Raider / Vector / Titan HX (13V–14V), Stealth 16-18, Sword / Pulse / Crosshair 16, Katana, Cyborg, Bravo, Modern / Prestige / Summit shift 0xD2 / fan 0xD4 / super-batt 0xEB ◉ editable after opt-in (unverified)
⚗️ G1 family (34) older GS / GF / GE / GP, Modern, Alpha, Bravo, Delta, Creator shift 0xF2 / fan 0xF4 / charge 0xEF - profiles only

Some G1 boards (Delta 15 A5EFK, GF65 Thin 10UE, GS75 and relatives of the Dragon Center generation) ship firmware that refuses MSI's EC control interface altogether. Those run over the backup WMI path - the device's data blocks - on a model whose block layout is on record, and the in-app path test unlocks profile switching on that machine once it passes (passed so far on the GF65 Thin 10UE, #230); the fan curve is on there too. A machine with the known block layout but no entry runs in monitoring only mode and Report my model captures the blocks for a new entry. Plain-language guide with pictures: docs/BACKUP-PATH.md; also the FAQ and TECHNICAL.md §81.

The G2 fan-curve tables use the fixed addresses (CPU 0x6A/0x72, GPU 0x82/0x8A) that MControlCenter writes across the whole family; on experimental models the curve is editable once you opt in, but stays flagged unverified until you compare it with MSI Center on your own model. See the full per-firmware list of all 157 models (source of truth: Devices.cs). A handful of models whose msi-ec config documents no "Silent" fan value are deliberately left out (Silent is this app's core function - guessing it would be unsafe).

Got a different MSI - or own an experimental one and can confirm it works? The easiest way is right inside the app: tray menu → Report my model… (also a button in the Status window). It walks you through a read-only EC capture in each MSI Center scenario, builds the report, copies it to your clipboard, saves it to a file, and opens a pre-filled GitHub issue - just paste and submit. (Requires MSI Center installed as the scenario reference.)

No MSI Center on the machine? The third sub-tab, Power test, needs none. It runs the same all-core load in Silent, Balanced and Extreme, samples the controller every second, and hands you a comparison table: whether Silent really caps power, and what Extreme actually buys you, in numbers rather than impressions. On a board whose entry records a fourth performance value it also probes whether that value can be set from outside MSI Center. It takes about five minutes, the laptop gets hot and loud while it works, and your profile comes back at the end. Details in docs/TECHNICAL.md §60.

Prefer to do it by hand? Open a Model support request with your EC firmware (shown in the app's Status window) and the output of the diagnostic scripts in scripts/diagnostics/. The procedure is in docs/TECHNICAL.md §11.

ghostdeck --profile silent

CLI / automation

Every core action is scriptable - handy for Task Scheduler, Stream Deck, AutoHotkey or plain shortcuts. With the app running, any prompt will do: the command is handed to the running app, which already has administrator rights, so there is no UAC prompt. Without the app running, the command talks to the EC itself and asks for administrator rights once (UAC).

The examples below call the executable GhostDeck.exe. The release file is named GhostDeck-win-x64.exe, so either rename your copy or use that name in the commands.

GhostDeck.exe --profile Silent        # or Balanced / Extreme / SuperBattery
GhostDeck.exe --cycle                 # next profile
GhostDeck.exe --fanboost on 120       # full fan speed; optional auto-off in N seconds (needs the app running)
GhostDeck.exe --curve "My quiet"      # apply a saved fan-curve preset ("auto" = stock fans)
GhostDeck.exe --scene "Gaming"        # apply a saved scene (needs the app running)
GhostDeck.exe --refresh max           # panel refresh rate (a number or "max"; any laptop)
GhostDeck.exe --charge 80             # battery charge limit (20-100, "off" = stop managing)
GhostDeck.exe --travel 7              # charge to 100% for a trip; the previous limit returns after 7 days ("off" = end now)
GhostDeck.exe --turbo off             # CPU turbo boost via the Windows power plan (on / off / status; any laptop)
GhostDeck.exe --brightness 45         # internal-panel brightness (any laptop)
GhostDeck.exe --hdr on                # HDR / advanced color (HDR-capable displays)
GhostDeck.exe --touchpad off          # precision touchpad, device level (any laptop)
GhostDeck.exe --mic off               # mute the default Windows recording device (any laptop)
GhostDeck.exe --kbd high              # keyboard-backlight level (supported models)
GhostDeck.exe --webcam off            # EC-level webcam switch (same as the Fn camera key)
GhostDeck.exe --fnswap left           # which side the Fn key is on (EC-persisted swap)
GhostDeck.exe --winlock on            # block both Windows keys (needs the app running)
GhostDeck.exe --overlay on            # gaming overlay (needs the app running)
GhostDeck.exe --crosshair on          # crosshair; also: --crosshair preset "Name" / --crosshair code GDX1.…
GhostDeck.exe --truecolor movie       # MSI True Color profile (experimental, opt-in in Settings → System); "status" reads
GhostDeck.exe --panic                 # safe state: Fan Boost off, Balanced, fans auto
GhostDeck.exe --diag                  # diagnostic zip, works even when the UI won't start
GhostDeck.exe --status                # rich JSON: profile, temps, fans/RPM, battery, disks, states

If the tray app is running, the command is executed by it (with the exact same safety gates as the UI - tier, experimental opt-in); otherwise a one-shot mode talks to the EC directly and exits. A command that lives in the app (--scene, --overlay, --crosshair, --winlock, the --fanboost timer) starts the app when it is not running and hands the command over. Exit codes: 0 OK, 1 failed, 2 bad usage.

Links and the taskbar. The same commands work as ghostdeck:// links - ghostdeck://scene/Gaming, ghostdeck://profile/silent, ghostdeck://fanboost/on/300, ghostdeck://refresh/max, ghostdeck://panic - from a browser, the Run dialog, a Stream Deck "open" action, AutoHotkey or a shortcut (Settings → System → ghostdeck:// links, on by default). Only state-changing commands are reachable this way; --status, --diag and the maintainer commands are not. And a right-click on the GhostDeck taskbar button (or on the pinned icon) opens a jump list with the profiles in your order, every scene, Fan Boost on / off and the panic reset.

Full reference - every command, the --status JSON schema and ready-made recipes (Task Scheduler, Stream Deck, AutoHotkey, game-launcher wrappers): docs/CLI.md.

Build from source

Requires the .NET 8 SDK.

dotnet publish -c Release -r win-x64 --self-contained false ^
  -p:PublishSingleFile=true -p:DebugType=none -o publish

The app icon is generated by tools/gen-icon.ps1 (already committed as app.ico).

How it works (short version)

Each profile is a small set of EC register writes sent through root\wmi → MSI_ACPI.Set_Data (a 32-byte Package_32 buffer: Bytes[0] = address, Bytes[1] = value). The key lever is the fan-mode register 0xD4 (Silent = 0x1D), which the EC firmware ties to the power cap - in testing it dropped package power from ~104 W to ~30 W under load.

The chain has three independent layers: the MSI WMI schema (a small signed resource file, msiapcfg.dll, that describes the MSI_ACPI class - deployed by MSI's own software, it arrives with MSI Center), Microsoft's built-in wmiacpi.sys transport, and the firmware implementation in the EC. GhostDeck never needs MSI Center running, and a one-time MSI Center installation is enough - the schema stays behind even after everything MSI is uninstalled. GhostDeck deliberately does not redistribute or deploy the schema itself (an MSI-signed system component; licensing is not ours to resolve) - full story, measurements and sources: docs/MSI-WMI-SCHEMA.md.

Full reverse-engineering write-up, register map, measurements and the diagnostic scripts: docs/TECHNICAL.md.

Full per-firmware list of every recognised model: docs/SUPPORTED_MODELS.md (also shown live in the app's Models tab).

EC register map credit: BeardOverflow/msi-ec.

FAQ

See docs/FAQ.md - fan control outside Extreme, exact-wattage / PL1-PL2 sliders (and the BIOS route), running alongside MSI Center (and why changes don't show in its UI), "unsupported" after a clean Windows install, what to do when your laptop is not in the list, older laptops and the backup WMI path, keyboard backlight and why per-key RGB laptops don't get it, RGB/colour control, auto-clearing RAM, safety, and the admin/UAC prompt.

Documentation

Everything this project knows about MSI's Embedded Controller, and about itself, is written down rather than kept in someone's head. All of it lives in docs/:

Document What is in it
TECHNICAL.md The main reference: EC registers and per-profile recipes, how each feature works and why it was built that way, the invariants that must not be "fixed", and one numbered section per shipped change.
FAN-CURVE.md The Fan curve page end to end: the curve arithmetic (and why its interpolation is a model, never a measurement), all four views, the fan sweep and its safeguards, how each finding is composed and where its thresholds come from, and the page's DPI and scrolling rules.
SUPPORTED_MODELS.md Every recognised firmware with its support tier and what is enabled on it. Generated from the code - CI fails if it drifts.
MSI-WMI-SCHEMA.md Why a clean Windows install can report "unsupported" until MSI Center is installed once, measured end to end.
WINDOWS-POWER.md The Windows power card: the CPU turbo switch, choosing the exact turbo mode per power source (every mode explained), the power mode, what each profile sets, restoring, and showing the hidden setting in Windows.
BACKUP-PATH.md Older MSI laptops (the Dragon Center generation) whose firmware refuses the EC control interface: what the backup WMI path is, what you will see, what to do, and a technical section with diagrams of both paths and of the path test.
RENDERING.md How the UI is drawn: sharp text at high DPI, the buffered Status canvas, the per-pixel overlay, and the scrolling rules every page must obey (§5.1).
LIGHTING.md Keyboard backlight: what the EC exposes, and why per-key RGB laptops are out of scope.
CLI.md Every command-line switch, for scripts, Stream Deck and Task Scheduler.
BUILD.md Building from source, and how a release is produced and signed.
FAQ.md The questions people actually ask, answered with sources.
ABOUT_THE_NAME.md Why the project stopped being called "MSI Profile Switcher".

Release notes live in CHANGELOG.md, and each version also gets an illustrated tour on the wiki (reachable from the app: Updates -> Wiki on any release).

Testing the model gate (developer)

To preview the experimental / unsupported UI on any machine, set the MSIPS_FORCE_FIRMWARE environment variable to a firmware string before launching. The app then simulates that firmware and performs no EC writes (UI preview only):

# Run from an ADMIN PowerShell so the variable reaches the elevated app:
$env:MSIPS_FORCE_FIRMWARE = "16V1EMS1.100"   # an experimental model
# or "ZZZZ" for an unsupported firmware
& .\GhostDeck.exe
# (close it, clear the variable, relaunch to return to normal)

The Status window / tray show a (test) marker while simulating.

License

GPL-3.0-or-later © 2026 Dawid Wygoda

GhostDeck is free software: you may redistribute it and modify it under the terms of the GNU General Public License, either version 3 or (at your option) any later version. A modified version you distribute must keep those freedoms and make its source available.

Releases through v1.34.x were published under the MIT license for material the project had the right to license under those terms, and existing MIT grants to such material remain in effect. From v1.35.0 onward GhostDeck is distributed under GPL-3.0-or-later.

The name GhostDeck and the project's visual assets are not covered by the code license, see TRADEMARK.md and LICENSE-ASSETS.md. Where GhostDeck's hardware knowledge came from is recorded in THIRD-PARTY-NOTICES.md; licenses of the components bundled in the executable are in licenses/.

About

GhostDeck - independent, driver-free power & fan control for MSI laptops (EC via WMI). Restores Silent profile; custom fan curve, charge limit, gaming overlay/OSD, global hotkeys, 15 languages. Unofficial, not affiliated with MSI.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

64 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages