A step-by-step guide for every major Linux distro. Each section is self-contained — find your distro, copy-paste the commands, done.
New to Linux? See New to Linux? for a quick primer on terminals, package managers, and other concepts used here.
- Before You Start
- Find Your Distro
- Native Package Install (Recommended)
- PyPI Install (Alternative)
- One-Line Install
- Git Clone Install
- Immutable / Atomic Distros
- Special Hardware
- After Installing
- Verify Your Download
- What Each Package Does
- Troubleshooting
- Uninstalling
You need:
- A Linux computer with internet access
- A Thermalright cooler with LCD or LED display, connected via the included USB cable
- About 5 minutes
This whole guide uses the terminal (the command-line app). Here's how to open it:
| Desktop | How to open |
|---|---|
| GNOME (Ubuntu, Fedora, Pop!_OS) | Press Ctrl+Alt+T, or search "Terminal" in Activities |
| KDE Plasma (Kubuntu, Fedora KDE, Manjaro) | Press Ctrl+Alt+T, or search "Konsole" in the app menu |
| XFCE (Xubuntu, Mint XFCE) | Press Ctrl+Alt+T, or find "Terminal Emulator" in the app menu |
| Cinnamon (Linux Mint) | Press Ctrl+Alt+T |
| Any distro | Search "terminal" in your app launcher |
Once the terminal is open, you can paste commands with Ctrl+Shift+V (not Ctrl+V — that doesn't work in most Linux terminals).
Not sure which Linux you're running? Open a terminal and type:
cat /etc/os-releaseLook at the ID= line — that's your distro. Match it below:
Pre-built packages that install like any other app. No pip, no venv, no Python headaches. This is the easiest way.
How it works: Go to the latest release page, download the package for your distro, then run the install command below.
Covers: Fedora 39+, Nobara 39+
Step 1 — Download the .rpm file from the latest release.
Step 2 — Open a terminal and run:
cd ~/Downloads
sudo dnf install ./trcc-linux-*.noarch.rpmIt will ask for your password — type it and press Enter (the password won't show as you type, that's normal).
Step 3 — Unplug and replug the USB cable from your cooler (or reboot).
Step 4 — Launch:
trcc guiThat's it! If your device isn't detected, run trcc detect --all to see what's connected.
Covers: Ubuntu 22.04+, Debian 12+, Linux Mint 21+, Pop!_OS 22.04+, Zorin OS 17+, elementary OS 7+, KDE neon, Kubuntu, Xubuntu, Lubuntu
Step 1 — Download the .deb file from the latest release.
Step 2 — Open a terminal and run:
cd ~/Downloads
sudo dpkg -i trcc-linux_*_all.deb
sudo apt-get install -fThe first command installs the package. The second command pulls in any missing dependencies — if it says "0 newly installed", that's fine, everything was already there.
Step 3 — Unplug and replug the USB cable from your cooler (or reboot).
Step 4 — Launch:
trcc guiThat's it! If your device isn't detected, run trcc detect --all to see what's connected.
Covers: Arch Linux, CachyOS, Manjaro, EndeavourOS, Garuda Linux, Artix Linux, ArcoLinux, BlackArch
Step 1 — Download the .pkg.tar.zst file from the latest release.
Step 2 — Open a terminal and run:
cd ~/Downloads
sudo pacman -U trcc-linux-*-any.pkg.tar.zstStep 3 — Unplug and replug the USB cable from your cooler (or reboot).
Step 4 — Launch:
trcc guiThat's it! If your device isn't detected, run trcc detect --all to see what's connected.
Covers: openSUSE Tumbleweed, openSUSE Leap 15.5+
Step 1 — Download the .rpm file from the latest release.
Step 2 — Open a terminal and run:
cd ~/Downloads
sudo zypper install ./trcc-linux-*.noarch.rpmStep 3 — Unplug and replug the USB cable from your cooler (or reboot).
Step 4 — Launch:
trcc guiCovers: NixOS 24.05+, NixOS unstable
NixOS is different from other distros — you declare packages in a config file instead of downloading them. Add to your flake.nix:
{
inputs.trcc-linux.url = "github:Lexonight1/thermalright-trcc-linux";
# In your system configuration:
programs.trcc-linux.enable = true;
}Then rebuild:
sudo nixos-rebuild switchUnplug and replug the USB cable, then:
trcc guiNixOS note: The
trcc setup-udevcommand won't work because NixOS manages udev rules declaratively. If you need manual udev rules, add them to yourconfiguration.nix:services.udev.extraRules = '' 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" 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" '';
Covers: Gentoo Linux, Funtoo, Calculate Linux
An ebuild is provided in the repo:
# Copy the ebuild to your local overlay
sudo mkdir -p /var/db/repos/local/app-misc/trcc-linux
sudo cp packaging/gentoo/trcc-linux-*.ebuild /var/db/repos/local/app-misc/trcc-linux/
cd /var/db/repos/local/app-misc/trcc-linux
sudo ebuild trcc-linux-*.ebuild manifest
# Install
sudo emerge --ask app-misc/trcc-linuxUnplug and replug the USB cable, then:
trcc guiIf native packages aren't available for your distro, or you prefer pip. This requires installing system dependencies first, then the Python package.
# Step 1: Install system dependencies
sudo dnf install pipx sg3_utils python3-pyside6 ffmpeg
# Step 2: Install optional extras (hardware sensors, Wayland screen capture)
sudo dnf install lm_sensors grim python3-gobject python3-dbus pipewire-devel
# Step 3: Install TRCC
pipx install trcc-linux
# Step 4: Run the setup wizard (device permissions, desktop shortcut)
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
RHEL / Rocky / Alma: Enable EPEL and CRB first:
sudo dnf install epel-release sudo dnf config-manager --set-enabled crbThen run the commands above. If
python3-pyside6isn't available,pipx install trcc-linuxwill pull it in automatically.
# Step 1: Install system dependencies
sudo apt update
sudo apt install pipx sg3-utils python3-pyside6 ffmpeg
# Step 2: Install optional extras (hardware sensors, Wayland screen capture)
sudo apt install lm-sensors grim python3-gi python3-dbus python3-gst-1.0
# Step 3: Install TRCC
pipx install trcc-linux
# Step 4: Run the setup wizard
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
Older Ubuntu/Debian without pipx? If
pipxisn't available (Ubuntu 22.04, Debian 11), fall back to pip:sudo apt install python3-pip python3-venv pip install trcc-linuxIf pip shows an "externally-managed-environment" error, use
pip install --break-system-packages trcc-linux.
Arch-based distros enforce PEP 668 — use pipx instead of pip:
# Step 1: Install system dependencies
sudo pacman -S python-pipx sg3_utils python-pyside6 ffmpeg
# Step 2: Install optional extras (hardware sensors, Wayland screen capture)
sudo pacman -S lm_sensors grim python-gobject python-dbus python-gst
# Step 3: Install TRCC via pipx
pipx install trcc-linux
# Step 4: Run the setup wizard
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
# Step 1: Install system dependencies
sudo zypper install python3-pipx sg3_utils python3-pyside6 ffmpeg
# Step 2: Install optional extras (hardware sensors, Wayland screen capture)
sudo zypper install sensors grim python3-gobject python3-dbus-python python3-gstreamer
# Step 3: Install TRCC
pipx install trcc-linux
# Step 4: Run the setup wizard
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
openSUSE MicroOS: Use
transactional-updateinstead ofzypper:sudo transactional-update pkg install sg3_utils python3-pipx python3-pyside6 ffmpeg sudo rebootThen continue from Step 3.
# Step 1: Install system dependencies
sudo xbps-install sg3_utils python3-pipx python3-pyside6 ffmpeg
# Step 2: Install optional extras
sudo xbps-install lm_sensors grim python3-gobject python3-dbus python3-gst
# Step 3: Install TRCC
pipx install trcc-linux
# Step 4: Run the setup wizard
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
Void musl: If packages fail to build, you may need:
sudo xbps-install python3-devel gcc
If
python3-pyside6isn't in the repo:sudo xbps-install qt6-base pip install PySide6
# Step 1: Install system dependencies
sudo apk add python3 pipx sg3_utils py3-pyside6 ffmpeg
# Step 2: Install optional extras
sudo apk add lm-sensors grim py3-gobject3 py3-dbus
# Step 3: Install TRCC
pipx install trcc-linux
# Step 4: Run the setup wizard
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
Alpine musl: If
py3-pyside6isn't available:sudo apk add python3-dev gcc musl-dev qt6-qtbase-dev pip install PySide6
# Step 1: Install system dependencies
sudo eopkg install sg3_utils python3-pip ffmpeg
# Step 2: Install optional extras
sudo eopkg install lm-sensors grim python3-gobject python3-dbus
# Step 3: Install pipx, then TRCC
pip install pipx
pipx install trcc-linux
# Step 4: Run the setup wizard
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
# Step 1: Install system dependencies
sudo swupd bundle-add python3-basic devpkg-sg3_utils ffmpeg
# Step 2: Install optional extras
sudo swupd bundle-add sysadmin-basic devpkg-pipewire
# Step 3: Install pipx, then TRCC
pip install pipx
pipx install trcc-linux
# Step 4: Run the setup wizard
trcc setup
# Step 5: Unplug and replug the USB cable, then launch
trcc guiTo upgrade later:
pipx upgrade trcc-linux
Downloads and installs TRCC automatically, then launches the setup wizard:
bash <(curl -sSL https://raw.githubusercontent.com/Lexonight1/thermalright-trcc-linux/main/setup.sh)After it finishes: unplug and replug the USB cable, then run trcc gui.
For developers or if you want the latest code:
git clone https://github.com/Lexonight1/thermalright-trcc-linux.git
cd thermalright-trcc-linux
sudo ./install.shThe script auto-detects your distro, installs system packages, Python deps, udev rules, and a desktop shortcut. After it finishes: unplug and replug the USB cable, then run trcc gui.
To uninstall: trcc uninstall (or sudo ./install.sh --uninstall).
These distros have read-only root filesystems. Standard package installation works differently.
Covers: Bazzite, Aurora, Bluefin, Fedora Silverblue, Fedora Kinoite, and all Universal Blue / Fedora Atomic desktops
These use an immutable root filesystem — you can't sudo dnf install like normal Fedora. Instead:
# Step 1: Layer sg3_utils (needed for SCSI USB devices — requires reboot)
rpm-ostree install sg3_utils
systemctl rebootAfter rebooting:
# Step 2: Create a Python virtual environment (system Python is read-only)
python3 -m venv ~/trcc-env
source ~/trcc-env/bin/activate
# Step 3: Install TRCC
pip install trcc-linux
# Step 4: Set up device permissions
trcc setup-udev
# Step 5: If you have a bulk USB device, install SELinux policy
trcc setup-selinuxIf
checkmoduleis not found:sudo dnf install checkpolicy
# Step 6: Unplug and replug the USB cable, then launch
trcc guiTo launch TRCC in the future:
source ~/trcc-env/bin/activate
trcc guiTip: Add an alias so you don't have to type the activate command every time:
echo 'alias trcc-start="source ~/trcc-env/bin/activate && trcc gui"' >> ~/.bashrc source ~/.bashrc # Now just type: trcc-start
Optional desktop shortcut (launches from your app menu):
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/trcc.desktop << 'EOF'
[Desktop Entry]
Name=TRCC LCD Control
Comment=Thermalright LCD Control Center
Exec=bash -c 'source ~/trcc-env/bin/activate && trcc gui'
Icon=preferences-desktop-display
Terminal=false
Type=Application
Categories=Utility;System;
EOFOptional: Wayland screen capture (for screen cast / eyedropper features):
source ~/trcc-env/bin/activate
pip install dbus-python PyGObjectAlternative — Distrobox (avoids layering anything onto the host):
distrobox create --name trcc --image fedora:latest
distrobox enter trcc
# Inside the container — normal Fedora commands work
sudo dnf install python3-pip sg3_utils python3-pyside6 ffmpeg
pip install trcc-linux
exit
# Back on the host — set up device permissions
trcc setup-udev
# Unplug/replug USB cable
# Run from Distrobox
distrobox enter trcc -- trcc guiSwitch to Desktop Mode first: hold the Power button > Desktop Mode, then open Konsole.
Option A — Direct install (simpler, but lost on SteamOS updates):
# Unlock the read-only filesystem
sudo steamos-readonly disable
# Set a password if you haven't already
passwd
# Install dependencies
sudo pacman -S --needed sg3_utils python-pip python-pyside6 ffmpeg
# Install TRCC
pip install --break-system-packages trcc-linux
# Set up device permissions
sudo trcc setup-udev
# Re-enable read-only (recommended)
sudo steamos-readonly enable
# Unplug/replug USB cable, then launch
trcc guiWarning: System packages installed with
pacmanare lost when SteamOS updates. You'll need to re-run thesteamos-readonly disableandpacmansteps after each update. Thepip installpersists in your home directory.
Option B — Distrobox (survives updates):
distrobox create --name trcc --image archlinux:latest
distrobox enter trcc
# Inside the container
sudo pacman -S python-pip sg3_utils python-pyside6 ffmpeg
pip install trcc-linux
exit
# Set up udev on the HOST (requires temporary unlock)
sudo steamos-readonly disable
sudo trcc setup-udev
sudo steamos-readonly enable
# Unplug/replug USB cable, then run
distrobox enter trcc -- trcc guiCovers: Vanilla OS 2.x (Orchid)
# Create a Fedora subsystem
apx subsystems create --name trcc-system --stack fedora
# Install dependencies inside the subsystem
apx trcc-system install python3-pip sg3_utils python3-pyside6 ffmpeg
# Enter the subsystem and install TRCC
apx trcc-system enter
pip install trcc-linux
exit
# Set up udev rules on the host
trcc setup-udev
# Unplug/replug USB cable, then run
apx trcc-system run -- trcc gui- Enable Linux: Settings > Advanced > Developers > Turn On Linux development environment
- Open the Linux terminal:
# Install dependencies
sudo apt update
sudo apt install python3-pip python3-venv sg3-utils python3-pyside6 ffmpeg
# Install TRCC
pip install --break-system-packages trcc-linux
# Set up device permissions
trcc setup-udev
# Unplug/replug USB cable, then launch
trcc guiChromeOS USB passthrough: Go to Settings > Advanced > Developers > Linux > Manage USB devices and enable your Thermalright LCD device. You may need to replug after enabling.
Covers: Fedora Asahi Remix on Apple M1/M2/M3/M4 Macs
Follow the Fedora / Nobara (pip) instructions — Asahi is Fedora-based:
sudo dnf install python3-pip sg3_utils python3-pyside6 ffmpeg
pip install trcc-linux
trcc setup
trcc guiUSB-A ports on Apple Silicon Macs work through Thunderbolt hubs/docks. Make sure your cooler's USB cable goes through a compatible hub or USB-C adapter.
Covers: Raspberry Pi OS (Bookworm), Ubuntu for Raspberry Pi, Armbian
TRCC works on ARM64 (aarch64) systems:
# Raspberry Pi OS / Armbian (Debian-based)
sudo apt install python3-pip python3-venv sg3-utils python3-pyside6 ffmpeg
pip install --break-system-packages trcc-linux
trcc setup
trcc guiNo display? If you're running headless (no monitor), the CLI still works:
trcc send /path/to/image.png trcc color ff0000 trcc test
ARM PySide6: If
pip install PySide6fails, use the system package (python3-pyside6). The CLI commands work without PySide6 — only the GUI needs it.
You probably want the Windows version instead. WSL2 has limited USB support. But if you want to try:
- On Windows — Install usbipd-win
- On Windows (PowerShell as admin):
usbipd list # Find your Thermalright device usbipd bind --busid <BUSID> # Bind it usbipd attach --wsl --busid <BUSID> # Attach to WSL
- Inside WSL2 — Follow the Ubuntu / Debian (pip) instructions
You need to re-attach the USB device every time you restart WSL or unplug it. GUI apps require WSLg (Windows 11 or recent Windows 10).
trcc detectYou should see something like:
Active: /dev/sg1
If you have multiple devices:
trcc detect --allSend a test pattern to make sure everything works:
trcc testThis cycles through red, green, blue, yellow, magenta, cyan, and white on the LCD. If you see the colors, you're all set.
Open a new terminal. When you install with pip, the trcc command goes to ~/.local/bin/ which only gets added to your PATH when you open a new terminal session.
If it still doesn't work after opening a new terminal, add it manually:
# For bash (most distros)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# For zsh (Arch, Garuda, some Manjaro)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# For fish
fish_add_path ~/.local/bin| Distro | ~/.local/bin in PATH by default? |
|---|---|
| Fedora | Yes |
| Ubuntu / Debian | Only if the directory exists at login time |
| Arch / Manjaro / EndeavourOS | No |
| openSUSE | No |
| Void / Alpine | No |
So you can launch TRCC from your app menu instead of typing a command:
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/trcc.desktop << 'EOF'
[Desktop Entry]
Name=TRCC LCD Control
Comment=Thermalright LCD Control Center
Exec=trcc gui
Icon=preferences-desktop-display
Terminal=false
Type=Application
Categories=Utility;System;
EOFUsing a venv? Change the
Execline to:Exec=bash -c 'source ~/trcc-env/bin/activate && trcc gui'
Every release includes a SHA256SUMS.txt file. Download it from the same release page, then:
cd ~/Downloads
sha256sum -c SHA256SUMS.txt --ignore-missingIf you see OK next to your package — it's clean. Source code is GPL-3.0, fully auditable — no binaries, no obfuscation, no telemetry.
| Package | Why it's needed |
|---|---|
python3-pip |
Installs Python packages (like TRCC itself) |
sg3_utils / sg3-utils |
Sends data to the LCD over USB (SCSI commands) — required for SCSI devices |
PySide6 / python3-pyside6 |
The graphical user interface (GUI) toolkit |
ffmpeg |
Video and GIF playback on the LCD |
lm-sensors / lm_sensors |
Hardware sensor readings (CPU/GPU temps, fan speeds) — optional but recommended |
grim |
Screen capture on Wayland desktops — optional |
python3-gobject / python3-dbus |
PipeWire screen capture for GNOME/KDE on Wayland — optional |
pyusb + libusb |
USB communication for HID LCD/LED devices (pulled in by pip automatically) |
For the full troubleshooting guide, see Troubleshooting.
Quick fixes for the most common issues:
| Problem | Fix |
|---|---|
trcc: command not found |
Open a new terminal, or add ~/.local/bin to PATH |
| No device detected | Run trcc setup-udev then unplug/replug USB |
| Permission denied | pip install --upgrade trcc-linux then trcc setup-udev |
| Permission denied on SELinux (Bazzite) | trcc setup-selinux |
| PySide6 not available | Install system package: sudo dnf install python3-pyside6 (or your distro's equivalent) |
| Qt_6_PRIVATE_API not found | Use system PySide6 instead of pip version |
| externally-managed-environment | Use --break-system-packages or a venv (see your distro's section above) |
| NixOS: setup-udev fails | Add udev rules to configuration.nix (see NixOS section) |
| HID handshake None | Upgrade to latest version, power-cycle USB, run trcc hid-debug |
| Desktop | Screen capture method | Extra packages needed |
|---|---|---|
| GNOME | PipeWire portal | python3-gobject + python3-dbus |
| KDE Plasma | PipeWire portal | python3-gobject + python3-dbus |
| Sway / Hyprland / Wayfire | grim |
grim |
| X11 (any) | Native X11 capture | None |
Everything else (themes, overlays, video, device communication) works identically on X11 and Wayland.
trcc uninstallRemoves config, autostart, desktop files, udev rules (auto-elevates with sudo), and the pip package. Use --yes to skip prompts.
pip uninstall trcc-linux
sudo rm /etc/udev/rules.d/99-trcc-lcd.rules
sudo rm /etc/modprobe.d/trcc-lcd.conf
sudo udevadm control --reload-rules
rm -rf ~/.config/trcc ~/.trcc
rm -f ~/.config/autostart/trcc*.desktop
rm -f ~/.local/share/applications/trcc*.desktop- Run
trcc doctorto check your system for missing dependencies - Run
trcc reportand paste the output in an issue — this gives us everything we need to help you - Check the Troubleshooting guide for more solutions
- For verbose output:
trcc gui -v(ortrcc gui -vvfor debug)