Skip to content

[Hardware Support] Legion Pro 5 16IAX10 (83F3) - Working with force=1 #471

Description

@inermage

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?

  1. git clone https://github.com/johnfanv2/LenovoLegionLinux.git
  2. cd LenovoLegionLinux/kernel_module && make && sudo make reloadmodule
  3. Hit allowlist rejection, reloaded with force=1
  4. Verified via dmesg, sensors, and sudo cat /sys/kernel/debug/legion/fancurve
  5. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions