Linux implementation of Thermalright LCD Control Center
Project description
TRCC Linux
Looking for testers! We need Linux, Windows, macOS, and BSD testers. If you have a Thermalright LCD or LED device on any platform, grab the latest release and let us know how it goes โ run
trcc reportand paste the output in an issue. Every test report helps, even if nothing works yet!
Solo hobbyist project โ built in my spare time, one device, no corporate backing. Just a Linux user who got tired of waiting for Thermalright to support us. If something breaks, please be patient โ I do this for free because I like helping people. If this project helps you, consider buying me a beer ๐บ or Ko-fi โ
Packages:
Huge thanks to @javisaman, @Xentrino, @loosethoughts19-hash, @Mr-Renegade, @Reborn627, @knappstar, and @woebygon for the beers โ you guys are legends.
Native Linux port of the Thermalright LCD Control Center (Windows TRCC 2.1.2). Control and customize the LCD displays and LED segment displays on Thermalright CPU coolers, AIO pump heads, and fan hubs โ entirely from Linux.
This project wouldn't exist without our testers. I only own one device. Every supported device in this list works because someone plugged it in, ran
trcc report, and told me what broke. 32 testers helped us go from "SCSI only" to full C# feature parity with 6 USB protocols, 16 FBL resolutions, and 12 LED styles. Open source at its best โ see Contributors below.
Unofficial community project, not affiliated with Thermalright. Built with Claude (AI) for protocol reverse engineering and code generation, guided by human architecture decisions and logical assessment.
Install
Native packages (recommended)
Pre-built packages are available for every major distro. No pip, no venv, no PEP 668 headaches โ just download and install like any other app. Every release is built automatically from source using GitHub Actions โ the build logs are public so anyone can verify what went in.
Not sure which distro you're running? Open a terminal and type
cat /etc/os-releaseโ theIDline tells you.
Fedora / openSUSE / Nobara:
sudo dnf install https://github.com/Lexonight1/thermalright-trcc-linux/releases/latest/download/trcc-linux-8.5.6-1.fc43.noarch.rpm
Ubuntu 24.04+ / Debian 13+ / Mint 22+ / Pop!_OS 24.04+ / Zorin 17+:
curl -LO https://github.com/Lexonight1/thermalright-trcc-linux/releases/latest/download/trcc-linux_8.5.6-1_all.deb
sudo dpkg -i trcc-linux_8.5.6-1_all.deb
sudo apt-get install -f # pulls in any missing dependencies
Older versions (Ubuntu 22.04, Mint 21.x, etc.) don't have
python3-pyside6and other deps in their repos. Usepipxinstead โ see PyPI install below.
Arch / CachyOS / Manjaro / EndeavourOS / Garuda:
curl -LO https://github.com/Lexonight1/thermalright-trcc-linux/releases/latest/download/trcc-linux-8.5.6-1-any.pkg.tar.zst
sudo pacman -U trcc-linux-8.5.6-1-any.pkg.tar.zst
NixOS โ add to your flake.nix inputs:
{
inputs.trcc-linux.url = "github:Lexonight1/thermalright-trcc-linux";
# In your system configuration:
programs.trcc-linux.enable = true;
}
Then run sudo nixos-rebuild switch.
Step 3: Unplug and replug the USB cable, or reboot (this reloads the device permissions).
Step 4: Launch the app:
trcc gui
That's it! If your device isn't detected, run trcc detect --all to see what's connected, or trcc report and open an issue with the output.
Windows (experimental)
Download trcc-8.5.6-setup.exe from the latest release and run the installer. It installs both the GUI and CLI:
- TRCC shortcut in Start Menu โ launches the GUI
trcccommand in Command Prompt/PowerShell โ CLI access (installer adds it to PATH)
Requires Windows 10 or 11. For GPU sensors (hotspot temp, memory junction temp, voltage), LibreHardwareMonitor must be running โ trcc reads its sensors automatically. Run as Administrator for full hardware access.
macOS (experimental)
Download trcc-8.5.6-macos.dmg from the latest release, open the DMG, and drag TRCC to Applications.
Requires macOS 11+. Install
libusbfirst:brew install libusb. LCD devices using SCSI (most models) needsudoto detach the kernel driver โ HID devices work without root. On Apple Silicon Macs, sensor reading requiressudoforpowermetricsaccess.
FreeBSD (experimental)
pkg install py311-pip libusb py311-pyusb py311-hid
pip install trcc-linux
trcc gui
SCSI devices use
/dev/pass*viacamcontrol(part of base system). CPU temp requireskldload coretemp(Intel) orkldload amdtemp(AMD). HID devices work via hidapi. Run as root for full hardware access.
Verify your download
Every release includes a SHA256SUMS.txt file. Download it from the same release page, then:
cd ~/Downloads
sha256sum -c SHA256SUMS.txt --ignore-missing
If you see OK next to your package โ it's clean. Source code is GPL-3.0, fully auditable โ no binaries, no obfuscation, no telemetry.
PyPI
Best option for older distros (Ubuntu 22.04, Mint 21.x, Debian 11/12) or if you prefer Python packaging.
# Install system dependencies first
sudo apt install pipx libusb-1.0-0 sg3-utils p7zip-full libxcb-cursor0 # Debian/Ubuntu/Mint
sudo dnf install pipx libusb-1.0.0 sg3_utils p7zip # Fedora
# Install trcc-linux
pipx install trcc-linux
trcc setup # interactive wizard โ udev rules, desktop entry
Then unplug and replug the USB cable and run trcc gui.
pipxnot installed?sudo apt install pipx(Debian/Ubuntu),sudo dnf install pipx(Fedora),sudo pacman -S python-pipx(Arch). See the Install Guide for your distro.
Automatic (git clone)
git clone https://github.com/Lexonight1/thermalright-trcc-linux.git
cd thermalright-trcc-linux
sudo ./install.sh
Detects your distro, installs system packages, Python deps, udev rules, and desktop shortcut.
Supported distros
Fedora, Nobara, Ubuntu, Debian, Mint, Pop!_OS, Zorin, elementary OS, Arch, Manjaro, EndeavourOS, CachyOS, Garuda, openSUSE, Void, Gentoo, Alpine, NixOS, Bazzite, Aurora, Bluefin, SteamOS (Steam Deck).
trcc: command not found? Open a new terminal โ pip installs to~/.local/binwhich needs a new shell session to appear on PATH.
See the Install Guide for distro-specific instructions and troubleshooting.
Something not working?
Open a GitHub issue โ that's the only place I see bug reports. I don't monitor Reddit, forums, or Discussions. Run trcc report, paste the output, and I'll get back to you.
Have an untested device?
Run trcc report and paste the output in an issue โ takes 30 seconds. See the full list of devices that need testers.
Usage
GUI
trcc gui
Full desktop app with theme browser, video player, overlay editor, LED control panel, and hardware sensor dashboard.
CLI
trcc detect # Show connected devices
trcc send image.png # Send image to LCD
trcc color "#ff0000" # Fill LCD with solid color
trcc video clip.mp4 # Play video on LCD
trcc screencast # Live screen capture to LCD
trcc brightness 2 # Set brightness (1=25%, 2=50%, 3=100%)
trcc rotation 90 # Rotate display (0/90/180/270)
trcc theme-list # List available themes
trcc theme-load NAME # Load a theme by name
trcc overlay # Render and send overlay
trcc led-color "#00ff00" # Set LED color
trcc led-mode breathing # Set LED effect mode
trcc report # Generate diagnostic report
trcc doctor # Check system dependencies
trcc setup # Interactive setup wizard
trcc uninstall # Remove TRCC completely
50 commands total โ see the CLI Reference for the full list.
REST API
Start the API server and control your devices remotely:
trcc serve # Start on http://localhost:9876
trcc serve --port 8080 # Custom port
trcc serve --tls # HTTPS with auto-generated self-signed cert
trcc serve --host 0.0.0.0 # Listen on all interfaces (LAN access)
43 endpoints covering devices, display, LED, themes, and system metrics. Use trcc api to list all endpoints.
# Examples with curl
curl http://localhost:9876/devices # List devices
curl -X POST http://localhost:9876/display/send \
-F "file=@wallpaper.png" # Send image
curl -X POST http://localhost:9876/led/color \
-H "Content-Type: application/json" \
-d '{"color": "#ff0000"}' # Set LED color
Documentation
| Document | Description |
|---|---|
| Install Guide | Installation for all major distros |
| CLI Reference | All CLI commands with options and examples |
| API Reference | All 43 REST API endpoints with request/response models |
| Troubleshooting | Common issues and fixes |
| New to Linux | Guide for Linux beginners |
| Changelog | Version history |
| Supported Devices | Full device list with USB IDs and protocols |
| Testers Wanted | Devices that need hardware validation |
| Device Testing Guide | How to test and report device compatibility |
| Architecture | Project layout and design |
| Technical Reference | SCSI protocol and file formats |
Protocol documentation (reverse-engineered from Windows TRCC)
| Document | Description |
|---|---|
| USBLCD Protocol | SCSI frame transfer protocol |
| USBLCDNEW Protocol | USB bulk/LY frame transfer protocol |
| USBLED Protocol | HID LED segment display protocol |
Features
| Category | What you get |
|---|---|
| GUI | Full PySide6 desktop app โ theme browser, video player, overlay editor, LED control panel, 38 languages |
| CLI | 50 commands โ trcc gui, trcc send, trcc video, trcc led-color, trcc screencast, and more |
| REST API | 43 endpoints โ control everything remotely, build integrations, automate your setup |
| Themes | Local, cloud, and masks โ carousel mode, export/import as .tr files, custom mask upload with X/Y positioning, 5 starters + 120 masks per resolution |
| Media | Video/GIF playback, video trimmer, image cropper, screen cast (X11 + Wayland) |
| Overlay Editor | Text, sensors, date/time overlays โ font picker, dynamic scaling, color picker |
| Hardware Sensors | 77+ sensors โ CPU/GPU temp, fan speed, power, usage โ customizable dashboard |
| LED Control | 12 LED styles, zone carousel, breathing/rainbow/static/wave modes, per-zone color |
| Display | 16 resolutions (240x240 to 1920x462), 0/90/180/270 rotation, 3 brightness levels |
| Multi-device | Per-device config, auto-detect, multi-device with device selection |
| Security | udev rules, polkit policy, SELinux support, no root required after setup |
Under the hood: 109 source files, ~40K lines of Python, 5045 tests across 60 test files in 9 directories. Hexagonal architecture with strict dependency injection โ GUI, CLI, and API all talk to the same core services. 6 USB protocols reverse-engineered from the Windows C# app.
What we do better than Windows TRCC
- 38 languages โ Windows has 10 (baked into PNGs). We render text at runtime, community can add more
- CLI + REST API โ Windows is GUI-only. We have 50 CLI commands and 43 API endpoints for automation
- Custom mask upload โ upload your own PNG overlay, position with X/Y controls, saved to
~/.trcc-user/ - No admin required โ udev rules handle permissions. Windows needs "Run as Administrator"
- Open source โ read the code, fix bugs, add features. Windows TRCC is closed-source .NET
- Screencast on Wayland โ Windows can't do that either
- Hexagonal architecture โ GUI, CLI, and API share the same core. No feature lag between interfaces
38-Language GUI (i18n)
The Windows TRCC app ships 10 languages by baking translated text into separate PNG background images โ 129 PNGs just for panel labels. We replaced all of that with a runtime i18n system: language-neutral background PNGs + QLabel text overlays rendered from core/i18n.py. Switching languages updates every label instantly โ no restart, no extra files.
Supported languages: Simplified Chinese, Traditional Chinese, English, German, Russian, French, Portuguese, Japanese, Spanish, Korean, Italian, Dutch, Polish, Turkish, Arabic, Hindi, Thai, Vietnamese, Indonesian, Czech, Swedish, Danish, Norwegian, Finnish, Hungarian, Romanian, Ukrainian, Greek, Hebrew, Malay, Bengali, Urdu, Farsi, Tagalog, Tamil, Punjabi, Swahili, Burmese
Adding a new language is one dict entry per string in core/i18n.py โ no PNG editing, no asset pipeline. Community translations welcome.
Supported Devices
Run lsusb to find your USB ID (xxxx:xxxx after ID), then match it below.
SCSI devices โ fully supported:
| USB ID | Devices |
|---|---|
87CD:70DB |
FROZEN HORIZON PRO, FROZEN MAGIC PRO, FROZEN VISION V2, CORE VISION, ELITE VISION, AK120, AX120, PA120 DIGITAL, Wonder Vision |
0416:5406 |
LC1, LC2, LC3, LC5 (AIO pump heads) |
0402:3922 |
FROZEN WARFRAME, FROZEN WARFRAME 360, FROZEN WARFRAME SE, ELITE VISION 360 |
Bulk USB devices โ raw USB protocol:
| USB ID | Devices |
|---|---|
87AD:70DB |
GrandVision 360 AIO, Mjolnir Vision 360, Wonder Vision Pro 360, Frozen Warframe Pro |
LY USB devices โ chunked bulk protocol:
| USB ID | Devices |
|---|---|
0416:5408 |
Trofeo Vision 9.16 LCD |
0416:5409 |
(LY1 variant) |
HID LCD devices โ auto-detected:
| USB ID | Devices |
|---|---|
0416:5302 |
Trofeo Vision LCD, Assassin Spirit 120 Vision ARGB, AS120 VISION, BA120 VISION, FROZEN WARFRAME, FROZEN WARFRAME 360, FROZEN WARFRAME SE, FROZEN WARFRAME PRO, ELITE VISION, LC5 |
0418:5303 |
TARAN ARMS |
0418:5304 |
TARAN ARMS |
HID LED devices โ RGB LED control:
| USB ID | Devices |
|---|---|
0416:8001 |
AX120 DIGITAL, PA120 DIGITAL, Peerless Assassin 120 DIGITAL ARGB White, Assassin X 120R Digital ARGB, Phantom Spirit 120 Digital EVO, HR10 2280 PRO Digital, and others (model auto-detected via handshake) |
See the full device list with protocol details and the Device Testing Guide if you have an untested device.
Architecture
src/trcc/
โโโ core/ # Models, enums, domain constants โ zero I/O
โโโ services/ # Business logic โ pure Python, no framework deps
โโโ adapters/ # USB device protocols (SCSI, HID, Bulk, LY, LED)
โโโ qt_components/ # PySide6 GUI (themes, video, overlay, LED, sensors)
โโโ cli/ # Typer CLI โ 50 commands across 8 modules
โโโ api/ # FastAPI REST API โ 43 endpoints across 7 modules
โโโ conf.py # Settings singleton
โโโ assets/ # GUI images, desktop entry, polkit policy, systemd service
Hexagonal architecture โ GUI, CLI, and API are interchangeable adapters over the same core services. Adding a new interface (Android app, Home Assistant plugin) means writing a new adapter, not touching business logic.
6 USB protocols reverse-engineered from the Windows C# app:
| Protocol | Transport | Devices |
|---|---|---|
| SCSI | SG_IO ioctl | Frozen Warframe, Elite Vision, AK/AX120, PA120, LC1-5 |
| HID Type 2 | pyusb interrupt | Trofeo Vision, Assassin Spirit, AS/BA120, Frozen Warframe SE/PRO |
| HID Type 3 | pyusb interrupt | TARAN ARMS |
| Bulk | pyusb bulk | GrandVision 360, Mjolnir Vision 360, Wonder Vision Pro 360, Frozen Warframe Pro |
| LY | pyusb bulk (chunked) | Trofeo Vision 9.16 LCD |
| LED | pyusb HID | All LED segment display devices (12 styles) |
Contributors
A big thanks to everyone who has contributed invaluable reports to this project:
- Xentrino โ Peerless Assassin 120 Digital ARGB White LED testing across 15+ versions
- hexskrew โ Assassin X 120R Digital ARGB HID testing & GUI layout feedback
- javisaman โ Phantom Spirit 120 Digital EVO LED testing & GPU phase validation
- Pikarz โ Mjolnir Vision 360 bulk protocol testing
- michael-spinelli โ Assassin Spirit 120 Vision ARGB HID testing & font style bug report
- Rizzzolo โ Phantom Spirit 120 Digital EVO hardware testing
- N8ghtz โ Trofeo Vision HID testing
- Lcstyle โ HR10 2280 PRO Digital testing
- PantherX12max โ Trofeo Vision LCD hardware testing
- shadowepaxeor-glitch โ AX120 Digital hardware testing & USB descriptor dumps
- bipobuilt โ GrandVision 360 AIO bulk protocol testing
- cadeon โ GrandVision 360 AIO bulk protocol testing
- gizbo โ FROZEN WARFRAME SCSI color bug report
- apj202-ops โ Frozen Warframe SE HID testing
- Edoardo-Rossi-EOS โ Frozen Warframe 360 HID testing
- edoargo1996 โ Frozen Warframe 360 HID testing
- stephendesmond1-cmd โ Frozen Warframe 360 HID Type 2 testing
- acioannina-wq โ Assassin Spirit 120 Vision HID testing
- Civilgrain โ Wonder Vision Pro 360 bulk protocol testing
- loosethoughts19-hash โ Frozen Warframe Pro bulk protocol testing
- Mr-Renegade โ Peerless Vision LY protocol testing & portrait rotation feedback
- Reborn627 โ GrandVision 360 AIO HiDPI scaling & CachyOS testing
- tensaiteki โ Elite Vision 360 SCSI detection on CachyOS (sg module bug) & Bazzite RPM shebang fix
- wrightbyname โ CLI compatibility testing & bug report
- Scifiguygaming โ Frozen Warframe HID testing on CachyOS
- mog199 โ HID Type 2 permission error bug report
- ravensvoice โ Trofeo Vision portrait cloud theme feature request
- rhuggins573-crypto โ Assassin X 120R Digital ARGB LED bug report on Bazzite
- knappstar โ Scrambled display bug report & SCSI permission troubleshooting
- jezzaw007 โ Preview rotation & overlay resume bug reports
- Pewful2021 โ PA120 LED troubleshooting
- lallemandgianni-boop โ PA120 DIGITAL LCD PID investigation
- sleeper14200 โ Linux Mint .deb compatibility bug report
- riodevelop โ Frozen Warframe 240 HID tester
- wobbegongus โ Frozen Warframe 240 HID tester
Stargazers
Thanks to everyone who took a moment to star this project โ it means the world.
alessa-lara ยท ArcaneCoder404 ยท betolink ยท bive242 ยท BrunoLeguizamon05 ยท cancos1 ยท codeflitting ยท dabombUSA ยท damachine ยท DasFlogetier ยท emaspa ยท honjow ยท jezzaw007 ยท jhlasnik ยท jmo808 ยท knappstar ยท mgaruccio ยท michael-spinelli ยท mkogut ยท nathanielhernandez ยท oddajpierscien ยท Pewful2021 ยท Pikarz ยท qussaif10 ยท Rehaell ยท riodevelop ยท rslater ยท shadowepaxeor-glitch ยท Smokemic ยท spiritofjon ยท Thymur ยท Vydon ยท Xentrino ยท Ziusz
Faulkers
Thanks for carrying the torch โ these folks forked the repo to build on it.
dabombUSA ยท jezzaw007 ยท taillis
Donations
If this project saved you from keeping a Windows partition around, consider buying me a cold one.
License
GPL-3.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file trcc_linux-8.5.6.tar.gz.
File metadata
- Download URL: trcc_linux-8.5.6.tar.gz
- Upload date:
- Size: 30.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2f720e97713935f1cabe5d7a2f4663b6faa3e59d4c4b3c83fd278b7893f00e6
|
|
| MD5 |
5211d5f759a94a9262d4f7889ce3f76b
|
|
| BLAKE2b-256 |
5f22db5167f35c65ba1880555fc9c0bcef8634c1d67ba352eb6e37e3d9495297
|
Provenance
The following attestation bundles were made for trcc_linux-8.5.6.tar.gz:
Publisher:
release.yml on Lexonight1/thermalright-trcc-linux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
trcc_linux-8.5.6.tar.gz -
Subject digest:
f2f720e97713935f1cabe5d7a2f4663b6faa3e59d4c4b3c83fd278b7893f00e6 - Sigstore transparency entry: 1108457836
- Sigstore integration time:
-
Permalink:
Lexonight1/thermalright-trcc-linux@10ba6bd15e3e849bfaadb4ecabca85eb7ff1bb3a -
Branch / Tag:
refs/tags/v8.5.6 - Owner: https://github.com/Lexonight1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@10ba6bd15e3e849bfaadb4ecabca85eb7ff1bb3a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file trcc_linux-8.5.6-py3-none-any.whl.
File metadata
- Download URL: trcc_linux-8.5.6-py3-none-any.whl
- Upload date:
- Size: 30.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e97d8f5b4e94aa570584b1f7ef6c386da2e7593566a679c8cd6bdc82331e5f12
|
|
| MD5 |
be3637bc134f5a219bf40026fbc1929c
|
|
| BLAKE2b-256 |
1d1ccc29215614e0615aceed0159e625f4b6868536b97afec0aaf94e9ce92a2c
|
Provenance
The following attestation bundles were made for trcc_linux-8.5.6-py3-none-any.whl:
Publisher:
release.yml on Lexonight1/thermalright-trcc-linux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
trcc_linux-8.5.6-py3-none-any.whl -
Subject digest:
e97d8f5b4e94aa570584b1f7ef6c386da2e7593566a679c8cd6bdc82331e5f12 - Sigstore transparency entry: 1108454445
- Sigstore integration time:
-
Permalink:
Lexonight1/thermalright-trcc-linux@10ba6bd15e3e849bfaadb4ecabca85eb7ff1bb3a -
Branch / Tag:
refs/tags/v8.5.6 - Owner: https://github.com/Lexonight1
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@10ba6bd15e3e849bfaadb4ecabca85eb7ff1bb3a -
Trigger Event:
push
-
Statement type: