Show your CPU temperature on the pump-head LCD of a Dragos FrostBite (and
other coolers whose Windows software is HJZN_PSR) — on Linux.
These coolers ship Windows-only software. Without it the display just sits at
00. This is a small daemon that reads the CPU temperature from hwmon and
speaks the cooler's serial protocol, which was recovered by reverse engineering
the vendor application. See docs/PROTOCOL.md for the full
write-up.
No kernel module, no vendor blobs, no dependencies beyond Python 3.
Run:
lsusb | grep 1f3a:0008If you see a wch.cn/USB Serial device, you very likely have a compatible
cooler. Confirmed working on:
| Cooler | CPU | Distro |
|---|---|---|
| Dragos FrostBite 240 | Ryzen 7 9800X3D | CachyOS (kernel 7.1) |
Other rebrands of the same ODM design should work. If yours connects but shows the wrong number, see Different layout? below — and please open an issue so it can be supported out of the box.
git clone https://github.com/hamer1818/frostbite-lcd
cd frostbite-lcd
sudo ./install.shThe installer places the daemon in /usr/local/bin, installs a systemd unit,
runs a dry-run check, and enables the service at boot.
Verify that the LCD agrees with your sensors:
sensors | grep -i tctlsudo ./uninstall.shThe service handles everything, but the daemon is usable directly:
frostbite-lcd --dry-run # show what would be sent, write nothing
frostbite-lcd --interval 2 # update every 2 seconds
frostbite-lcd --temp-input /sys/class/hwmon/hwmon2/temp1_input
frostbite-lcd --device /dev/ttyACM1Logs:
journalctl -u frostbite-lcd -fhwmon (k10temp Tctl) -> frostbite-lcd -> /dev/ttyACM0 -> pump-head LCD
1000000 baud, 8N1
Every second the daemon reads the CPU temperature and writes a six-byte frame:
74 01 02 31 00 02
^^ ^^
'|' temperature, XOR 0x02 (0x31 = 49 = 51 ^ 2, i.e. 51 °C)
Both the serial device and the temperature source are resolved at runtime — the
device by USB VID/PID, the sensor by chip name — because ttyACM numbering and
hwmon indices are not stable across reboots. Unplugging the cooler and
plugging it back in is handled; the daemon reconnects on its own.
If the daemon runs cleanly but the display is blank or wrong, your cooler may place the temperature in a different byte:
sudo ./tools/field-sweep.pyIt sends a marker value through one field at a time. Watch the LCD and note
which phase shows the marker, then open an issue with the result and the output
of lsusb.
This is safe: the frames are the same shape the vendor software uses, and this serial link only drives the display. Pump and fans run off the motherboard headers and are unaffected — the worst case is a wrong number on screen.
Dragos FrostBite serisi sıvı soğutucuların pompa üzerindeki ekranı Windows'ta
üreticinin yazılımıyla çalışıyor; Linux'ta karşılığı olmadığı için ekran 00
gösteriyor. Bu proje o yazılımın protokolünü tersine mühendislikle çözüp
ekranın Linux'ta da çalışmasını sağlıyor.
Kurulum:
git clone https://github.com/hamer1818/frostbite-lcd
cd frostbite-lcd
sudo ./install.shKurulum betiği servisi açılışta otomatik başlayacak şekilde ayarlar. Ekrandaki
değeri sensors | grep -i tctl çıktısıyla karşılaştırarak doğrulayabilirsin.
Farklı bir modelde ekran yanlış değer gösteriyorsa sudo ./tools/field-sweep.py
çalıştırıp hangi fazda doğru sayıyı gördüğünü issue olarak bildirebilirsin.
Reports from other coolers are the most useful contribution — especially the
lsusb line and your field-sweep.py result. Protocol findings for the unknown
fields (bytes 2, 4 and 5) are very welcome too.
MIT. See LICENSE.
This project implements an interface for interoperability. It contains no vendor code and redistributes nothing from the original software.