Skip to content

YoyPa/isw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 /!\

Builtin or not builtin ?

  • It need ec_sys module with option write_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.
    • 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.

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)