ISW / Ice-Sealed Wyvern
- isw started as an equivalent of "control tools by pherein" but under linux.
- It is meant to alter fan profiles of MSI laptops.
- Profiles for supported laptops are located in /etc/isw.conf.
- You can check /etc/isw.conf. comments for more details.
Warning
- Use it at your own risk!
- Secure boot can prevent access to the EC.
- isw is made/tested with MSI GS40 6QE under Arch/Manjaro, other laptops depend on user contribution.
- Check that your EC (Embedded Controler) work the same way, you can find documentation on the wiki.
How to install
Package or not package ?
- If you are using archlinux or a derivative you can install it from AUR:
yay -S isw
- If you are on a different distro family:
- Clone
git clone https://github.com/YoyPa/isw
- Then look at this PKGBUILD to know where to put files.
- /!\ Path can change a bit depending on the distro /!\
- Clone
Builtin or not builtin ?
- It need
ec_sys
module with optionwrite_support=1
, there are two scenario to set that:- ec_sys is a builtin kernel module:
- add
ec_sys.write_support=1
in/etc/default/grub
(Arch AUR package can't do it for you). - then update your grub with
update-grub
and reboot.
- add
- ec_sys is not a builtin kernel module:
- copy both
isw-ec_sys.conf
files provided (/etc/mod[...]) with same path (Arch AUR package will do it for you). - then reboot OR
modprobe ec_sys write_support=1
.
- copy both
- ec_sys is a builtin kernel module:
How to use it ?
Current --help output
usage: isw [-h] [-b B] [-c] [-f FILE] [-p P] [-r [R]] [-s S S] [-t T] [-u USB] [-w W]
optional arguments:
-h, --help show this help message and exit
-b B ┬ enable or disable CoolerBoost
└ replace B with off OR on
-c ─ show an EC dump
-f FILE, --file FILE ┬ show profile in EC update file
└ replace FILE with FILE_NAME
-p P ┬ show current profile in EC
└ replace P with SECTION_NAME
-r [R] ┬ show realtime CPU+GPU temp and fan speed from EC
├ replace [R] with any [NUMBER] to perform a [NUMBER] of time(s)
└ Assume [0] if given nothing = infinite loop
-s S S ┬ set a single value into EC
├ replace 1st S with ADDRESS in hexadecimal (0x00)
└ replace 2nd S with VALUE in decimal (00)
-t T ┬ set the battery charging treshold
└ replace T with a NUMBER between 20 and 100 (٪)
-u USB, --usb USB ┬ set usb backlight level
└ replace USB with off, half OR full
-w W ┬ write into EC
└ replace W with SECTION_NAME
┌─ TIPS ──────────────────────────────────────────────────────────────────┐
│ Set your config in '/etc/isw.conf'. │
│ Arguments order is relevant, -c and -p can be used twice. Example: │
│ isw -cw SECTION_NAME -c will show you EC dump before and after change. │
├─ SUPPORT ───────────────────────────────────────────────────────────────┤
│ Help me support your laptop by providing following command output: │
│ isw -cp MSI_ADDRESS_DEFAULT │
│ via https://github.com/YoyPa/isw (open an issue). │
│ Make sure your dump is made before altering EC with isw, you can reset │
│ your EC with a reboot or by changing power source. │
├─ NAME ──────────────────────────────────────────────────────────────────┤
│ ISW is MSI at 180° │
│ It means Ice-Sealed Wyvern in opposition to MSI's 'unleash the dragon' │
└─────────────────────────────────────────────────────────────────────────┘
NB: all option exept -h and -f need priviledges.
An example
SECTION_NAME refer to the motherboard name inside isw.conf
, if for example you have a GS40_6QE your SECTION_NAME would be 14A1EMS1.
If you want to change temperature treshold and/or fan speed for cpu and/or gpu, you have to edit the corresponding section in isw.conf
to set the wanted values and use isw -w 14A1EMS1
to apply.
If you want to check the current temperature and fan speed you will have to type isw -r
.
Don't forget to read the comment at the beginning of isw.conf
, it contain some helpfull info.
Launch at startup/resume
You can launch isw -w [SECTION_NAME]
at startup/resume via systemd with isw@.service (need priviledges):
systemctl enable isw@[SECTION_NAME].service
TODO
- Daemonisation
- Launch at startup done
- launch after resume (hibernation/suspend) done
- Launch at event(power source change)