Skip to content

dimonp/coreliquid_driver

 
 

Repository files navigation

coreliquid_driver

This is a fork of the original project that doesn't work on my MEG S360. Probably because the interaction protocol has changed since its creation.

A simple linux driver for MSI MEG Coreliquid S360 AIO watercooling

Having unsuccessfully tried to use liquidctl to drive my MSI MEG coreliquid AIO watercooling under linux (specifically Debian 12), I decided to build mine. I don't care about the display on this AIO, I just want it to react to CPU temperature. I only allow 5 predefined modes to make the link between temperature and fan and pump speed: SILENT = 0, BALANCE = 1, GAME = 2, DEFAULT = 4, SMART = 5. In this first version, the CUSTOMIZE = 3 mode is not allowed, as the 5 others should do the job. Here are pictures from the MSI soft for Windows, showing the link between temperature and fan speeds for three modes.

SILENT mode

BALANCE mode

GAME mode

Dependencies

You need libsensors-dev and libhidapi-dev (or hidapi on Arch) to compile. The CMake build will automatically fetch hidapi via FetchContent if it's not found, but having the system library is recommended for stability.

Compilation

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

Here, I use libhidapi-hidraw, but I guess it would work as well with libhidapi-libusb0. I choose the former (hidraw) because it seems to be the recommended one these days.

Installation

After building, you can install the driver system‑wide:

sudo cmake --install . --prefix "/usr/local"

You can use install_manifest.txt to remove the installed files:

cat install_manifest.txt | xargs sudo rm

This will install:

  • The executable /usr/local/bin/my_msi_coreliquid_driver
  • The systemd service /usr/lib/systemd/system/my_msi_coreliquid_driver@.service
  • The sleep‑resume script /usr/lib/systemd/system-sleep/my_msi_coreliquid_driver_sleep.sh

udev rules

To allow non‑root access to the device, copy the provided udev rules:

sudo cp 99-msi-coreliquid.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

Usage

my_msi_coreliquid_driver -M mode [ startd ]

-M sets the cooling mode to mode (0‑5, except 3). The modes are:

  • 0 – SILENT
  • 1 – BALANCE
  • 2 – GAME
  • 4 – DEFAULT (constant speed)
  • 5 – SMART (temperature‑based, default)

startd starts the driver as a daemon (not needed if using systemd service).

Example:

# Set mode to GAME
sudo my_msi_coreliquid_driver -M 2

# Start as a one‑shot daemon (for testing)
sudo my_msi_coreliquid_driver -M 5 startd

Daemon (systemd)

If you installed via cmake --install, the systemd service is already placed. Enable and start it with:

sudo systemctl daemon-reload
sudo systemctl enable my_msi_coreliquid_driver@5.service
sudo systemctl start my_msi_coreliquid_driver@5.service

Switch to Game mode (2):

systemctl stop my_msi_coreliquid_driver@5
systemctl start my_msi_coreliquid_driver@2

Make Silent (0) mode the default mode when booting the system:

systemctl enable my_msi_coreliquid_driver@0

Arch Linux

You can build from source using the provided PKGBUILD.

makepkg -i

Plasma 6 Widget

A Plasma 6 applet that provides a convenient GUI to switch between cooling modes of the MSI CoreLiquid S360 AIO. The widget displays the current mode and allows you to switch between Silent, Balance, Game, and Smart modes with a single click.

Screenshots

Widget in compact mode

Compact representation in the system tray.

Widget expanded with mode buttons

Expanded view showing all available cooling modes.

Widget installation

  1. Ensure you have Plasma 6 installed.
  2. Copy the widget folder to your local Plasma applets directory:
cp -r widget ~/.local/share/plasma/plasmoids/com.msi.mycoreliquid.switcher
  1. Right‑click on the panel (or desktop) → Add Widgets → find MSI CoreLiquid S360 Control and drag it to the panel.

Alternatively, you can install system‑wide (requires root):

sudo cp -r widget /usr/share/plasma/plasmoids/com.msi.mycoreliquid.switcher

Widget usage

Click the widget icon in the system tray to expand it, then select the desired cooling mode. The widget will automatically stop the previous systemd service and start the new one (e.g., my_msi_coreliquid_driver@2 for Game mode). The icon changes to reflect the active mode.

The widget polls the systemd unit status every 5 seconds to keep the displayed mode up‑to‑date.

License

GPLv3 – see the LICENSE file.

About

Rework a simple linux driver for MSI MEG Coreliquid S360 AIO watercooling

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C 86.0%
  • QML 8.1%
  • CMake 3.3%
  • Shell 2.6%