Skip to content

vladulus/polylux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

127 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Polylux

Open-source replacement for ASUS Armoury Crate.
Drives ROG hardware without 700 MB of bloat.

Latest Release GitHub Stars MIT License Windows 10/11 Support on Revolut

Download β€’ Changelog β€’ Architecture docs β€’ Support

Claude's project. v0.5 ships an end-to-end installer + Windows service + tray app. Daily-driveable on a ROG Maximus Z690 Extreme. If it saves you 700 MB of RAM and your sanity, tip Vlad β€” he runs the test rig.

A lightweight, native Windows app that drives ROG hardware β€” AniMe Matrix, motherboard LiveDash OLED, Ryujin AIO LCD, Aura RGB, fan PWM β€” without 700 MB of telemetry, auto-updaters, and background services.

Before: Armoury Crate + AsusCertService + Aac3572MbHal + ArmouryCrateService
        + Aura Service + LiveUpdate + LightingService          β‰ˆ 700 MB RAM
After:  Polylux.exe + PolyluxSensorDaemon.exe                  β‰ˆ 230 MB RAM

Screenshots

Tabbed UI, live previews, fan PWM control with radial gauges.
(Screenshots coming with the next push β€” the live app is what ships in v0.5.)

Status

v0.5 β€” installer ships, daily-driveable.

What's running end-to-end on a ROG Maximus Z690 Extreme:

  • AniMe Matrix β€” clock (3 bitmap fonts: Bold 7 / Slim 7 / Mini 5), scrolling text marquee (Arial Bold uppercase, font picker), static image / animated GIF (auto-scrolls when bigger than the panel), rotation 0/90/180/270, brightness, live preview that matches the physical panel.
  • LiveDash OLED β€” hardware monitor (CPU/GPU temp/load, fan RPM, memory) with single or rotating metric modes, custom text mode with horizontal scroll for long values, factory-preset GIF mode.
  • Aura RGB β€” every OpenRGB mode exposed as a scene (Static, Breathing, Spectrum Cycle, Rainbow, etc.), HSV colour picker, motherboard-only by default with explicit opt-in for keyboard / mouse / RAM.
  • Ryujin LCD β€” firmware-driven hardware monitor.
  • Fan PWM control β€” tools/PolyluxSensorDaemon/ (C# / .NET 8 Windows service) wraps LibreHardwareMonitorLib.IControl, exposes HTTP POST /control/fan/<id> so any client can set PWM 0-100% on any Super-IO fan header. Polylux UI presets: AUTO / OFF / SILENT (30%) / MEDIUM (60%) / FULL (100%) / CURVE (4 anchor points, linear interp against a temperature source). Auto- calibration on first run measures each fan's max RPM so the radial gauges scale correctly.
  • Dashboard β€” radial gauges (CPU + GPU temp), fan RPM cards, memory bar, per-device status row.
  • Tray app with auto-launch on install, auto-start at logon, proper close-to-tray.

What's tested:

  • ROG Maximus Z690 Extreme (motherboard with AniMe Matrix + LiveDash OLED + 7 PWM fan headers via Nuvoton NCT6798D)
  • Aura RGB on the motherboard controller
  • 73 Python unit tests green

What's not tested yet:

  • Ryujin II 360 custom image upload (protocol decoded but unverified)
  • Other ASUS motherboard models (only Z690 Extreme captures exist)
  • OLED brightness control + per-preset GIF selection (USBPcap research ongoing β€” see docs/PROJECT_STATE.md Β§15.9)

Install

One-liner (PowerShell, downloads + runs the latest installer):

irm https://raw.githubusercontent.com/vladulus/polylux/main/scripts/install.ps1 | iex

Or manual: download Polylux-Setup-<version>.exe from Releases and run it. One UAC prompt for the whole install β€” never again afterwards.

What the installer does:

  1. Uninstalls any prior Polylux cleanly (so every install produces a pristine %PROGRAMFILES%\Polylux\ tree).
  2. (Optional task, default on) Disables the Armoury Crate service stack (ArmouryCrateService, AsusCertService, AsusFanControlService, LightingService, etc.). Fully reversible β€” re-enable from services.msc.
  3. Installs PolyluxSensorDaemon as a Windows service running as LocalSystem, auto-starting at boot. Zero further UAC prompts.
  4. (Optional task, default on) Registers Polylux to auto-start in your tray at logon via HKCU\…\Run.
  5. Adds a Start Menu + Desktop shortcut.
  6. Launches Polylux immediately in the tray so you don't have to reboot to start using it.

Build from source (developers):

git clone https://github.com/vladulus/polylux.git
cd polylux
python -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt
python -m polylux.service                 # dev mode, no installer
# OR
.venv\Scripts\pyinstaller installer\polylux.spec --noconfirm
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer\Polylux.iss
# -> installer\Output\Polylux-Setup-<version>.exe

Architecture

Two cooperating processes:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Polylux.exe   (PyQt6 tray app, user-mode)        β”‚
β”‚   ─────────────                                    β”‚
β”‚   - matrix/oled/aura/ryujin/fans drivers           β”‚
β”‚   - tabbed UI (Dashboard / per-device / Settings)  β”‚
β”‚   - reads sensors via HTTP from the daemon         β”‚
β”‚   - writes hardware via libusb / OpenRGB SDK       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚ HTTP localhost:8085
                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   PolyluxSensorDaemon.exe   (Windows service)      β”‚
β”‚   ──────────────────────────                       β”‚
β”‚   - wraps LibreHardwareMonitorLib                  β”‚
β”‚   - GET /data.json  β†’ sensors (LHM-compat tree)    β”‚
β”‚   - POST /control/fan/<id>  β†’ IControl write       β”‚
β”‚   - runs as LocalSystem (ring-0 access for         β”‚
β”‚     SuperIO fan control without UAC at runtime)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Plugin-based core. Each device family is a separate driver module:

  • polylux/drivers/anime_matrix/ β€” AniMe Matrix USB direct, bitmap clock fonts, image renderer
  • polylux/drivers/livedash_oled/ β€” OLED hardware monitor scenes
  • polylux/drivers/ryujin_lcd/ β€” Ryujin II/III LCD (320Γ—240)
  • polylux/drivers/aura_rgb/ β€” Aura RGB (delegates to OpenRGB SDK)
  • polylux/sensors/ β€” LHM-tree parser + fan-control HTTP client
  • polylux/service/ β€” main entry point, signal handling, runner threads, ASUS-stack neutralisation
  • polylux/ui/ β€” PyQt6 frontend (tabbed window + system tray)
  • tools/PolyluxSensorDaemon/ β€” the .NET 8 sensor daemon source
  • installer/ β€” PyInstaller spec + Inno Setup script

Documentation:

  • docs/PROJECT_STATE.md β€” full architectural log, protocol decode notes, every shipped milestone (Β§1 β†’ Β§19).
  • docs/NEXT_SESSION.md β€” pickup file for the next dev session.

Status of the broader ASUS ecosystem

Polylux is a clean-room reverse engineering effort. Where ASUS ships a driver / SDK we use it (OpenRGB, LHM). Where they don't, the USB protocols were decoded from USBPcap captures of the AC stack.

The decoded protocols live in docs/PROJECT_STATE.md Β§6, Β§8, Β§9. Pull requests to extend Polylux to other ROG motherboards are welcome β€” typically all you need is a USBPcap capture of the manufacturer software controlling the new hardware, plus a willingness to send single-frame test commands to find the chip's command opcodes.

Support

If Polylux saved you the headache of running AC:

  • Revolut: revolut.me/vladrev76 (UK / EU, zero fees, instant). Vlad runs the Z690 Extreme test rig and burns the test cycles.
  • Star the repo β€” it costs you nothing and helps people find the project.
  • Report breakage with polylux.crash.log (in %APPDATA%\Polylux\) and we'll get to it.

License

MIT. See LICENSE.

About

Open-source replacement for ASUS Armoury Crate. Drives ROG hardware (AniMe Matrix, LiveDash OLED, Ryujin LCD, Aura RGB, fan PWM) without 700MB of bloat. Claude's project.

Topics

Resources

License

Stars

2 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors