Giter Site home page Giter Site logo

msi-ec's Introduction

Embedded Controller for MSI laptops

Disclaimer

This driver might not work on other laptops produced by MSI. Use it at your own risk, we are not responsible for any damage suffered.

Also, and until future enhancements, no DMI data is used to identify your laptop model. In the meantime, check the msi-ec.c file before using.

Supported devices

Check if your device is supported before attempting to install and use the driver. The list of supported devices can be found here.

Installation

From GitHub

Prerequisities:

  1. Install the following packages using the terminal:
    • For Debian: sudo apt install build-essential linux-headers-amd64
    • For Ubuntu: sudo apt install build-essential linux-headers-generic
    • For Fedora: sudo dnf install kernel-devel
    • For Arch: sudo pacman -S --needed base-devel linux-headers
  2. Clone this repository and cd to it: git clone https://github.com/BeardOverflow/msi-ec && cd msi-ec
  3. (Linux < 6.2 only, verify with uname -r): make older-kernel-patch
  4. Choose one of the following installation methods

(Recommended) Installation using DKMS:

  1. Verify that dkms is available: which dkms
  2. Install the msi-ec kernel module: sudo make dkms-install
  3. (Optional) To uninstall: sudo make dkms-uninstall

(OR) Classic installation (without DKMS):

  1. Build the driver: make
  2. Install the msi-ec kernel module: sudo make install
  3. (Optional) To uninstall: sudo make uninstall

From AUR (Arch Linux)

  1. Install any AUR helper (yay for example)
  2. Run yay -S msi-ec-git

Current Support in the Kernel

Features already merged in kernel 6.4 and up:

  • Battery threshols

Still not merged:

  • Enable/Disable webcam
  • Switch Function key and Windows Key positions
  • Battery mode (min, medium, max)
  • Enable/Disable Cooler boost
  • Power shift modes (eco, confort, sport, turbo)
  • Enable/Disable Super battery
  • Fan modes (auto, silent, basic, advanced)
  • Cpu/Gpu Temperatures
  • Cpu/Gpu Fan speeds

Usage

This driver exports a few files in its own platform device, msi-ec, and is available to userspace under:

  • /sys/devices/platform/msi-ec/webcam

    • Description: This entry allows enabling the integrated webcam (as if it was done by a keyboard button).
    • Access: Read, Write
    • Valid values:
      • on: integrated webcam is enabled
      • off: integrated webcam is disabled
  • /sys/devices/platform/msi-ec/webcam_block

    • Description: This entry allows blocking the integrated webcam. Being blocked by this entry, webcam can't be enabled by a keyboard button or by writing into the webcam file.
    • Access: Read, Write
    • Valid values:
      • on: integrated webcam is blocked
      • off: integrated webcam is not blocked
  • /sys/devices/platform/msi-ec/fn_key

    • Description: This entry allows switching the position between the function key and the windows key.
    • Access: Read, Write
    • Valid values:
      • left: function key goes to the left, windows key goes to the right
      • right: function key goes to the right, windows key goes to the left
  • /sys/devices/platform/msi-ec/win_key

    • Description: This entry allows changing the position for the function key.
    • Access: Read, Write
    • Valid values:
      • left: windows key goes to the left, function key goes to the right
      • right: windows key goes to the right, function key goes to the left
  • /sys/devices/platform/msi-ec/battery_mode

    • Description: This entry allows changing the battery mode for health purposes.
    • Access: Read, Write
    • Valid values:
      • max: best for mobility. Charge the battery to 100% all the time
      • medium: balanced. Charge the battery when under 70%, stop at 80%
      • min: best for battery. Charge the battery when under 50%, stop at 60%
  • /sys/devices/platform/msi-ec/cooler_boost

    • Description: This entry allows enabling the cooler boost function. It provides powerful cooling capability by boosting the airflow.
    • Access: Read, Write
    • Valid values:
      • on: cooler boost function is enabled
      • off: cooler boost function is disabled
  • /sys/devices/platform/msi-ec/available_shift_modes

    • Description: This entry reports all supported shift modes.
    • Access: Read
    • Valid values: Newline separated list of strings.
  • /sys/devices/platform/msi-ec/shift_mode

    • Description: This entry allows switching the shift mode. It provides a set of profiles for gaining CPU & GPU overclock/underclock.
    • Access: Read, Write
    • Valid values:
      • unspecified (read-only)
      • Values reported by /sys/devices/platform/msi-ec/available_shift_modes. Some of the possible values:
        • eco: low clock frequency and voltage for the CPU & GPU, aka power saving mode
        • comfort: dynamic clock frequency and voltage for the CPU & GPU, aka power balanced mode
        • sport: full clock frequency and voltage for the CPU & GPU, aka default desktop mode
        • turbo: over-voltage and over-clock for the CPU & GPU, aka overclocking mode
  • /sys/devices/platform/msi-ec/super_battery

    • Description: This entry allows switching the super battery function.
    • Access: Read, Write
    • Valid values:
      • on: super battery function is enabled
      • off: super battery function is disabled
  • /sys/devices/platform/msi-ec/available_fan_modes

    • Description: This entry reports all supported fan modes.
    • Access: Read
    • Valid values: Newline separated list of strings.
  • /sys/devices/platform/msi-ec/fan_mode

    • Description: This entry allows switching the fan mode. It provides a set of profiles for adjusting the fan speed under specific criteria.
    • Access: Read, Write
    • Valid values:
      • Values reported by /sys/devices/platform/msi-ec/available_fan_modes. Some of the possible values:
        • auto: fan speed adjusts automatically
        • silent: fan is disabled
        • basic: fixed 1-level fan speed for CPU/GPU (percent)
        • advanced: fixed 6-levels fan speed for CPU/GPU (percent)
  • /sys/devices/platform/msi-ec/fw_version

    • Description: This entry reports the firmware version of the motherboard.
    • Access: Read
    • Valid values: Represented as string
  • /sys/devices/platform/msi-ec/fw_release_date

    • Description: This entry reports the firmware release date of the motherboard.
    • Access: Read
    • Valid values: Represented as string
  • /sys/devices/platform/msi-ec/cpu/realtime_temperature

    • Description: This entry reports the current cpu temperature.
    • Access: Read
    • Valid values: 0 - 100 (celsius scale)
  • /sys/devices/platform/msi-ec/cpu/realtime_fan_speed

    • Description: This entry reports the current cpu fan speed.
    • Access: Read
    • Valid values: 0 - 100 (percent)
  • /sys/devices/platform/msi-ec/cpu/basic_fan_speed

    • Description: This entry allows changing the cpu fan speed.
    • Access: Read, Write
    • Valid values: 0 - 100 (percent)
  • /sys/devices/platform/msi-ec/gpu/realtime_temperature

    • Description: This entry reports the current gpu temperature.
    • Access: Read
    • Valid values: 0 - 100 (celsius scale)
  • /sys/devices/platform/msi-ec/gpu/realtime_fan_speed

    • Description: This entry reports the current gpu fan speed.
    • Access: Read
    • Valid values: 0 - 100 (percent)

In addition to these platform device attributes the driver registers itself in the Linux power_supply subsystem (Documentation/ABI/testing/sysfs-class-power) and is available to userspace under:

  • /sys/class/power_supply/<supply_name>/charge_control_start_threshold

    • Description: Represents a battery percentage level, below which charging will begin.
    • Access: Read, Write
    • Valid values: 0 - 100 (percent)
      • 50: when min battery mode is configured
      • 70: when medium battery mode is configured
      • 90: when max battery mode is configured
  • /sys/class/power_supply/<supply_name>/charge_control_end_threshold

    • Description: Represents a battery percentage level, above which charging will stop.
    • Access: Read, Write
    • Valid values: 0 - 100 (percent)
      • 60: when min battery mode is configured
      • 80: when medium battery mode is configured
      • 100: when max battery mode is configured

Led subsystem allows us to control the leds on the laptop including the keyboard backlight

  • /sys/class/leds/platform::<led_name>/brightness

    • Description: sets the current state of the led.
    • Access: Read, Write
    • Valid values: 0 - 1
      • 0: Led off
      • 1: Led on
  • /sys/class/leds/msiacpi::kbd_backlight/brightness

    • Description: sets the current state of keyboard backlight.
    • Access: Read, Write
    • Valid values: 0 - 3
      • 0: Off
      • 1: On
      • 2: Half
      • 3: Full

Debug mode

You can use module parameters to get direct read-write access to the EC or force-load a configuration for a specific firmware.

Be very careful, since writing into the unknown addresses of the EC memory may be dangerous! If you did something wrong, please, reset the EC using the reset button on the bottom of your laptop.

debug, bool

Set this parameter to true to enable debug attributes, located at /sys/devices/platform/msi-ec/debug/, even if your EC is not supported yet. Normal attributes will still be accessible if your firmware is supported.

You can use make load-debug command to load the module in the debug mode after building it from source.

name permissions description
fw_version RO returns your EC firmware version
ec_dump RO returns an EC memory dump in the form of a table
ec_get RW receives an EC memory address in the hexadecimal format on write; returns a value stored in the EC memory at this address on read
ec_set WO receives an address-value pair in the following format: aa=vv, where aa and vv are address and value in the hexadecimal format; then writes the value into the EC memory

firmware, string

Set this parameter to a supported EC firmware version to use its configuration and test if it is compatible with your EC. Please verify that the attributes return the correct data before attempting to write into them!

Contribute

Eager to support the project? Your help is always welcome to keep the project alive and going!

msi-ec's People

Contributors

beardoverflow avatar catemiko avatar cpiber avatar giga-bytes-dev avatar glpnk avatar jastisriradheshyam avatar jiogo18 avatar lucapatarca avatar mutchiko avatar perseusdg avatar peterwolf4 avatar quaresmajose avatar rottenpants466 avatar sainak avatar smalltheif avatar steelt1 avatar teackot avatar tgodiamond 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

msi-ec's Issues

Help porting on MSI Bravo 17 A4DDR

With the general announcement, I was hoping to be able to manage the battery mode. Reading the doc and the code I realize it only works with a given PC and a given ec firmware version.

Can we have a kind of porting manual?

Add support for MSI Summit E13 Flip Evo (A12MT)

Laptop model

Summit E13FlipEvo A12MT

EC firmware version

13P3EMS1.107

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 0c 0a 0b
0x3_ | 07 03 00 0d 01 00 50 81 2b 11 28 3c b8 01 80 00
0x4_ | 30 11 62 00 f4 0f f6 00 a0 0f 51 42 04 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 34 00 37 3e 44 4a 50 5b
0x7_ | 64 37 00 37 41 50 5f 78 78 00 08 03 03 03 03 03
0x8_ | 00 00 37 3e 44 4a 50 5b 64 37 00 37 41 50 5f 78
0x9_ | 78 00 08 03 03 03 03 03 02 0f 7d 02 0f 7d 35 00
0xa_ | 31 33 50 33 45 4d 53 31 2e 31 30 37 30 36 30 38
0xb_ | 32 30 32 32 30 39 3a 31 38 3a 34 33 00 00 00 08
0xc_ | 00 00 02 33 00 00 00 00 00 8d 00 8e 00 00 00 00
0xd_ | 00 00 c1 80 0d 00 05 e4 00 03 00 00 00 06 00 00
0xe_ | e2 00 00 f4 0f 01 00 81 40 04 00 00 00 79 01 00
0xf_ | 00 00 70 00 2d 3b 00 00 64 00 00 00 00 00 00 00

GPU

iGPU only (Intel)

Is your keyboard RGB?

No (single color)

Additional context

MControlCenter works fine, so it seems like memory locations are standard.

Port to Linux 6.2

We need to port the dirver to Linux 6.2 as battery hook API has changed. It is just a matter of adding struct acpi_battery_hook *hook argument to msi_battery_add and msi_battery_remove functions.

We also need to provide a patch for distros that still use previous versions. Maybe make patching automatic.

It is already fixed in the upstream kernel patch, so we only need to catch up with it here.

MSI GF65 Thin 10UE

Hi I just want to open this thank you for all of your efforts, including the summary at: YoyPa/isw#263 (comment)

I am not familiar with Linux kernels. I make installed your repo and it was surprisingly effortless in just a few seconds. Model: GF65 Thin 10UE

Here are my results:

 $ for f in /sys/devices/platform/msi-ec/*; do echo $f; cat $f; echo; done
/sys/devices/platform/msi-ec/battery_mode
min

/sys/devices/platform/msi-ec/cooler_boost
off

/sys/devices/platform/msi-ec/cpu
cat: /sys/devices/platform/msi-ec/cpu: Is a directory

/sys/devices/platform/msi-ec/driver
cat: /sys/devices/platform/msi-ec/driver: Is a directory

/sys/devices/platform/msi-ec/driver_override
(null)

/sys/devices/platform/msi-ec/fan_mode
auto

/sys/devices/platform/msi-ec/fn_key
unknown (40)

/sys/devices/platform/msi-ec/fw_release_date
2020/12/15 16:44:32

/sys/devices/platform/msi-ec/fw_version
16W2EMS1.101

/sys/devices/platform/msi-ec/gpu
cat: /sys/devices/platform/msi-ec/gpu: Is a directory

/sys/devices/platform/msi-ec/leds
cat: /sys/devices/platform/msi-ec/leds: Is a directory

/sys/devices/platform/msi-ec/modalias
platform:msi-ec

/sys/devices/platform/msi-ec/power
cat: /sys/devices/platform/msi-ec/power: Is a directory

/sys/devices/platform/msi-ec/shift_mode
off

/sys/devices/platform/msi-ec/subsystem
cat: /sys/devices/platform/msi-ec/subsystem: Is a directory

/sys/devices/platform/msi-ec/uevent
DRIVER=msi-ec
MODALIAS=platform:msi-ec

/sys/devices/platform/msi-ec/webcam
unknown (9)

/sys/devices/platform/msi-ec/win_key
unknown (40)

I have not dare writing to them yet. Again I have a bit of experience with Linux, but to double check: If I want to set a setting do I just "write" to the file (echo > ... or using a Python script), right?

Anything else I can help?

MSI Summit E16 Flip (A12UCT model)

Hi, i was tying to change the values off of the contants.h file with the correct ones for my laptop. I've been trying to use the following values from this file: https://github.com/dmitry-s93/MControlCenter/blob/main/src/operate.cpp since the developer has the same laptop as mine and everything works in the app.

The problem is that there are some lines in contants.h that differ from operate.cpp in MControlCenter. For example:

In contants.h these are some of the lines relating to the battery:

#define MSI_EC_BATTERY_MODE_ADDRESS 0xef
#define MSI_EC_BATTERY_MODE_MAX_CHARGE 0xe4
#define MSI_EC_BATTERY_MODE_MEDIUM_CHARGE 0xd0
#define MSI_EC_BATTERY_MODE_MIN_CHARGE 0xbc
#define MSI_EC_CHARGE_CONTROL_ADDRESS 0xef
#define MSI_EC_CHARGE_CONTROL_OFFSET_START 0x8a
#define MSI_EC_CHARGE_CONTROL_OFFSET_END 0x80
#define MSI_EC_CHARGE_CONTROL_RANGE_MIN 0x8a
#define MSI_EC_CHARGE_CONTROL_RANGE_MAX 0xe4

In operate.cpp from MControlCenter these relate to the battery as well:

const int batteryChargeAddress = 0x42;
int batteryThresholdAddress;
const int batteryThresholdAddress_0xEF = 0xEF;
const int batteryThresholdAddress_0xD7 = 0xD7;

const int batteryChargingStatusAddress = 0x31;
const int batteryNotCharging = 0x01;
const int batteryCharging = 0x03;
const int batteryDischarging = 0x05;
const int batteryFullyCharged = 0x09;
const int batteryFullyCharged_noPower = 0x0D;

Since there are differences in the amount of lines and different names i don't know how to correctly add the proper values in the contants.h file.

Sorry if i didn't explained the problem correctly

Thank you


Also this is the output of each entry:

for f in /sys/devices/platform/msi-ec/*; do echo $f; cat $f; echo; done
/sys/devices/platform/msi-ec/battery_mode
unknown (0)

/sys/devices/platform/msi-ec/cooler_boost
off

/sys/devices/platform/msi-ec/cpu
cat: /sys/devices/platform/msi-ec/cpu: É pasta

/sys/devices/platform/msi-ec/driver
cat: /sys/devices/platform/msi-ec/driver: É pasta

/sys/devices/platform/msi-ec/driver_override
(null)

/sys/devices/platform/msi-ec/fan_mode
unknown (42)

/sys/devices/platform/msi-ec/fn_key
unknown (8)

/sys/devices/platform/msi-ec/fw_release_date
2022/06/29 09:52:28

/sys/devices/platform/msi-ec/fw_version
1592EMS1.111

/sys/devices/platform/msi-ec/gpu
cat: /sys/devices/platform/msi-ec/gpu: É pasta

/sys/devices/platform/msi-ec/leds
cat: /sys/devices/platform/msi-ec/leds: É pasta

/sys/devices/platform/msi-ec/modalias
platform:msi-ec

/sys/devices/platform/msi-ec/power
cat: /sys/devices/platform/msi-ec/power: É pasta

/sys/devices/platform/msi-ec/shift_mode
unknown (112)

/sys/devices/platform/msi-ec/subsystem
cat: /sys/devices/platform/msi-ec/subsystem: É pasta

/sys/devices/platform/msi-ec/uevent
DRIVER=msi-ec
MODALIAS=platform:msi-ec

/sys/devices/platform/msi-ec/webcam
unknown (9)

/sys/devices/platform/msi-ec/win_key
unknown (8)

Support for MSI Alpha 15 B5EEK

I tried installing this driver on my MSI Alpha 15 B5EEK but it gives an error "Your firmware version is not supported!"
How can I help in adding support for my device?

Device: MSI Alpha 15 B5EEK
Distro: Arch Linux
Kernel: 6.1.12-zen
BIOS Version: E158LAMS.108
EC Version: 158LEMS1.103

dmidecode ouput -
dmidecode.txt

Titan GT77 HX

I've got a Titan GT77 HX 13VH-045 that I like to be supported, but it's not on the list of the tested devices.

Can I help somehow? E.g. read out some data? (Dual boot with Windows is available)? Is there a how to / manual somewhere of what I should follow?

Firmware request for MSI Cyborg 15 A12VF

Laptop model

MSI Cyborg 15 A12VF

EC firmware version

15K1IMS1.110

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 00 0b 1b
0x3_ | 03 09 00 0d 00 00 50 81 d2 11 88 2c c8 01 e0 00
0x4_ | 00 00 60 00 0d 11 00 00 56 10 e2 31 10 0c 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 32 00 33 3a 41 49 4e 53
0x7_ | 64 28 26 28 2d 36 3c 44 4e 58 06 06 06 07 04 04
0x8_ | 2b 00 2b 30 35 3a 41 46 64 28 26 28 2d 36 3c 44
0x9_ | 4e 64 03 03 03 03 05 03 06 05 00 06 0f 00 00 00
0xa_ | 31 35 4b 31 49 4d 53 31 2e 31 31 30 30 38 31 30
0xb_ | 32 30 32 33 31 31 3a 31 30 3a 30 37 00 00 00 08
0xc_ | 00 00 06 22 00 00 00 00 00 cd 00 00 00 00 00 00
0xd_ | 00 00 c1 83 0d 00 04 80 00 05 00 00 00 06 00 00
0xe_ | e2 00 00 0d 11 00 00 40 01 00 00 00 00 d1 00 00
0xf_ | 00 00 70 00 2b 64 00 2b 64 00 00 00 00 01 01 00

GPU

Nvidia

Is your keyboard RGB?

No (single color)

Additional context

No response

Build failing

Build is failing showing error -Werror=incompatible-pointer-types

` CC [M] /home/user/.cache/yay/msi-ec-git/src/msi-ec/msi-ec.o

/home/user/.cache/yay/msi-ec-git/src/msi-ec/msi-ec.c:1251:24: error: initialization of ‘int (*)(struct power_supply )’ from incompatible pointer type ‘int ()(struct power_supply *, struct acpi_battery_hook *)’ [-Werror=incompatible-pointer-types]

1251 | .add_battery = msi_battery_add,
| ^~~~~~~~~~~~~~~

/home/user/.cache/yay/msi-ec-git/src/msi-ec/msi-ec.c:1251:24: note: (near initialization for ‘battery_hook.add_battery’)

/home/user/.cache/yay/msi-ec-git/src/msi-ec/msi-ec.c:1252:27: error: initialization of ‘int (*)(struct power_supply )’ from incompatible pointer type ‘int ()(struct power_supply *, struct acpi_battery_hook *)’ [-Werror=incompatible-pointer-types]

1252 | .remove_battery = msi_battery_remove,
| ^~~~~~~~~~~~~~~~~~

/home/user/.cache/yay/msi-ec-git/src/msi-ec/msi-ec.c:1252:27: note: (near initialization for ‘battery_hook.remove_battery’)

cc1: some warnings being treated as errors

make[2]: *** [scripts/Makefile.build:250: /home/ars/.cache/yay/msi-ec-git/src/msi-ec/msi-ec.o] Error 1

make[1]: *** [Makefile:2012: /home/ars/.cache/yay/msi-ec-git/src/msi-ec] Error 2
make: *** [Makefile:15: modules] Error 2

==> ERROR: A failure occurred in build().
Aborting...
-> error making: msi-ec-git-exit status 4
-> Failed to install the following packages. Manual intervention is required:
msi-ec-git - exit status 4
`

Assign `msi-ec` group to msi-ec files

I don't know about drivers much, so question might be nooby.
Is there any option to assign group, for example msi-ec , for all files inside /sys/devices/platform/msi-ec/ directory?

I want it because I wrote some little GUI app, and I have to run it with root privileges all the time to allow app to interact with device's files. It's not very comfortable because at least root's UI settings are different from user's ones so app becomes ugly and it also requires terminal to be constantly opened.

Charge control broken on MSI Alpha 15 B5EEK

I have an msi alpha B5EEK-070 with bios version: E158LAMS.10B and linux 6.4.
Charge control doesn't seem to work, both charge_control_start_threshold and charge_control_end_threshold report strange values and when I tried to change charge_control_end_threshold the fan started to spin very fast.

cat /sys/class/power_supply/BAT1/charge_control_start_threshold
-10
cat /sys/class/power_supply/BAT1/charge_control_end_threshold
0

Device support for Delta 15 A5EFK

Hello, I did the dump with teackot's debug branch. Cooler boost, some thermal readings and shift mode did work on some older msi_ec version last year, at least cooler boost is probably generic. The backlight is rgb (can be changed with the msi software), and always on (backlight button doesn't do anything on linux, isn't even recognised by libinput unlike other function buttons).

I'll do analysis on windows later. I'll have to check my ec and bios versions as well, but i'm pretty sure the ec at least is 15CKEMS1.108.

ec_dump.txt

Support MSI Prestige 16 Studio A13VE

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!

MSI Summit E16 Flip (A12UCT model)

Hi, linux newbie here, trying to ditch windows for good. Im wondering if my laptop is supported and how i can contribute to this repository.

Thank you for creating this, one of the things i really miss from control center is being able to limit the battery charge.

Support for GP66 Leopard 11UG

Laptop model

GP66 Leopard 11UG

EC firmware version

1543EMS1.113

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 05 1b 4b
0x3_ | 03 09 00 0d 00 00 50 81 40 10 60 3b a0 01 e0 00
0x4_ | 00 00 5b 00 9a 0d 00 00 57 0c 13 3f e1 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 33 00 32 39 40 47 4e 55
0x7_ | 64 28 00 28 30 38 40 48 50 00 0a 08 08 08 08 08
0x8_ | 31 00 37 3c 41 46 4b 4b 62 00 00 31 3a 43 4c 55
0x9_ | 55 00 0a 07 06 06 06 06 02 16 7d 02 16 62 49 00
0xa_ | 31 35 34 33 45 4d 53 31 2e 31 31 33 30 38 31 36
0xb_ | 32 30 32 31 31 35 3a 34 36 3a 32 31 00 00 00 28
0xc_ | 00 00 06 3d 00 00 00 00 00 e5 00 00 00 00 00 00
0xd_ | 00 00 c1 83 0d 00 05 80 00 01 00 00 00 00 00 00
0xe_ | e2 00 00 9a 0d 00 00 c1 00 01 00 00 00 b8 00 64
0xf_ | 00 00 70 00 31 64 00 00 64 00 03 c0 00 01 00 00

GPU

Nvidia

Is your keyboard RGB?

Yes (multi color RGB)

Additional context

No response

build-in camera support for old (2019) MSI GF63 8RC laptop?

Dear Developers,
Tried out for this repo but got things below.
Does this mean I'm out of luck with my MSI GF63 8RC laptop?
My problems is that the build-in camera is not working with ubuntu (now 23.04, kernel 6.0).

Could do some voluntary work here if that could help...
br. Markus

mka@mkaDuranc:~/Downloads/msi-ec$ sudo make
make[1]: Entering directory '/usr/src/linux-headers-6.0.0-1006-oem'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0
  You are using:           gcc (Ubuntu 12.3.0-1ubuntu1~23.04) 12.3.0
make[1]: Leaving directory '/usr/src/linux-headers-6.0.0-1006-oem'

mka@mkaDuranc:~/Downloads/msi-ec$ sudo make install
mkdir -p /lib/modules/6.0.0-1006-oem/extra
cp msi-ec.ko /lib/modules/6.0.0-1006-oem/extra
depmod -a
echo msi-ec > /etc/modules-load.d/msi-ec.conf
modprobe -v msi-ec
insmod /lib/modules/6.0.0-1006-oem/extra/msi-ec.ko 
modprobe: ERROR: could not insert 'msi_ec': No such device
make: *** [Makefile:38: install] Error 1

MSI Modern 15 B12M is not supported?

I have tried msi-ec kernel module for my new laptop MSI Modern 15 B12M with E15H1IMS.10D firmware.
After build, installation msi-ec from aur on archlinux with 6.3.9 kernel version and reboot I have got errors in journal
...
msi_ec: Your firmware version is not supported
...
Failed to insert module 'msi_ec': Operation not supported
...
So on my system msi-ec driver does not work.
Can You add support for MSI Modern 15 B12M laptop to driver?

New patches to msi-ec in the kernel

Laptop model

No response

EC firmware version

No response

Description

Hi @teackot @jwrdegoede

It seems that the msi-ec is being updated in the kernel. More specifically adding Cooler Boost feature:

https://www.phoronix.com/news/MSI-EC-Linux-Cooler-Boost
https://lore.kernel.org/platform-driver-x86/[email protected]/#r

Will that conflict in some way with this repo?

Edit: sorry but I didn't want to label this as a Bug :| just want to make people aware of this project and those who want to contribute directly to the kernel. In other words, bringing the people together I think :)

Modern 15 A5M - modprobe error: Operation not supported

Laptop model

Modern 15 A5M

EC firmware version

No such file or directory

Description

My Laptop is not on the list of tested machines but a very similar model is

Distro: Ubuntu 22.04
Kernel: 6.2.0-33

sudo make

make[1]: Entering directory '/usr/src/linux-headers-6.2.0-33-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-11 (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
  You are using:           gcc-11 (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
  CC [M]  /home/pgalopa/development/msi-ec/msi-ec.o
  MODPOST /home/pgalopa/development/msi-ec/Module.symvers
  CC [M]  /home/pgalopa/development/msi-ec/msi-ec.mod.o
  LD [M]  /home/pgalopa/development/msi-ec/msi-ec.ko
  BTF [M] /home/pgalopa/development/msi-ec/msi-ec.ko
Skipping BTF generation for /home/pgalopa/development/msi-ec/msi-ec.ko due to unavailability of vmlinux
make[1]: Leaving directory '/usr/src/linux-headers-6.2.0-33-generic'
sudo make install

mkdir -p /lib/modules/6.2.0-33-generic/extra
cp msi-ec.ko /lib/modules/6.2.0-33-generic/extra
depmod -a
echo msi-ec > /etc/modules-load.d/msi-ec.conf
modprobe -v msi-ec
insmod /lib/modules/6.2.0-33-generic/extra/msi-ec.ko 
modprobe: ERROR: could not insert 'msi_ec': Key was rejected by service
make: *** [Makefile:38: install] Error 1

So I've added -vvv to modprobe command at the makefile and resulted in:

modprobe: ERROR: could not insert 'MODULE': Operation not permitted

A little google-fu and found this article and executed this as root:

echo 1 > /proc/sys/kernel/sysrq
echo x > /proc/sysrq-trigger

Which scares me AF as I don't have any idea of what I'm doing... but as we say in spain 'hemos venido a jugar, no?' (We've come to play, right?) So I repeat the process:

sudo make

make[1]: Entering directory '/usr/src/linux-headers-6.2.0-34-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-11 (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
  You are using:           gcc-11 (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
  CC [M]  /home/pgalopa/development/msi-ec/msi-ec.o
  MODPOST /home/pgalopa/development/msi-ec/Module.symvers
  CC [M]  /home/pgalopa/development/msi-ec/msi-ec.mod.o
  LD [M]  /home/pgalopa/development/msi-ec/msi-ec.ko
  BTF [M] /home/pgalopa/development/msi-ec/msi-ec.ko
Skipping BTF generation for /home/pgalopa/development/msi-ec/msi-ec.ko due to unavailability of vmlinux
make[1]: Leaving directory '/usr/src/linux-headers-6.2.0-34-generic'
sudo make install

mkdir -p /lib/modules/6.2.0-34-generic/extra
cp msi-ec.ko /lib/modules/6.2.0-34-generic/extra
depmod -a
echo msi-ec > /etc/modules-load.d/msi-ec.conf
modprobe -v msi-ec
insmod /lib/modules/6.2.0-34-generic/extra/msi-ec.ko 
modprobe: ERROR: could not insert 'msi_ec': Operation not supported
make: *** [Makefile:38: install] Error 1
$ dmesg | grep modprobe

[    2.271431] systemd[1]: Created slice Slice /system/modprobe.
[    2.301049] systemd[1]: [email protected]: Deactivated successfully.
[    2.301816] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[    2.302461] systemd[1]: [email protected]: Deactivated successfully.
[    2.319332] systemd[1]: [email protected]: Deactivated successfully.
[    3.135184] audit: type=1400 audit(1696521183.899:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=526 comm="apparmor_parser"
[    3.135192] audit: type=1400 audit(1696521183.899:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=526 comm="apparmor_parser"

Any other troubleshoot steps or is it clear where is the problem? Thanks!! (This repo is an absolut blessing)

Support for Katana GF66 11UG

Actually msi_ec prints in dmesg:
msi_ec: Your firmware version is not supported!

I prepared some EC dumps and attached files:

# sudo od -t x1 /sys/kernel/debug/ec/ec0/io
0000000 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040 00 00 00 00 00 00 00 00 0a 05 00 00 00 04 1b 0b
0000060 03 09 00 0d 01 00 50 81 2b 16 28 3c 37 02 e0 00
0000100 00 00 64 00 65 15 00 00 65 15 c5 43 9b 0b 00 00
0000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000140 00 00 00 00 00 00 00 00 32 00 37 40 49 4c 52 58
0000160 64 2b 26 2b 30 36 3c 46 55 64 08 03 03 03 03 03
0000200 35 00 37 3d 43 49 4f 54 63 2b 00 2b 30 36 3c 46
0000220 55 64 08 03 03 03 03 02 06 0f 7d 06 0a 78 45 00
0000240 31 35 38 31 45 4d 53 31 2e 31 30 37 30 36 32 38
0000260 32 30 32 32 30 39 3a 30 37 3a 30 38 00 00 00 28
0000300 00 00 01 25 00 00 00 00 00 d3 00 ba 00 00 00 00
0000320 00 00 c1 83 0d 00 05 80 00 01 00 00 00 00 00 00
0000340 e2 00 00 65 15 00 00 00 00 00 00 00 00 00 00 00
0000360 00 00 70 00 00 64 00 00 64 00 00 00 00 00 00 00
0000400

# 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 0a 05 00 00 00 04 1b 0b  >................<
000030 03 09 00 0d 01 00 50 81 2b 16 28 3c 37 02 e0 00  >......P.+.(<7...<
000040 00 00 64 00 65 15 00 00 65 15 c2 43 b4 0b 00 00  >..d.e...e..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 35 00 37 40 49 4c 52 58  >........5.7@ILRX<
000070 64 2b 26 2b 30 36 3c 46 55 64 08 03 03 03 03 03  >d+&+06<FUd......<
000080 38 00 37 3d 43 49 4f 54 63 2b 00 2b 30 36 3c 46  >8.7=CIOTc+.+06<F<
000090 55 64 08 03 03 03 03 02 06 0f 7d 06 0a 78 49 00  >Ud........}..xI.<
0000a0 31 35 38 31 45 4d 53 31 2e 31 30 37 30 36 32 38  >1581EMS1.1070628<
0000b0 32 30 32 32 30 39 3a 30 37 3a 30 38 00 00 00 28  >202209:07:08...(<
0000c0 00 00 01 25 00 00 00 00 00 a2 00 b5 00 00 00 00  >...%............<
0000d0 00 00 c1 83 0d 00 05 80 00 01 00 00 00 00 00 00  >................<
0000e0 e2 00 00 65 15 00 00 00 00 00 00 00 00 00 00 00  >...e............<
0000f0 00 00 70 00 00 64 00 00 64 00 00 00 00 00 00 00  >..p..d..d.......<
000100

Profile dump 
Value       set @ address        Fan mode
0x0(0)      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)

ec.txt

# cat /sys/kernel/debug/ec/ec0/io > ec0.bin
ec0.bin.txt
# cat /sys/kernel/debug/ec/ec0/gpe > gpe0.bin
gpe0.bin.txt

Arch install cp to wrong folder in Makefile

I am using Garuda Linux (Arch based) on a MSI GL65 9SE
I had an error when running make install where it could not find the msi-ec.ko at line 15.

I forgot to copy the error for reporting.

I changed the Makefile line 12 to

cp msi-ec.ko /lib/modules/$(shell uname -r)/

All is working fantastic! I haven't checked all of the stats but the fans instantaneously changed.

Support MSI P75 CREATOR 9SG

Laptop model

MSI P75 CREATOR 9SG

EC firmware version

17G1EMS2.106

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 00 00 00 b0 e0 06 4b 0f
0x3_ | 03 09 01 0d 50 0a 05 00 a0 14 60 3b 10 02 e0 00
0x4_ | 00 00 64 00 8c 0c 00 00 8c 0c b8 3e 1d 0c 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 37 40 46 4c 52 58
0x7_ | 64 32 2d 32 3c 46 46 46 4b 00 08 03 03 03 03 03
0x8_ | 35 00 37 3d 41 47 4d 57 5e 32 00 32 3c 46 46 50
0x9_ | 6e 00 08 03 03 03 03 05 02 00 7d 02 00 64 00 00
0xa_ | 31 37 47 31 45 4d 53 32 2e 31 30 36 30 37 30 35
0xb_ | 32 30 31 39 30 39 3a 33 35 3a 33 35 8c 0c 40 10
0xc_ | 00 07 2e 00 00 9e c0 00 00 92 00 89 00 86 00 00
0xd_ | 00 00 00 00 70 80 00 00 00 00 00 80 00 00 00 00
0xe_ | e2 02 00 33 10 00 00 00 00 00 00 00 00 b8 00 e4
0xf_ | 00 00 80 80 0c 00 05 00 00 00 32 00 00 00 00 00

GPU

Nvidia

Is your keyboard RGB?

No (single color)

Additional context

I would have loved to to that myself but it seems that the wiki is incomplete.
What I've identified so far :

- Webcam toggle (fn + F6)
  - Address: 0x2E
  - Values: 0x4B (on), 0x49 (off)
- Keyboard backlight (fn + NUM-/NUM+)
  - Address: 0xF3
  - Values: From 0x80 (off) to 0x83 (full)
- Charger status (plug/unplug)
  - Addresses: 0x30, 0x31
  - Values: 0x03 0x09 (plugged), 0x02 0x0D (unplugged)
  - Note: At 0xC6 value 0xC0 is displayed plugged in but with diff in time. 0x40 unplugged.

Unable to insert msI_ec during the install process

Hi

I added support for my laptop (gp66-11ug) through this pull request and when i try to install msi-ec without the debug mode I get the following error "Firmware version is not supported: '1543EMS1.113' " and if you check CONF12 on the pull request the exact same firmware version is mentioned . Any clue on how to solve this ?

BTW - I am on kernel 6.4.4-arch1

A few sysfs paths answer me with a unknown value

just a little feed back. Don't get me wrong this is awesome.

cat /sys/devices/platform/msi-ec/webcam
File: /sys/devices/platform/msi-ec/webcam
unknown (75)

cat /sys/devices/platform/msi-ec/fn_key
File: /sys/devices/platform/msi-ec/fn_key
unknown (0)

cat /sys/devices/platform/msi-ec/win_key
File: /sys/devices/platform/msi-ec/win_key
unknown (0)

cat /sys/devices/platform/msi-ec/battery_mode
File: /sys/devices/platform/msi-ec/battery_mode
medium

cat /sys/devices/platform/msi-ec/fan_mode
File: /sys/devices/platform/msi-ec/fan_mode
unknown (12)

Working just some information
cat /sys/devices/platform/msi-ec/fw_version
File: /sys/devices/platform/msi-ec/fw_version
16U5EMS1.100

Working just some information
cat /sys/devices/platform/msi-ec/fw_release_date
File: /sys/devices/platform/msi-ec/fw_release_date
2019/06/25 10:24:07

The rest is all working like it should. Super impressed.

Originally posted by @fawqsir in #1 (comment)

summit_e14_evo (a12m-066)

summit_e14_evo (a12m-066)

this ec fw very equals to msi_ec_conf CONF4 (same bios)??? }
But we need create new CONF8

BIOS = E14F1IMS.112
EC version (fw)? 14F1EMS1.115

charge_control:  [0xD7] values: 0xBC - optimal for battery (from 50%$ to 60), balance - 0xD0, 0xE4 - full?
webcam [0x2e]  (0x02 - green position, 0x00 - black position)
physical buttons on keyboard description:
ctrt -> fn -> winkey -> alt -> space
fn_win_swap [0xe8] values: 00 - fw, win, 10 - win, fn

cooler boost: [0x98] - same how in all confs?
shift_mode: [0xD2]
                        { SM_ECO_NAME,     0xc2 },
			{ SM_COMFORT_NAME, 0xc1 },
			{ SM_SPORT_NAME,   0xc0 },
			MSI_EC_MODE_NULL

.super_battery = {
		.address = 0xeb,
		.mask    = 0x0f,
},

.fan_mode = {
		.address = 0xd4,
		.modes = {
			{ FM_AUTO_NAME,     0x0d },
			{ FM_SILENT_NAME,   0x1d },
			{ FM_ADVANCED_NAME, 0x4d },
			MSI_EC_MODE_NULL
		},
	},

.cpu = {
		.rt_temp_address       = 0x68,
		.rt_fan_speed_address  = 0x71,
		.rt_fan_speed_base_min = 0x19,
		.rt_fan_speed_base_max = 0x37,
		.bs_fan_speed_address  = MSI_EC_ADDR_UNKNOWN,
		.bs_fan_speed_base_min = 0x00,
		.bs_fan_speed_base_max = 0x0f,
},

.gpu = {
},

.leds = {
		.micmute_led_address = MSI_EC_ADDR_UNKNOWN,
		.mute_led_address    = MSI_EC_ADDR_UNKNOWN,
		.bit                 = 1,
},
keyboard led ??
[D3] values: 80 - led disabled, 81 - low, 82, midle 83 - max len oracle, 

mute button led?
[2D] values: 0E - enabled led mute, 0C - disabled led mute

fn keyboard locker led or/and function?
[D9] values - 01 unlocked, 03 - locked
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

user scenaries menu:
super battery: 
[D2] set to C2, [D3] set to 80, [D4] set to 0D, [EB] set to 0F
The quietest system under the ambient noice:
[D2] set to C1, [D3] set to 83, [D4] set to 1D, [EB] set to 00
msi recomended balansed:
[D2] set to C1, [D3] set to 83, [D4] set to 0D, [EB] set to 00
The best system performance for multi-tasking and heavy duty
    speed of coolers:
         auto:  [D2] set to C0, [D3] set to 83, [D4] set to 0D, [EB] set to 00,  [98] to 02
         turbo boost: [D2] set to C0, [D3] set to 83, [D4] set to 0D, [EB] set to 00, [98] to 82
         

Add support for GF63 Thin 11UC

Laptop model

GF63 Thin 11UC

EC firmware version

16R6EMS1.104

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 04 09 0b
0x3_ | 03 09 00 0d 00 00 50 81 94 11 88 2c c2 01 e0 00
0x4_ | 00 00 64 00 f8 0e 00 00 f8 0e a3 30 e2 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 2f 00 37 40 49 4c 52 58
0x7_ | 64 26 26 2b 30 36 3c 46 55 64 08 03 03 03 03 03
0x8_ | 00 00 37 3d 43 49 4f 55 63 26 26 2b 30 36 3c 46
0x9_ | 55 64 08 03 03 03 03 03 06 0f 64 06 0f 64 43 00
0xa_ | 31 36 52 36 45 4d 53 31 2e 31 30 34 31 31 31 34
0xb_ | 32 30 32 31 31 35 3a 35 36 3a 33 31 00 00 00 28
0xc_ | 00 00 07 22 00 00 00 00 00 d4 00 00 00 00 00 00
0xd_ | 00 00 c0 81 0d 00 05 80 00 01 00 00 00 00 00 00
0xe_ | e2 00 00 f8 0e 00 00 40 40 00 00 00 00 83 00 02
0xf_ | 00 00 70 00 00 64 00 00 64 00 00 00 00 00 00 00

GPU

Nvidia

Is your keyboard RGB?

No (single color)

Additional context

Hi, I want to thank you for your efforts.
When i try to load the module without debug i get

[root@msi msi-ec]# make load
insmod msi-ec.ko
insmod: ERROR: could not insert module msi-ec.ko: Operation not supported
make: *** [Makefile:21: load] Error 1

The webcam key works as i can see it appear and disappear in lsusb

DMIDecode # dmidecode 3.5 Getting SMBIOS data from sysfs. SMBIOS 3.3.0 present. Table at 0x73CA6000.

Handle 0x0000, DMI type 11, 5 bytes
OEM Strings
String 1:
String 2: $BIOSE1110000100000000200
String 3:
String 4:
String 5:

Handle 0x0001, DMI type 0, 26 bytes
BIOS Information
Vendor: American Megatrends International, LLC.
Version: E16R6IMS.10E
Release Date: 09/21/2022
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 16 MB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
5.25"/360 kB floppy services are supported (int 13h)
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
CGA/mono video services are supported (int 10h)
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 1.14

Handle 0x0002, DMI type 1, 27 bytes
System Information
Manufacturer: Micro-Star International Co., Ltd.
Product Name: GF63 Thin 11UC
Version: REV:1.0
Serial Number: 9S716R612851ZM6000109
UUID: 9e6beb04-0a82-4440-9267-b52d64c307c7
Wake-up Type: Power Switch
SKU Number: 16R6.1
Family: GF

Handle 0x0003, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Micro-Star International Co., Ltd.
Product Name: MS-16R6
Version: REV:1.0
Serial Number: BSS-0123456789
Asset Tag: Default string
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: Default string
Chassis Handle: 0x0004
Type: Motherboard
Contained Object Handles: 0

Handle 0x0004, DMI type 3, 22 bytes
Chassis Information
Manufacturer: Micro-Star International Co., Ltd.
Type: Notebook
Lock: Not Present
Version: N/A
Serial Number: 22PN063323
Asset Tag: No Asset Tag
Boot-up State: Safe
Power Supply State: Safe
Thermal State: Safe
Security Status: None
OEM Information: 0x00000000
Height: Unspecified
Number Of Power Cords: 1
Contained Elements: 0
SKU Number: Default string

Handle 0x0005, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1A1
Internal Connector Type: None
External Reference Designator: PS2Mouse
External Connector Type: PS/2
Port Type: Mouse Port

Handle 0x0006, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1A1
Internal Connector Type: None
External Reference Designator: Keyboard
External Connector Type: PS/2
Port Type: Keyboard Port

Handle 0x0007, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A1
Internal Connector Type: None
External Reference Designator: TV Out
External Connector Type: Mini Centronics Type-14
Port Type: Other

Handle 0x0008, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A2A
Internal Connector Type: None
External Reference Designator: COM A
External Connector Type: DB-9 male
Port Type: Serial Port 16550A Compatible

Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2A2B
Internal Connector Type: None
External Reference Designator: Video
External Connector Type: DB-15 female
Port Type: Video Port

Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB1
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB2
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A1
Internal Connector Type: None
External Reference Designator: USB3
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9A1 - TPM HDR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9C1 - PCIE DOCKING CONN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2B3 - CPU FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0010, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6C2 - EXT HDMI
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0011, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3C1 - GMCH FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1D1 - ITP
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0013, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E2 - MDC INTPSR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0014, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E4 - MDC INTPSR
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0015, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E3 - LPC HOT DOCKING
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0016, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E1 - SCAN MATRIX
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0017, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9G1 - LPC SIDE BAND
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0018, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8F1 - UNIFIED
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x0019, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6F1 - LVDS
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x001A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2F1 - LAI FAN
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x001B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2G1 - GFX VID
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x001C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1G6 - AC JACK
Internal Connector Type: Other
External Reference Designator: Not Specified
External Connector Type: None
Port Type: Other

Handle 0x001D, DMI type 9, 17 bytes
System Slot Information
Designation: J6B2
Type: x16 PCI Express
Current Usage: In Use
Length: Long
ID: 0
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:00:01.0

Handle 0x001E, DMI type 9, 17 bytes
System Slot Information
Designation: J6B1
Type: x1 PCI Express
Current Usage: In Use
Length: Short
ID: 1
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:00:1c.3

Handle 0x001F, DMI type 9, 17 bytes
System Slot Information
Designation: J6D1
Type: x1 PCI Express
Current Usage: In Use
Length: Short
ID: 2
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:00:1c.4

Handle 0x0020, DMI type 9, 17 bytes
System Slot Information
Designation: J7B1
Type: x1 PCI Express
Current Usage: In Use
Length: Short
ID: 3
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:00:1c.5

Handle 0x0021, DMI type 9, 17 bytes
System Slot Information
Designation: J8B4
Type: x1 PCI Express
Current Usage: In Use
Length: Short
ID: 4
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Bus Address: 0000:00:1c.6

Handle 0x0022, DMI type 10, 6 bytes
On Board Device Information
Type: Video
Status: Enabled
Description: To Be Filled By O.E.M.

Handle 0x0023, DMI type 12, 5 bytes
System Configuration Options
Option 1: Default string

Handle 0x0024, DMI type 32, 20 bytes
System Boot Information
Status: No errors detected

Handle 0x0025, DMI type 34, 11 bytes
Management Device
Description: LM78-1
Type: LM78
Address: 0x00000000
Address Type: I/O Port

Handle 0x0026, DMI type 26, 22 bytes
Voltage Probe
Description: LM78A
Location: Motherboard
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown

Handle 0x0027, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6

Handle 0x0028, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0025
Component Handle: 0x0026
Threshold Handle: 0x0027

Handle 0x0029, DMI type 28, 22 bytes
Temperature Probe
Description: LM78A
Location: Motherboard
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown

Handle 0x002A, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6

Handle 0x002B, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0025
Component Handle: 0x0029
Threshold Handle: 0x002A

Handle 0x002C, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x0029
Type: Power Supply Fan
Status: OK
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Cooling Dev 1

Handle 0x002D, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6

Handle 0x002E, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0025
Component Handle: 0x002C
Threshold Handle: 0x002D

Handle 0x002F, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x0029
Type: Power Supply Fan
Status: OK
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Not Specified

Handle 0x0030, DMI type 36, 16 bytes
Management Device Threshold Data
Lower Non-critical Threshold: 1
Upper Non-critical Threshold: 2
Lower Critical Threshold: 3
Upper Critical Threshold: 4
Lower Non-recoverable Threshold: 5
Upper Non-recoverable Threshold: 6

Handle 0x0031, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0025
Component Handle: 0x002F
Threshold Handle: 0x0030

Handle 0x0032, DMI type 29, 22 bytes
Electrical Current Probe
Description: ABC
Location: Motherboard
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown

Handle 0x0033, DMI type 36, 16 bytes
Management Device Threshold Data

Handle 0x0034, DMI type 35, 11 bytes
Management Device Component
Description: Default string
Management Device Handle: 0x0025
Component Handle: 0x0032
Threshold Handle: 0x0033

Handle 0x0035, DMI type 26, 22 bytes
Voltage Probe
Description: LM78A
Location: Power Unit
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown

Handle 0x0036, DMI type 28, 22 bytes
Temperature Probe
Description: LM78A
Location: Power Unit
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown

Handle 0x0037, DMI type 27, 15 bytes
Cooling Device
Temperature Probe Handle: 0x0036
Type: Power Supply Fan
Status: OK
Cooling Unit Group: 1
OEM-specific Information: 0x00000000
Nominal Speed: Unknown Or Non-rotating
Description: Cooling Dev 1

Handle 0x0038, DMI type 29, 22 bytes
Electrical Current Probe
Description: ABC
Location: Power Unit
Status: OK
Maximum Value: Unknown
Minimum Value: Unknown
Resolution: Unknown
Tolerance: Unknown
Accuracy: Unknown
OEM-specific Information: 0x00000000
Nominal Value: Unknown

Handle 0x0039, DMI type 39, 22 bytes
System Power Supply
Power Unit Group: 1
Location: To Be Filled By O.E.M.
Name: To Be Filled By O.E.M.
Manufacturer: To Be Filled By O.E.M.
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Model Part Number: To Be Filled By O.E.M.
Revision: To Be Filled By O.E.M.
Max Power Capacity: Unknown
Status: Present, OK
Type: Switching
Input Voltage Range Switching: Auto-switch
Plugged: Yes
Hot Replaceable: No
Input Voltage Probe Handle: 0x0035
Cooling Device Handle: 0x0037
Input Current Probe Handle: 0x0038

Handle 0x003A, DMI type 44, 9 bytes
Unknown Type
Header and Data:
2C 09 3A 00 FF FF 01 01 00

Handle 0x003B, DMI type 43, 31 bytes
TPM Device
Vendor ID: INTC
Specification Version: 2.0
Firmware Revision: 600.7
Description: INTEL
Characteristics:
Family configurable via platform software support
OEM-specific Information: 0x00000000

Handle 0x003C, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 32 GB
Error Information Handle: Not Provided
Number Of Devices: 2

Handle 0x003F, DMI type 19, 31 bytes
Memory Array Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x003FFFFFFFF
Range Size: 16 GB
Physical Array Handle: 0x003C
Partition Width: 2

Handle 0x0040, DMI type 17, 92 bytes
Memory Device
Array Handle: 0x003C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: SODIMM
Set: None
Locator: Controller0-ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous
Speed: 3200 MT/s
Manufacturer: SK Hynix
Serial Number: 2669B2D5
Asset Tag: 9876543210
Part Number: HMA81GS6DJR8N-XN
Rank: 1
Configured Memory Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Memory Technology: DRAM
Memory Operating Mode Capability: Volatile memory
Firmware Version: Not Specified
Module Manufacturer ID: Bank 1, Hex 0xAD
Module Product ID: Unknown
Memory Subsystem Controller Manufacturer ID: Unknown
Memory Subsystem Controller Product ID: Unknown
Non-Volatile Size: None
Volatile Size: 8 GB
Cache Size: None
Logical Size: None

Handle 0x0041, DMI type 17, 92 bytes
Memory Device
Array Handle: 0x003C
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: SODIMM
Set: None
Locator: Controller1-ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous
Speed: 2133 MT/s
Manufacturer: Samsung
Serial Number: 9859E672
Asset Tag: 9876543210
Part Number: M471A1G43EB1-CPB
Rank: 2
Configured Memory Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Memory Technology: DRAM
Memory Operating Mode Capability: Volatile memory
Firmware Version: Not Specified
Module Manufacturer ID: Bank 1, Hex 0xCE
Module Product ID: Unknown
Memory Subsystem Controller Manufacturer ID: Unknown
Memory Subsystem Controller Product ID: Unknown
Non-Volatile Size: None
Volatile Size: 8 GB
Cache Size: None
Logical Size: None

Handle 0x0042, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00000000000
Ending Address: 0x001FFFFFFFF
Range Size: 8 GB
Physical Device Handle: 0x0040
Memory Array Mapped Address Handle: 0x003F
Partition Row Position: Unknown
Interleave Position: 1
Interleaved Data Depth: 1

Handle 0x0043, DMI type 20, 35 bytes
Memory Device Mapped Address
Starting Address: 0x00200000000
Ending Address: 0x003FFFFFFFF
Range Size: 8 GB
Physical Device Handle: 0x0041
Memory Array Mapped Address Handle: 0x003F
Partition Row Position: Unknown
Interleave Position: 2
Interleaved Data Depth: 1

Handle 0x0044, DMI type 221, 26 bytes
OEM-specific Type
Header and Data:
DD 1A 44 00 03 01 00 0A 00 48 21 00 02 00 00 00
00 34 00 03 00 01 0E 12 00 00
Strings:
Reference Code - CPU
uCode Version
TXT ACM version

Handle 0x0045, DMI type 221, 26 bytes
OEM-specific Type
Header and Data:
DD 1A 45 00 03 01 00 0A 00 48 21 00 02 00 00 00
00 00 00 03 04 0F 00 1E 7B 06
Strings:
Reference Code - ME
MEBx version
ME Firmware Version
Consumer SKU

Handle 0x0046, DMI type 221, 47 bytes
OEM-specific Type
Header and Data:
DD 2F 46 00 06 01 00 0A 00 48 21 00 02 03 FF FF
FF FF FF 04 00 FF FF FF 11 00 05 00 FF FF FF 11
00 06 00 02 46 00 00 00 07 00 04 00 00 00 00
Strings:
Reference Code - PCH
PCH-CRID Status
Disabled
PCH-CRID Original Value
PCH-CRID New Value
OPROM - RST - RAID
PCH Hsio Version

Handle 0x0047, DMI type 221, 82 bytes
OEM-specific Type
Header and Data:
DD 52 47 00 0B 01 00 0A 00 48 21 00 02 00 01 00
14 01 00 03 00 0A 00 48 21 00 04 05 FF FF FF FF
FF 06 00 00 00 00 05 00 07 00 00 00 00 05 00 08
00 FF FF FF FF FF 09 00 18 01 03 00 00 0A 00 00
00 00 68 00 0B 00 00 00 00 00 00 0C 00 FF FF FF
FF FF
Strings:
Reference Code - SA - System Agent
Reference Code - MRC
SA - PCIe Version
SA-CRID Status
Disabled
SA-CRID Original Value
SA-CRID New Value
OPROM - VBIOS
IO Manageability Engine FW Version
PHY Build Version
Thunderbolt(TM) FW Version
System Agent Manageability Engine FW Version

Handle 0x0048, DMI type 221, 12 bytes
OEM-specific Type
Header and Data:
DD 0C 48 00 01 01 00 04 00 00 00 00
Strings:
FSP Binary Version

Handle 0x0049, DMI type 7, 27 bytes
Cache Information
Socket Designation: L1 Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 288 kB
Maximum Size: 288 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Parity
System Type: Data
Associativity: 12-way Set-associative

Handle 0x004A, DMI type 7, 27 bytes
Cache Information
Socket Designation: L1 Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 192 kB
Maximum Size: 192 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Parity
System Type: Instruction
Associativity: 8-way Set-associative

Handle 0x004B, DMI type 7, 27 bytes
Cache Information
Socket Designation: L2 Cache
Configuration: Enabled, Not Socketed, Level 2
Operational Mode: Write Back
Location: Internal
Installed Size: 7680 kB
Maximum Size: 7680 kB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Single-bit ECC
System Type: Unified
Associativity: Other

Handle 0x004C, DMI type 7, 27 bytes
Cache Information
Socket Designation: L3 Cache
Configuration: Enabled, Not Socketed, Level 3
Operational Mode: Write Back
Location: Internal
Installed Size: 12 MB
Maximum Size: 12 MB
Supported SRAM Types:
Synchronous
Installed SRAM Type: Synchronous
Speed: Unknown
Error Correction Type: Multi-bit ECC
System Type: Unified
Associativity: 8-way Set-associative

Handle 0x004D, DMI type 4, 48 bytes
Processor Information
Socket Designation: U3E1
Type: Central Processor
Family: Core i5
Manufacturer: Intel(R) Corporation
ID: D1 06 08 00 FF FB EB BF
Signature: Type 0, Family 6, Model 141, Stepping 1
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)
CMOV (Conditional move instruction supported)
PAT (Page attribute table)
PSE-36 (36-bit page size extension)
CLFSH (CLFLUSH instruction supported)
DS (Debug store)
ACPI (ACPI supported)
MMX (MMX technology supported)
FXSR (FXSAVE and FXSTOR instructions supported)
SSE (Streaming SIMD extensions)
SSE2 (Streaming SIMD extensions 2)
SS (Self-snoop)
HTT (Multi-threading)
TM (Thermal monitor supported)
PBE (Pending break enabled)
Version: 11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz
Voltage: 0.8 V
External Clock: 100 MHz
Max Speed: 4500 MHz
Current Speed: 2673 MHz
Status: Populated, Enabled
Upgrade: Other
L1 Cache Handle: 0x004A
L2 Cache Handle: 0x004B
L3 Cache Handle: 0x004C
Serial Number: To Be Filled By O.E.M.
Asset Tag: To Be Filled By O.E.M.
Part Number: To Be Filled By O.E.M.
Core Count: 6
Core Enabled: 6
Thread Count: 12
Characteristics:
64-bit capable
Multi-Core
Hardware Thread
Execute Protection
Enhanced Virtualization
Power/Performance Control

Handle 0x004E, DMI type 131, 64 bytes
OEM-specific Type
Header and Data:
83 40 4E 00 31 00 00 00 00 00 00 00 00 00 00 00
F8 00 8B 43 00 00 00 00 01 00 00 00 00 00 0F 00
7B 06 1E 00 00 00 00 00 FE 00 FF FF 00 00 00 00
00 00 00 00 22 00 00 00 76 50 72 6F 00 00 00 00

Handle 0x004F, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:00.0

Handle 0x0050, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Video
Type: Video
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:02.0

Handle 0x0051, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 2
Bus Address: 0000:00:08.0

Handle 0x0052, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 3
Bus Address: 0000:00:0a.0

Handle 0x0053, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 4
Bus Address: 0000:00:0d.0

Handle 0x0054, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 5
Bus Address: 0000:00:14.0

Handle 0x0055, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 6
Bus Address: 0000:00:14.2

Handle 0x0056, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Ethernet
Type: Ethernet
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:14.3

Handle 0x0057, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 7
Bus Address: 0000:00:15.0

Handle 0x0058, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 8
Bus Address: 0000:00:16.0

Handle 0x0059, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - SATA
Type: SATA Controller
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:17.0

Handle 0x005A, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 9
Bus Address: 0000:00:1f.0

Handle 0x005B, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Sound
Type: Sound
Status: Enabled
Type Instance: 1
Bus Address: 0000:00:1f.3

Handle 0x005C, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 10
Bus Address: 0000:00:1f.4

Handle 0x005D, DMI type 41, 11 bytes
Onboard Device
Reference Designation: Onboard - Other
Type: Other
Status: Enabled
Type Instance: 11
Bus Address: 0000:00:1f.5

Handle 0x005E, DMI type 221, 89 bytes
OEM-specific Type
Header and Data:
DD 59 5E 00 0C 01 00 FF FF FF FF FF 02 00 FF FF
FF FF FF 03 04 FF FF FF FF FF 05 06 FF FF FF FF
FF 07 08 FF FF FF FF FF 09 00 00 00 00 00 00 0A
00 FF FF FF FF FF 0B 00 FF FF 00 00 00 0C 00 00
17 00 56 10 0D 00 FF FF FF FF FF 0E 00 00 07 00
00 00 0F 00 00 02 00 0F 00
Strings:
Lan Phy Version
Sensor Firmware Version
Debug Mode Status
Disabled
Performance Mode Status
Disabled
Debug Use USB(Disabled:Serial)
Disabled
ICC Overclocking Version
UNDI Version
EC FW Version
GOP Version
Royal Park Version
Platform Version
Client Silicon Version

Handle 0x005F, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected

Handle 0x0060, DMI type 13, 22 bytes
BIOS Language Information
Language Description Format: Long
Installable Languages: 3
en|US|iso8859-1
zh|CN|unicode
zh|TW|unicode
Currently Installed Language: en|US|iso8859-1

Handle 0x0061, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: Keyboard
External Connector Type: PS/2
Port Type: Keyboard Port

Handle 0x0062, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: Mouse
External Connector Type: PS/2
Port Type: Mouse Port

Handle 0x0063, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: Other
External Reference Designator: COM 1
External Connector Type: None
Port Type: Serial Port 16550A Compatible

Handle 0x0064, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1A2B
Internal Connector Type: Other
External Reference Designator: Video
External Connector Type: DB-15 female
Port Type: Video Port

Handle 0x0065, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J3A2
Internal Connector Type: Other
External Reference Designator: HDMI
External Connector Type: None
Port Type: Video Port

Handle 0x0066, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: USB1.1 - 1#
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x0067, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: USB1.1 - 2#
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x0068, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: USB1.1 - 3#
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x0069, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: USB1.1 - 4#
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x006A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: USB1.1 - 5#
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x006B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: USB2.0 - 1#
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x006C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: USB2.0 - 2#
External Connector Type: Access Bus (USB)
Port Type: USB

Handle 0x006D, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: None
Internal Connector Type: None
External Reference Designator: Ethernet
External Connector Type: RJ-45
Port Type: Network Port

Handle 0x006E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8J1
Internal Connector Type: None
External Reference Designator: SATA Port 0 Direct Connect
External Connector Type: SAS/SATA Plug Receptacle
Port Type: SATA

Handle 0x006F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J7J1
Internal Connector Type: None
External Reference Designator: eSATA Port 4
External Connector Type: SAS/SATA Plug Receptacle
Port Type: SATA

Handle 0x0070, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6J1
Internal Connector Type: None
External Reference Designator: eSATA Port 3
External Connector Type: SAS/SATA Plug Receptacle
Port Type: SATA

Handle 0x0071, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J7G1 - SATA Port 2
Internal Connector Type: SAS/SATA Plug Receptacle
External Reference Designator: None
External Connector Type: None
Port Type: SATA

Handle 0x0072, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J7G2 - SATA Port 1
Internal Connector Type: SAS/SATA Plug Receptacle
External Reference Designator: None
External Connector Type: None
Port Type: SATA

Handle 0x0073, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1F2
Internal Connector Type: None
External Reference Designator: AC IN
External Connector Type: Other
Port Type: Other

Handle 0x0074, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J5B1 - PCH JTAG
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0075, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9A1 - TPM/PORT 80
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0076, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E4 - HDA 2X8 Header
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0077, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E7 - HDA 8Pin Header
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0078, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8F1 - HDA HDMI
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0079, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E3 - Scan Matrix Keyboard
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x007A, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8E1 - SPI Program
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x007B, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9E5 - LPC Hot Docking
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x007C, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J9G2 - LPC SIDE BAND
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x007D, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8F2 - LPC Slot
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x007E, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J8H3 - PCH XDP
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x007F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J6H1 - SATA Power
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0080, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J5J1 - FP Header
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0081, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J4H1 - ATX Power
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0082, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1J3 - AVMC
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0083, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1H1 - BATT B
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0084, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1H2 - BATT A
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0085, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J2G1 - CPU Fan
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0086, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J1D3 - XDP
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0087, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J4V1 - Memory Slot 1
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0088, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J4V2 - Memory Slot 2
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x0089, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: J4C1 - FAN PWR
Internal Connector Type: Other
External Reference Designator: None
External Connector Type: None
Port Type: Other

Handle 0x008A, DMI type 136, 8 bytes
OEM-specific Type
Header and Data:
88 08 8A 00 00 00 00 00

Handle 0x008B, DMI type 14, 8 bytes
Group Associations
Name: $MEI
Items: 1
0x0000 (OEM-specific)

Handle 0x008C, DMI type 219, 106 bytes
OEM-specific Type
Header and Data:
DB 6A 8C 00 01 04 01 45 02 00 90 06 01 85 39 20
00 00 00 00 40 00 00 03 1F 00 00 C9 03 60 44 02
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF 03 00 00 00 80 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
Strings:
MEI1
MEI2
MEI3
MEI4

Handle 0x008D, DMI type 136, 6 bytes
OEM-specific Type
Header and Data:
88 06 8D 00 00 00

Handle 0x008E, DMI type 14, 23 bytes
Group Associations
Name: Firmware Version Info
Items: 6
0x0044 (OEM-specific)
0x0045 (OEM-specific)
0x0046 (OEM-specific)
0x0047 (OEM-specific)
0x0048 (OEM-specific)
0x005E (OEM-specific)

Handle 0x008F, DMI type 127, 4 bytes
End Of Table

GP66 Leopard 10UG (1542EMS1.102)

@vic1184

Creating a separate issue here (original - #18). First of all, TYSM for recording a video, it made it much easier to see the changes

Now here is what I figured out:

  • battery thresholds - [0xef]
  • webcam - [0x2e] bit1?
  • monitor overdrive - [0x2e] bit4 ?
  • Fn/Win swap - you didn't show it in the video
  • cooler boost - standard [0x98] bit7
  • shift mode - [0xf2], all modes are available
  • super battery - [0xd5], mask = 0x0f (it may be the same for my laptop)
  • fan mode - [0xf4], no basic mode
  • realtime CPU temp - standard [0x68]
  • realtime CPU fan speed - [0xc9]
  • realtime GPU temp - [0x80]
  • mute/micmute LEDs - you wasn't in the video

I'll try to find the crosshair address later.

Conflict between the in-tree and the out-of-tree driver

Since Linux 6.4, when the less functional version of the driver has been merged into the kernel, if users try to install and load the github version of this driver the in-tree version loads instead. To load the github version, user has to manually load the msi-ec.ko file.

GS66 11UE

Hi! First time Linux user trying to get stuff to work. I installed your repo on Mint and got this results:

/sys/devices/platform/msi-ec/battery_mode
max

/sys/devices/platform/msi-ec/cooler_boost
off

/sys/devices/platform/msi-ec/cpu
cat: /sys/devices/platform/msi-ec/cpu: Is a directory

/sys/devices/platform/msi-ec/driver
cat: /sys/devices/platform/msi-ec/driver: Is a directory

/sys/devices/platform/msi-ec/driver_override
(null)

/sys/devices/platform/msi-ec/fan_mode
unknown (41)

/sys/devices/platform/msi-ec/fn_key
unknown (32)

/sys/devices/platform/msi-ec/fw_release_date
2022/01/04 13:53:21

/sys/devices/platform/msi-ec/fw_version
16V4EMS1.114

/sys/devices/platform/msi-ec/gpu
cat: /sys/devices/platform/msi-ec/gpu: Is a directory

/sys/devices/platform/msi-ec/leds
cat: /sys/devices/platform/msi-ec/leds: Is a directory

/sys/devices/platform/msi-ec/modalias
platform:msi-ec

/sys/devices/platform/msi-ec/power
cat: /sys/devices/platform/msi-ec/power: Is a directory

/sys/devices/platform/msi-ec/shift_mode
unknown (112)

/sys/devices/platform/msi-ec/subsystem
cat: /sys/devices/platform/msi-ec/subsystem: Is a directory

/sys/devices/platform/msi-ec/uevent
DRIVER=msi-ec
MODALIAS=platform:msi-ec

/sys/devices/platform/msi-ec/webcam
unknown (11)

/sys/devices/platform/msi-ec/win_key
unknown (32)

How should I proceed to change any of the settings? I'm particularly interested in battery thresholds and keyboard functionalities.

Thank you so much in advance

1552EMS1 duplicated

check ALLOWED_FW_11 and ALLOWED_FW_2

In FW_2 version 1552EMS1.118
In FW_11 version 1552EMS1.115

Also I think that usage of one config for two+ models is bad idea for now

Add fallback mode

As far as I can tell, EC FW versions that only differ in the last two digits are backwards compatible. We may want to add an optional fallback mode, so users with newer EC FW versions can still use the driver by falling back to older compatible versions.

We also know that cooler boost address may be universal for all FWs, so we can make a "global fallback". This way users with unsupported firmware will at least be able to use cooler boost.

1543EMS1.113 (GE66 Raider 11UE) support

Started a file for RwEverything (save as anything.irw and load it into the EC view with the Info button):

[INFO]
Name=MSIEC 1543EMS
EF=Charge control
8A=Charge control offset start
80=Charge control offset end
8A=Charge control range min
E4=Charge control range max
2E=Webcam (bit 1)
98=Cooler boost (bit 7)
F2=Shift mode (c2, c1, c0, c4)
D5=Super battery (mask 0xf)
F4=Fan mode (d, 1d, 8d)
68=CPU temperature
C9=RT CPU fan speed
19=RT CPU fan speed base min
37=RT CPU fan speed base max
00=BS CPU fan speed base min
0F=BS CPU fan speed base max
80=GPU temperature

71=unknown, constantly changing
4A=unknown, constantly changing
4C=unknown, constantly changing
9E=unknown, changing
FD=unknown, changing

E8=Switch fn/win; 10=fn left, 0 = fn right
BF=USB Power Share: off = 0x08, on = 0x28
D2=Performance Level, C4 = Turbo, C0 = High, C1 = Medium, C2 = Low (shuts off LEDs on keyboard)
D3=unknown, when Super Battery = 80, when User = 82

The top entries are from CONF6 and some are probably incorrect. Anything not mentioned here stayed at value 00 and never changed.

MSI Modern 15 A5M support from 6.4 kernel

Greetings everyone,

I've been using my own laptop daily for personal use, an MSI Modern 15 A5M, since last year, with YoyPa's ISW-Modern installed in order to have basic automated fan control on my laptop. I'm running on Endeavour OS.

Recently, I tried to install the AUR package msi-ec-git, in order to benefit from a more advanced version of the ISW-Modern package, which is rather limited in terms of functionality. Unfortunately, this never worked on my laptop, so I decided to wait for msi-ec to be merged with the linux 6.4 kernel.

Now that version 6.4 of the linux kernel has been released, I tried to see if it now worked on my laptop. Unfortunately, when I go to /sys/devices/platform/, there is no "msi-ec" folder. I tried to install the package from the tutorial explained on the main page of the project, but still no correspondant folder seems to exists (even in hidden folders).

I'm wondering if anyone involved in this project could gently help me in order to get this module working on my laptop. Right now, ISW-Modern doens't seems to function at all with kernel 6.4.

Any tips would be greatly appreciated, i'm still new to Linux even though i've been making a distro tour since two years now that made me learn a few things

Support MSI GS63VR

Laptop model

MSI GS63VR

EC firmware version

16K2ED61.101

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 00 00 00 80 c0 06 4b 0b
0x3_ | 03 09 00 0d 50 0a 05 00 44 16 5c 2b 3a 02 e0 00
0x4_ | 00 00 63 00 44 17 00 00 ea 16 54 30 b4 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 29 00 37 3d 43 49 4f 55
0x7_ | 64 1e 1e 2d 36 40 46 4b 55 00 08 03 03 03 03 03
0x8_ | 00 00 37 3d 43 49 4f 55 66 00 00 32 3c 46 50 50
0x9_ | 55 00 08 03 03 03 03 03 02 0a 6e 02 0a 70 00 00
0xa_ | 31 36 4b 32 45 44 36 31 2e 31 30 31 30 32 30 37
0xb_ | 32 30 31 37 31 34 3a 31 30 3a 30 34 44 17 00 40
0xc_ | 00 01 22 00 00 9e c0 00 00 32 00 00 01 0a 00 00
0xd_ | 00 00 00 00 70 00 01 00 00 00 00 80 01 00 00 00
0xe_ | e2 02 00 0f 10 00 00 00 00 00 00 00 00 d1 00 00
0xf_ | 00 00 00 00 0c 00 03 00 00 00 00 00 00 00 00 00

GPU

Nvidia

Is your keyboard RGB?

Yes (multi color RGB)

Additional context

No response

install

Not compatable?

I am getting this on install:

robert@robert-Titan-GT77-12UGS:$ cd msi-ec
robert@robert-Titan-GT77-12UGS:
/msi-ec$ sudo make
[sudo] password for robert:
make[1]: Entering directory '/usr/src/linux-headers-6.2.0-20-generic'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.2.0-17ubuntu1) 12.2.0
You are using: gcc-12 (Ubuntu 12.2.0-17ubuntu1) 12.2.0
CC [M] /home/robert/msi-ec/msi-ec.o
/home/robert/msi-ec/msi-ec.c:1248:24: error: initialization of ‘int (*)(struct power_supply *, struct acpi_battery_hook )’ from incompatible pointer type ‘int ()(struct power_supply )’ [-Werror=incompatible-pointer-types]
1248 | .add_battery = msi_battery_add,
| ^~~~~~~~~~~~~~~
/home/robert/msi-ec/msi-ec.c:1248:24: note: (near initialization for ‘battery_hook.add_battery’)
/home/robert/msi-ec/msi-ec.c:1249:27: error: initialization of ‘int (
)(struct power_supply *, struct acpi_battery_hook )’ from incompatible pointer type ‘int ()(struct power_supply *)’ [-Werror=incompatible-pointer-types]
1249 | .remove_battery = msi_battery_remove,
| ^~~~~~~~~~~~~~~~~~
/home/robert/msi-ec/msi-ec.c:1249:27: note: (near initialization for ‘battery_hook.remove_battery’)
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:260: /home/robert/msi-ec/msi-ec.o] Error 1
make[1]: *** [Makefile:2026: /home/robert/msi-ec] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.2.0-20-generic'
make: *** [Makefile:12: modules] Error 2
robert@robert-Titan-GT77-12UGS:/msi-ec$ sudo make install
mkdir -p /lib/modules/6.2.0-20-generic/extra
cp msi-ec.ko /lib/modules/6.2.0-20-generic/extra
cp: cannot stat 'msi-ec.ko': No such file or directory
make: *** [Makefile:27: install] Error 1
robert@robert-Titan-GT77-12UGS:
/msi-ec$ ^C
robert@robert-Titan-GT77-12UGS:~/msi-ec$

Support for MSI Alpha 17 B5EEK

hello, after installing the msi-ec package from the AUR, i'm not able to find the msi-ec folder at : /sys/devices/platform/

i also noticed a error massage when i boot that goes along the lines: "failed to start kernel modules", which only happens when install msi-ec

important info:
system: garuda linux
kernel version: 6.1.30-1-lts

BIOS:E17LLAMS.108
EC:17LLEMS1.106
I tried to do this : #18 (comment)

but i failed to get the dump file this way, however, after going with the first 3
steps, i was able to find the msi-ec folder in: /sys/devices/platform/ (it disappears after rebooting) and from there i manually copied the contents of ec_dump
dump.txt

when i opened ec_dump using kate and spammed f5 i saw some values change in real time, i remember one of entries had 3 values for each time that i press fn+f8 to change the keyboard lights (they don't work)

other things to note with this laptop:

1- i had very poor performance when using any external monitor, so i had to disable resize-BAR from the bios.

2-the dGPU:RX6600M is having performance issues too, low wattage, high usage when playing games.

so im hoping to solve this issue IF i can get msi-ec to work

thanks.

Add support for MSI Modern 15 B7M

Laptop model

Modern 15 B7M

EC firmware version

15HKEMS1.104

EC memory dump

No response

GPU

iGPU only (AMD)

Is your keyboard RGB?

No (single color)

Additional context

I'm on windows and willing to do an EC dump if someone can guide me, I never did this before.

Support MSI GP76 Leopard 11UG-240

Laptop model

Vector GP76 Leopard

EC firmware version

17K3EMS1.115 (which is present with the latest 322 BIOS/UEFI flash)

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 04 1a 4b
0x3_ | 03 01 00 0d 00 00 50 81 40 10 60 3b a0 01 c0 00
0x4_ | 20 08 3d 00 67 0c 00 00 84 07 ef 3b e6 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 30 00 32 39 40 47 4e 55
0x7_ | 64 28 00 28 30 38 40 48 50 00 0a 08 08 08 08 08
0x8_ | 00 00 37 3c 41 46 4b 50 62 00 00 30 38 40 48 4f
0x9_ | 56 00 0a 07 06 06 06 06 02 16 7d 02 16 62 46 00
0xa_ | 31 37 4b 33 45 4d 53 31 2e 31 31 35 30 33 30 33
0xb_ | 32 30 32 32 31 34 3a 33 37 3a 30 39 00 00 00 00
0xc_ | 00 00 07 3d 00 00 00 00 00 f7 00 00 00 00 00 00
0xd_ | 00 00 c1 81 0d 00 05 bc 00 01 00 00 00 00 00 00
0xe_ | e2 00 00 67 0c 00 00 00 00 00 00 00 00 c2 00 00
0xf_ | 40 00 70 00 00 3e 00 00 64 00 03 c0 00 01 00 00

the current dump is at previously under w10 msi-center configured 50-60% charge setting {respective min battery mode)

GPU

Nvidia

Is your keyboard RGB?

Yes (multi color RGB)

Additional context

11800h rtx3070
GP76 Leopard 11UG-240

gathered using:

sudo insmod msi-ec.ko debug=1

Under Manjaro {now Kernel 6.5.5-1} the key combination
Fn+F8 for enabling Cooler Boost works without MSI-EC some time already.

Can't sun makefile - requires C99 or C11 mode

Hello! I've downloaded your repo on Linux Mint 21.1 and trying to run the Makefile returns the following error message:

make[1]: ingresso nella directory «/usr/src/linux-headers-5.15.0-60-generic»
CC [M] /home/vic/msi-ec/msi-ec.o
/home/vic/msi-ec/msi-ec.c: In function ‘available_shift_modes_show’:
/home/vic/msi-ec/msi-ec.c:928:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
928 | for (int i = 0; conf.shift_mode.modes[i].name; i++) {
| ^~~
/home/vic/msi-ec/msi-ec.c:928:9: note: use option ‘-std=c99’, ‘-std=gnu99’, ‘-std=c11’ or ‘-std=gnu11’ to compile your code
/home/vic/msi-ec/msi-ec.c: In function ‘shift_mode_show’:
/home/vic/msi-ec/msi-ec.c:954:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
954 | for (int i = 0; conf.shift_mode.modes[i].name; i++) {
| ^~~
/home/vic/msi-ec/msi-ec.c: In function ‘shift_mode_store’:
/home/vic/msi-ec/msi-ec.c:971:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
971 | for (int i = 0; conf.shift_mode.modes[i].name; i++) {
| ^~~
/home/vic/msi-ec/msi-ec.c: In function ‘available_fan_modes_show’:
/home/vic/msi-ec/msi-ec.c:1031:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1031 | for (int i = 0; conf.fan_mode.modes[i].name; i++) {
| ^~~
/home/vic/msi-ec/msi-ec.c: In function ‘fan_mode_show’:
/home/vic/msi-ec/msi-ec.c:1053:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1053 | for (int i = 0; conf.fan_mode.modes[i].name; i++) {
| ^~~
/home/vic/msi-ec/msi-ec.c: In function ‘fan_mode_store’:
/home/vic/msi-ec/msi-ec.c:1069:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1069 | for (int i = 0; conf.fan_mode.modes[i].name; i++) {
| ^~~
/home/vic/msi-ec/msi-ec.c: In function ‘msi_platform_probe’:
/home/vic/msi-ec/msi-ec.c:1396:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1396 | for (int i = 0, j = 0; i < attributes_count; i++) {
| ^~~
/home/vic/msi-ec/msi-ec.c: In function ‘msi_platform_remove’:
/home/vic/msi-ec/msi-ec.c:1414:9: error: implicit declaration of function ‘kvfree’; did you mean ‘vfree’? [-Werror=implicit-function-declaration]
1414 | kvfree(msi_root_group.attrs);
| ^~~~~~
| vfree
/home/vic/msi-ec/msi-ec.c: In function ‘load_configuration’:
/home/vic/msi-ec/msi-ec.c:1524:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1524 | for (int i = 0; CONFIGURATIONS[i]; i++) {
| ^~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:297: /home/vic/msi-ec/msi-ec.o] Errore 1
make[1]: *** [Makefile:1904: /home/vic/msi-ec] Errore 2
make[1]: uscita dalla directory «/usr/src/linux-headers-5.15.0-60-generic»
make: *** [Makefile:10: modules] Errore 2

There are not any damaged packages in my system and I installed build-essential and linux-headers-generic before running the makefile.

I've tried declaring the counters outside the "for" loop (right above where it starts) in the msi-ec.c file but I get some warnings instead and the fatal error at line 1414 regarding the implicit declaration of "kvfree". I'm running the makefile as root.

This is my inxi -b output in case it's needed:

System:
Host: Vic1184-GP66 Kernel: 5.15.0-60-generic x86_64 bits: 64
Desktop: Cinnamon 5.6.7 Distro: Linux Mint 21.1 Vera
Machine:
Type: Laptop System: Micro-Star product: GP66 Leopard 10UG v: REV:1.0
serial:
Mobo: Micro-Star model: MS-1542 v: REV:1.0 serial:
UEFI: American Megatrends v: E1542IMS.30A date: 03/09/2021
Battery:
ID-1: BAT1 charge: 34.6 Wh (72.5%) condition: 47.7/63.2 Wh (75.4%)
CPU:
Info: 6-core Intel Core i7-10750H [MT MCP] speed (MHz): avg: 3477
min/max: 800/5000
Graphics:
Device-1: NVIDIA GA104M [GeForce RTX 3070 Mobile / Max-Q] driver: nvidia
v: 525.78.01
Device-2: Acer HD Webcam type: USB driver: uvcvideo
Display: x11 server: X.Org v: 1.21.1.3 driver: X: loaded: nvidia
unloaded: fbdev,modesetting,nouveau,vesa gpu: nvidia
resolution: 1920x1080~144Hz
OpenGL: renderer: NVIDIA GeForce RTX 3070 Laptop GPU/PCIe/SSE2
v: 4.6.0 NVIDIA 525.78.01
Network:
Device-1: Intel Comet Lake PCH CNVi WiFi driver: iwlwifi
Device-2: Intel driver: igc
Drives:
Local Storage: total: 709.83 GiB used: 291.21 GiB (41.0%)
Info:
Processes: 390 Uptime: 7m Memory: 15.52 GiB used: 2.69 GiB (17.3%)
Shell: Bash inxi: 3.3.13

Thanks a lot for the help!

kernel 6.5 cpupower experiment

Issue with log of @mutchiko experiment from #45 issue comment

hi, can you install kernel 6.5 then cpupower-gui and tell me how many options do you see in Energy preference?

We need this exact kernel because it enables AMD EPP driver on ryzen 3 CPUs, if you see 4 options that means super_battery doesn't control the CPU P-states.

OS: Pop OS
Hardware: Modern 14 C5M (14JKEMS1)
CPU: AMD Ryzen 5 5625U
Kernel: 6.5.0-060500rc7-generic #202308201631 from Ubuntu PPA

Log:

  1. remove in kernel module
sudo modprobe -r msi-ec
  1. compile and load git version

requires x86_64-linux-gnu-gcc-13...

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt install gcc-13
make
sudo make install

Fail: ERROR: could not insert 'msi_ec': Operation not supported

Support for MSI Pulse 17 B13V

Laptop model

MSI Pulse 17 B13V

EC firmware version

17L5EMS1.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 08 24 0b 4b
0x3_ | 03 09 00 05 01 00 50 81 2b 16 28 3c 37 02 e0 00
0x4_ | 00 00 5b 00 b4 15 00 00 96 13 59 42 bc 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 3a 00 37 41 46 4b 50 55
0x7_ | 64 00 00 32 37 3c 46 50 55 64 05 03 03 03 03 03
0x8_ | 35 00 37 3c 41 46 4b 50 61 32 00 32 37 3c 46 50
0x9_ | 5a 64 05 03 03 03 03 03 06 0f 7d 06 0a 78 38 00
0xa_ | 31 37 4c 35 45 4d 53 31 2e 31 31 31 30 36 32 36
0xb_ | 32 30 32 33 30 38 3a 34 36 3a 35 34 00 00 00 08
0xc_ | 00 00 06 22 00 00 00 00 00 00 00 c0 00 00 00 00
0xd_ | 00 00 c1 83 0d 00 05 80 00 05 00 00 00 07 00 00
0xe_ | e2 00 00 b4 15 00 00 c1 00 00 00 00 00 c0 00 00
0xf_ | 00 00 70 00 00 64 00 00 64 00 00 00 00 00 01 00

GPU

Nvidia

Is your keyboard RGB?

Yes (multi color RGB)

Additional context

Thank you!

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.