Utility for controlling RGB header on MSI boards
This utility seems to not work correctly on B350 TOMAHAWK boards correctly at the moment. See issues #2 and #6.
This utility not only works on any linux system you find around, it also is much more flexible than the 7 colours MSI’s own Gaming App. Futhermore, unlike the MSI’s utility, this does not make your system vulnerable to anybody who cares to fiddle around the system.
- Linux (/dev/port, might work on WSL?) or FreeBSD (/dev/io);
- Only MSI motherboards with NCT6795D super I/O chip;
- Run a recent version of sensors-detect to check if you have this chip;
- No warranty whatsoever (read the license);
- If you find your board misbehaving, try clearing CMOS;
How to compile and run
To compile this project you’ll need rustc and cargo. Get them at your package manager or here.
Then:
git clone https://github.com/nagisa/msi-rgb
cd msi-rgb
cargo build --release
You’ll need root to run this program:
sudo ./target/release/msi-rgb 00000000 FFFFFFFF 00000000 # for green
The hexa numbers represent each color as a sequence in time per byte so 4 change of colors.
sudo ./target/release/msi-rgb FF000000 00FF0000 0000FF00 # this makes red then green then blue then off then red etc..
Run following for more options:
./target/release/msi-rgb -h
Examples
Heartbeat
sudo ./target/release/msi-rgb 206487a9 206487a9 10325476 -ir -ig -ib -d 5
Police
sudo ./target/release/msi-rgb -d15 FF00FF00 0 00FF00FF
Happy Easter
sudo ./target/release/msi-rgb 58e01c0d 504fdcb9 e4aa75eb --blink 2 -d 32
Hue wheel (t HUE, 0.9 SATURATION, 1.0 VALUE)
echo -e "import colorsys, time, subprocess\ni=0\nwhile True:\n subprocess.call(['target/release/msi-rgb', '-d511'] + map(lambda x: ('{0:01x}'.format(int(15*x)))*8, colorsys.hsv_to_rgb((i % 96.0) / 96.0, 0.9, 1)))\n time.sleep(0.1)\n i+=1" | sudo python -
Implementation
For implementation details, including the registers used by super I/O and their meanings see the
comment in the src/main.rs file.
License
Code is licensed under the permissive ISC license. If you create derivative works and/or nice RGB schemes, I would love to see them :)