A Linux application for controlling Thermalright LCD displays with an intuitive graphical interface.
Currently not working - The service will start, USB and HID detection is now working with my device 0402:3922 ALi Corp. Xsail being detected, loaded and initalized but still unable to control it. The GUI also works but changes are not being sent to the device.
Thermalright LCD Control provides an easy-to-use interface for managing your Thermalright LCD display on Linux systems.
The application features both a desktop GUI and a background service for seamless device control.
I performed reverse engineering on the Thermalright Windows application to understand its internal mechanisms.
During my analysis, I identified four different USB VID:PID combinations handled by the Windows application, all sharing the same interaction logic.
Since I have access only to the Frozen Warframe 420 BLACK ARGB, my testing was limited exclusively to this specific device.
Also, this application implements reading metrics from Amd, Nvidia, and Intel GPU. My testing was limited to Nvidia GPU.
Feel free to contribute to this project and let me know if the application is working with other devices.
For backgrounds, i have included all media formats supported by the Windows application and added the option to select a collection of images to cycle through on the display.
- 🖥️ User-friendly GUI - Modern interface for device configuration
- ⚙️ Background service - Automatic device management
- 🎨 Theme support - Customizable display themes and backgrounds
- 📋 System integration - Native Linux desktop integration
VID:PID | Tested |
---|---|
0402:3922 | ??? |
0416:5302 | Yes |
0418:5304 | No |
Download the appropriate package for your Linux distribution from the Releases page:
.deb
- For Ubuntu, Debian, and derivatives.rpm
- For Fedora, RHEL, CentOS, openSUSE, and derivatives
-
Download the
.deb
package:wget https://github.com/rejeb/thermalright-lcd-control/raw/refs/heads/master/releases/thermalright-lcd-control_1.1.1_all.deb -P /tmp/
-
Install the package:
sudo apt install /tmp/thermalright-lcd-control_1.1.1_all.deb
-
Fix dependencies (if needed):
sudo apt-get install -f
-
Download the
.rpm
package:wget https://media.githubusercontent.com/media/rejeb/thermalright-lcd-control/refs/heads/master/releases/thermalright-lcd-control-1.1.1-1.noarch.rpm -P /tmp/
-
Install the package:
# Fedora/CentOS 8+ sudo dnf install /tmp/thermalright-lcd-control-*-1.noarch.rpm # RHEL/CentOS 7 sudo yum install /tmp/thermalright-lcd-control-*-1.noarch.rpm
-
Download the
.rpm
packagewget https://media.githubusercontent.com/media/rejeb/thermalright-lcd-control/refs/heads/master/releases/thermalright-lcd-control-1.1.1-1.noarch.rpm -P /tmp/
-
Install the package:
sudo zypper install /tmp/thermalright-lcd-control-1.1.1-1.noarch.rpm
-
Download the
.tar.gz
package:wget https://github.com/rejeb/thermalright-lcd-control/raw/refs/heads/master/releases/thermalright-lcd-control-1.1.1.tar.gz -P /tmp/
-
Untar the archive file:
cd /tmp tar -xvf thermalright-lcd-control-1.1.1.tar.gz
-
Check for required dependencies: /!\ Make sure you have these required dependencies installed:
- python3
- python3-pip
- python3-venv
- libhidapi-* or hidapi depending on your distribution
-
Install application:
```bash cd /thermalright-lcd-control sudo ./install.sh
That's it! The application is now installed. You can see the default theme displayed on your Thermalright LCD device.
If your device is 0416:5302 and nothing is displayed: - Check service status to see if it is running - Try restart service - Check service logs located in /var/log/thermalright-lcd-control.log
If your device is one of the other devices, contributions are welcome.
Here some tips to help you:
- Check service status to see if it is running
- Check service logs located in /var/log/thermalright-lcd-control.log
- If the device is not working then this possibly mean that header value is not correct.
See Add new device section to fix header generation.
- If the device is working but image is not good, this means that the image is not encoded correctly.
See Add new device section to fix image encoding by overriding method __encode_image
.
- From Applications Menu: Search for "Thermalright LCD Control" in your application launcher
- From Terminal: Run
thermalright-lcd-control
The background service starts automatically after installation. You can manage it using:
sudo systemctl status thermalright-lcd-control.service
sudo systemctl restart thermalright-lcd-control.service
sudo systemctl stop thermalright-lcd-control.service
- Operating System: Ubuntu 20.04+ / Debian 11+ / Other modern Linux distributions
- Python: 3.8 or higher (automatically managed)
- Desktop Environment: Any modern Linux desktop (GNOME, KDE, XFCE, etc.)
- Hardware: Compatible Thermalright LCD device
While this application is made by reverse engineering Thermalrigth application. This application is compatible with all USB display devices supporting communication through an HID interface. To add a new device you need to:
- Identify how images are encoded
- Header value or logic used to generate it (for Thermalright devices, each image sent to the device includes a header).
- The size of each paquet sent to the device.
- The display resolution
And then:
- Add a new device implementation
in display_device.py that extends
DisplayDevice
. - Override method
_encode_image
to implement the specific device encoding logic andget_header
for header value. - Add device creation in
load_device
. - Add device informations in gui_config.yaml
- Add a new device implementation
in display_device.py that extends
- Add a new theme config file in
resources/config/config_{width}{height}.yaml
if screen resolution is not already present in this folder. - Add a new folder in
resources/themes/foregrounds
named{width}{height}
if theme resolution is not already present in this folder and add foregrounds images. - Add a new folder in
resources/themes/preset
named{width}{height}
if theme resolution is not already present in this folder and add preconfigured themes.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
REJEB BEN REJEB - benrejebrejeb@gmail.com
Contributions are welcome! To contribute:
- Fork the project
- Create a feature branch (
git checkout -b feature/my-feature
) - Commit your changes (
git commit -am 'Add my feature'
) - Push to your branch (
git push origin feature/my-feature
) - Create a Pull Request