Metadata-Version: 2.4
Name: trcc-linux
Version: 1.2.17
Summary: Linux implementation of Thermalright LCD Control Center
Project-URL: Homepage, https://github.com/Lexonight1/thermalright-trcc-linux
Project-URL: Documentation, https://github.com/Lexonight1/thermalright-trcc-linux#readme
Project-URL: Repository, https://github.com/Lexonight1/thermalright-trcc-linux
Project-URL: Issues, https://github.com/Lexonight1/thermalright-trcc-linux/issues
Author: TRCC Linux Contributors
License-Expression: GPL-3.0-or-later
License-File: LICENSE
Keywords: cooling,hardware,lcd,monitor,thermalright
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: X11 Applications
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Hardware
Classifier: Topic :: System :: Monitoring
Requires-Python: >=3.9
Requires-Dist: numpy>=1.24.0
Requires-Dist: pillow>=10.0.0
Requires-Dist: psutil>=5.9.0
Requires-Dist: py7zr>=0.20.0
Requires-Dist: pyqt6>=6.5.0
Requires-Dist: pyusb>=1.2.0
Provides-Extra: all
Requires-Dist: dbus-python>=1.3.0; extra == 'all'
Requires-Dist: hidapi>=0.14.0; extra == 'all'
Requires-Dist: nvidia-ml-py>=11.0.0; extra == 'all'
Requires-Dist: pygobject>=3.42.0; extra == 'all'
Requires-Dist: pytest-cov>=4.0.0; extra == 'all'
Requires-Dist: pytest>=7.0.0; extra == 'all'
Requires-Dist: ruff>=0.4.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Provides-Extra: hid
Requires-Dist: hidapi>=0.14.0; extra == 'hid'
Provides-Extra: nvidia
Requires-Dist: nvidia-ml-py>=11.0.0; extra == 'nvidia'
Provides-Extra: wayland
Requires-Dist: dbus-python>=1.3.0; extra == 'wayland'
Requires-Dist: pygobject>=3.42.0; extra == 'wayland'
Description-Content-Type: text/markdown

# TRCC Linux

[![Tests](https://github.com/Lexonight1/thermalright-trcc-linux/actions/workflows/tests.yml/badge.svg)](https://github.com/Lexonight1/thermalright-trcc-linux/actions/workflows/tests.yml)
[![Coverage](https://img.shields.io/badge/coverage-96%25-brightgreen.svg)](https://github.com/Lexonight1/thermalright-trcc-linux/actions/workflows/tests.yml)
[![PyPI](https://img.shields.io/pypi/v/trcc-linux)](https://pypi.org/project/trcc-linux/)
[![Python](https://img.shields.io/badge/python-3.9%2B-blue.svg)](https://python.org)
[![License](https://img.shields.io/badge/license-GPL--3.0-green.svg)](LICENSE)

If this project helped you, consider [![Buy Me A Coffee](https://img.shields.io/badge/buying%20me%20a%20coffee-support-yellow?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/Lexonight1)

Native Linux port of the Thermalright LCD Control Center (Windows TRCC 2.0.3). Control and customize the LCD displays on Thermalright CPU coolers, AIO pump heads, and fan hubs — entirely from Linux.

> Unofficial community project, not affiliated with Thermalright. I develop and test on Fedora — if something doesn't work on your distro, please [open an issue](https://github.com/Lexonight1/thermalright-trcc-linux/issues).

### Testers Wanted

I don't own every Thermalright device — ~31 models need real hardware validation. Testing takes 30 seconds: run `trcc report` and [paste the output in an issue](https://github.com/Lexonight1/thermalright-trcc-linux/issues/new). See the **[full list of devices that need testers](doc/TESTERS_WANTED.md)**.

![TRCC Linux GUI](doc/screenshots/screenshot.png)

## Features

- **Themes** — Local, cloud, masks, carousel mode, export/import as `.tr` files
- **Media** — Video/GIF playback, video trimmer, image cropper, screen cast (X11 + Wayland)
- **Editor** — Overlay text/sensors/date/time, font picker, dynamic scaling, color picker
- **Hardware** — 77+ sensors, customizable dashboard, multi-device with per-device config, RGB LED control
- **Display** — 15 resolutions (240x240 to 1920x462), 0/90/180/270 rotation, 3 brightness levels
- **Extras** — 5 starter themes + 120 masks per resolution, on-demand download, system tray, auto-start

## 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 |
| `87AD:70DB` | GrandVision 360 AIO |
| `0416:5406` | LC1, LC2, LC3, LC5 (AIO pump heads) |
| `0402:3922` | FROZEN WARFRAME, FROZEN WARFRAME SE |

**HID LCD devices** — auto-detected, needs hardware testers:
| USB ID | Devices |
|--------|---------|
| `0416:5302` | AS120 VISION, BA120 VISION, FROZEN WARFRAME, 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, HR10 2280 PRO DIGITAL, and others (model auto-detected via handshake) |

> HID devices are auto-detected. See the [Device Testing Guide](doc/DEVICE_TESTING.md) if you have one — I need testers.

## Install

### Quick install (PyPI)

```bash
pip install trcc-linux
sudo trcc setup-udev
```

Then **unplug and replug the USB cable** and run `trcc gui`.

### Automatic (recommended for full setup)

```bash
git clone -b stable 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. On PEP 668 distros (Ubuntu 24.04+, Fedora 41+) it auto-falls back to a virtual environment if `pip` refuses direct install.

After it finishes: **unplug and replug the USB cable**, then run `trcc gui`.

### Manual one-liners

Find your distro, copy the block, paste in terminal. After it finishes: **unplug and replug the USB cable**, then **open a new terminal** and run `trcc gui`.

> **`trcc: command not found`?** Open a new terminal — pip installs to `~/.local/bin` which needs a new shell session to appear on PATH.

> See the **[Install Guide](doc/INSTALL_GUIDE.md)** for troubleshooting, optional deps, and 25+ distros step by step.

### Fedora / Nobara

```bash
sudo dnf install sg3_utils python3-pyqt6 ffmpeg && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop
```

### Ubuntu / Debian / Mint / Pop!_OS / Zorin / elementary OS

```bash
sudo apt install sg3-utils python3-pyqt6 ffmpeg python3-pip && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop
```

### Arch / Manjaro / EndeavourOS / CachyOS / Garuda

```bash
sudo pacman -S sg3_utils python-pyqt6 ffmpeg python-pip && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop
```

### openSUSE

```bash
sudo zypper install sg3_utils python3-qt6 ffmpeg python3-pip && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop
```

### Void Linux

```bash
sudo xbps-install sg3_utils python3-PyQt6 ffmpeg python3-pip && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop
```

### Gentoo

```bash
sudo emerge --ask sg3_utils dev-python/PyQt6 media-video/ffmpeg dev-python/pip && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop
```

### Alpine

```bash
sudo apk add sg3_utils py3-pyqt6 ffmpeg py3-pip python3 && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop
```

### Bazzite / Fedora Atomic / Aurora / Bluefin

```bash
rpm-ostree install sg3_utils && echo "Reboot now, then run the next block" && systemctl reboot
```
After reboot:
```bash
python3 -m venv ~/trcc-env && source ~/trcc-env/bin/activate && pip install trcc-linux && sudo trcc setup-udev && trcc install-desktop
```
Launch: `source ~/trcc-env/bin/activate && trcc gui`

### SteamOS (Steam Deck)

Switch to Desktop Mode, open Konsole:
```bash
sudo steamos-readonly disable && sudo pacman -S --needed sg3_utils python-pip python-pyqt6 ffmpeg && pip install --break-system-packages trcc-linux && sudo trcc setup-udev && trcc install-desktop && sudo steamos-readonly enable
```

### NixOS

Add to `/etc/nixos/configuration.nix`, then `sudo nixos-rebuild switch`:
```nix
environment.systemPackages = with pkgs; [
  python3 python3Packages.pip python3Packages.pyqt6 python3Packages.pillow
  python3Packages.psutil sg3_utils ffmpeg p7zip
];
services.udev.extraRules = ''
  # SCSI LCD devices
  SUBSYSTEM=="scsi_generic", ATTRS{idVendor}=="87cd", ATTRS{idProduct}=="70db", MODE="0666"
  SUBSYSTEM=="scsi_generic", ATTRS{idVendor}=="87ad", ATTRS{idProduct}=="70db", MODE="0666"
  SUBSYSTEM=="scsi_generic", ATTRS{idVendor}=="0416", ATTRS{idProduct}=="5406", MODE="0666"
  SUBSYSTEM=="scsi_generic", ATTRS{idVendor}=="0402", ATTRS{idProduct}=="3922", MODE="0666"
  # HID LCD/LED devices
  SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0416", ATTRS{idProduct}=="5302", MODE="0666"
  SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0418", ATTRS{idProduct}=="5303", MODE="0666"
  SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0418", ATTRS{idProduct}=="5304", MODE="0666"
  SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0416", ATTRS{idProduct}=="8001", MODE="0666"
'';
```
Then:
```bash
pip install --break-system-packages trcc-linux && trcc install-desktop
```

## Usage

```bash
trcc gui                  # Launch GUI
trcc detect               # Show connected devices
trcc send image.png       # Send image to LCD
trcc report               # Generate diagnostic report for bug reports
trcc setup-udev           # Install udev rules
trcc install-desktop      # Install app menu entry and icon
```

See the **[CLI Reference](doc/CLI_REFERENCE.md)** for all 15 commands, options, and troubleshooting.

## Documentation

| Document | Description |
|----------|-------------|
| [Install Guide](doc/INSTALL_GUIDE.md) | Installation for all major distros |
| [Troubleshooting](doc/TROUBLESHOOTING.md) | Common issues and fixes |
| [CLI Reference](doc/CLI_REFERENCE.md) | All commands, options, and troubleshooting |
| [Changelog](doc/CHANGELOG.md) | Version history |
| [Architecture](doc/ARCHITECTURE.md) | Project layout and design |
| [Technical Reference](doc/TECHNICAL_REFERENCE.md) | SCSI protocol and file formats |
| [USBLCD Protocol](doc/USBLCD_PROTOCOL.md) | SCSI protocol reverse-engineered from USBLCD.exe |
| [USBLCDNEW Protocol](doc/USBLCDNEW_PROTOCOL.md) | USB bulk protocol reverse-engineered from USBLCDNEW.exe |
| [USBLED Protocol](doc/USBLED_PROTOCOL.md) | HID LED protocol reverse-engineered from FormLED.cs |
| [Testers Wanted](doc/TESTERS_WANTED.md) | Devices that need hardware validation |
| [Device Testing Guide](doc/DEVICE_TESTING.md) | Device support and troubleshooting |
| [Supported Devices](doc/SUPPORTED_DEVICES.md) | Full device list with USB IDs |

## Contributors

A big thanks to everyone who has contributed to this project:

- **[Lcstyle](https://github.com/Lcstyle)** — HR10 2280 PRO Digital support (7-segment display, color wheel, NVMe temperature daemon)
- **[PantherX12max](https://github.com/PantherX12max)** — Trofeo Vision LCD hardware testing
- **[shadowepaxeor-glitch](https://github.com/shadowepaxeor-glitch)** — AX120 Digital hardware testing & USB descriptor dumps
- **[Xentrino](https://github.com/Xentrino)** — Peerless Assassin 120 Digital ARGB White hardware testing

## License

GPL-3.0
