Problem Description
Model (Legion Pro 5 16IAX10, 83F3) is not on the EC allowlist. Module
loads and partially functions with force=1: boolean on/off features
and powermode work correctly, but EC-sourced numeric values (CPU/GPU
temp, fan RPM, fan curve table) read as garbage, and rapid-charging
crashes outright. Same EC ID and same brightness bug as #385 (83F5)
— requesting 83F3 be added to the allowlist alongside it.
Has the bug occurred following steps described in the README? Yes —
followed the manual GitHub install steps exactly as documented.
What steps did you take?
- git clone https://github.com/johnfanv2/LenovoLegionLinux.git
- cd LenovoLegionLinux/kernel_module && make && sudo make reloadmodule
- Hit allowlist rejection, reloaded with force=1
- Verified via dmesg, sensors, and sudo cat /sys/kernel/debug/legion/fancurve
- pip install --break-system-packages -e . (python/legion_linux) to
test individual features via legion_cli
What was the (full) error you received?
"legion PNP0C09:00: Module is not usable for this laptop because it
is not on allowlist. Need to contact maintainer to add it" (without
force). With force=1: see below for specific per-feature results.
Model and Debug Info
Installation type: via GitHub (manual build from source — no DKMS)
Distribution: Arch Linux x86_64, kernel 6.18.37-1-lts
Model name: Lenovo Legion Pro 5 16IAX10
CPU model: Intel Core Ultra 7 255HX
GPU model: NVIDIA GeForce RTX 5070 Laptop
Keyboard backlight: 4-zone RGB — on/off, rainbow, single-color, and
wave/cycling effects all confirmed working
Light in lid or logo: No (physical "LEGION" cutout, not backlit)
Light at IO-Ports at back: No (aside from the standard AC charge
indicator LED)
Output of sudo dmidecode -t system:
# dmidecode 3.7
Getting SMBIOS data from sysfs.
SMBIOS 3.8 present.
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: LENOVO
Product Name: 83F3
Version: Legion Pro 5 16IAX10
Serial Number: [Redacted]
UUID: [Redacted]
Wake-up Type: Power Switch
SKU Number: LENOVO_MT_83F3_BU_idea_FM_Legion Pro 5 16IAX10
Family: Legion Pro 5 16IAX10
Handle 0x0024, DMI type 12, 5 bytes
System Configuration Options
Option 1: ConfigOptions1
Option 2: ConfigOptions2
Option 3: ConfigOptions3
Handle 0x0027, DMI type 15, 29 bytes
System Event Log
Area Length: 0 bytes
Header Start Offset: 0x0000
Header Length: 8192 bytes
Data Start Offset: 0x2000
Access Method: General-purpose non-volatile data functions
Access Address: 0x0000
Status: Valid, Not Full
Change Token: 0x12345678
Header Format: OEM-specific
Supported Log Type Descriptors: 3
Descriptor 1: POST memory resize
Data Format 1: None
Descriptor 2: POST error
Data Format 2: POST results bitmap
Descriptor 3: Log area reset/cleared
Data Format 3: None
Handle 0x0034, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected
Output of sudo dmidecode -t bios:
# dmidecode 3.7
Getting SMBIOS data from sysfs.
SMBIOS 3.8 present.
Handle 0x0000, DMI type 0, 26 bytes
Platform Firmware Information
Vendor: LENOVO
Version: Q6CN78WW
Release Date: 03/03/2026
ROM Size: 48 MiB
Characteristics:
PCI is supported
Firmware is upgradeable
Firmware 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)
8042 keyboard services are supported (int 9h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
Platform Firmware Revision: 1.78
Embedded Controller Firmware Revision: 1.78
Handle 0x0025, DMI type 13, 22 bytes
Firmware Language Information
Language Description Format: Long
Installable Languages: 8
en|US|iso8859-1,0
fr|FR|iso8859-1,0
zh|TW|unicode,0
ja|JP|unicode,0
it|IT|iso8859-1,0
es|ES|iso8859-1,0
de|DE|iso8859-1,0
pt|PT|iso8859-1,0
Currently Installed Language: en|US|iso8859-1,0
Output of sudo cat /sys/kernel/debug/legion/fancurve:
EC Chip ID: 5508
EC Chip Version: 2b0
legion_laptop features: fancurve powermode platformprofile platformprofilenotify minifancurve fancurve_pmw_speed fancurve_rpm_speed
legion_laptop ec_readonly: 0
ACPI CFG error: -5
ACPI CFG: 0
temperature access method: 1
CPU temperature error: 0
CPU temperature: 80
CPU temperature EC error: 0
CPU temperature EC: 80
CPU temperature ACPI error: 0
CPU temperature ACPI: 46
CPU temperature WMI error: 0
CPU temperature WMI: 0
CPU temperature WMI2 error: 0
CPU temperature WMI2: 0
CPU temperature WMI3 error: 0
CPU temperature WMI3: 46
GPU temperature error: 0
GPU temperature: 87
GPU temperature EC error: 0
GPU temperature EC: 87
GPU temperature ACPI error: 0
GPU temperature ACPI: 40
GPU temperature WMI error: 0
GPU temperature WMI: 0
GPU temperature WMI2 error: 0
GPU temperature WMI2: 0
GPU temperature WMI3 error: 0
GPU temperature WMI3: 40
fan speed access method: 1
1 fanspeed error: 0
1 fanspeed: 18045
1 fanspeed EC error: 0
1 fanspeed EC: 18045
1 fanspeed ACPI error: 0
1 fanspeed ACPI: 0
1 fanspeed WMI error: 0
1 fanspeed WMI: 0
1 fanspeed WMI2 error: 0
1 fanspeed WMI2: 0
1 fanspeed WMI3 error: 0
1 fanspeed WMI3: 0
2 fanspeed error: 0
2 fanspeed: 16743
2 fanspeed EC error: 0
2 fanspeed EC: 16743
2 fanspeed ACPI error: 0
2 fanspeed ACPI: 0
2 fanspeed WMI error: 0
2 fanspeed WMI: 0
2 fanspeed WMI2 error: 0
2 fanspeed WMI2: 0
2 fanspeed WMI3 error: 0
2 fanspeed WMI3: 0
powermode access method: 3
powermode error: 0
powermode: 2
powermode EC error: 0
powermode EC: 0
powermode ACPI error: -5
powermode ACPI: 0
powermode WMI error: 0
powermode WMI: 2
has custom powermode: 1
ACPI rapidcharge error: -5
ACPI rapidcharge: 0
WMI backlight 2 state: 0
WMI backlight 3 state: 0
WMI light IO port: 0
WMI light Y logo/lid: 0
EC minifancurve feature enabled: 1
EC minifancurve on cool: error
EC lockfancontroller error: 0
EC lockfancontroller: false
fanfullspeed error: 0
fanfullspeed: 0
fanfullspeed EC error: 0
fanfullspeed EC: 0
Max speed for fancurve: 10000
Current fan curve in hardware:
Fan curve current point id: 0
Fan curve points size: 0
u(speed_of_unit)|speed1[u]|speed2[u]|speed1[pwm]|speed2[pwm]|acceleration|deceleration|cpu_min_temp|cpu_max_temp|gpu_min_temp|gpu_max_temp|ic_min_temp|ic_max_temp
=====================
Current fan curve in hardware (WMI; might be empty)
Fan curve current point id: 0
Fan curve points size: 10
u(speed_of_unit)|speed1[u]|speed2[u]|speed1[pwm]|speed2[pwm]|acceleration|deceleration|cpu_min_temp|cpu_max_temp|gpu_min_temp|gpu_max_temp|ic_min_temp|ic_max_temp
1 1 0 2 0 0 0 0 0 0 0 0 0
1 2 0 5 0 0 0 0 0 0 0 0 0
1 3 0 7 0 0 0 0 0 0 0 0 0
1 4 0 10 0 0 0 0 0 0 0 0 0
1 5 0 12 0 0 0 0 0 0 0 0 0
1 6 0 15 0 0 0 0 0 0 0 0 0
1 7 0 17 0 0 0 0 0 0 0 0 0
1 8 0 20 0 0 0 0 0 0 0 0 0
1 8 0 20 0 0 0 0 0 0 0 0 0
1 8 0 20 0 0 0 0 0 0 0 0 0
=====================
Additional testing (force=1, via legion_cli)
Working: batteryconservation-status, fnlock-status, touchpad-status,
on-power-supply-status (verified to match /sys/class/power_supply/ADP0/online
exactly across AC plug/unplug), monitor (correctly detects dGPU
wakeup/sleep and AC/battery transitions in real time), powermode
(LED color visually confirmed to change correctly per mode)
Broken — numeric values via EC method read as garbage:
- legion_hwmon/sensors: CPU 80°C / GPU 87°C / IC 55°C while real CPU
temp via coretemp at the same moment was ~44°C
- Fan 1: 18045 RPM, Fan 2: 16743 RPM — both exceed the driver's own
stated max (10000 RPM) by ~80%
- fancurve-write-hw-to-file: all entries return fan1_speed/fan2_speed
= 0, gpu/ic temps = 0, cpu_upper_temp uses index values (1-8)
instead of real degree thresholds. Also logs "ERROR: [Errno 1]
Operation not permitted" mid-read while still reporting success.
Broken — crashes: rapid-charging-status throws
OSError: [Errno 22] Invalid argument
Key observation — possible fix path
The debugfs fancurve dump shows the EC-direct read path returning
garbage for temps/fan curve on this model, while the ACPI path
(temps) and WMI path (fan curve table, powermode) return correct,
plausible values in the very same dump. The driver already defaults
to WMI for powermode on this model and gets the right answer — the
same kind of access-method preference for temperature/fan-curve
reporting may resolve this without needing new EC register mapping.
Request
Please add 83F3 to the allowlist alongside 83F5 (#385).
Problem Description
Model (Legion Pro 5 16IAX10, 83F3) is not on the EC allowlist. Module
loads and partially functions with force=1: boolean on/off features
and powermode work correctly, but EC-sourced numeric values (CPU/GPU
temp, fan RPM, fan curve table) read as garbage, and rapid-charging
crashes outright. Same EC ID and same brightness bug as #385 (83F5)
— requesting 83F3 be added to the allowlist alongside it.
Has the bug occurred following steps described in the README? Yes —
followed the manual GitHub install steps exactly as documented.
What steps did you take?
test individual features via legion_cli
What was the (full) error you received?
"legion PNP0C09:00: Module is not usable for this laptop because it
is not on allowlist. Need to contact maintainer to add it" (without
force). With force=1: see below for specific per-feature results.
Model and Debug Info
Installation type: via GitHub (manual build from source — no DKMS)
Distribution: Arch Linux x86_64, kernel 6.18.37-1-lts
Model name: Lenovo Legion Pro 5 16IAX10
CPU model: Intel Core Ultra 7 255HX
GPU model: NVIDIA GeForce RTX 5070 Laptop
Keyboard backlight: 4-zone RGB — on/off, rainbow, single-color, and
wave/cycling effects all confirmed working
Light in lid or logo: No (physical "LEGION" cutout, not backlit)
Light at IO-Ports at back: No (aside from the standard AC charge
indicator LED)
Output of
sudo dmidecode -t system:Output of
sudo dmidecode -t bios:Output of
sudo cat /sys/kernel/debug/legion/fancurve:Additional testing (force=1, via legion_cli)
Working: batteryconservation-status, fnlock-status, touchpad-status,
on-power-supply-status (verified to match /sys/class/power_supply/ADP0/online
exactly across AC plug/unplug), monitor (correctly detects dGPU
wakeup/sleep and AC/battery transitions in real time), powermode
(LED color visually confirmed to change correctly per mode)
Broken — numeric values via EC method read as garbage:
temp via coretemp at the same moment was ~44°C
stated max (10000 RPM) by ~80%
= 0, gpu/ic temps = 0, cpu_upper_temp uses index values (1-8)
instead of real degree thresholds. Also logs "ERROR: [Errno 1]
Operation not permitted" mid-read while still reporting success.
Broken — crashes: rapid-charging-status throws
OSError: [Errno 22] Invalid argument
Key observation — possible fix path
The debugfs fancurve dump shows the EC-direct read path returning
garbage for temps/fan curve on this model, while the ACPI path
(temps) and WMI path (fan curve table, powermode) return correct,
plausible values in the very same dump. The driver already defaults
to WMI for powermode on this model and gets the right answer — the
same kind of access-method preference for temperature/fan-curve
reporting may resolve this without needing new EC register mapping.
Request
Please add 83F3 to the allowlist alongside 83F5 (#385).