BeardOverflow / msi-ec

GNU General Public License v2.0
134 stars 41 forks source link

Support MSI Prestige 16 Studio A13VE #77

Open shadowcomer opened 10 months ago

shadowcomer commented 10 months ago

Laptop model

MSI Prestige 16 Studio A13VE

EC firmware version

BIOS E1594IMS.111, EC 1594EMS1.10907062023 16:01:02

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 08 2c 09 49
0x3_ | 03 03 00 0d 01 00 50 81 a0 14 60 3b 10 02 80 00
0x4_ | 18 15 63 00 f4 14 ee 02 9f 14 ce 43 29 0c 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 3f 00 3c 46 50 55 5a 5f
0x7_ | 64 32 00 32 37 46 50 82 82 46 14 08 08 03 03 03
0x8_ | 3b 00 41 46 4b 50 55 57 5f 00 00 2d 3c 46 5a 69
0x9_ | 6e 00 05 03 03 03 03 02 06 14 7d 02 00 7d 3b 00
0xa_ | 31 35 39 34 45 4d 53 31 2e 31 30 39 30 37 30 36
0xb_ | 32 30 32 33 31 36 3a 30 31 3a 30 32 00 00 00 08
0xc_ | 00 00 07 31 00 00 00 00 00 99 00 9f 00 00 00 00
0xd_ | 00 00 c1 81 0d 00 05 80 00 00 00 00 00 07 00 00
0xe_ | e2 00 00 f4 14 00 00 00 00 00 00 00 00 ce 01 00
0xf_ | 00 00 70 00 33 64 00 00 64 00 00 00 00 01 00 00

GPU

Nvidia

Is your keyboard RGB?

No (single color)

Additional context

Thanks for all of your hard work, I'd be pulling my hair out (more) without everything you've already done.

I've followed the instructions in the wiki as closely as I could. Following is the original EC state from RWEverything:

Type:Embedded Controller: 0066,0062
Width:01
00=00 01=80 02=00 03=00 04=00 05=00 06=00 07=00 
08=00 09=00 0A=00 0B=00 0C=00 0D=00 0E=00 0F=00 
10=00 11=00 12=00 13=00 14=00 15=00 16=00 17=00 
18=00 19=00 1A=00 1B=00 1C=00 1D=00 1E=00 1F=00 
20=00 21=00 22=00 23=00 24=00 25=00 26=00 27=00 
28=0A 29=05 2A=00 2B=00 2C=08 2D=2C 2E=09 2F=49 
30=02 31=05 32=00 33=0D 34=01 35=00 36=50 37=81 
38=A0 39=14 3A=60 3B=3B 3C=10 3D=02 3E=C0 3F=00 
40=18 41=15 42=55 43=00 44=77 45=14 46=9B 47=FB 
48=5F 49=11 4A=48 4B=3F 4C=02 4D=0C 4E=F8 4F=43 
50=00 51=00 52=00 53=00 54=00 55=00 56=00 57=00 
58=00 59=00 5A=00 5B=00 5C=00 5D=00 5E=00 5F=00 
60=00 61=00 62=00 63=00 64=00 65=00 66=00 67=00 
68=31 69=00 6A=3C 6B=46 6C=50 6D=55 6E=5A 6F=5F 
70=64 71=32 72=00 73=32 74=37 75=46 76=50 77=82 
78=82 79=46 7A=14 7B=08 7C=08 7D=03 7E=03 7F=03 
80=00 81=00 82=41 83=46 84=4B 85=50 86=55 87=57 
88=5F 89=00 8A=00 8B=2D 8C=3C 8D=46 8E=5A 8F=69 
90=6E 91=00 92=05 93=03 94=03 95=03 96=03 97=02 
98=06 99=14 9A=7D 9B=02 9C=00 9D=7D 9E=2E 9F=00 
A0=31 A1=35 A2=39 A3=34 A4=45 A5=4D A6=53 A7=31 
A8=2E A9=31 AA=30 AB=39 AC=30 AD=37 AE=30 AF=36 
B0=32 B1=30 B2=32 B3=33 B4=31 B5=36 B6=3A B7=30 
B8=31 B9=3A BA=30 BB=32 BC=00 BD=00 BE=00 BF=08 
C0=00 C1=00 C2=07 C3=25 C4=00 C5=00 C6=19 C7=00 
C8=00 C9=9E CA=00 CB=AC CC=00 CD=00 CE=00 CF=00 
D0=00 D1=00 D2=C4 D3=83 D4=0D D5=00 D6=05 D7=E4 
D8=00 D9=01 DA=00 DB=00 DC=00 DD=08 DE=00 DF=00 
E0=E2 E1=00 E2=00 E3=77 E4=14 E5=00 E6=00 E7=40 
E8=00 E9=00 EA=00 EB=00 EC=00 ED=C5 EE=01 EF=00 
F0=00 F1=00 F2=70 F3=00 F4=29 F5=7F F6=05 F7=00 
F8=64 F9=00 FA=00 FB=00 FC=00 FD=01 FE=00 FF=00 

I've tried all of the key functions, hardware switches, and features as possible. I may have missed some of them, although I've tried to really go through each one multiple times. Following I describe the changes observed when changing functions. They follow the format:

- Key/Switch/Feature:
    [(address 1, ..., address n), (value for address 1, ..., value for address n), state description 1], optional commentary.
    [(address 1, ..., address n), (value for address 1, ..., value for address n), state description ...], optional commentary.
    [(address 1, ..., address n), (value for address 1, ..., value for address n), state description n], optional commentary.
Function keys:
    - Quick launch fn keys:
        [0xD9, 0x01, unlocked],
        [0xD9, 0x03, locked]
    - Mute sound:
        [0x2D, 0x2C, unmuted],
        [0x2D, 0x2E, muted]
    - Speaker down:
        Mute sound at volume zero, same as 'Mute Sound'
    - Speaker up:
        Unmute sound at volume not zero, same as 'Mute Sound'
    - Disable Touchpad:
        No effect
    - Mute Microphone:
        [0x2C, 0x08, unmuted],
        [0x2C, 0x0A, muted]
    - Enable Camera:
        [0x2E, 0x0B, enabled], requires hardware camera switch on.
        [0x2E, 0x09, disabled]
    - Switch User Scenario:
        NOTES: It seems that these options sometimes toggles the value of the address 0xD6 from the value 0x03 (in extreme) to the value 0x05 (in smart auto, balanced, silent, super batter). I've noticed that having the laptop connected to power can change whether it changes or not, but I can't seem to figure out why - might be decided by the driver.
        [(0xD2, 0xD3, 0xD4), (0xC1, 0x83, 0x0D), smart auto AI],
        [(0xD2, 0xD3, 0xD4), (0xC4, 0x83, 0x0D), extreme performance],
        [(0xD2, 0xD3, 0xD4), (0xC1, 0x83, 0x0D), balanced], same as smart auto AI: might change other addresses too? Smart auto might change mode in software.
        [(0xD2, 0xD3, 0xD4), (0xC1, 0x83, 0x1D), silent],
        [(0xD2, 0xD3, 0xD4), (0xC2, 0x80, 0x0D), super battery]

    - Switch Keyboard Backlight:
        [0xD3, 0x83, high],
        [0xD3, 0x82, medium],
        [0xD3, 0x81, low],
        [0xD3, 0x80, off]

    - Brightness Down:
        no effect
    - Brightness Up:
        no effect

Other keys:
    - Camera switch:
        [(0x2E, 0x2F), (0x09, 0x49), off],
        [(0x2E, 0x2F), (0x0B, 0x4B), on], turning the switch on also enables the camera.
    - Power plug:
        [(0x30, 0x31, 0x3E), (0x03, 0x03, 0x80), plugged],
        [(0x30, 0x31, 0x3E), (0x02, 0x05, 0xC0), un-plugged].

Features:
    - USB Power Share:
        [0xBF, 0x08, off]
        [0xBF, 0x28, on]
    - Keyboard Backlit:
        [0x2C, 0x00, always on]
        [0x2C, 0x08, auto turn off in 10 seconds]
        "auto mode" no effect
    - Battery Master:
        AI Charger - no effect,
        [0xD7, 0xE4, Best for mobility (always 100%)],
        [0xD7, 0xD0, Balanced (start 70%, stop 80%)],
        [0xD7, 0xBC, Best for battery (start 50%, stop 60%)].
    - Switch Window/Fn Keys:
        [0xE8, 0x00, win key left / fn key right],
        [0xE8, 0x10, win key right / fn key left].
    - Extreme performance settings:
        [0x98, 0x06, fan speed auto],
        [0x98, 0x86, fan speed cooler boost].

I still have Windows 11 installed, so I am able to investigate, test, or write code if necessary. However, I might need some guidance, as I'm not experienced with firmware.

Thanks for all of your help!

glpnk commented 10 months ago

Awesome work.

Please find:

UPD: battery charge max in EC dump has strange value 0x80 which equals 0%, but in dump from RWE it has right value

glpnk commented 10 months ago

@shadowcomer Ready for test and review

Download with

git clone -b 1594EMS1 https://github.com/glpnk/msi-ec.git

Make and load

make
sudo make load
shadowcomer commented 10 months ago

Thanks! Good catch on super battery missing some value changes.

I'm staring at the changing numbers a little bit longer. I'll update the main post with the updated data, and track the edits here as I go, so they don't get lost.

These are my findings:

  1. Added the switch windows key values.
  2. Fixed bad value for keyboard backlight key: was 0x83 on off, when it should be 0x80.
  3. Update on user scenario change behavior. It seems that these options sometimes toggles the value of the address 0xD6 from the value 0x03 (in extreme) to the value 0x05 (in smart auto, balanced, silent, super battery). I've noticed that having the laptop connected to power can affect whether it changes or not, but I can't seem to figure out why/when - it might be decided by the driver.
  4. Add fan speed auto/cooler boost feature.
  5. The 'Smart Auto AI' setting for switching to 'Super Battery' mode after reaching x% battery level, and the setting to automatically switch to 'Super Battery' mode when the power is unplugged don't seem to change any values.
  6. Toggling the GPU Switch from MSHybrid to Integrated does not seem to change any values.
  7. User scenario page screenshot: image

There are some additional GPU overclocking options in the 'Extreme Performance' mode: Core Clock Offset, and VRAM Clock Offset. Do you need me to try those too?

I've also noticed that there might be something wonky going on while in windows:

  1. The screen sometimes flashes black one or more times, resetting the position of windows that are partially off-screen to the center of the screen.
  2. While connected to power and indicating full charge and charging, after coming back from sleep it reported being fully drained. Re-plugging the power seems to have fixed it.

I'm going to double check the drivers, maybe reinstall them to see if windows messed them up.

Finally, is the battery charge max address you mention 0xD7?

shadowcomer commented 10 months ago

On a side note, I'm having trouble not making mistakes, and I'm finding it very tedious to find which values are changing. I'm not experienced in direct interaction with the hardware, but it seems like the process could be improved to help some more inexperienced users provide data more easily and accurately.

Is there a way in windows to automatically dump the contents of the embeded controller to file, similarly to what RWEverything does? We could collect that data at relatively short intervals over some seconds before and after changing a setting, and easily filter for values that only change once.

I don't know how standard the embedded controller is, so I don't know if this would be useful for any other motherboards.

teackot commented 10 months ago

The "AI" stuff seems to be the MSI Center feature, probably just automatically switches some parameters, so it is out of scope of this driver

Is there a way in windows to automatically dump the contents of the embeded controller to file, similarly to what RWEverything does? We could collect that data at relatively short intervals over some seconds before and after changing a setting, and easily filter for values that only change once.

There's this app, MsiEcRamEditor. It logs values that change so maybe we can contribute to it and add an option to exclude some irrelevant addresses from the log.

gil0mendes commented 10 months ago

In two days I'll receive my A13VE-045XES, so I'll be available to help in any way.

gil0mendes commented 10 months ago

My machine arrived earlier 🙌🏾 , so there are my findings:

# Report

## Function keys

- Quick launch fn keys:
    locked:
        0xd9 = 0x03
    unlocked:
        0xd9 = 0x01
- Mute sound:
    muted:
        0x2d = 0x2e
    unmuted:
        0x2d = 0x2c
- Volume down
    Change to volume 0, gives the same values as for 'mute sound'
- volume up
    For a non zero volume, same as for 'mute sound'
- Disable trackpad
    no effect
- Mute microphone
    muted:
        0x2c = 0x0a
    unmuted:
        0x2c = 0x08
- Enable camera
    disabled:
        0x2e = 0x09
    enabled:
        0x2e = 0x0b, requires hardware switch on
- Profiles
    super battery:
        0xd2 = 0xc2
        0xd3 = 0x80
        0xd4 = 0x0d
    silent:
        0xd2 = 0xc1
        0xd3 = 0x82
        0xd4 = 0x1d
    balanced:
        0xd2 = 0xc1
        0xd3 = 0x82
        0xd4 = 0x0d
    extreme performance:
        0xd2 = 0xc4
        0xd3 = 0x82
        0xd4 = 0x0d
    smart auto ai: probably the auto AI is a software thing
        0xd2 = 0xc1
        0xd3 = 0x82
        0xd4 = 0x0d
- keyboard light
    off:
        0xd3 = 0x80
    hight:
        0xd3 = 0x83
    medium:
        0xd3 = 0x82
    low:
        0xd3 = 0x81

## Features

- Switch keys:
    enabled:
        0xe8 = 0x10
    disbaled:
        0xe8 = 0x00
- USB power share
    enabled:
        0xbf = 0x28
    disabled:
        0xbf = 0x08
- keyboard mode:
    always on:
        0x2c = 0x00
    auto mode, off after 10 sec:
        0x2c = 0x08
- Battery master
    best for mobility:
        0xd7 = 0xe4
    balanced
        0xd7 = 0xd0
    best for battery
        0xd7 = 0xbc
- Fan speed
    Cooler boost:
        0x98 = 0x86
    Auto:
        0x98 = 0x06

## Other things

- Power plug
    Plugged:
        0x30 = 0x03
        0x31 = 0x03
        0x3e = 0x80
    Plugged via USB-C:
        0x30 = 0x07
        0x31 = 0x03
        0x3e = 0x80
    Un-plugged:
        0x30 = 0x02
        0x31 = 0x05
        0x3e = 0xc0
- fan 1 (CPU???) speed:
    The address is organized from low to hight temperature, this allows to define a fan profile.
    value: is a percentage between 0x0-0x96
    address temp 0: 0x72
    address temp 1: 0x73
    address temp 2: 0x74
    address temp 3: 0x75
    address temp 4: 0x76
    address temp 5: 0x77
- fan 2 (GPU???) speed:
    The address is organized from low to hight temperature, this allows to define a fan profile.
    value: is a percentage between 0x0-0x96
    address temp 0: 0x8a
    address temp 1: 0x8b
    address temp 2: 0x8c
    address temp 3: 0x8d
    address temp 4: 0x8e
    address temp 5: 0x8f

## Sensors

- CPU:
    temperature: 0x68
- GPU:
    temperature: 0x80
- fan 1 (CPU) speed:
    address: 0x71
    value: is a percentage between 0x0-0x96
- fan 2 (GPU) speed:
    address: 0x89
    value: is a percentage between 0x0-0x96

## Notes
- Ignore for now, they change constantly: 46,47,48,4a,4b,c9,cb,68,9e,f4,dd

I have noticed that some addresses are different from the open PR and the values found by @shadowcomer, how can we confirm the ones that are correct?

glpnk commented 10 months ago

@gil0mendes @shadowcomer Thanks for your contribution and documenting extra currently unsupported features. Follow this guide to install version for your laptops.

Fixed:

Please check next values:

@teackot I think the rt_fan_speed_base_min and rt_fan_speed_base_max must be 0x00 and 0x96 accordingly because:

  • fan 1 (CPU) speed: address: 0x71 value: is a percentage between 0x0-0x96

But now values will be mapped from 0-150% to 0-100%

static ssize_t cpu_realtime_fan_speed_show(struct device *device,
                       struct device_attribute *attr,
                       char *buf)
{
    u8 rdata;
    int result;

    result = ec_read(conf.cpu.rt_fan_speed_address, &rdata);
    if (result < 0)
        return result;

    if ((rdata < conf.cpu.rt_fan_speed_base_min ||
        rdata > conf.cpu.rt_fan_speed_base_max))
        return -EINVAL;

    return sysfs_emit(buf, "%i\n",
                  100 * (rdata - conf.cpu.rt_fan_speed_base_min) /
                  (conf.cpu.rt_fan_speed_base_max -
                   conf.cpu.rt_fan_speed_base_min));
}

Source

gil0mendes commented 10 months ago

Ok, I got some time to install a temporary Ubuntu; seems like everything it's ok, I just have a doubt on a value, I have marked that with a !:

# test report

- webcam
    physical button off: OK
    physical button on: OK
    button off: OK
    button on: OK
- webcam_block
    block on: OK
    block off: OK
- fn_key
    left: OK
    right: OK
- win_key
    left: OK
    right: OK
- battery_mode
    max: OK
    medium: OK
    min: OK
- cooler_boost
    on: OK
    off: OK
- available_shift_modes
    read: OK (eco comfort turbo)
- shift_mode
    eco: OK
    comfort: OK
    turbo: OK
- available_fan_modes
    read: OK (auto silent advanced)
- fan_mode
    auto: OK
    silent: OK
    advanced: OK
- cpu/realtime_temperature
    read: OK
- cpu/realtime_fan_speed
    read: OK
- cpu/basic_fan_speed
    read: ! always returns 0
- gpu/realtime_fan_speed
    read: OK
- gpu/realtime_temperature
    read: OK
- .../BAT1/charge_controll_start_threshold
    read: OK (70)
- .../BAT1/charge_controll_end_threshold
    read: OK (80)
- .../leds/platform::mute/brightness
    on: OK
    off: OK
- .../leds/platform::micmute/brightness
    on: OK
    off: OK
- .../leds/msiacpi::kbd_backlight/brightness
    off: OK
    on: OK
    half: OK
    full: OK
glpnk commented 10 months ago

@gil0mendes Thanks for your report

  • cpu/basic_fan_speed read: ! always returns 0

It's because it unsupported or undocumented, and not ignored in SysFS. I don't know how it look like and it supported in few models

shadowcomer commented 8 months ago

Hi! Sorry I haven't responded in a while... there's always something else getting in the way. I've finally found some time to dedicate to this, so here are my findings of testing the current version on main (c39fe61), which contains the merge with the changes from @glpnk 's repo.

Linux Setup.

A summary of the setup I'm using. I wish I had the skills to do this on NixOS or GuixSD so I could simply share the exact configuration. If you need more information, I can query/check.

Setup:

  1. Arch-linux: 6.5.9-arch2-1 #1 SMP PREEMPT_DYNAMIC Thu, 26 Oct 2023 00:52:20 +0000 x86_64 GNU/Linux.
  2. Gnome DE, and gnome-extra: https://archlinux.org/groups/x86_64/gnome/, https://archlinux.org/groups/x86_64/gnome-extra/
  3. Power management with TLP (see 'Notes for before the tests'): https://wiki.archlinux.org/title/TLP
  4. NVIDIA propietary drivers.
  5. Sensor data 'lm_sensors': https://wiki.archlinux.org/title/Lm_sensors

Notes for before the tests.

The following might be a bunch of unrelated/useless information, but on the off-chance that they hint towards something important/fixable, I'm going to share it here:

  1. I had previously detected some instability/crashes while on windows. The instability was caused by the use of RWEverything. Screen flickering/restarting, and blue screens would only occur when using RWEverything.
  2. I had detected some "ghost" changest othe brightness of the screen. This was caused by a very sensitive auto-adaptive brightness setting. Covering the sensors on the laptop reliably changed the brightness, and disabling the option correctly made the behavior disappear.
  3. A basic clean installation (using the 'archinstall' wizard) has issues with the touchpad. After some random short amount of time, the touchpad would stop working, and would temporarily come back by opening a program. I found that the touchpad is Elantech hardware, which historically seems to have problems on Linux. After some troubleshooting, I found a thread where this issue is discussed, and user 'ozgr' describes using the 'tlp' package to temporarily solve it on their end. After installing the 'tlp' package, the issue seems to only happen when the laptop is NOT running on AC, or is NOT in the 'ac' profile. I suspect this is a power management/saving issue, and the touchpad is being 'disabled' to save battery. Eventually I'd like to fix this, but right now I wouldn't know how to approach this problem.
  4. As of kernel 6.5.9-arch2-1, it seems that at least the fans are following a sensible curve, in contrast to before when they were not being used at all. I'm very impressed by their effectiveness, actually; still relatively quiet under heavy load, while the laptop does not burn unless hand is directly covering the vent.

Tests.

Function keys.

  1. Quick launch fn keys: works.
  2. Mute sound: works.
  3. Speaker down: works.
  4. Speaker up: works.
  5. Disable Touchpad: works.
  6. Mute Microphone: works.
  7. Enable Camera: works.
  8. Switch User Scenario: I'm not sure what I would need in order to test this. Guidance appreciated.
  9. Switch Keyboard Backlight: works.
  10. Brightness Down: works.
  11. Brightness Up: works.

Other keys.

  1. Camera switch: works.
  2. Power plug: works.

Features.

I'm not sure how to test these, because they were modified from within the Windows MSI Center. I don't know of any place where Gnome or anything else detects and exposes these features, and I don't know if that's something that this driver is supposed to be doing yet.

  1. I've been looking for an option to swap the windows and fn keys, but I can only find different combinations of alt, ctrl, super, hyper, meta, windows, and menu. None seem to swap the fn and win keys.

Sensors.

The 'lm_sensors' package detects the following sensors:

From 'sensors':

iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +48.0°C  

BAT1-acpi-0
Adapter: ACPI interface
in0:          16.95 V  
curr1:         0.00 A  

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +44.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +39.0°C  (high = +100.0°C, crit = +100.0°C)
Core 4:        +39.0°C  (high = +100.0°C, crit = +100.0°C)
Core 8:        +37.0°C  (high = +100.0°C, crit = +100.0°C)
Core 12:       +40.0°C  (high = +100.0°C, crit = +100.0°C)
Core 16:       +38.0°C  (high = +100.0°C, crit = +100.0°C)
Core 20:       +39.0°C  (high = +100.0°C, crit = +100.0°C)
Core 24:       +43.0°C  (high = +100.0°C, crit = +100.0°C)
Core 25:       +43.0°C  (high = +100.0°C, crit = +100.0°C)
Core 26:       +44.0°C  (high = +100.0°C, crit = +100.0°C)
Core 27:       +44.0°C  (high = +100.0°C, crit = +100.0°C)
Core 28:       +44.0°C  (high = +100.0°C, crit = +100.0°C)
Core 29:       +45.0°C  (high = +100.0°C, crit = +100.0°C)
Core 30:       +44.0°C  (high = +100.0°C, crit = +100.0°C)
Core 31:       +44.0°C  (high = +100.0°C, crit = +100.0°C)

nvme-pci-e100
Adapter: PCI adapter
Composite:    +47.9°C  (low  =  -0.1°C, high = +79.8°C)
                       (crit = +81.8°C)
Sensor 1:     +47.9°C  (low  = -273.1°C, high = +65261.8°C)

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +47.0°C  (crit = +100.0°C)

From 'nvidia-smi':

Sun Oct 29 11:49:49 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.113.01             Driver Version: 535.113.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 4050 ...    Off | 00000000:01:00.0 Off |                  N/A |
| N/A   39C    P8               2W /  35W |      9MiB /  6141MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      1689      G   /usr/lib/Xorg                                 4MiB |
+---------------------------------------------------------------------------------------+

I believe the kernel should be exposing relevant sensors through /sys/. How can I find those that are relevant, or which ones should I be looking at?

Notes.

The following are notes that I've taken while performing the tests, and which might contain important details for troubleshooting.

  1. Loading the msi-ec kernel module for the first time broke the touchpad: 1 finger touch would only be recognized when using two fingers, and both left and right clicks were registered as a left-click. Unloading the kernel module did not fix the issue. Strangely, rebooting made the touchpad work again, and loading the msi-ec kernel module did not break the touchpad.
  2. Attached is the output of 'dmesg'. I've identified some messages that I deem strange and might be important, but I'm definitely not well trained to identify which of the log messages could be important, so I might have missed or misjudged them:
    1. ACPI: battery: [Firmware Bug]: (dis)charge rate invalid.
    2. Pressing the 'Fn' key generates Unknown key pressed and Unknown key released messages. This might be more related to gnome's support of the 'Fn' key.
    3. A bunch of segfaults, "likely" on different CPU cores. Maybe more of a Gnome issue.
    4. ACPI Warning: Time parameter 250 us > 100 us violating ACPI spec, please fix the firmware. (20230331/exsystem-141). Again power related, so there's something going on there.
  3. Attached is the output of lsmod. There might be clues as to what is available and what is missing for things to work.

Conclusion.

The basic keys seem to be working well, but I haven't found a way to test the feature set and would appreciate some guidance.

From when we started 2 months ago until now, at least the laptop is functional, which is already a big step, so thank you very much to everyone involved: you're the best!

Attachments.

dmesg.log lsmod.log