msi-ec
msi-ec copied to clipboard
MSI Titan 18 HX A14V - Firmware version is not supported
Laptop model
MSI Titan 18 HX A14V
EC firmware version
1822EMS1.105
EC memory dump
| _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
-----+------------------------------------------------
0x0_ | 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x2_ | 00 00 00 00 00 00 00 00 0a 05 00 00 00 27 1b 5b
0x3_ | 03 01 00 0d 00 00 51 81 6a 18 60 3b 71 02 c0 00
0x4_ | 35 0c 58 00 b9 18 00 00 a6 15 2d 41 d9 0b f8 43
0x5_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x6_ | 00 00 00 00 00 00 00 00 34 00 3a 40 46 4c 52 58
0x7_ | 64 19 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03
0x8_ | 00 00 34 3a 40 46 4c 52 64 00 00 19 23 2c 3a 46
0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 40 00
0xa_ | 31 38 32 32 45 4d 53 31 2e 31 30 35 31 31 32 39
0xb_ | 32 30 32 33 31 31 3a 31 33 3a 31 38 00 00 00 08
0xc_ | 00 00 07 22 00 00 19 00 01 1a 00 00 00 00 00 00
0xd_ | 00 00 c1 84 0d 00 05 bc 00 01 00 00 00 05 00 00
0xe_ | e2 00 00 b9 18 00 00 c1 01 00 00 00 00 92 00 00
0xf_ | 00 00 70 00 2a 7f 05 28 7f 05 00 00 00 01 00 00
GPU
Nvidia
Is your keyboard RGB?
Yes (multi color RGB)
Additional context
https://www.msi.com/Laptop/Titan-18-HX-A14VX/Specification
New BIOS and EC firmware version released two days ago:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; MSI BIOS Release Notes ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Model : MS-1822
MKT Name : Titan 18 HX A14VIG/Titan 18 HX A14VHG
;****************************************************************************;
New BIOS : E1822IMS.10E
ROM CheckSum : 0x249A
Release Date : 2024.1.12
;--------------------------- Description ------------------------------------;
1.Update EC version to 1822EMS1.109.
;****************************************************************************;
New BIOS : E1822IMS.109
ROM CheckSum : 0x9644
Release Date : 2023.12.21
;--------------------------- Description ------------------------------------;
First Release.
https://www.msi.com/Laptop/Titan-18-HX-A14VX/support?sub_product=Titan-18-HX-A14VIG
EC firmware version
1822EMS1.109
EC memory dump
| _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
-----+------------------------------------------------ 0x0_ | 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x1_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x2_ | 00 00 00 00 00 00 00 00 0a 05 00 00 00 24 1b 5b 0x3_ | 03 01 00 0d 00 00 51 81 6a 18 60 3b 71 02 c0 00 0x4_ | 35 0c 5a 00 d0 18 00 00 26 16 73 41 e0 0b f8 43 0x5_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x6_ | 00 00 00 00 00 00 00 00 33 00 3a 40 46 4c 52 58 0x7_ | 64 19 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03 0x8_ | 00 00 34 3a 40 46 4c 52 64 00 00 19 23 2c 3a 46 0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 40 00 0xa_ | 31 38 32 32 45 4d 53 31 2e 31 30 39 30 31 30 35 0xb_ | 32 30 32 34 31 30 3a 32 39 3a 30 39 00 00 00 08 0xc_ | 00 00 07 22 00 00 00 00 01 19 00 00 00 00 00 00 0xd_ | 00 00 c1 84 0d 00 05 bc 00 01 00 00 00 05 00 00 0xe_ | e2 00 00 d0 18 00 00 c1 00 00 00 00 00 92 00 00 0xf_ | 00 00 70 00 2a 7f 05 28 7f 05 00 00 00 01 00 00
EC firmware version
1822EMS1.111
EC memory dump
| _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
-----+------------------------------------------------ 0x0_ | 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x1_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x2_ | 00 00 00 00 00 00 00 00 0a 05 00 00 00 26 1b 5b 0x3_ | 03 01 00 0d 00 00 51 81 6a 18 60 3b 71 02 c0 00 0x4_ | 35 0c 55 00 c2 18 00 00 d7 14 a7 40 e7 0b f8 43 0x5_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x6_ | 00 00 00 00 00 00 00 00 37 00 3a 40 46 4c 52 58 0x7_ | 64 19 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03 0x8_ | 00 00 34 3a 40 46 4c 52 64 00 00 19 23 2c 3a 46 0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 43 00 0xa_ | 31 38 32 32 45 4d 53 31 2e 31 31 31 30 31 32 39 0xb_ | 32 30 32 34 30 39 3a 32 35 3a 33 39 00 00 00 08 0xc_ | 00 00 07 22 00 00 00 00 01 18 00 00 00 00 00 00 0xd_ | 00 00 c1 84 0d 00 05 bc 00 01 00 00 00 0a 00 00 0xe_ | e2 00 00 c2 18 00 00 c1 01 00 00 00 00 92 00 00 0xf_ | 00 00 70 00 2c 7f 05 2a 7f 05 00 00 00 01 00 00
Hi, I figured out these addresses using RWEverything (1822EMS1.109):
Charge Threadshold
address: 0xD7
values: 0xE4 (stop at 100%), 0xD0 (under 70%, stop at 80%), 0xBC (under 50%, stop at 60%)
Webcam
address: ??
values: ??
Notes:
- No change at all in EC when the webcam is active, address 0x2E value is 0x5B in all cases
Win/Fn Swap
address: 0xE8
values: 0x01 (win-fn), 0x11 (fn-win)
Cooler Boost
address: 0x98
values: 0x02 (off), 0x82 (on)
Shift Mode (User Scenario/Performance Mode)
address: 0xD2
values: 0xC4 (Extreme), 0xC1 (Balanced), 0xC2 (Super Battery)
Notes:
- Address 0xD6 also changes to: 0x03 (Extreme), 0x05 (Balanced and Super Battery)
- To toggle Super Battery, we'll also need to write 0x0F (on) or 0x00 (off) to address 0xEB.
- Silent mode in MSI Center is equivalent to Balanced mode with Silent fan mode.
Super Battery
address: 0xEB
values: 0x00 (off), 0x0F (on)
Fan Mode
address: 0xD4
values: 0x0D (Auto), 0x1D (Silent), 0x8D (Advanced)
Fan Curves
CPU:
number of sub-fan setting: 6
starting address: 0x72
end address: 0x77 (0x72 + 5)
GPU:
number of sub-fan setting: 6
starting address: 0x8A
end address: 0x8F (0x8A + 5)
Fan Speed (%)
CPU:
address: 0x71
values: 0x00..0x96 -> 00 (0%), 19 (25%), ..., 96 (150%)
GPU:
address: 0x89
values: 0x00..0x96 -> 00 (0%), 19 (25%), ..., 96 (150%)
Notes:
- GPU fan speed (address 0x89) should show current value? Unlike CPU, it shows
the minimum fan speed (set in 0x8A, the first sub-fan GPU setting in Advanced fan mode)
Fan Speed (n/RPM)
CPU: 0xC8 and 0xC9 (01 19 -> 480000/281 = 1708rpm)
GPU: 0xCA and 0xCB (01 3F -> 480000/319 = 1504rpm)
Mic Mute
address: 0x2C
values: 0x02 (on), 0x00 (off)
Speaker Mute
address: 0x2D
values: 0x26 (on), 0x24 (off)
Keyboard Backlight
address: 0xD3
values: 0x81 (off), 0x82 (low), 0x83 (mid), 0x84 (high), 0x80 (full)
Notes:
- Windows values are different: 0x80 (off), 0x81 (low), 0x82 (mid), 0x83 (high), 0x84 (full)
USB Power Share
address: 0xBF
values: 0x08 (off), 0x28 (on)
Sensors
CPU temperature address: 0x68
GPU temperature address: 0x80
Battery charge address: 0x42
@glpnk @teackot Could you please take a look at it? Thank you!
I check it and make test build, thanks for your contribution
Ahother EC memory dump, this time in Linux:
| _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
-----+------------------------------------------------
0x0_ | 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x2_ | 00 00 00 00 00 00 00 00 0a 05 00 00 00 24 5b 5b
0x3_ | 03 09 00 0d 01 00 51 81 6a 18 60 3b 71 02 e0 00
0x4_ | 00 00 64 00 33 18 00 00 33 18 2f 43 ad 0b 00 00
0x5_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x6_ | 00 00 00 00 00 00 00 00 3b 00 3a 40 46 4c 52 58
0x7_ | 64 19 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03
0x8_ | 30 00 34 3a 40 46 4c 52 64 00 00 19 23 2c 3a 46
0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 3f 00
0xa_ | 31 38 32 32 45 4d 53 31 2e 31 30 39 30 31 30 35
0xb_ | 32 30 32 34 31 30 3a 32 39 3a 30 39 00 00 00 28
0xc_ | 00 00 01 33 00 00 0d 00 01 09 01 13 00 00 00 00
0xd_ | 00 00 c1 80 0d 00 05 bc 00 01 00 00 00 09 00 00
0xe_ | e2 00 00 33 18 00 00 c1 01 00 00 00 00 c0 00 00
0xf_ | 00 00 70 00 32 3c 32 23 3c 32 00 00 00 01 00 00
- The two fans are active (very low RPM)
- I can confirm that there is no EC change when the webcam is active (Bison FHD Camera, USB interface, ID 5986:1193)
- The keyboard backlight values are different in Linux:
Keyboard Backlight
address: 0xD3
values: 0x81 (off), 0x82 (low), 0x83 (mid), 0x84 (high), 0x80 (full)
These are the good ones.
I check it and make test build, thanks for your contribution
Thank you :+1:
These keyboard settings is weird. Do you tried OpenRGB? https://github.com/CalcProgrammer1/OpenRGB
It seems that it is not supported, VID:PID is not listed here: https://openrgb.org/devices_0.9.html
Bus 001 Device 003: ID 1038:1122 SteelSeries ApS SteelSeries KLC
Bus 001 Device 004: ID 1038:115b SteelSeries ApS SteelSeries ALC
There are two issues opened for MSI GE 68/78 which are very similar:
-
Keyboard (1038:113A): https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/3960
-
Lightbar and logo (1038:114b): https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/3961
If it uses the same protocol:
This controller would need to be refactored and generalised to accept the 53 LEDs that were found in the 2 frames sending colour data
There will need to be some more work done here to figure out the keyboard layout mapping. i.e. Index -> Key. The work to generalise the QCK controller should be done and tested first which should make adding the keyboard simpler.
It's going to take some time until it is supported...
Added your model https://github.com/glpnk/msi-ec/tree/1822EMS1
Please check Web-Cam switch - maybe one of settings is works, then I remove broken. I hope it will not break your camera. Test on your risk. Also, check keyboard backlight - possibly it output wrong settings if it will not shut down.
- .state_base_value = 0x81,
- .max_state = 3,
+ .state_base_value = 0x80,
+ .max_state = 4,
To install: Download with
git clone -b 1822EMS1 https://github.com/glpnk/msi-ec.git
Make and load
make
sudo make load
Thanks! About the webcam, this is my second Titan 18 HX, I had to return the first one, so I prefer to take no risks... maybe @nalim dares to try it.
The Keyboard backlight transitions using Fn key with 0x81 as base value and max_state = 3 are:
0 (off) => 0 (full) => 3 (high) => 2 (mid) => 1 (low) => 0 (off) => 0 (full) => [...]
However, using 0x80 as base value, max_state = 4, altering the mask:
diff ec_memory_configuration.h msi-ec/ec_memory_configuration.h
86c86
< #define MSI_EC_KBD_BL_STATE_MASK 0x3
---
> #define MSI_EC_KBD_BL_STATE_MASK 0x7
And doing a couple of changes in the code:
diff msi-ec.c msi-ec/msi-ec.c
2811c2811
< if (brightness < 0 || brightness > 3)
---
> if (brightness < 0 || brightness > 4)
2833c2833
< .max_brightness = 3,
---
> .max_brightness = 4,
Works as expected (values are n+1, although it's not a msi-ec fault)
In summary:
- Charge Threadshold: OK
- Webcam: not tested
- Win/Fn Swap: OK
- Cooler Boost: OK
- Shift/Perf. Mode: OK
- Super Battery: OK
- Fan Mode: OK
- Fan Speed: CPU OK, GPU shows the minimum speed set in advanced mode
- Mic Mute: OK
- Speaker Mute: OK (the LED does NOT turn on when volume is 0%, but it is related to
snd-hda-intel) - Keyboard Backlight: Not working correctly
- USB Power Share: not tested yet
- Temp. Sensors: OK (CPU and GPU)
One last thing:
1542c1542
< // n/rpm register is C9
---
> // n/rpm registers are C8 and C9
1546a1547
> // n/rpm registers are CA and CB
Thank you again! :+1:
@teackot Hi! Have you any idea how to make not standard keyboard backlight work and don't break other models?
@Makintos Thanks for your report
Do you know more about this?
- Speaker Mute: OK (the LED does NOT turn on when volume is 0%, but it is related to
snd-hda-intel)
I tried changing triggers, and small amount of them working. Mute trigger is broken
Yes, this is a recurrent topic, it is explained here: https://wiki.archlinux.org/title/Laptop#Audio_mute_LED
The updated HD-Audio Codec model list: https://docs.kernel.org/sound/hd-audio/models.html
In this thread there are links, scripts to do all kind of tests and even a kernel patch: https://bbs.archlinux.org/viewtopic.php?id=282568
If I found a fix I will post it here.
Thanks for working on this. Curious where this effort is currently as the battery charge control bit is very handy to have and it seems the last comment was ~2mo ago. Building the current master branch still produces an unsupported error message.
Seems I forgot to upstream it.
@sempervictus can you make new EC dump and send it to this issue?
Run in project directory
make
sudo make load-debug
cat /sys/devices/platform/msi-ec/debug/ec_dump
Thanks for picking this back up. The EC dump on this version is:
| _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
-----+------------------------------------------------
0x0_ | 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x2_ | 00 00 00 00 00 00 00 00 0a 05 00 00 00 24 1b 5b
0x3_ | 03 09 00 0d 01 00 51 81 6a 18 60 3b 71 02 e0 00
0x4_ | 00 00 64 00 bc 17 00 00 bc 17 4e 43 fb 0b 00 00
0x5_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x6_ | 00 00 00 00 00 00 00 00 3e 00 3a 40 46 4c 52 58
0x7_ | 64 23 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03
0x8_ | 2e 00 34 3a 40 46 4c 52 64 19 00 19 23 2c 3a 46
0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 5a 00
0xa_ | 31 38 32 32 45 4d 53 31 2e 31 31 31 30 31 32 39
0xb_ | 32 30 32 34 30 39 3a 32 35 3a 33 39 00 00 00 08
0xc_ | 00 00 07 31 00 00 00 00 00 e9 00 e3 00 00 00 00
0xd_ | 00 00 c1 80 0d 00 05 80 00 01 00 00 00 0d 00 00
0xe_ | e2 00 00 f8 17 00 00 00 01 00 00 00 00 b7 00 00
0xf_ | 20 00 70 00 31 3c 32 33 3c 32 00 00 00 02 01 00
EC firmware version
1822EMS1.112
EC memory dump
| _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
-----+------------------------------------------------ 0x0_ | 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x1_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x2_ | 00 00 00 00 00 00 00 00 0a 05 00 00 00 24 1b 5b 0x3_ | 03 01 00 0d 00 00 51 81 6a 18 60 3b 71 02 c0 00 0x4_ | 35 0c 46 00 cc 18 00 00 3c 11 6c 3e c1 0b f8 43 0x5_ | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x6_ | 00 00 00 00 00 00 00 00 32 00 3a 40 46 4c 52 58 0x7_ | 64 19 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03 0x8_ | 00 00 34 3a 40 46 4c 52 64 00 00 19 23 2c 3a 46 0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 3f 00 0xa_ | 31 38 32 32 45 4d 53 31 2e 31 31 32 30 34 30 32 0xb_ | 32 30 32 34 31 31 3a 32 30 3a 32 37 00 00 00 08 0xc_ | 00 00 07 25 00 00 00 00 01 19 00 00 00 00 00 00 0xd_ | 00 00 c1 84 0d 00 05 bc 00 01 00 00 00 05 00 00 0xe_ | e2 00 00 cc 18 00 00 c1 01 00 00 00 00 92 00 00 0xf_ | 00 00 70 00 29 3c 32 27 3c 32 00 00 00 01 00 00
Interesting - seems our EC dumps differ quite a bit:
$ diff /tmp/mine /tmp/nalim
1c1
< | _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
---
> | _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f
6,7c6,7
< 0x3_ | 03 09 00 0d 01 00 51 81 6a 18 60 3b 71 02 e0 00
< 0x4_ | 00 00 64 00 bc 17 00 00 bc 17 4e 43 fb 0b 00 00
---
> 0x3_ | 03 01 00 0d 00 00 51 81 6a 18 60 3b 71 02 c0 00
> 0x4_ | 35 0c 46 00 cc 18 00 00 3c 11 6c 3e c1 0b f8 43
9,18c9,18
< 0x6_ | 00 00 00 00 00 00 00 00 3e 00 3a 40 46 4c 52 58
< 0x7_ | 64 23 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03
< 0x8_ | 2e 00 34 3a 40 46 4c 52 64 19 00 19 23 2c 3a 46
< 0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 5a 00
< 0xa_ | 31 38 32 32 45 4d 53 31 2e 31 31 31 30 31 32 39
< 0xb_ | 32 30 32 34 30 39 3a 32 35 3a 33 39 00 00 00 08
< 0xc_ | 00 00 07 31 00 00 00 00 00 e9 00 e3 00 00 00 00
< 0xd_ | 00 00 c1 80 0d 00 05 80 00 01 00 00 00 0d 00 00
< 0xe_ | e2 00 00 f8 17 00 00 00 01 00 00 00 00 b7 00 00
< 0xf_ | 20 00 70 00 31 3c 32 33 3c 32 00 00 00 02 01 00
---
> 0x6_ | 00 00 00 00 00 00 00 00 32 00 3a 40 46 4c 52 58
> 0x7_ | 64 19 00 19 23 2c 3a 46 4d 4b 09 03 03 03 03 03
> 0x8_ | 00 00 34 3a 40 46 4c 52 64 00 00 19 23 2c 3a 46
> 0x9_ | 4d 5f 07 03 03 03 03 03 02 00 6e 02 00 66 3f 00
> 0xa_ | 31 38 32 32 45 4d 53 31 2e 31 31 32 30 34 30 32
> 0xb_ | 32 30 32 34 31 31 3a 32 30 3a 32 37 00 00 00 08
> 0xc_ | 00 00 07 25 00 00 00 00 01 19 00 00 00 00 00 00
> 0xd_ | 00 00 c1 84 0d 00 05 bc 00 01 00 00 00 05 00 00
> 0xe_ | e2 00 00 cc 18 00 00 c1 01 00 00 00 00 92 00 00
> 0xf_ | 00 00 70 00 29 3c 32 27 3c 32 00 00 00 01 00 00
where did you pull the EC version from? Dmidecode seems to show just the BIOS version (mine being .111 from feb):
Handle 0x0001, DMI type 0, 26 bytes
BIOS Information
Vendor: American Megatrends International, LLC.
Version: E1822IMS.111
Release Date: 02/06/2024
where did you pull the EC version from? Dmidecode seems to show just the BIOS version (mine being
.111from feb):Handle 0x0001, DMI type 0, 26 bytes BIOS Information Vendor: American Megatrends International, LLC. Version: E1822IMS.111 Release Date: 02/06/2024
cat /sys/devices/platform/msi-ec/debug/fw_version
Read more about debug mode in README :-)