If coretemp (max temperature across all CPU cores) or coolant temperature (liquid circuit temperature) exceeds pre-defined thresholds, the daemon requests internal CorsairOne's USB device to increase fan speed.
Upon installation:
- a custom udev rule is added to
/usr/lib/udev/rules.d/(pkg-config udev -> udevdir) - a custom systemd unit is added to
/usr/lib/systemd/system(pkg-config systemd -> systemdsystemunitdir) - daemon is deployed in GNU standard bin directory
- CS-9000015-EU
- cxx20 compiler such as g++ or clang++
- cmake
- pkg-config
- boost
- libusb
- lm_sensors
- spdlog
Fedora 36 setup
$ dnf install cmake gcc-c++ pkg-config boost-devel libusb-devel lm_sensors-devel spdlog-develuser@mach:~$ git clone https://github.com/SBAM/corsair_one_d.git
user@mach:~$ cd corsair_one_d
user@mach:~$ ./configure.sh
user@mach:~$ make -C build/Release
user@mach:~$ sudo make -C build/Release install
## reload systemd's configuration
user@mach:~$ sudo systemctl daemon-reload
## simulate corsair's USB device connected
user@mach:~$ sudo udevadm trigger --attr-match=subsystem=usb --attr-match=idVendor=1b1c --action=add
## check systemd service succesfully started
user@mach:~$ journalctl -f
[...] systemd[1]: Started CorsairOne daemon.
[...] audit[1]: SERVICE_START [...] msg='unit=CorsairOneDaemon comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'Many thanks to:
- audiohacked for OpenCorsairLink who reverse engineered CorsairLink protocol
- CFSworks for his investigations on CorsairLink protocol