Code Monkey home page Code Monkey logo

isw's Introduction

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 [email protected] (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)

isw's People

Contributors

yoypa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

isw's Issues

What is option -s S S

Hello.

I have a question. What is option "iws -s S S"? What functionality does it have? I don't understand.

Thanks.

EC dump from MSI Creator 15M A9SD

 shenghao@Shenghao-C15M  ~  sudo isw -cp MSI_ADDRESS_DEFAULT                                                                              ✔  876  03:01:31

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 40 0b  >..............@.<
000030 03 01 00 0d 50 0a 05 00 94 11 88 2c c2 01 c0 00  >....P......,....<
000040 fc 08 51 00 ec 11 00 00 7b 0e ee 2f f4 0b fa 32  >..Q.....{../...2<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 2b 00 37 40 49 4c 52 58  >........+.7@ILRX<
000070 64 26 26 2b 30 36 3c 46 55 00 08 03 03 03 03 03  >d&&+06<FU.......<
000080 2c 00 37 3d 43 49 4f 54 61 00 00 2b 30 36 3c 46  >,.7=CIOTa..+06<F<
000090 55 00 08 03 03 03 03 02 02 00 64 02 00 6e 00 00  >U.........d..n..<
0000a0 31 36 57 31 45 4d 53 31 2e 31 30 32 30 39 32 30  >16W1EMS1.1020920<
0000b0 32 30 31 39 30 39 3a 35 32 3a 35 32 ec 11 00 40  >201909:52:52...@<
0000c0 00 07 23 00 00 9e c0 00 00 3f 00 00 00 d5 14 00  >..#......?......<
0000d0 00 00 00 00 7f 00 d1 00 00 00 00 00 00 00 00 00  >................<
0000e0 e2 02 00 f7 10 00 00 00 00 00 02 00 00 b7 00 bc  >................<
0000f0 00 00 80 80 0d 8f 05 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address        Fan mode
0xd(13)     0xf4(byte244)        Unknown

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x37(55°C)  0x6a(byte106)        0x37(55°C)  0x82(byte130)
0x40(64°C)  0x6b(byte107)        0x3d(61°C)  0x83(byte131)
0x49(73°C)  0x6c(byte108)        0x43(67°C)  0x84(byte132)
0x4c(76°C)  0x6d(byte109)        0x49(73°C)  0x85(byte133)
0x52(82°C)  0x6e(byte110)        0x4f(79°C)  0x86(byte134)
0x58(88°C)  0x6f(byte111)        0x54(84°C)  0x87(byte135)

0x26(38%)   0x72(byte114)        0x0(0%)     0x8a(byte138)
0x2b(43%)   0x73(byte115)        0x2b(43%)   0x8b(byte139)
0x30(48%)   0x74(byte116)        0x30(48%)   0x8c(byte140)
0x36(54%)   0x75(byte117)        0x36(54%)   0x8d(byte141)
0x3c(60%)   0x76(byte118)        0x3c(60%)   0x8e(byte142)
0x46(70%)   0x77(byte119)        0x46(70%)   0x8f(byte143)
0x55(85%)   0x78(byte120)        0x55(85%)   0x90(byte144)

Let me know if there's anything else I can do to help.

Thanks,

Shenghao

Make documentation more readable

I was trying to implement isw controls on https://github.com/jsalatas/plasma-pstate/ , to use in my plasma desktop (and in other ones if merged).

Anyway, if I can more or less read and understand everything, because I know what I'm reading, I guess is pretty difficult to understand something.

Reading the values is pretty clear, setting the coolerboost too, but for example, is there the possibility to set a particular speed on a particular fans or some fans or on all fans?

I guess the Readme can be improved.

Support for MSI GS63VR 7RF

isw -cp MSI_ADDRESS_DEFAULT

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 42 0b  >..............B.<
000030 03 09 00 0d 30 0a 05 00 44 16 88 2c 3a 02 e0 00  >....0...D..,:...<
000040 00 00 64 00 d3 11 00 00 d3 11 39 32 f9 0b fa 32  >..d.......92...2<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 32 00 37 3d 43 49 4f 55  >........2.7=CIOU<
000070 64 2d 1e 2d 36 40 46 4b 55 00 08 03 03 03 03 03  >d-.-6@FKU.......<
000080 00 00 37 3d 43 49 4f 55 66 00 00 32 3c 46 50 50  >..7=CIOUf..2<FPP<
000090 55 00 08 03 03 03 03 03 02 0a 6e 02 0a 70 00 00  >U.........n..p..<
0000a0 31 36 4b 32 45 4d 53 31 2e 31 30 37 31 30 31 33  >16K2EMS1.1071013<
0000b0 32 30 31 36 31 31 3a 32 30 3a 31 30 3c 11 00 00  >201611:20:10<...<
0000c0 00 01 25 00 00 9e c0 00 00 38 00 00 00 b1 00 00  >..%......8......<
0000d0 00 00 00 00 70 00 01 00 00 00 00 80 00 00 00 00  >....p...........<
0000e0 e2 02 00 82 10 00 00 00 00 00 00 00 00 83 00 00  >................<
0000f0 00 00 80 00 0c 00 03 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address    Fan mode
0xc(12)     0xf4(byte244)    Auto

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x37(55°C)  0x6a(byte106)    0x37(55°C)  0x82(byte130)
0x3d(61°C)  0x6b(byte107)    0x3d(61°C)  0x83(byte131)
0x43(67°C)  0x6c(byte108)    0x43(67°C)  0x84(byte132)
0x49(73°C)  0x6d(byte109)    0x49(73°C)  0x85(byte133)
0x4f(79°C)  0x6e(byte110)    0x4f(79°C)  0x86(byte134)
0x55(85°C)  0x6f(byte111)    0x55(85°C)  0x87(byte135)

0x1e(30%)   0x72(byte114)    0x0(0%)     0x8a(byte138)
0x2d(45%)   0x73(byte115)    0x32(50%)   0x8b(byte139)
0x36(54%)   0x74(byte116)    0x3c(60%)   0x8c(byte140)
0x40(64%)   0x75(byte117)    0x46(70%)   0x8d(byte141)
0x46(70%)   0x76(byte118)    0x50(80%)   0x8e(byte142)
0x4b(75%)   0x77(byte119)    0x50(80%)   0x8f(byte143)
0x55(85%)   0x78(byte120)    0x55(85%)   0x90(byte144)

Support for changing fan speed?

Thank you for making this amazing tool, again!

Any chance changing fan speed could be supported? I notice you mentioned certain speed is ignored, but perhaps we could at least make valid fan speed to be triggered at a lower temperatures?

My GS65's fan is only spinning at 80% even when the CPU temperature has already reached 90 degree, which is the CPU's throttling threshold :(

I tried to modify the values corresponding to the different "temp_x", but that does not seem to make any difference...

Support for MSI GE62 7RE

So here's the dump made on the laptop

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 49 4b  >..............IK<
000030 03 09 00 0d 50 0a 05 00 26 13 6c 2a ea 01 e0 00  >....P...&.l*....<
000040 00 00 64 00 e5 0f 00 00 e5 0f dd 2f a0 0b 0c 30  >..d......../...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 2c 0a 37 3d 43 49 4f 4f  >........,.7=CIOO<
000070 64 30 28 30 38 42 4c 56 56 00 0a 08 08 08 08 08  >d0(08BLVV.......<
000080 2a 36 37 3c 41 46 4b 4b 63 00 00 36 3e 46 4e 56  >*67<AFKKc..6>FNV<
000090 56 00 0a 07 07 07 07 07 02 16 7d 02 16 63 00 00  >V.........}..c..<
0000a0 31 36 4a 39 45 4d 53 31 2e 31 30 39 30 35 32 32  >16J9EMS1.1090522<
0000b0 32 30 31 37 31 36 3a 30 36 3a 32 36 e5 0f 00 00  >201716:06:26....<
0000c0 00 07 25 00 00 9e c0 00 00 5e 00 00 00 c0 14 00  >..%......^......<
0000d0 00 00 00 00 73 00 01 00 00 00 00 80 81 00 00 00  >....s...........<
0000e0 e2 02 00 81 10 00 00 00 00 00 00 00 00 83 00 00  >................<
0000f0 00 00 83 01 0c 00 0c 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x37(55°C)  0x6a(byte106)    0x37(55°C)  0x82(byte130)
0x3d(61°C)  0x6b(byte107)    0x3c(60°C)  0x83(byte131)
0x43(67°C)  0x6c(byte108)    0x41(65°C)  0x84(byte132)
0x49(73°C)  0x6d(byte109)    0x46(70°C)  0x85(byte133)
0x4f(79°C)  0x6e(byte110)    0x4b(75°C)  0x86(byte134)
0x4f(79°C)  0x6f(byte111)    0x4b(75°C)  0x87(byte135)

0x28(40%)   0x72(byte114)    0x0(0%)     0x8a(byte138)
0x30(48%)   0x73(byte115)    0x36(54%)   0x8b(byte139)
0x38(56%)   0x74(byte116)    0x3e(62%)   0x8c(byte140)
0x42(66%)   0x75(byte117)    0x46(70%)   0x8d(byte141)
0x4c(76%)   0x76(byte118)    0x4e(78%)   0x8e(byte142)
0x56(86%)   0x77(byte119)    0x56(86%)   0x8f(byte143)
0x56(86%)   0x78(byte120)    0x56(86%)   0x90(byte144)

Error reading temps or trying to flash ec

While reading I get: isw -r 16Q4EMS1

-----------CPU-----------        -----------GPU-----------
┌─Temp─┬─Fan Speed──────┐        ┌─Temp─┬─Fan Speed──────┐
^C36°C │ 45%   2747RPM  │        │ 0°C  │ 0%    0RPM     │


I'm using MSI GS65

isw -cp 16Q4EMS1

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e4 06 1b 0b  >................<
000030 03 03 00 0d 30 0a 05 00 a0 14 60 3b 71 02 80 00  >....0.....`;q...<
000040 50 0a 3c 00 3b 10 af 09 a3 09 14 3f d7 0b f8 43  >P.<.;......?...C<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 24 00 37 40 46 4c 52 58  >........$.7@FLRX<
000070 64 2d 2d 32 3c 46 4b 50 50 00 08 03 03 03 03 03  >d--2<FKPP.......<
000080 00 00 37 3d 41 47 4d 56 5e 00 00 32 3c 46 50 5a  >..7=AGMV^..2<FPZ<
000090 5a 00 08 03 03 03 03 05 02 00 64 02 00 6e 00 00  >Z.........d..n..<
0000a0 31 36 51 34 45 4d 53 31 2e 31 30 39 30 35 31 33  >16Q4EMS1.1090513<
0000b0 32 30 31 39 31 30 3a 34 34 3a 32 39 3b 10 00 40  >201910:44:29;..@<
0000c0 00 01 25 00 00 9e 41 00 00 dd 00 00 00 ae 00 00  >..%...A.........<
0000d0 00 00 20 00 70 80 00 00 05 00 00 00 00 00 00 00  >.. .p...........<
0000e0 e2 02 00 05 10 00 00 00 00 00 00 00 00 9a 00 80  >................<
0000f0 00 00 80 00 0c 00 05 00 00 00 32 00 00 00 00 00  >..........2.....<
000100

Profile dump 
Value       set @ address        Fan mode
0xc(12)     0xf4(byte244)        Auto

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x37(55°C)  0x6a(byte106)        0x37(55°C)  0x82(byte130)
0x40(64°C)  0x6b(byte107)        0x3d(61°C)  0x83(byte131)
0x46(70°C)  0x6c(byte108)        0x41(65°C)  0x84(byte132)
0x4c(76°C)  0x6d(byte109)        0x47(71°C)  0x85(byte133)
0x52(82°C)  0x6e(byte110)        0x4d(77°C)  0x86(byte134)
0x58(88°C)  0x6f(byte111)        0x56(86°C)  0x87(byte135)

0x2d(45%)   0x72(byte114)        0x0(0%)     0x8a(byte138)
0x32(50%)   0x73(byte115)        0x32(50%)   0x8b(byte139)
0x3c(60%)   0x74(byte116)        0x3c(60%)   0x8c(byte140)
0x46(70%)   0x75(byte117)        0x46(70%)   0x8d(byte141)
0x4b(75%)   0x76(byte118)        0x50(80%)   0x8e(byte142)
0x50(80%)   0x77(byte119)        0x5a(90%)   0x8f(byte143)
0x50(80%)   0x78(byte120)        0x5a(90%)   0x90(byte144)

Support for MSI P65 8RF

Here is ec dump of P65 8RF. Thank you!
isw -cp MSI_ADDRESS_DEFAULT

EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e0 06 49 0b >..............I.<
000030 03 09 01 0d 50 0a 05 00 a0 14 60 3b 71 02 e0 00 >....P.....`;q...<
000040 00 00 64 00 81 15 00 00 81 15 74 43 2f 0c 00 00 >..d.......tC/...<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 2e 00 37 40 46 4c 52 58 >..........7@FLRX<
000070 64 2d 2d 32 3c 4b 4b 4b 4b 00 08 03 03 03 03 03 >d--2<KKKK.......<
000080 33 00 37 3d 41 47 4d 57 61 32 00 32 37 3c 41 44 >3.7=AGMWa2.27<AD<
000090 4e 00 08 03 03 03 03 05 02 00 64 02 00 6e 00 00 >N.........d..n..<
0000a0 31 36 51 32 45 4d 53 32 2e 31 30 32 30 31 33 30 >16Q2EMS2.1020130<
0000b0 32 30 31 39 30 38 3a 35 38 3a 34 30 80 15 00 00 >201908:58:40....<
0000c0 00 07 31 00 00 9e c1 00 00 65 00 a2 00 aa 14 00 >..1......e......<
0000d0 00 00 20 00 70 00 00 00 00 00 00 80 01 00 00 00 >.. .p...........<
0000e0 e2 02 00 00 10 00 00 00 00 00 00 00 00 d1 00 00 >................<
0000f0 00 00 80 00 0c 8f 05 00 00 00 32 00 00 00 00 00 >..........2.....<
000100

Profile dump
Value set @ address Fan mode
0xc(12) 0xf4(byte244) Auto

-----------CPU----------- -----------GPU-----------
Value set @ address Value set @ address
0x37(55°C) 0x6a(byte106) 0x37(55°C) 0x82(byte130)
0x40(64°C) 0x6b(byte107) 0x3d(61°C) 0x83(byte131)
0x46(70°C) 0x6c(byte108) 0x41(65°C) 0x84(byte132)
0x4c(76°C) 0x6d(byte109) 0x47(71°C) 0x85(byte133)
0x52(82°C) 0x6e(byte110) 0x4d(77°C) 0x86(byte134)
0x58(88°C) 0x6f(byte111) 0x57(87°C) 0x87(byte135)

0x2d(45%) 0x72(byte114) 0x0(0%) 0x8a(byte138)
0x32(50%) 0x73(byte115) 0x32(50%) 0x8b(byte139)
0x3c(60%) 0x74(byte116) 0x37(55%) 0x8c(byte140)
0x4b(75%) 0x75(byte117) 0x3c(60%) 0x8d(byte141)
0x4b(75%) 0x76(byte118) 0x41(65%) 0x8e(byte142)
0x4b(75%) 0x77(byte119) 0x44(68%) 0x8f(byte143)
0x4b(75%) 0x78(byte120) 0x4e(78%) 0x90(byte144)

Support for GL62MVR 7RFX

Hi ! Thanks a lot for making that tool. I've been looking for this for a while.

I'm on Ubuntu and I followed the your instruction to set it up. I use the profil 16J9EMS1 as there is also some GL62 in there. But it's seems that it's not working as expected because my fan is almost always on meanwhile my CPUs temperature is low and my GPU is switched off.

I drop you my dump here. Thanks in advance for having a look at it ;)

EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 49 4b >..............IK<
000030 03 09 01 0d 50 0a 05 00 54 0f 30 2a 88 01 e0 00 >....P...T.0*....<
000040 00 00 62 00 e0 0d 00 00 90 0d 9d 2f c3 0b 0c 30 >..b......../...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 2a 0a 37 3d 43 49 4f 4f >........*.7=CIOO<
000070 64 28 28 30 38 42 4c 56 56 00 0a 08 08 08 08 08 >d((08BLVV.......<
000080 2f 00 37 3c 41 46 4b 4b 66 36 00 36 3e 46 4e 56 >/.7<AFKKf6.6>FNV<
000090 56 00 0a 07 07 07 07 07 02 16 64 02 16 66 00 00 >V.........d..f..<
0000a0 31 36 4a 42 45 4d 53 31 2e 31 30 43 30 36 30 36 >16JBEMS1.10C0606<
0000b0 32 30 31 37 31 31 3a 31 38 3a 35 35 e0 0d 00 40 >201711:18:55...@<
0000c0 00 01 25 00 00 00 00 00 00 27 00 93 00 cc 14 00 >..%......'......<
0000d0 00 00 40 00 7f 00 01 00 00 00 00 80 01 00 00 00 >..@.............<
0000e0 e2 02 00 81 10 00 00 00 00 00 02 00 00 81 00 00 >................<
0000f0 00 00 82 02 8c 00 0c 81 00 00 00 00 00 00 00 00 >................<
000100

Profile dump
Value set @ address Fan mode
0x8c(140) 0xf4(byte244) Advanced

-----------CPU----------- -----------GPU-----------
Value set @ address Value set @ address
0x37(55°C) 0x6a(byte106) 0x37(55°C) 0x82(byte130)
0x3d(61°C) 0x6b(byte107) 0x3c(60°C) 0x83(byte131)
0x43(67°C) 0x6c(byte108) 0x41(65°C) 0x84(byte132)
0x49(73°C) 0x6d(byte109) 0x46(70°C) 0x85(byte133)
0x4f(79°C) 0x6e(byte110) 0x4b(75°C) 0x86(byte134)
0x4f(79°C) 0x6f(byte111) 0x4b(75°C) 0x87(byte135)

0x28(40%) 0x72(byte114) 0x0(0%) 0x8a(byte138)
0x30(48%) 0x73(byte115) 0x36(54%) 0x8b(byte139)
0x38(56%) 0x74(byte116) 0x3e(62%) 0x8c(byte140)
0x42(66%) 0x75(byte117) 0x46(70%) 0x8d(byte141)
0x4c(76%) 0x76(byte118) 0x4e(78%) 0x8e(byte142)
0x56(86%) 0x77(byte119) 0x56(86%) 0x8f(byte143)
0x56(86%) 0x78(byte120) 0x56(86%) 0x90(byte144)

Extra functionality (keybinding?)

Hi there and thanks so much for isw, its working great so far. That being said do you know how to possibly keybind the coolerbooster to a special key? ie (Fn+F7 in my case as that is the unused turbo button). Im using gnome and ive been searching through gnome tweaks for keybinding and online for help and im just not finding how to assign these.

Also have you considered creating a gnome shell extension or something of the like so users can control the cooler booster or switch between profiles and the click of a button?

Just a suggestion that i think would be pretty cool.
Thanks again for any help.

Support for GT62VR 6RE

I know it's a few years old, just wondering if there was support.
GT62VR_6RE.txt

000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 49 0b >..............I.<
000030 03 03 00 05 50 0a 05 00 86 15 40 38 26 02 80 00 >....P.....@8&...<
000040 8c 0a 63 00 93 12 d5 00 48 12 a4 40 e4 0b a0 41 >[email protected]<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 2a 00 34 40 4b 53 5a 61 >........*.4@KSZa<
000070 64 13 13 1a 22 27 2b 2f 36 63 03 03 03 02 03 03 >d..."'+/6c......<
000080 2b 00 3a 41 48 50 58 5f 61 13 13 27 2b 2f 36 3e >+.:AHPX_a..'+/6><
000090 64 00 03 03 03 03 03 03 06 05 7d 02 64 7d 00 00 >d.........}.d}..<
0000a0 31 36 4c 32 45 4d 53 31 2e 31 30 37 30 32 32 31 >16L2EMS1.1070221<
0000b0 32 30 31 37 31 35 3a 35 31 3a 32 38 93 12 00 10 >201715:51:28....<
0000c0 00 07 23 00 00 00 00 00 00 35 01 ae 01 ae 00 00 >..#......5......<
0000d0 00 00 40 00 7f 00 00 00 00 00 00 80 01 00 00 00 >..@.............<
0000e0 e2 02 00 00 10 00 00 00 00 00 00 00 00 84 00 00 >................<
0000f0 00 00 80 00 0c 00 05 00 00 00 00 00 00 00 00 00 >................<
000100

EC dump
�[0;32;1m 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F�[0m

EC dump from latest firmware: 16Q2EMS1.107

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e0 06 48 0b  >..............H.<
000030 02 05 01 0d 50 0a 05 00 a0 14 60 3b 71 02 c0 00  >....P.....`;q...<
000040 50 0a 3b 00 e0 12 99 f9 00 0b c7 3a 01 0c f8 43  >P.;........:...C<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 30 00 37 40 46 4c 52 58  >........0.7@FLRX<
000070 64 2d 2d 32 3c 4b 4b 4b 4b 00 08 03 03 03 03 03  >d--2<KKKK.......<
000080 35 00 37 3d 41 47 4d 57 61 32 00 32 37 3c 41 44  >5.7=AGMWa2.27<AD<
000090 4e 00 08 03 03 03 03 05 00 00 64 02 00 6e 00 00  >N.........d..n..<
0000a0 31 36 51 32 45 4d 53 31 2e 31 30 37 30 31 33 30  >16Q2EMS1.1070130<
0000b0 32 30 31 39 30 38 3a 35 37 3a 33 36 e0 12 00 00  >201908:57:36....<
0000c0 00 01 31 00 00 9e 40 00 00 02 00 90 00 95 14 00  >..1...@.........<
0000d0 00 00 00 00 70 00 00 00 00 00 00 81 01 00 00 00  >....p...........<
0000e0 e2 02 00 00 10 00 00 00 00 00 00 00 00 83 00 00  >................<
0000f0 00 00 80 00 8c 80 05 00 00 91 32 00 00 00 00 00  >..........2.....<
000100

Profile dump 
Value       set @ address        Fan mode
0x8c(140)   0xf4(byte244)        Advanced

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x37(55°C)  0x6a(byte106)        0x37(55°C)  0x82(byte130)
0x40(64°C)  0x6b(byte107)        0x3d(61°C)  0x83(byte131)
0x46(70°C)  0x6c(byte108)        0x41(65°C)  0x84(byte132)
0x4c(76°C)  0x6d(byte109)        0x47(71°C)  0x85(byte133)
0x52(82°C)  0x6e(byte110)        0x4d(77°C)  0x86(byte134)
0x58(88°C)  0x6f(byte111)        0x57(87°C)  0x87(byte135)

0x2d(45%)   0x72(byte114)        0x0(0%)     0x8a(byte138)
0x32(50%)   0x73(byte115)        0x32(50%)   0x8b(byte139)
0x3c(60%)   0x74(byte116)        0x37(55%)   0x8c(byte140)
0x4b(75%)   0x75(byte117)        0x3c(60%)   0x8d(byte141)
0x4b(75%)   0x76(byte118)        0x41(65%)   0x8e(byte142)
0x4b(75%)   0x77(byte119)        0x44(68%)   0x8f(byte143)
0x4b(75%)   0x78(byte120)        0x4e(78%)   0x90(byte144)

EC dump GL65 9SD

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 03 00 80 c0 06 4b 0b  >..............K.<
000030 03 09 00 0d 51 0a 05 00 26 13 6c 2a ea 01 e7 00  >....Q...&.l*....<
000040 00 00 64 00 06 12 00 00 06 12 e6 2f b6 0b 0c 30  >..d......../...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 30 00 32 38 3e 46 4b 50  >........0.28>FKP<
000070 64 28 00 28 30 38 42 4c 56 00 0a 07 07 09 09 09  >d(.(08BLV.......<
000080 33 00 37 3c 41 46 4b 50 61 00 00 2d 36 3e 46 4e  >3.7<AFKPa..-6>FN<
000090 4e 00 0a 07 07 07 07 07 02 16 7d 02 16 61 00 00  >N.........}..a..<
0000a0 31 36 55 35 45 4d 53 31 2e 31 30 30 30 36 32 35  >16U5EMS1.1000625<
0000b0 32 30 31 39 31 30 3a 32 34 3a 30 37 06 12 00 10  >201910:24:07....<
0000c0 00 06 22 00 00 9e c0 00 00 16 00 00 00 c6 00 00  >..".............<
0000d0 00 00 20 00 70 00 00 00 00 00 00 80 00 00 00 00  >.. .p...........<
0000e0 e2 02 00 27 10 00 00 00 00 00 82 00 00 9a 00 80  >...'............<
0000f0 00 00 80 00 0c 00 05 80 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address        Fan mode
0xc(12)     0xf4(byte244)        Auto

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x32(50°C)  0x6a(byte106)        0x37(55°C)  0x82(byte130)
0x38(56°C)  0x6b(byte107)        0x3c(60°C)  0x83(byte131)
0x3e(62°C)  0x6c(byte108)        0x41(65°C)  0x84(byte132)
0x46(70°C)  0x6d(byte109)        0x46(70°C)  0x85(byte133)
0x4b(75°C)  0x6e(byte110)        0x4b(75°C)  0x86(byte134)
0x50(80°C)  0x6f(byte111)        0x50(80°C)  0x87(byte135)

0x0(0%)     0x72(byte114)        0x0(0%)     0x8a(byte138)
0x28(40%)   0x73(byte115)        0x2d(45%)   0x8b(byte139)
0x30(48%)   0x74(byte116)        0x36(54%)   0x8c(byte140)
0x38(56%)   0x75(byte117)        0x3e(62%)   0x8d(byte141)
0x42(66%)   0x76(byte118)        0x46(70%)   0x8e(byte142)
0x4c(76%)   0x77(byte119)        0x4e(78%)   0x8f(byte143)
0x56(86%)   0x78(byte120)        0x4e(78%)   0x90(byte144)

Not work on KDE NEON

I have installed on KDE Neon 18.04 for my MSI GS75 but when i execute for example "sudo isw -p PROFILE_NAME ", it show:

Profile dump
Traceback (most recent call last):
File "/usr/lib/python3.6/configparser.py", line 1138, in _unify_values
sectiondict = self._sections[section]
KeyError: 'PROFILE_NAME'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/isw", line 314, in
main()
File "/usr/bin/isw", line 311, in main
parser.parse_args()
File "/usr/lib/python3.6/argparse.py", line 1743, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "/usr/lib/python3.6/argparse.py", line 1775, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/lib/python3.6/argparse.py", line 1981, in _parse_known_args
start_index = consume_optional(start_index)
File "/usr/lib/python3.6/argparse.py", line 1921, in consume_optional
take_action(action, args, option_string)
File "/usr/lib/python3.6/argparse.py", line 1833, in take_action
argument_values = self._get_values(action, argument_strings)
File "/usr/lib/python3.6/argparse.py", line 2274, in _get_values
value = self._get_value(action, arg_string)
File "/usr/lib/python3.6/argparse.py", line 2303, in _get_value
result = type_func(arg_string)
File "/usr/bin/isw", line 34, in ec_profile
ap = cfgp.get(value, 'address_profile')
File "/usr/lib/python3.6/configparser.py", line 781, in get
d = self._unify_values(section, vars)
File "/usr/lib/python3.6/configparser.py", line 1141, in _unify_values
raise NoSectionError(section)
configparser.NoSectionError: No section: 'PROFILE_NAME'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 145, in apport_excepthook
os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'wb') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/var/crash/_usr_bin_isw.0.crash'

Original exception was:
Traceback (most recent call last):
File "/usr/lib/python3.6/configparser.py", line 1138, in _unify_values
sectiondict = self._sections[section]
KeyError: 'PROFILE_NAME'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/isw", line 314, in
main()
File "/usr/bin/isw", line 311, in main
parser.parse_args()
File "/usr/lib/python3.6/argparse.py", line 1743, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "/usr/lib/python3.6/argparse.py", line 1775, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/lib/python3.6/argparse.py", line 1981, in _parse_known_args
start_index = consume_optional(start_index)
File "/usr/lib/python3.6/argparse.py", line 1921, in consume_optional
take_action(action, args, option_string)
File "/usr/lib/python3.6/argparse.py", line 1833, in take_action
argument_values = self._get_values(action, argument_strings)
File "/usr/lib/python3.6/argparse.py", line 2274, in _get_values
value = self._get_value(action, arg_string)
File "/usr/lib/python3.6/argparse.py", line 2303, in _get_value
result = type_func(arg_string)
File "/usr/bin/isw", line 34, in ec_profile
ap = cfgp.get(value, 'address_profile')
File "/usr/lib/python3.6/configparser.py", line 781, in get
d = self._unify_values(section, vars)
File "/usr/lib/python3.6/configparser.py", line 1141, in _unify_values
raise NoSectionError(section)
configparser.NoSectionError: No section: 'PROFILE_NAME'

Any idea?

Thanks!

GT75_8SG

Hi! This is results for GT75_8SG:
EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e0 06 49 0f >..............I.<
000030 03 09 01 0d 50 0a 05 00 6a 18 40 38 71 02 e0 00 >....P...j.@8q...<
000040 00 00 64 00 c2 17 00 00 c2 17 d6 40 d7 0b 00 00 >..d........@....<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 2f 00 37 4b 50 54 58 5f >......../.7KPTX_<
000070 64 22 14 22 28 37 3c 41 64 00 0a 09 04 03 03 06 >d"."(7<Ad.......<
000080 36 00 2f 39 43 4d 55 5a 61 1e 14 1e 28 37 41 4f >6./9CMUZa...(7AO<
000090 64 00 07 06 06 06 07 04 02 00 64 02 00 6e 00 00 >d.........d..n..<
0000a0 31 37 41 36 45 4d 53 31 2e 31 30 31 30 33 31 34 >17A6EMS1.1010314<
0000b0 32 30 31 39 31 32 3a 33 32 3a 30 32 c2 17 00 00 >201912:32:02....<
0000c0 00 01 00 00 00 9e c1 00 00 75 01 0c 01 8d 00 00 >.........u......<
0000d0 00 00 20 00 73 00 00 00 00 00 00 80 00 00 00 00 >.. .s...........<
0000e0 e2 02 00 31 10 00 00 00 00 00 00 00 00 00 00 80 >...1............<
0000f0 00 00 80 00 0c 00 05 00 00 00 32 00 00 03 00 00 >..........2.....<
000100

Profile dump
Value set @ address Fan mode
0xc(12) 0xf4(byte244) Auto

-----------CPU----------- -----------GPU-----------
Value set @ address Value set @ address
0x37(55°C) 0x6a(byte106) 0x2f(47°C) 0x82(byte130)
0x4b(75°C) 0x6b(byte107) 0x39(57°C) 0x83(byte131)
0x50(80°C) 0x6c(byte108) 0x43(67°C) 0x84(byte132)
0x54(84°C) 0x6d(byte109) 0x4d(77°C) 0x85(byte133)
0x58(88°C) 0x6e(byte110) 0x55(85°C) 0x86(byte134)
0x5f(95°C) 0x6f(byte111) 0x5a(90°C) 0x87(byte135)

0x14(20%) 0x72(byte114) 0x14(20%) 0x8a(byte138)
0x22(34%) 0x73(byte115) 0x1e(30%) 0x8b(byte139)
0x28(40%) 0x74(byte116) 0x28(40%) 0x8c(byte140)
0x37(55%) 0x75(byte117) 0x37(55%) 0x8d(byte141)
0x3c(60%) 0x76(byte118) 0x41(65%) 0x8e(byte142)
0x41(65%) 0x77(byte119) 0x4f(79%) 0x8f(byte143)
0x64(100%) 0x78(byte120) 0x64(100%) 0x90(byte144)

Thanks!!

Support for MSI GL63 8RD

Hello
Can you add support for GL63 8RD ?
My EC dump :

sudo isw -c
EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 49 0b >..............I.<
000030 03 09 00 0d 51 0a 05 00 54 0f 30 2a 88 01 e7 00 >....Q...T.0*....<
000040 00 00 60 00 f7 0e 00 00 57 0e 5f 2f b1 0b 0c 30 >..`.....W./...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 2a 0a 32 39 40 47 4e 55 >........*.29@GNU<
000070 64 28 00 28 2f 36 3d 44 4b 5f 0a 08 08 08 08 08 >d(.(/6=DK
......<
000080 2c 36 37 3c 41 46 4b 50 63 00 00 35 3b 41 47 4d >,67<AFKPc..5;AGM<
000090 53 00 0a 07 07 07 07 07 06 16 7d 02 16 63 00 00 >S.........}..c..<
0000a0 31 36 50 36 45 4d 53 31 2e 31 30 34 30 36 31 33 >16P6EMS1.1040613<
0000b0 32 30 31 38 31 34 3a 33 33 3a 35 38 f7 0e 00 40 >201814:33:58...@<
0000c0 00 01 23 00 00 00 00 00 00 39 00 00 00 c6 00 00 >..#......9......<
0000d0 00 00 00 00 7f 00 00 00 00 00 00 80 00 00 00 00 >................<
0000e0 e2 02 00 04 10 00 00 00 00 00 00 00 00 b8 00 00 >................<
0000f0 00 00 80 01 0c 00 05 00 00 00 00 00 00 00 00 00 >................<
000100

Thanks !

Support for MSI GT60 2PE

Hi
Here is the EC dump for the MSI GT60 2PE:

EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
*
000020 00 00 00 00 00 00 00 00 00 00 00 80 80 06 09 0b >................<
000030 03 09 00 05 51 0a 05 00 78 1e 5c 2b bc 02 e0 40 >....Q...x.+...@<
000040 00 00 62 00 1d 0b 00 00 cb 0a 97 30 9e 0b 38 31 >..b........0..81<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 2b 00 34 40 4c 58 5d 5f >........+.4@LX]_<
000070 64 20 20 20 23 2d 32 42 4c 00 05 09 06 08 03 01 >d #-2BL.......<
000080 00 00 34 40 4c 57 5a 5f 64 00 20 20 2a 37 42 4c >..4@LWZ_d. *7BL<
000090 64 00 02 02 02 02 02 02 02 00 7d 02 00 66 00 00 >d.........}..f..<
0000a0 31 36 46 34 45 4d 53 31 20 56 65 72 35 2e 31 37 >16F4EMS1 Ver5.17<
0000b0 2c 20 31 32 2f 30 34 2f 32 30 31 34 1d 0b 00 00 >, 12/04/2014....<
0000c0 00 01 25 00 0c 9e c0 00 00 1f 00 00 00 fb 14 00 >..%.............<
0000d0 00 00 00 00 60 00 01 02 00 00 00 80 01 00 00 00 >....`...........<
0000e0 e2 02 00 04 10 00 00 00 00 00 00 00 00 b7 00 00 >................<
0000f0 00 04 14 1b a1 28 2e 3c 49 57 64 64 01 f4 04 08 >.....(.<IWdd....<
000100

I'm using Manjaro KDE.

Could you add support for this model? I would be grateful.

Can't make 2 config for a same computer

If I make 2 config settings for the same computer, the program fails to run :

sudo isw -r GL63_8RD
Traceback (most recent call last):
  File "/usr/bin/isw", line 314, in <module>
    main()
  File "/usr/bin/isw", line 311, in main
    parser.parse_args()
  File "/usr/lib/python3.7/argparse.py", line 1749, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/lib/python3.7/argparse.py", line 1781, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "/usr/lib/python3.7/argparse.py", line 1987, in _parse_known_args
    start_index = consume_optional(start_index)
  File "/usr/lib/python3.7/argparse.py", line 1927, in consume_optional
    take_action(action, args, option_string)
  File "/usr/lib/python3.7/argparse.py", line 1839, in take_action
    argument_values = self._get_values(action, argument_strings)
  File "/usr/lib/python3.7/argparse.py", line 2369, in _get_values
    value = self._get_value(action, arg_string)
  File "/usr/lib/python3.7/argparse.py", line 2402, in _get_value
    result = type_func(arg_string)
  File "/usr/bin/isw", line 98, in ec_read
    cfgp.read_file(cfgfile)
  File "/usr/lib/python3.7/configparser.py", line 717, in read_file
    self._read(f, source)
  File "/usr/lib/python3.7/configparser.py", line 1065, in _read
    lineno)
configparser.DuplicateSectionError: While reading from '/etc/isw.conf' [line 171]: section '16P6EMS1.104_DEFAULT' already exists

Support for MSI P65 8RD

Here is the requested data:

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 49 0b  >..............I.<
000030 02 05 01 0d 50 0a 05 00 a0 14 60 3b 71 02 c0 00  >....P.....`;q...<
000040 50 0a 46 00 9f 14 f5 f8 50 0e de 3c 24 0c f8 43  >P.F.....P..<$..C<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 3b 00 37 40 46 4c 52 58  >........;.7@FLRX<
000070 64 32 1e 32 3c 4b 4b 4b 4b 00 08 03 03 03 03 03  >d2.2<KKKK.......<
000080 34 00 37 3d 41 47 4d 57 63 32 00 32 37 3c 41 44  >4.7=AGMWc2.27<AD<
000090 4e 00 08 03 03 03 03 05 02 00 64 02 00 6e 00 00  >N.........d..n..<
0000a0 31 36 51 33 45 4d 53 31 2e 31 30 33 30 39 30 36  >16Q3EMS1.1030906<
0000b0 32 30 31 38 30 39 3a 30 32 3a 34 36 93 14 00 40  >201809:02:46...@<
0000c0 00 01 25 00 00 00 00 00 00 02 00 a1 00 de 00 00  >..%.............<
0000d0 00 00 01 00 7f 00 d5 00 00 00 00 80 01 00 00 00  >................<
0000e0 e2 02 00 01 10 00 00 00 00 00 00 00 00 83 00 00  >................<
0000f0 00 00 80 00 0c 00 06 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address    Fan mode
0xc(12)     0xf4(byte244)    Auto

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x37(55°C)  0x6a(byte106)    0x37(55°C)  0x82(byte130)
0x40(64°C)  0x6b(byte107)    0x3d(61°C)  0x83(byte131)
0x46(70°C)  0x6c(byte108)    0x41(65°C)  0x84(byte132)
0x4c(76°C)  0x6d(byte109)    0x47(71°C)  0x85(byte133)
0x52(82°C)  0x6e(byte110)    0x4d(77°C)  0x86(byte134)
0x58(88°C)  0x6f(byte111)    0x57(87°C)  0x87(byte135)

0x1e(30%)   0x72(byte114)    0x0(0%)     0x8a(byte138)
0x32(50%)   0x73(byte115)    0x32(50%)   0x8b(byte139)
0x3c(60%)   0x74(byte116)    0x37(55%)   0x8c(byte140)
0x4b(75%)   0x75(byte117)    0x3c(60%)   0x8d(byte141)
0x4b(75%)   0x76(byte118)    0x41(65%)   0x8e(byte142)
0x4b(75%)   0x77(byte119)    0x44(68%)   0x8f(byte143)
0x4b(75%)   0x78(byte120)    0x4e(78%)   0x90(byte144)

As soon as possible, I'll make a new issue for anothe MSI laptop, as I'm the owner of a MSI WS65 too.

Cheers :)

EC dump from GP73 8RD

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 01 00 80 c0 06 49 0b  >..............I.<
000030 03 09 00 0d 51 0a 05 00 26 13 6c 2a ea 01 e7 00  >....Q...&.l*....<
000040 00 00 64 00 36 11 00 00 36 11 be 2e df 0b 0c 30  >..d.6...6......0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 31 0a 32 38 3e 44 4a 50  >........1.28>DJP<
000070 64 28 00 28 30 38 40 48 50 5f 0a 07 07 07 07 07  >d(.(08@HP_......<
000080 2c 36 37 3c 41 46 4b 50 63 00 00 35 3b 41 47 4d  >,67<AFKPc..5;AGM<
000090 53 00 0a 07 07 07 07 07 06 16 7d 02 16 63 00 00  >S.........}..c..<
0000a0 31 37 43 36 45 4d 53 31 2e 31 30 34 30 36 31 33  >17C6EMS1.1040613<
0000b0 32 30 31 38 31 34 3a 34 34 3a 30 32 38 11 00 40  >201814:44:028..@<
0000c0 00 07 23 00 00 00 00 00 00 28 00 00 00 c8 00 00  >..#......(......<
0000d0 00 00 40 00 7f 00 00 00 00 00 00 81 00 00 00 00  >..@.............<
0000e0 e2 02 00 04 10 00 00 00 00 00 00 00 00 95 00 00  >................<
0000f0 00 00 80 02 0c 00 05 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address        Fan mode
0xc(12)     0xf4(byte244)        Auto

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x32(50°C)  0x6a(byte106)        0x37(55°C)  0x82(byte130)
0x38(56°C)  0x6b(byte107)        0x3c(60°C)  0x83(byte131)
0x3e(62°C)  0x6c(byte108)        0x41(65°C)  0x84(byte132)
0x44(68°C)  0x6d(byte109)        0x46(70°C)  0x85(byte133)
0x4a(74°C)  0x6e(byte110)        0x4b(75°C)  0x86(byte134)
0x50(80°C)  0x6f(byte111)        0x50(80°C)  0x87(byte135)

0x0(0%)     0x72(byte114)        0x0(0%)     0x8a(byte138)
0x28(40%)   0x73(byte115)        0x35(53%)   0x8b(byte139)
0x30(48%)   0x74(byte116)        0x3b(59%)   0x8c(byte140)
0x38(56%)   0x75(byte117)        0x41(65%)   0x8d(byte141)
0x40(64%)   0x76(byte118)        0x47(71%)   0x8e(byte142)
0x48(72%)   0x77(byte119)        0x4d(77%)   0x8f(byte143)
0x50(80%)   0x78(byte120)        0x53(83%)   0x90(byte144)

Support for MSI GE62-2QF

First off, thanks for creating isw, so cool to see support for this kind of thing.

I've installed isw from the AUR in Arch and followed the setup steps in the README, but when I run isw -cp MSI_ADDRESS_DEFAULT I get an error for the profile dump section:

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 0b 4b  >...............K<
000030 03 09 01 05 51 0a 05 00 26 13 6c 2a ea 01 e0 00  >....Q...&.l*....<
000040 00 00 64 00 59 10 00 00 59 10 e0 2f e1 0b 0c 30  >..d.Y...Y../...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 32 3b 3c 41 46 4b 50 50  >........2;<AFKPP<
000070 64 32 00 32 38 42 4c 56 56 00 0f 08 08 08 08 08  >d2.28BLVV.......<
000080 2e 36 37 3c 41 46 4b 4b 5e 00 00 35 3c 44 4c 54  >.67<AFKK^..5<DLT<
000090 54 00 0a 07 07 07 07 07 02 16 64 02 16 5e 01 00  >T.........d..^..<
0000a0 31 36 4a 31 45 4d 53 31 20 56 65 72 35 2e 30 36  >16J1EMS1 Ver5.06<
0000b0 2c 20 30 37 2f 30 33 2f 32 30 31 35 59 10 00 50  >, 07/03/2015Y..P<
0000c0 00 01 00 00 00 9e c0 00 00 32 00 00 00 9e 14 00  >.........2......<
0000d0 00 00 00 00 70 00 01 00 00 00 00 80 01 00 00 00  >....p...........<
0000e0 e2 02 00 00 10 00 00 00 00 00 00 00 00 80 00 00  >................<
0000f0 00 00 81 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address    Fan mode
Traceback (most recent call last):
  File "/usr/bin/isw", line 314, in <module>
    main()
  File "/usr/bin/isw", line 311, in main
    parser.parse_args()
  File "/usr/lib/python3.7/argparse.py", line 1749, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/lib/python3.7/argparse.py", line 1781, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "/usr/lib/python3.7/argparse.py", line 1987, in _parse_known_args
    start_index = consume_optional(start_index)
  File "/usr/lib/python3.7/argparse.py", line 1927, in consume_optional
    take_action(action, args, option_string)
  File "/usr/lib/python3.7/argparse.py", line 1839, in take_action
    argument_values = self._get_values(action, argument_strings)
  File "/usr/lib/python3.7/argparse.py", line 2369, in _get_values
    value = self._get_value(action, arg_string)
  File "/usr/lib/python3.7/argparse.py", line 2402, in _get_value
    result = type_func(arg_string)
  File "/usr/bin/isw", line 59, in ec_profile
    sfm+'\n'
UnboundLocalError: local variable 'sfm' referenced before assignment

Any help would be greatly appreciated.

EC Dump from GL62 6QD

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 49 0b  >..............I.<
000030 03 09 00 0d 51 0a 05 00 54 0f 30 2a 88 01 e0 00  >....Q...T.0*....<
000040 00 00 63 00 64 0d 00 00 23 0d 94 2f 35 0c 0c 30  >..c.d...#../5..0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 39 0a 3c 41 46 4b 4b 4b  >........9.<AFKKK<
000070 64 32 2f 32 38 42 4c 4c 4c 00 0a 08 08 08 08 08  >d2/28BLLL.......<
000080 00 00 37 3c 41 46 4b 4b 64 00 00 32 38 42 4c 56  >..7<AFKKd..28BLV<
000090 56 00 0a 07 08 08 08 08 00 16 7d 02 16 64 00 00  >V.........}..d..<
0000a0 31 36 4a 36 45 4d 53 31 2e 31 30 36 30 36 32 31  >16J6EMS1.1060621<
0000b0 32 30 31 36 31 36 3a 30 34 3a 30 32 64 0d 00 00  >201616:04:02d...<
0000c0 00 02 23 00 00 9e c0 00 00 2e 00 00 00 a7 00 00  >..#.............<
0000d0 00 00 00 00 7f 00 00 00 00 00 00 80 01 00 00 00  >................<
0000e0 e2 02 00 00 10 00 00 00 00 00 00 00 00 80 00 00  >................<
0000f0 00 00 80 02 0c 00 0f 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address        Fan mode
0xc(12)     0xf4(byte244)        Auto

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x3c(60°C)  0x6a(byte106)        0x37(55°C)  0x82(byte130)
0x41(65°C)  0x6b(byte107)        0x3c(60°C)  0x83(byte131)
0x46(70°C)  0x6c(byte108)        0x41(65°C)  0x84(byte132)
0x4b(75°C)  0x6d(byte109)        0x46(70°C)  0x85(byte133)
0x4b(75°C)  0x6e(byte110)        0x4b(75°C)  0x86(byte134)
0x4b(75°C)  0x6f(byte111)        0x4b(75°C)  0x87(byte135)

0x2f(47%)   0x72(byte114)        0x0(0%)     0x8a(byte138)
0x32(50%)   0x73(byte115)        0x32(50%)   0x8b(byte139)
0x38(56%)   0x74(byte116)        0x38(56%)   0x8c(byte140)
0x42(66%)   0x75(byte117)        0x42(66%)   0x8d(byte141)
0x4c(76%)   0x76(byte118)        0x4c(76%)   0x8e(byte142)
0x4c(76%)   0x77(byte119)        0x56(86%)   0x8f(byte143)
0x4c(76%)   0x78(byte120)        0x56(86%)   0x90(byte144)

Support for MSI GS65 8RF and 8SG

Hello,
Here is the EC dump for the MSI GS65:

$ sudo isw -c

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e4 06 5b 0b  >..............[.<
000030 03 09 00 0d 50 0a 05 00 a0 14 60 3b 71 02 e0 00  >....P.....`;q...<
000040 00 00 64 00 1e 15 00 00 1e 15 a6 43 e5 0b 00 00  >..d........C....<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 2b 00 37 40 46 4c 52 58  >........+.7@FLRX<
000070 64 2d 2d 32 3c 46 4b 50 50 00 08 03 03 03 03 03  >d--2<FKPP.......<
000080 28 00 37 3d 41 47 4d 56 5e 00 00 32 3c 46 50 5a  >(.7=AGMV^..2<FPZ<
000090 5a 00 08 03 03 03 03 05 02 00 64 02 00 6e 00 00  >Z.........d..n..<
0000a0 31 36 51 34 45 4d 53 31 2e 31 30 36 30 31 32 33  >16Q4EMS1.1060123<
0000b0 32 30 31 39 31 31 3a 31 33 3a 31 39 1e 15 00 00  >201911:13:19....<
0000c0 00 01 24 00 00 9e c1 00 00 82 00 00 00 b1 14 00  >..$.............<
0000d0 00 00 00 00 70 80 00 00 00 00 00 00 00 00 00 00  >....p...........<
0000e0 e2 02 00 03 10 00 00 00 00 00 00 00 00 9a 00 e4  >................<
0000f0 00 00 80 00 0c 8f 05 00 00 00 32 00 00 00 00 00  >..........2.....<
000100

Could you add the support for this machine? Thank you.

OSError: [Errno 22] Invalid argument

Hi,
I don't know if I am doing it right.
I am trying to start using application.
When I write into the terminal:

sudo isw -b GS65_8RF on

It gives an error:

Value       set @ address
0x80(128)   0x98(byte152)
Traceback (most recent call last):
  File "/usr/bin/isw", line 314, in <module>
    main()
  File "/usr/bin/isw", line 311, in main
    parser.parse_args()
  File "/usr/lib/python3.7/argparse.py", line 1749, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/lib/python3.7/argparse.py", line 1781, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "/usr/lib/python3.7/argparse.py", line 1987, in _parse_known_args
    start_index = consume_optional(start_index)
  File "/usr/lib/python3.7/argparse.py", line 1927, in consume_optional
    take_action(action, args, option_string)
  File "/usr/lib/python3.7/argparse.py", line 1839, in take_action
    argument_values = self._get_values(action, argument_strings)
  File "/usr/lib/python3.7/argparse.py", line 2387, in _get_values
    value = [self._get_value(action, v) for v in arg_strings]
  File "/usr/lib/python3.7/argparse.py", line 2387, in <listcomp>
    value = [self._get_value(action, v) for v in arg_strings]
  File "/usr/lib/python3.7/argparse.py", line 2402, in _get_value
    result = type_func(arg_string)
  File "/usr/bin/isw", line 263, in ec_boost
    print('Error: Only \033[4mon\033[0m and \033[4moff\033[0m are valid.')
OSError: [Errno 22] Invalid argument

Support for GS65 9SG

Here is the value of sudo isw -cp MSI_ADDRESS_DEFAULT

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e4 06 49 0b  >..............I.<
000030 03 03 01 0d 50 0a 05 00 a0 14 60 3b 71 02 80 00  >....P.....`;q...<
000040 50 0a 51 00 ec 15 a2 09 a9 11 98 42 da 0b f8 43  >P.Q........B...C<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 23 00 36 3f 45 4b 51 57  >........#.6?EKQW<
000070 64 2e 2e 33 3d 47 4c 51 52 00 08 03 03 03 03 03  >d..3=GLQR.......<
000080 24 00 36 3c 40 46 4c 55 5e 01 01 33 3d 47 51 5b  >$.6<@FLU^..3=GQ[<
000090 5b 00 08 03 03 03 03 05 02 00 64 02 00 6e 00 00  >[.........d..n..<
0000a0 31 36 51 34 45 4d 53 31 2e 31 30 38 30 33 31 35  >16Q4EMS1.1080315<
0000b0 32 30 31 39 31 31 3a 32 34 3a 35 38 ec 15 00 00  >201911:24:58....<
0000c0 00 07 23 00 00 9e c1 00 01 04 00 ae 00 ae 00 00  >..#.............<
0000d0 00 00 40 00 70 80 00 00 05 00 00 00 00 00 00 00  >[email protected]...........<
0000e0 e2 02 00 23 10 00 00 00 00 00 00 00 00 9a 00 80  >...#............<
0000f0 00 00 80 00 8c 00 05 00 00 00 32 00 00 00 00 00  >..........2.....<
000100

Profile dump 
Value       set @ address    Fan mode
0x8c(140)   0xf4(byte244)    Advanced

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x36(54°C)  0x6a(byte106)    0x36(54°C)  0x82(byte130)
0x3f(63°C)  0x6b(byte107)    0x3c(60°C)  0x83(byte131)
0x45(69°C)  0x6c(byte108)    0x40(64°C)  0x84(byte132)
0x4b(75°C)  0x6d(byte109)    0x46(70°C)  0x85(byte133)
0x51(81°C)  0x6e(byte110)    0x4c(76°C)  0x86(byte134)
0x57(87°C)  0x6f(byte111)    0x55(85°C)  0x87(byte135)

0x2e(46%)   0x72(byte114)    0x1(1%)     0x8a(byte138)
0x33(51%)   0x73(byte115)    0x33(51%)   0x8b(byte139)
0x3d(61%)   0x74(byte116)    0x3d(61%)   0x8c(byte140)
0x47(71%)   0x75(byte117)    0x47(71%)   0x8d(byte141)
0x4c(76%)   0x76(byte118)    0x51(81%)   0x8e(byte142)
0x51(81%)   0x77(byte119)    0x5b(91%)   0x8f(byte143)
0x52(82%)   0x78(byte120)    0x5b(91%)   0x90(byte144)

unknown argument (no section) fix

Hi man
Edit:
SO Sorry about that , i figured it out.

for people with same problem:
profile name is in the [] not with it

original post:

sorry to bother i just wanted to use the new features of your build so i updated everything but its giving me this thing:
can you please help me what to do:
Screenshot at 2019-10-05 00-05-37

and everything is correct:
Screenshot at 2019-10-05 00-11-47

Support for GS43VR 7RE


EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 4b 0b  >..............K.<
000030 03 09 01 0d 50 0a 05 00 7c 1f b0 1d 26 03 e0 00  >....P...|...&...<
000040 00 00 60 00 0c 1d 00 00 c2 1b 5c 21 bf 0b fc 21  >..`.......\!...!<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 35 00 3a 3f 44 49 4e 53  >........5.:?DINS<
000070 64 2d 00 28 30 3f 46 50 55 00 08 03 03 03 03 03  >d-.(0?FPU.......<
000080 3c 00 35 3a 3f 44 49 53 64 3f 00 2d 3f 46 50 55  ><.5:?DISd?.-?FPU<
000090 5a 00 03 03 03 03 03 03 02 00 64 02 00 64 00 00  >Z.........d..d..<
0000a0 31 34 41 33 45 4d 53 31 2e 31 30 34 30 32 30 36  >14A3EMS1.1040206<
0000b0 32 30 31 37 31 34 3a 31 35 3a 30 31 0c 1d 00 00  >201714:15:01....<
0000c0 00 01 25 00 00 9e c0 00 00 47 00 7d 00 b3 00 00  >..%......G.}....<
0000d0 00 00 00 00 70 00 00 00 00 00 00 80 00 00 00 00  >....p...........<
0000e0 e2 02 00 02 10 00 00 00 00 00 00 00 00 b7 00 00  >................<
0000f0 00 00 80 00 0c 00 0d 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 

Value       set @ address    Fan mode
0xc(12)     0xf4(byte244)    Auto

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x3a(58°C)  0x6a(byte106)    0x35(53°C)  0x82(byte130)
0x3f(63°C)  0x6b(byte107)    0x3a(58°C)  0x83(byte131)
0x44(68°C)  0x6c(byte108)    0x3f(63°C)  0x84(byte132)
0x49(73°C)  0x6d(byte109)    0x44(68°C)  0x85(byte133)
0x4e(78°C)  0x6e(byte110)    0x49(73°C)  0x86(byte134)
0x53(83°C)  0x6f(byte111)    0x53(83°C)  0x87(byte135)

0x0(0%)     0x72(byte114)    0x0(0%)     0x8a(byte138)
0x28(40%)   0x73(byte115)    0x2d(45%)   0x8b(byte139)
0x30(48%)   0x74(byte116)    0x3f(63%)   0x8c(byte140)
0x3f(63%)   0x75(byte117)    0x46(70%)   0x8d(byte141)
0x46(70%)   0x76(byte118)    0x50(80%)   0x8e(byte142)
0x50(80%)   0x77(byte119)    0x55(85%)   0x8f(byte143)
0x55(85%)   0x78(byte120)    0x5a(90%)   0x90(byte144)```

GE75-9SG + display RPM value in option -r + usb backlight

Hi there. Can you assist me with fan control on my brand new GE75-9SG. I have checked online and 1.108 is the latest EC update for this machine as far as I can find.

       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 5b 0b  >..............[.<
000030 03 09 01 0d 51 0a 05 00 c0 17 30 2a 60 02 e7 00  >....Q.....0*`...<
000040 00 00 64 00 6a 17 00 00 6a 17 78 30 0f 0c a2 30  >..d.j...j.x0...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 31 0a 32 38 3e 46 4b 50  >........1.28>FKP<
000070 64 28 00 28 32 3c 46 50 5a 00 0a 07 07 09 09 09  >d(.(2<FPZ.......<
000080 32 36 37 3c 41 46 4b 50 61 2d 00 2d 34 3b 45 4f  >267<AFKPa-.-4;EO<
000090 59 00 0a 07 07 07 07 07 02 16 7d 02 16 66 00 00  >Y.........}..f..<
0000a0 31 37 45 32 45 4d 53 31 2e 31 30 38 30 34 30 32  >17E2EMS1.1080402<
0000b0 32 30 31 39 31 36 3a 31 37 3a 31 35 64 17 00 40  >201916:17:15d..@<
0000c0 00 06 22 00 00 9e c0 00 00 1c 00 b2 00 c9 14 00  >..".............<
0000d0 00 00 10 00 70 00 00 00 00 00 00 80 00 00 00 00  >....p...........<
0000e0 e2 02 00 31 10 00 00 00 00 00 00 00 00 9a 00 e4  >...1............<
0000f0 00 00 82 00 0c 8f 05 80 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address    Fan mode
0xc(12)     0xf4(byte244)    Auto

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x32(50°C)  0x6a(byte106)    0x37(55°C)  0x82(byte130)
0x38(56°C)  0x6b(byte107)    0x3c(60°C)  0x83(byte131)
0x3e(62°C)  0x6c(byte108)    0x41(65°C)  0x84(byte132)
0x46(70°C)  0x6d(byte109)    0x46(70°C)  0x85(byte133)
0x4b(75°C)  0x6e(byte110)    0x4b(75°C)  0x86(byte134)
0x50(80°C)  0x6f(byte111)    0x50(80°C)  0x87(byte135)

0x0(0%)     0x72(byte114)    0x0(0%)     0x8a(byte138)
0x28(40%)   0x73(byte115)    0x2d(45%)   0x8b(byte139)
0x32(50%)   0x74(byte116)    0x34(52%)   0x8c(byte140)
0x3c(60%)   0x75(byte117)    0x3b(59%)   0x8d(byte141)
0x46(70%)   0x76(byte118)    0x45(69%)   0x8e(byte142)
0x50(80%)   0x77(byte119)    0x4f(79%)   0x8f(byte143)
0x5a(90%)   0x78(byte120)    0x59(89%)   0x90(byte144)```

Support for changing GPU fan speed + MSI_16L13

I'm using ISW right now on a 16L13 and the CPU temp thresholds and fan speeds work perfectly fine. My GPU fan seems to stay at a constant fan speed however. If I understood the EC hexdump better I'd try my hand at writing it myself, but from my understanding 0x8A - 0x8F contain the GPU fan speeds and 0x82 - 0x88 contain the GPU fan temperature thresholds.

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 26 4b 0b  >.............&K.<
000030 03 09 00 05 50 0a 05 00 86 15 40 38 26 02 e0 40  >....P.....@8&..@<
000040 00 00 63 00 20 14 00 00 c7 13 cf 40 ec 0b a0 41  >..c. [email protected]<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 22 00 0a 14 1a 20 26 2c  >........".... &,<
000070 64 2d 14 1e 23 28 2d 37 4b 5f 07 09 08 06 03 03  >d-..#(-7K_......<
000080 2f 00 3d 43 49 4f 55 5a 5e 13 13 27 2b 2f 36 3e  >/.=CIOUZ^..'+/6><
000090 64 00 03 03 03 03 03 03 06 05 69 02 64 69 00 00  >d.........i.di..<
0000a0 31 36 4c 31 45 44 36 31 2e 31 30 37 30 35 30 35  >16L1ED61.1070505<
0000b0 32 30 31 36 31 33 3a 35 38 3a 30 31 20 14 00 30  >201613:58:01 ..0<
0000c0 00 01 22 00 00 9e c0 00 00 62 01 9a 00 ac 14 00  >.."......b......<
0000d0 00 00 00 00 70 00 01 00 00 00 00 80 01 00 00 00  >....p...........<
0000e0 e2 02 00 31 10 00 00 00 00 00 00 00 00 82 00 00  >...1............<
0000f0 00 00 00 00 0c 0f 05 00 00 00 00 00 00 01 00 00  >................<
000100

Support for MSI A10SC

I don't know how much similar is this laptop to the gaming series but here is the sudo isw -cp MSI_ADDRESS_DEFAULT:

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 20 80 e0 06 4b 0b  >.......... ...K.<
000030 03 09 01 0d 51 0a 05 00 a0 14 60 3b 71 02 e0 00  >....Q.....`;q...<
000040 00 00 5c 00 65 14 00 00 aa 12 a6 41 a6 0b 00 00  >..\.e......A....<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 33 00 32 3a 41 46 5a 5f  >........3.2:AFZ_<
000070 64 3a 2d 3a 41 48 50 55 64 00 03 05 05 05 05 03  >d:-:AHPUd.......<
000080 29 00 32 3c 46 52 5a 5d 64 2d 2d 32 41 48 50 55  >).2<FRZ]d--2AHPU<
000090 64 00 03 05 05 06 03 03 02 00 6e 02 00 66 00 00  >d.........n..f..<
0000a0 31 36 53 33 45 4d 53 31 2e 31 30 32 30 39 31 31  >16S3EMS1.1020911<
0000b0 32 30 31 39 31 30 3a 35 31 3a 35 33 63 14 00 00  >201910:51:53c...<
0000c0 00 07 31 00 00 00 00 00 00 96 00 b2 00 a0 00 00  >..1.............<
0000d0 00 00 40 00 70 00 00 00 00 00 00 80 00 00 00 00  >[email protected]...........<
0000e0 e2 02 00 03 10 00 00 00 00 00 00 00 00 9a 00 80  >................<
0000f0 00 00 80 81 0d 00 05 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address        Fan mode
0xd(13)     0xf4(byte244)        Unknown

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x32(50°C)  0x6a(byte106)        0x32(50°C)  0x82(byte130)
0x3a(58°C)  0x6b(byte107)        0x3c(60°C)  0x83(byte131)
0x41(65°C)  0x6c(byte108)        0x46(70°C)  0x84(byte132)
0x46(70°C)  0x6d(byte109)        0x52(82°C)  0x85(byte133)
0x5a(90°C)  0x6e(byte110)        0x5a(90°C)  0x86(byte134)
0x5f(95°C)  0x6f(byte111)        0x5d(93°C)  0x87(byte135)

0x2d(45%)   0x72(byte114)        0x2d(45%)   0x8a(byte138)
0x3a(58%)   0x73(byte115)        0x32(50%)   0x8b(byte139)
0x41(65%)   0x74(byte116)        0x41(65%)   0x8c(byte140)
0x48(72%)   0x75(byte117)        0x48(72%)   0x8d(byte141)
0x50(80%)   0x76(byte118)        0x50(80%)   0x8e(byte142)
0x55(85%)   0x77(byte119)        0x55(85%)   0x8f(byte143)
0x64(100%)  0x78(byte120)        0x64(100%)  0x90(byte144)

Support for GE72M (VR) 7RG Apache Pro

Here is the output of isw -c:

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 01 80 c0 06 48 4b  >..............HK<
000030 03 09 01 0d 51 0a 05 00 24 13 6c 2a ea 01 e0 00  >....Q...$.l*....<
000040 22 0b 5e 00 ac 10 00 00 93 0f 47 2f 2e 0c 0c 30  >".^.......G/...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 31 0a 37 3d 43 49 4f 55  >........1.7=CIOU<
000070 64 30 28 30 38 42 4c 56 5f 00 0a 08 08 08 08 08  >d0(08BLV_.......<
000080 34 00 37 3c 41 46 4b 4b 61 36 00 36 3e 46 4e 56  >4.7<AFKKa6.6>FNV<
000090 56 00 0a 07 07 07 07 07 82 16 7d 02 16 66 00 00  >V.........}..f..<
0000a0 31 37 39 43 45 4d 53 31 2e 31 30 36 30 32 32 30  >179CEMS1.1060220<
0000b0 32 30 31 37 31 36 3a 31 31 3a 35 36 a1 10 00 00  >201716:11:56....<
0000c0 00 01 24 00 00 00 00 00 00 62 00 51 00 50 00 00  >..$......b.Q.P..<
0000d0 00 00 20 00 7f 00 01 00 00 00 00 80 01 00 00 00  >.. .............<
0000e0 e2 02 00 81 10 00 00 00 00 00 00 00 00 d1 00 00  >................<
0000f0 00 00 80 01 0c 00 0c 00 00 00 00 00 00 00 00 00  >................<
000100

GS65_9SD

Pasting with hopes of getting device supported:

EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e4 06 5b 0b >..............[.<
000030 02 05 01 0d 50 0a 05 00 a0 14 60 3b 71 02 c0 00 >....P.....`;q...<
000040 50 0a 51 00 c0 14 46 f5 b2 10 bd 3d 1f 0c f8 43 >P.Q...F....=...C<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 29 00 37 40 46 4c 52 58 >........).7@FLRX<
000070 64 2d 2d 32 3c 46 4b 50 50 00 08 03 03 03 03 03 >d--2<FKPP.......<
000080 30 00 37 3d 41 47 4d 56 5e 32 00 32 3c 46 50 5a >0.7=AGMV^2.2<FPZ<
000090 5a 00 08 03 03 03 03 05 02 00 64 02 00 6e 00 00 >Z.........d..n..<
0000a0 31 36 51 34 45 4d 53 31 2e 31 30 39 30 35 31 33 >16Q4EMS1.1090513<
0000b0 32 30 31 39 31 30 3a 34 34 3a 32 39 c0 14 00 00 >201910:44:29....<
0000c0 00 01 24 00 00 9e 40 00 00 03 00 a2 00 ad 00 00 >..$...@.........<
0000d0 00 00 00 00 70 80 00 00 05 00 00 00 00 13 09 0f >....p...........<
0000e0 e2 02 00 27 10 00 00 00 00 00 00 00 00 84 00 80 >...'............<
0000f0 00 00 80 00 0c 00 05 00 00 a2 32 00 00 00 00 00 >..........2.....<
000100

Profile dump
Value set @ address Fan mode
0xc(12) 0xf4(byte244) Auto

-----------CPU----------- -----------GPU-----------
Value set @ address Value set @ address
0x37(55°C) 0x6a(byte106) 0x37(55°C) 0x82(byte130)
0x40(64°C) 0x6b(byte107) 0x3d(61°C) 0x83(byte131)
0x46(70°C) 0x6c(byte108) 0x41(65°C) 0x84(byte132)
0x4c(76°C) 0x6d(byte109) 0x47(71°C) 0x85(byte133)
0x52(82°C) 0x6e(byte110) 0x4d(77°C) 0x86(byte134)
0x58(88°C) 0x6f(byte111) 0x56(86°C) 0x87(byte135)

0x2d(45%) 0x72(byte114) 0x0(0%) 0x8a(byte138)
0x32(50%) 0x73(byte115) 0x32(50%) 0x8b(byte139)
0x3c(60%) 0x74(byte116) 0x3c(60%) 0x8c(byte140)
0x46(70%) 0x75(byte117) 0x46(70%) 0x8d(byte141)
0x4b(75%) 0x76(byte118) 0x50(80%) 0x8e(byte142)
0x50(80%) 0x77(byte119) 0x5a(90%) 0x8f(byte143)
0x50(80%) 0x78(byte120) 0x5a(90%) 0x90(byte144)

Battery

This that i go to comment is not related to this project, but I suggest if it were possible if you want and can.

MSI have a tool called "MSI Dragon". This utility have a option for battery care that set limit charging to battery. For example: loading between 40% and 60%.

Can you do a script that can limit values min and max of ours batteries for increase its useful life.

TLP can do but i have seen that it only run with thinkpad notebook.

I have been thinking that if you can do all or some of utilities that MSI Dragon have, i could do a GUI (QT) for yours scripts and so we can have a "MSI Dragon" amateur for Linux.

Temperature shown is different from i3blocks temperature(GS65 8RF)

The CPU temperature shown by sudo isw -r GS65_8RF_DEFAULT and by i3blocks (https://github.com/vivien/i3blocks-contrib/tree/master/temperature) differs inconsistently.

By inconsistently, I mean the temperature difference is not constant.. as in there isn't always a temperature difference of for eg - 10 degrees. The difference can be any amount. Also, the temperature shown by isw is usually lesser than the temperature shown by i3blocks' script.

Support for GS63 Stealth 8RE

Hi there and thanks for doing this.
heres my dump:

EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e0 06 49 0b >..............I.<
000030 03 09 01 0d 50 0a 05 00 44 16 88 2c 3a 02 e0 00 >....P...D..,:...<
000040 00 00 5f 00 58 15 00 00 38 14 43 31 28 0c fa 32 >.._.X...8.C1(..2<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 30 00 37 3d 43 49 4f 55 >........0.7=CIOU<
000070 64 1e 1e 2d 37 41 46 4b 50 00 08 03 03 03 03 03 >d..-7AFKP.......<
000080 37 00 37 3d 43 49 4f 55 64 32 00 32 3c 46 4b 4b >7.7=CIOUd2.2<FKK<
000090 50 00 08 03 03 03 03 03 02 00 64 02 00 6e 00 00 >P.........d..n..<
0000a0 31 36 4b 35 45 4d 53 31 2e 31 30 34 30 36 32 31 >16K5EMS1.1040621<
0000b0 32 30 31 38 31 31 3a 31 32 3a 30 33 f7 14 00 50 >201811:12:03...P<
0000c0 00 01 25 00 00 9e c0 00 00 b3 00 a2 00 e5 00 00 >..%.............<
0000d0 00 00 00 00 70 00 00 00 00 00 00 80 00 00 00 00 >....p...........<
0000e0 e2 02 00 00 10 00 00 00 00 00 00 00 00 83 00 00 >................<
0000f0 00 00 80 00 0c 00 05 00 00 a1 32 00 00 00 00 00 >..........2.....<
000100

Profile dump
Value set @ address Fan mode
0xc(12) 0xf4(byte244) Auto

-----------CPU----------- -----------GPU-----------
Value set @ address Value set @ address
0x37(55°C) 0x6a(byte106) 0x37(55°C) 0x82(byte130)
0x3d(61°C) 0x6b(byte107) 0x3d(61°C) 0x83(byte131)
0x43(67°C) 0x6c(byte108) 0x43(67°C) 0x84(byte132)
0x49(73°C) 0x6d(byte109) 0x49(73°C) 0x85(byte133)
0x4f(79°C) 0x6e(byte110) 0x4f(79°C) 0x86(byte134)
0x55(85°C) 0x6f(byte111) 0x55(85°C) 0x87(byte135)

0x1e(30%) 0x72(byte114) 0x0(0%) 0x8a(byte138)
0x2d(45%) 0x73(byte115) 0x32(50%) 0x8b(byte139)
0x37(55%) 0x74(byte116) 0x3c(60%) 0x8c(byte140)
0x41(65%) 0x75(byte117) 0x46(70%) 0x8d(byte141)
0x46(70%) 0x76(byte118) 0x4b(75%) 0x8e(byte142)
0x4b(75%) 0x77(byte119) 0x4b(75%) 0x8f(byte143)
0x50(80%) 0x78(byte120) 0x50(80%) 0x90(byte144)

EC dump from GV62 8RE firmware: 16JEEMS1.102

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 4b 4b  >..............KK<
000030 03 09 00 0d 50 0a 05 00 54 0f 30 2a 88 01 e7 00  >....P...T.0*....<
000040 00 00 62 00 1d 0f 00 00 aa 0e 7f 2f e2 0b 0c 30  >..b......../...0<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 3a 0a 37 3d 43 49 4e 53  >........:.7=CINS<
000070 64 33 28 2d 33 39 3f 45 4b 00 08 08 08 08 07 07  >d3(-39?EK.......<
000080 31 00 37 3c 41 46 4b 50 66 00 00 35 3b 41 49 51  >1.7<AFKPf..5;AIQ<
000090 59 00 07 07 07 07 07 07 02 16 64 02 0a 66 00 00  >Y.........d..f..<
0000a0 31 36 4a 45 45 4d 53 31 2e 31 30 32 30 36 31 39  >16JEEMS1.1020619<
0000b0 32 30 31 38 31 35 3a 34 32 3a 30 33 1c 0f 00 40  >201815:42:03...@<
0000c0 00 07 24 00 00 00 00 00 00 41 00 00 00 c6 14 00  >..$......A......<
0000d0 00 00 00 00 7f 00 01 00 00 00 00 80 01 00 00 00  >................<
0000e0 e2 02 00 82 10 00 00 00 00 00 02 00 00 84 00 00  >................<
0000f0 00 00 80 02 0c 00 05 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address        Fan mode
0xc(12)     0xf4(byte244)        Auto

-----------CPU-----------        -----------GPU-----------
Value       set @ address        Value       set @ address
0x37(55°C)  0x6a(byte106)        0x37(55°C)  0x82(byte130)
0x3d(61°C)  0x6b(byte107)        0x3c(60°C)  0x83(byte131)
0x43(67°C)  0x6c(byte108)        0x41(65°C)  0x84(byte132)
0x49(73°C)  0x6d(byte109)        0x46(70°C)  0x85(byte133)
0x4e(78°C)  0x6e(byte110)        0x4b(75°C)  0x86(byte134)
0x53(83°C)  0x6f(byte111)        0x50(80°C)  0x87(byte135)

0x28(40%)   0x72(byte114)        0x0(0%)     0x8a(byte138)
0x2d(45%)   0x73(byte115)        0x35(53%)   0x8b(byte139)
0x33(51%)   0x74(byte116)        0x3b(59%)   0x8c(byte140)
0x39(57%)   0x75(byte117)        0x41(65%)   0x8d(byte141)
0x3f(63%)   0x76(byte118)        0x49(73%)   0x8e(byte142)
0x45(69%)   0x77(byte119)        0x51(81%)   0x8f(byte143)
0x4b(75%)   0x78(byte120)        0x59(89%)   0x90(byte144)

Support for MSI GS73VR 7RF

isw -cp MSI_ADDRESS_DEFAULT

EC dump                                                                                                         
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................< 
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................< 
000020 00 00 00 00 00 00 00 00 00 00 00 80 c0 06 49 0b  >..............I.<
000030 03 09 11 0d 50 0a 05 00 44 16 88 2c 3a 02 e0 00  >....P...D..,:...<
000040 00 00 64 00 7d 0f 00 00 7d 0f 8b 31 16 0c fa 32  >..d.}...}..1...2<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 35 00 37 3d 43 49 4f 55  >........5.7=CIOU<
000070 64 2d 1e 2d 36 40 46 4b 55 00 08 03 03 03 03 03  >d-.-6@FKU.......<
000080 3a 00 37 3d 43 49 4f 55 66 32 00 32 3c 46 50 50  >:.7=CIOUf2.2<FPP<
000090 55 00 08 03 03 03 03 03 02 0a 6e 02 0a 70 00 00  >U.........n..p..<
0000a0 31 37 42 31 45 4d 53 31 2e 31 30 37 31 30 31 33  >17B1EMS1.1071013<
0000b0 32 30 31 36 31 31 3a 32 32 3a 30 31 7d 0f 00 00  >201611:22:01}...<
0000c0 00 07 22 00 00 9e c0 00 00 6a 00 a1 00 b0 14 00  >.."......j......<
0000d0 00 00 00 00 70 00 01 00 00 00 00 80 01 00 00 00  >....p...........<
0000e0 e2 02 00 82 10 00 00 00 00 00 00 00 00 83 00 00  >................<
0000f0 00 00 80 00 0c 00 03 00 00 9e 00 00 00 00 00 00  >................<
000100


Profile dump 
Value       set @ address    Fan mode
0xc(12)     0xf4(byte244)    Auto

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x37(55°C)  0x6a(byte106)    0x37(55°C)  0x82(byte130)
0x3d(61°C)  0x6b(byte107)    0x3d(61°C)  0x83(byte131)
0x43(67°C)  0x6c(byte108)    0x43(67°C)  0x84(byte132)
0x49(73°C)  0x6d(byte109)    0x49(73°C)  0x85(byte133)
0x4f(79°C)  0x6e(byte110)    0x4f(79°C)  0x86(byte134)
0x55(85°C)  0x6f(byte111)    0x55(85°C)  0x87(byte135)

0x1e(30%)   0x72(byte114)    0x0(0%)     0x8a(byte138)
0x2d(45%)   0x73(byte115)    0x32(50%)   0x8b(byte139)
0x36(54%)   0x74(byte116)    0x3c(60%)   0x8c(byte140)
0x40(64%)   0x75(byte117)    0x46(70%)   0x8d(byte141)
0x46(70%)   0x76(byte118)    0x50(80%)   0x8e(byte142)
0x4b(75%)   0x77(byte119)    0x50(80%)   0x8f(byte143)
0x55(85%)   0x78(byte120)    0x55(85%)   0x90(byte144)

Need help for figuring out whats wrong GE62 6QE

Hi and Thanks a lot for your great work and for helping people like me
i use xubuntu 19.04 and i used your guide for other distros to copy the files in right directories
but when i use command sudo isw -r it ask for profile name and i cant figure out what it is
and this is my isw -c:
EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

I have GE62 6QE Apache pro and i really need to be able to control my fan speed
Thank you in advance
i will gladly provide any other file that is needed

Set "Fan Mode" first ?

My Laptop is GE62 6QG.
Recently, I found out 0xf4 controls the Fan Mode:

Value Fan Mode
0x0c Auto
0x4c Basic
0x8c Advanced

The default mode of My Laptop on start up is set to 0x0c for Auto Mode.
I have to write 0x8c into 0xf4 to enable Avanced Mode first.

Then I will be able to control fan speed by setting up 0x72-0x78, other wise those data will be overwritten by EC itself under Auto Mode


My EC dump is here:

00000000: 0080 0000 0000 0000 0000 0000 0000 0000  ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000020: 0000 0000 0000 0000 0000 0080 c006 490b  ..............I.
00000030: 0309 000d 330a 0500 540f 302a 8801 e000  ....3...T.0*....
00000040: 0000 6200 550e 0000 040e a12f a20b 0c30  ..b.U....../...0
00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000060: 0000 0000 0000 0000 200a 373d 4349 4f4f  ........ .7=CIOO
00000070: 642f 2f32 3842 4c56 5600 0a08 0808 0808  d//28BLVV.......
00000080: 0000 373c 4146 4b4b 5e00 0035 3c44 4c54  ..7<AFKK^..5<DLT
00000090: 5400 0a07 0707 0707 0216 6402 0a5e 0000  T.........d..^..
000000a0: 3136 4a35 454d 5333 2e31 3130 3036 3135  16J5EMS3.1100615
000000b0: 3230 3136 3131 3a30 353a 3034 4e0e 0010  201611:05:04N...
000000c0: 0001 2500 009e c000 0028 0000 0092 1400  ..%......(......
000000d0: 0000 0000 7000 0100 0000 0080 0100 0000  ....p...........
000000e0: e202 0001 1000 0000 0000 0000 00d3 0000  ................
000000f0: 0000 8102 0c00 0f00 0000 0000 0000 0000  ................

Support for MSI GS75_9SF and 8SE <- kwown - guess -> 8SG/8SF//9SG//9SE/9SD

Hi, here is the dump of MSI GS75 :) Thank you for the awesome program!

# isw -cp MSI_ADDRESS_DEFAULT

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e0 06 7a 0f  >..............z.<
000030 03 01 01 0d 50 0a 05 00 a0 14 60 3b 71 02 c0 00  >....P.....`;q...<
000040 50 0a 50 00 72 15 00 00 15 11 27 40 fd 0b f8 43  >P.P.r.....'@...C<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 38 00 37 40 46 4c 52 58  >........8.7@FLRX<
000070 64 3c 2d 32 3c 46 46 46 4b 00 08 03 03 03 03 03  >d<-2<FFFK.......<
000080 3c 00 37 3d 41 47 4d 57 5e 3c 00 32 3c 46 46 50  ><.7=AGMW^<.2<FFP<
000090 6e 00 08 03 03 03 03 05 02 00 7d 02 00 64 00 00  >n.........}..d..<
0000a0 31 37 47 31 45 4d 53 31 2e 31 30 34 30 33 31 34  >17G1EMS1.1040314<
0000b0 32 30 31 39 31 33 3a 35 36 3a 32 35 72 15 00 00  >201913:56:25r...<
0000c0 00 06 22 00 00 9e c0 00 00 ca 00 74 00 8e 14 00  >.."........t....<
0000d0 00 00 00 00 70 80 00 00 00 00 00 80 00 13 06 18  >....p...........<
0000e0 e2 02 00 24 10 00 00 00 00 00 00 00 00 d1 00 d0  >...$............<
0000f0 00 00 80 83 0c 00 05 00 00 00 32 00 00 00 00 00  >..........2.....<
000100

Profile dump 
Value       set @ address    Fan mode
0xc(12)     0xf4(byte244)    Auto

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x37(55°C)  0x6a(byte106)    0x37(55°C)  0x82(byte130)
0x40(64°C)  0x6b(byte107)    0x3d(61°C)  0x83(byte131)
0x46(70°C)  0x6c(byte108)    0x41(65°C)  0x84(byte132)
0x4c(76°C)  0x6d(byte109)    0x47(71°C)  0x85(byte133)
0x52(82°C)  0x6e(byte110)    0x4d(77°C)  0x86(byte134)
0x58(88°C)  0x6f(byte111)    0x57(87°C)  0x87(byte135)

0x2d(45%)   0x72(byte114)    0x0(0%)     0x8a(byte138)
0x32(50%)   0x73(byte115)    0x32(50%)   0x8b(byte139)
0x3c(60%)   0x74(byte116)    0x3c(60%)   0x8c(byte140)
0x46(70%)   0x75(byte117)    0x46(70%)   0x8d(byte141)
0x46(70%)   0x76(byte118)    0x46(70%)   0x8e(byte142)
0x46(70%)   0x77(byte119)    0x50(80%)   0x8f(byte143)
0x4b(75%)   0x78(byte120)    0x6e(110%)  0x90(byte144)

Possibility for fan speed beyond 100%? [question]

Thank you for creating this great tool!

With the method of writing to EC, would it be possible to achieve fan speed beyond 100%, like you can do in MSI's Dragon Center with the "Cooler Boost" setting?

Thanks!

No difference between fan speed 01...55

I'm using GS40_6QE It seems like:

  • cpu_fan_speed is off if I set the value to 0
  • cpu_fan_speed becomes a bit annoying when I set the value to 01
  • there's no difference in noise between 01, 02, ... ~60. (So I guess the fan speed as well)
  • thus I cant set the fans to low speed, it's either off or it's like 30 db which is irritating
  • After cpu_fan_speed 60+ it seems the speed is increasing, but 60 is already loud

Is there any way to set the fans to low speed? Please tell me if I can provide more info. But I guess it's reproducible on all msi devices...

GS65_9SE

EC dump
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e4 06 5a 0b >..............Z.<
000030 03 09 00 0d 50 0a 05 00 a0 14 60 3b 71 02 e0 00 >....P.....`;q...<
000040 00 00 5c 00 e9 12 00 00 43 11 89 40 28 0c 00 00 >.......C..@(...<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
000060 00 00 00 00 00 00 00 00 31 00 37 40 46 4c 52 58 >........1.7@FLRX<
000070 64 32 2d 32 3c 46 4b 50 50 00 08 03 03 03 03 03 >d2-2<FKPP.......<
000080 32 00 37 3d 41 47 4d 56 5e 00 00 32 3c 46 50 5a >2.7=AGMV^..2<FPZ<
000090 5a 00 08 03 03 03 03 05 02 00 64 02 00 6e 00 00 >Z.........d..n..<
0000a0 31 36 51 34 45 4d 53 31 2e 31 30 38 30 33 31 35 >16Q4EMS1.1080315<
0000b0 32 30 31 39 31 31 3a 32 34 3a 35 38 f8 12 00 00 >201911:24:58....<
0000c0 00 01 31 00 00 9e c1 00 00 5c 00 00 00 a0 14 00 >..1............<
0000d0 00 00 00 00 70 80 00 00 05 00 00 00 00 00 00 00 >....p...........<
0000e0 e2 02 00 25 10 00 00 00 00 00 00 00 00 9a 00 e4 >...%............<
0000f0 00 00 80 00 0c 8f 05 00 00 00 32 00 00 00 00 00 >..........2.....<
000100

Profile dump
Value set @ address Fan mode
0xc(12) 0xf4(byte244) Auto

-----------CPU----------- -----------GPU-----------
Value set @ address Value set @ address
0x37(55°C) 0x6a(byte106) 0x37(55°C) 0x82(byte130)
0x40(64°C) 0x6b(byte107) 0x3d(61°C) 0x83(byte131)
0x46(70°C) 0x6c(byte108) 0x41(65°C) 0x84(byte132)
0x4c(76°C) 0x6d(byte109) 0x47(71°C) 0x85(byte133)
0x52(82°C) 0x6e(byte110) 0x4d(77°C) 0x86(byte134)
0x58(88°C) 0x6f(byte111) 0x56(86°C) 0x87(byte135)

0x2d(45%) 0x72(byte114) 0x0(0%) 0x8a(byte138)
0x32(50%) 0x73(byte115) 0x32(50%) 0x8b(byte139)
0x3c(60%) 0x74(byte116) 0x3c(60%) 0x8c(byte140)
0x46(70%) 0x75(byte117) 0x46(70%) 0x8d(byte141)
0x4b(75%) 0x76(byte118) 0x50(80%) 0x8e(byte142)
0x50(80%) 0x77(byte119) 0x5a(90%) 0x8f(byte143)
0x50(80%) 0x78(byte120) 0x5a(90%) 0x90(byte144)

Support for MSI WS65 8SK

As I said, here there is the dump for this laptop:

EC dump 
       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 b0 e0 06 49 0b  >..............I.<
000030 03 03 00 0d 50 0a 05 00 a0 14 60 3b 71 02 90 00  >....P.....`;q...<
000040 50 0a 03 00 da 14 93 09 8d 00 37 3b ea 0b f8 43  >P.........7;...C<
000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000060 00 00 00 00 00 00 00 00 40 00 37 40 46 4c 52 58  >[email protected]@FLRX<
000070 64 32 1e 2d 32 3c 46 4b 50 00 08 03 03 03 03 03  >d2.-2<FKP.......<
000080 35 00 37 3d 46 4c 51 55 61 00 00 32 37 3c 4b 55  >5.7=FLQUa..27<KU<
000090 58 00 08 03 03 03 03 03 02 00 64 02 00 6e 00 00  >X.........d..n..<
0000a0 31 36 51 32 45 57 53 31 2e 31 30 31 30 38 32 32  >16Q2EWS1.1010822<
0000b0 32 30 31 38 30 38 3a 35 37 3a 34 38 da 14 00 00  >201808:57:48....<
0000c0 00 01 00 00 00 9e 41 00 01 3b 00 00 00 ca 00 00  >......A..;......<
0000d0 00 00 00 00 70 00 00 00 00 00 00 80 00 00 00 00  >....p...........<
0000e0 e2 02 00 10 10 00 00 00 00 00 00 00 00 00 00 00  >................<
0000f0 00 00 80 00 0c 00 05 00 00 00 00 00 00 00 00 00  >................<
000100

Profile dump 
Value       set @ address    Fan mode
0xc(12)     0xf4(byte244)    Auto

-----------CPU-----------    -----------GPU-----------
Value       set @ address    Value       set @ address
0x37(55°C)  0x6a(byte106)    0x37(55°C)  0x82(byte130)
0x40(64°C)  0x6b(byte107)    0x3d(61°C)  0x83(byte131)
0x46(70°C)  0x6c(byte108)    0x46(70°C)  0x84(byte132)
0x4c(76°C)  0x6d(byte109)    0x4c(76°C)  0x85(byte133)
0x52(82°C)  0x6e(byte110)    0x51(81°C)  0x86(byte134)
0x58(88°C)  0x6f(byte111)    0x55(85°C)  0x87(byte135)

0x1e(30%)   0x72(byte114)    0x0(0%)     0x8a(byte138)
0x2d(45%)   0x73(byte115)    0x32(50%)   0x8b(byte139)
0x32(50%)   0x74(byte116)    0x37(55%)   0x8c(byte140)
0x3c(60%)   0x75(byte117)    0x3c(60%)   0x8d(byte141)
0x46(70%)   0x76(byte118)    0x4b(75%)   0x8e(byte142)
0x4b(75%)   0x77(byte119)    0x55(85%)   0x8f(byte143)
0x50(80%)   0x78(byte120)    0x58(88%)   0x90(byte144)

So now you can add support for this one too :)

Cheers :D

Service not starting

I tried to install the service to start it automatically on startup but when I try to start it, it gives me an error.
This is the output of

systemctl status [email protected]

   Loaded: loaded (/usr/lib/systemd/system/[email protected]; indirect; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2019-08-11 17:04:34 CEST; 12s ago
  Process: 20463 ExecStart=/usr/bin/isw -w 16J9EMS1 (code=exited, status=2)
 Main PID: 20463 (code=exited, status=2)

Aug 11 17:04:33 Pheonix systemd[1]: Starting ISW fan control service...
Aug 11 17:04:34 Pheonix isw[20463]: usage: isw [-h] [-b B B] [-c] [-f F] [-p P] [-r R] [-s S S] [-w W]
Aug 11 17:04:34 Pheonix isw[20463]: isw: error: argument -w: invalid ec_write value: '16J9EMS1'
Aug 11 17:04:34 Pheonix isw[20463]: Writing config to EC...
Aug 11 17:04:34 Pheonix systemd[1]: [email protected]: Main process exited, code=exited, status=2/INV
Aug 11 17:04:34 Pheonix systemd[1]: [email protected]: Failed with result 'exit-code'.
Aug 11 17:04:34 Pheonix systemd[1]: Failed to start ISW fan control service.

Support for "Shift"?

Hello,

I really like that I can control fan speed according to the actual CPU/GPU temperature. But it would be totally awesome to have the ability to also control the "Shift", as shown in this snap from the Dragon Control Center:
image

You can choose from several Shift modes (I think this boosts/restricts the power of CPU/GPU):

  • Turbo
  • Sport
  • Comfort
  • ECO (restriction is so big, that it doesn't have to cool at all, which is really cool if you need to be quiet on a meeting)

image


Is there any way that I could help you with this? I must admit I don't have experience with tracing system calls on Windows, but I'm willing to learn this. Could you point me in some direction of how to reverse-engineer the communication with the EC?

Add a simpler mode (-r) to reuse in other programs

This may not be the right place to post this but i have been banging my head around a way to get a command applet in MATE to realtime fan speed/temp in the system tray. what i basically need is a way to output the results of -r to a log file, one that updates every 1-3 second or so.... can anyone assist me with this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.