Skip to content

Repository files navigation

Legion Control

Legion Control

Garage-lab console for Lenovo Legion — GTK4/libadwaita · Rust · Daemon · KDE widget
Unofficial · Community · Not affiliated with Lenovo · Made in Europe for everyone

License Rust Release Issues Wayland+X11 KDE

Install · Usage · Hardware & HID · Troubleshooting · Changelog · Report an issue

View the officially tested laptops & functionality chart →

Made in Europe · for everyone

Experimental: community-developed, no warranty. Hardware writes can affect system state — use with a recovery plan. Screenshots below are captured headless on an isolated Xvfb :99 + openbox session (GDK_BACKEND=x11, GSK_RENDERER=cairo) — your real desktop is never obscured.


Hero — Home overview on Legion Pro 7 16AFR10H (83RU)

Home — metric chips, fans, battery, power mode
Home · live chips · Fan overview · Battery · Custom PPT — 1060×680, dark libadwaita, captured offscreen

Cooling Lighting keyboard Battery


Screenshots — the whole app, no workflow interruption

Every image is a real 1060×680 window rendered headless (Xvfb 1400×900 + openbox, LEGION_PAGE=…, xwdpng). No compositor grab of your live session — the session stays untouched. Click any thumbnail for full resolution.

Home
Home
chips · fans · battery
CPU Features
CPU · Features
boost · SMT
CPU Tuning
CPU · Tuning
thermal · CO · stability
CPU Power
CPU · Power
read-only PPT preview
Cooling
Cooling
all fans at a glance
Lighting Keyboard
Lighting · Keyboard
zone + per-key
Front
Lighting · Front
chin bar
Rear
Lighting · Rear
hinge bar
Logo
Lighting · Logo
lid star
More
Lighting · More
brightness · all zones
Battery
Battery
health · limit · status
Profiles
Profiles
save · load · preset
Settings Setup
Settings · Setup
updates · daemon · diagnostics
Settings Fix
Settings · Fix
speakers · RGB · udev · logs
Settings Hardware
Settings · Hardware
DMI · EC · lighting
Settings Help
Settings · Help
links · legal
KDE Plasma widget
KDE widget
gauges · controls · plasma
How screenshots are taken without obscuring your workflow
# 1. Isolate — virtual display, no grab of your real Wayland session
Xvfb :99 -screen 0 1400x900x24 -ac &
DISPLAY=:99 openbox --sm-disable &

# 2. Run each page headless, with a private window
DISPLAY=:99 WAYLAND_DISPLAY= GDK_BACKEND=x11 GSK_RENDERER=cairo \
  LEGION_PAGE=overview legion-settings &

# 3. Capture the 1060×680 CSD window directly
WIN=$(DISPLAY=:99 xdotool search --onlyvisible --name "Legion Control")
DISPLAY=:99 xwd -id $WIN -out page.xwd
magick page.xwd page.png

# 4. Real session is untouched — the hidden tray instance is
#    briefly replaced and then restarted automatically

All 17 images in docs/assets/screenshots/ are produced this way. Run scripts/capture-screenshots.sh to regenerate.


Highlights

▸ Observe — Home chips cross-fade on 2s polls, thermal governor 70–98°C, per-fan cards with reset ▸ Tune — Curve Optimizer -30..0 with live SMT/boost toggles and 5-min stability test ▸ Light — Spectrum 048d:c197: Keyboard / Front / Rear / Logo / More + per-key painter
▸ Endure — Battery health, 60/80/100 % limiter, charge_types vs conservation_mode reconciliation ▸ Repair — Fix hub: Speakers (amp), RGB panic (HID soft → USB reset → hid-generic rebind + permanent udev), Logs ▸ Persist — Profiles, autostart, ~/.config/legion-control/settings.json, optional Plasma 6 widget

Features

  • Monitor CPU, GPU, battery, fans, and hwmon telemetry — chips on top, details below, hover tips, --hidden tray autostart.
  • Control profiles, fan targets, CPU boost, SMT, charge limits, and CPU Tuning — thermal throttle + Curve Optimizer undervolt + stability test on one tab.
  • Configure Gen 10 Spectrum RGB zones, effects, brightness, logo, and per-key colors — 5 tabs + painter window.
  • Save profiles, automate with legion-cli, optional Plasma 6 widget — polling via legion-poll.sh.

Get started

Recommended — the AppImage. One file, no dependencies, works on every x86_64 Linux distribution (Ubuntu, Fedora, Arch/CachyOS, openSUSE, Debian, …). Download it from the latest release, make it executable, and run:

chmod +x legion-control-0.1.1-x86_64.AppImage
./legion-control-0.1.1-x86_64.AppImage

The first-launch walkthrough can enable the privileged daemon (one PolicyKit prompt), set up start-on-boot, and install the AMD undervolt backend for you — see Installation.

Alternative install methods

The source installer supports Ubuntu 24.04+, Fedora 40+, Arch, openSUSE Tumbleweed. GUI needs Rust 1.87+, GTK 4.14+, libadwaita 1.5+, libudev, pkg-config, C toolchain.

git clone https://github.com/encomjp/Lenovo-Legion-Control.git
cd lenovo-legion-tool
./install.sh
# variants: ./install.sh -y | --user | --widget | --help
# do not mix native package + source installer — see docs/INSTALLATION.md

Native .deb / .rpm / Arch packages are built via ./packaging/build-all.sh into packaging/out/.

After installation:

systemctl status legion-control
legion-cli status
legion-cli info

How it works

GUI, CLI, and widget talk to legion-daemon for privileged ops. Daemon merges sysfs, hwmon, battery, NVIDIA, HID; RGB uses direct HID when possible. Support varies by model/firmware/kernel.

Legion Control architecture: clients, daemon, Linux interfaces, and device-specific HID paths

Open as PNG · View SVG · Read Architecture Guide


Alpha telemetry (opt-out)

One anonymized JSON per minute — model/type/BIOS/CPU/GPU/EC, distro+kernel, sensors, fans, battery health, thermal/CO, settings digest, sanitized log tail, self-check — over HTTPS to private legion-telemetry. On by default; opt-out in Setup → Alpha diagnostics or first launch. Never: hostname, username, serials, MAC/IP. Self-hosters can set LEGION_TELEMETRY_URL + LEGION_TELEMETRY_KEY.


Hardware support / Officially tested

View the officially tested laptops and functionality chart →

The following models are officially supported/tested by this project. Support is model-, SKU-, firmware-, and kernel-dependent; an “officially tested” entry does not make every configuration identical.

Laptop Machine type / firmware Evidence and tested scope
Lenovo Legion Pro 7 16AFR10H 83RU · SMCN · Ryzen 9 9955HX3D Owner validation; Gen 10 Spectrum RGB 048d:c197, including the hero workflow.
Legion Y7000P IRX9 / Legion 5 16IRX9 83DG · Intel Core i7-14700HX Officially supported/tested via fleet telemetry and user Konnor; observed functionality is tied to the reported configuration.
IdeaPad Gaming 3 15ACH6 82K2 / 82MJ · H3CN Officially supported/tested via fleet telemetry; telemetry is degraded, but the model was validated in 0.2.8.

All other models in the full model-capabilities.json catalog are untested/unsupported atm. Do not infer support from a family name or PSREF entry. To help validate another model, enable Setup → Alpha diagnostics, let it collect an anonymized report, then submit the model type, BIOS, version, and sanitized telemetry through a new issue. Never include serial numbers, hostnames, usernames, MAC/IP addresses, or other personal data.

Before expecting Spectrum support, inspect the controller:

lsusb | grep 048d

See Hardware and HID for Linux interfaces, HID details, support boundaries, and debugging guidance.


Guides

  • Installation — prereqs, packages, installer, widget, upgrades, removal
  • Usage — GUI & CLI, profiles, cooling, lighting, battery, diagnostics, logs, safety
  • Architecture — components, IPC, data flow, persistence, permissions, deployment
  • Hardware and HID — Linux interfaces, HID, support boundaries, debugging
  • KDE Plasma widget — install, controls, config, validation
  • Troubleshooting — evidence-first fixes for install, daemon, HID, sensors, fans, dGPU, battery, widget
  • Development — toolchain, checks, packaging, hardware tests, contributions
  • Changelog — rolling log and per-release notes

Project

Repository: https://github.com/encomjp/Lenovo-Legion-Control

Licensed under GPL-2.0-only. Spectrum notes build on community reverse-engineering: legion-spectrum-control and LenovoLegionToolkit.

Garage Lab · CachyOS · KWin Wayland · Rust + GTK4 · Made for Legion, made in Europe.

About

Linux control tool for Lenovo Legion laptops

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages