diff --git a/docs/supported_devices.md b/docs/supported_devices.md
index bd086cd..4fc7d7b 100644
--- a/docs/supported_devices.md
+++ b/docs/supported_devices.md
@@ -17,6 +17,7 @@
| GF63 Thin 11UC | 16R6EMS1 | Issues:
- [#72](https://github.com/BeardOverflow/msi-ec/issues/72)
- [#114](https://github.com/BeardOverflow/msi-ec/issues/114)
PRs:
- [#74](https://github.com/BeardOverflow/msi-ec/pull/74),
- [#117](https://github.com/BeardOverflow/msi-ec/pull/117) | 12 | ✔️ Battery thresholds
✔️ Webcam toggle
✔️ Webcam block
✔️ Fn <-> Win
✔️ Cooler boost
✔️ Shift mode
✔️ Fan mode
❌ Mic mute LED
✔️ Sound mute LED
✔️ Keyboard backlight intensity |
| GF75 Thin 9SC | 17F2EMS1 | PRs:
- [#22](https://github.com/BeardOverflow/msi-ec/pull/22) | 1 | ✔️ Battery thresholds
✔️ Webcam toggle
✔️ Webcam block
✔️ Fn <-> Win
✔️ Cooler boost
✔️ Shift mode
✔️ Fan mode
✔️ Mic mute LED
✔️ Sound mute LED
✔️ Keyboard backlight intensity |
| Katana GF66 11UC / 11UD | 1582EMS1 | PRs:
- [#39](https://github.com/BeardOverflow/msi-ec/pull/39) | 10 | ✔️ Battery thresholds
✔️ Webcam toggle
✔️ Webcam block
❌ Fn <-> Win
✔️ Cooler boost
✔️ Shift mode
✔️ Fan mode
✔️ Mic mute LED
✔️ Sound mute LED
✔️ Keyboard backlight intensity |
+| Katana GF66 11UE / 11UG | 1581EMS1 | Issues:
- [#38](https://github.com/BeardOverflow/msi-ec/issues/38)
PRs:
- [#129](https://github.com/BeardOverflow/msi-ec/pull/129) | 20 | ✔️ Battery thresholds
✔️ Webcam toggle
✔️ Webcam block
✔️ Fn <-> Win
✔️ Cooler boost
✔️ Shift mode
✔️ Fan mode
✔️ Mic mute LED
✔️ Sound mute LED
✔️ Keyboard backlight intensity |
| Katana 17 B11UCX | 17L2EMS1 | PRs:
- [#97](https://github.com/BeardOverflow/msi-ec/pull/97) | 14 | ✔️ Battery thresholds
✔️ Webcam toggle
✔️ Webcam block
✔️ Fn <-> Win
✔️ Cooler boost
✔️ Shift mode
✔️ Fan mode
✔️ Mic mute LED
✔️ Sound mute LED
✔️ Keyboard backlight intensity |
| Prestige 14 A10SC | 14C1EMS1 | PRs:
- [#22](https://github.com/BeardOverflow/msi-ec/pull/22) | 0 | ✔️ Battery thresholds
✔️ Webcam toggle
✔️ Webcam block
✔️ Fn <-> Win
✔️ Cooler boost
✔️ Shift mode
✔️ Fan mode
✔️ Mic mute LED
✔️ Sound mute LED
✔️ Keyboard backlight intensity |
| Prestige 15 A11SCX | 16S6EMS1 | PRs:
- [#40](https://github.com/BeardOverflow/msi-ec/pull/40) | 11 | ✔️ Battery thresholds
✔️ Webcam toggle
❌ Webcam block
✔️ Fn <-> Win
✔️ Cooler boost
✔️ Shift mode
✔️ Fan mode
✔️ Mic mute LED
✔️ Sound mute LED
✔️ Keyboard backlight intensity |
diff --git a/msi-ec.c b/msi-ec.c
index 854018c..f0e71a6 100644
--- a/msi-ec.c
+++ b/msi-ec.c
@@ -1656,6 +1656,85 @@ static struct msi_ec_conf CONF19 __initdata = {
},
};
+static const char *ALLOWED_FW_20[] __initconst = {
+ "1581EMS1.107", // GF66 11UE & GF66 11UG
+ NULL
+};
+
+static struct msi_ec_conf CONF20 __initdata = {
+ .allowed_fw = ALLOWED_FW_20,
+ .charge_control = { // tested
+ .address = 0xd7,
+ .offset_start = 0x8a,
+ .offset_end = 0x80,
+ .range_min = 0x8a,
+ .range_max = 0xe4,
+ },
+ .webcam = { // tested
+ .address = 0x2e,
+ .block_address = 0x2f,
+ .bit = 1,
+ },
+ .fn_win_swap = { // tested
+ .address = 0xe8,
+ .bit = 4,
+ .invert = true,
+ },
+ .cooler_boost = { // tested
+ .address = 0x98,
+ .bit = 7,
+ },
+ .shift_mode = { // tested
+ .address = 0xd2,
+ .modes = {
+ { SM_ECO_NAME, 0xc2 },
+ { SM_COMFORT_NAME, 0xc1 },
+ { SM_SPORT_NAME, 0xc0 },
+ { SM_TURBO_NAME, 0xc4 },
+ MSI_EC_MODE_NULL
+ },
+ },
+ .super_battery = { // tested
+ .address = 0xeb,
+ .mask = 0x0f,
+ },
+ .fan_mode = { // tested
+ .address = 0xd4,
+ .modes = {
+ { FM_AUTO_NAME, 0x0d },
+ { FM_SILENT_NAME, 0x1d },
+ { FM_ADVANCED_NAME, 0x8d },
+ MSI_EC_MODE_NULL
+ },
+ },
+ .cpu = {
+ .rt_temp_address = 0x68, // tested
+ .rt_fan_speed_address = 0xc9, // tested
+ .rt_fan_speed_base_min = 0x00, // ! observed on machine (0x35 when fans was at min), but not working !
+ .rt_fan_speed_base_max = 0x96, // ! ^ (0x56 with fans on cooler boost) !
+ .bs_fan_speed_address = MSI_EC_ADDR_UNSUPP, // reason: no such setting in the "MSI Center", checked in version 2.0.35
+ .bs_fan_speed_base_min = 0x00,
+ .bs_fan_speed_base_max = 0x0f,
+ },
+ .gpu = {
+ .rt_temp_address = 0x80, // tested
+ .rt_fan_speed_address = 0xcb, // ! observed the file reporting over 100% fan speed, which should not be possible !
+ },
+ .leds = { // tested
+ .micmute_led_address = 0x2c,
+ .mute_led_address = 0x2d,
+ .bit = 1,
+ },
+ .kbd_bl = { // tested
+ .bl_mode_address = MSI_EC_ADDR_UNSUPP, // reason: no such setting in the "MSI Center", checked in version 2.0.35
+ .bl_modes = { 0x00, 0x08 },
+ .max_mode = 1,
+ .bl_state_address = 0xd3,
+ .state_base_value = 0x80,
+ .max_state = 3,
+ },
+};
+
static struct msi_ec_conf *CONFIGURATIONS[] __initdata = {
&CONF0,
&CONF1,
@@ -1677,6 +1756,7 @@ static struct msi_ec_conf *CONFIGURATIONS[] __initdata = {
&CONF17,
&CONF18,
&CONF19,
+ &CONF20,
NULL
};