LenovoLegionLinux
LenovoLegionLinux copied to clipboard
Lenovo Legion Pro 7 16IRX8H on NixOS
The Software is work partially. Is use the gui package from: https://search.nixos.org/packages?channel=unstable&show=lenovo-legion&from=0&size=50&sort=relevance&type=packages&query=lenovo+legion
The Kernel (6.5.8) is patched manually in the nix configuration with:
boot.kernelPatches = [
{
# audio patch
name = "0001-Add-legion-laptop-v0.0.9";
patch = ./0001-Add-legion-laptop-v0.0.9.patch;
}
];
Output of dmesg | grep 'legion':
[ 13.527187] legion_laptop: legion_laptop starts loading
[ 13.527388] legion PNP0C09:00: legion_laptop platform driver probing
[ 13.527390] legion PNP0C09:00: Read identifying information: DMI_SYS_VENDOR: LENOVO; DMI_PRODUCT_NAME: 82WQ; DMI_BIOS_VERSION:KWCN38WW
[ 13.527392] legion_laptop: Read identifying information: DMI_SYS_VENDOR: LENOVO; DMI_PRODUCT_NAME: 82WQ; DMI_BIOS_VERSION:KWCN38WW
[ 13.527394] legion PNP0C09:00: is_denied: 0; is_allowed: 1; do_load_by_list: 1; do_load: 1
[ 13.527396] legion PNP0C09:00: Using configuration for system: KWCN
[ 13.527414] legion PNP0C09:00: ACPI CFG: 2081289494
[ 13.527415] legion_laptop: Creating RAM access to embedded controller
[ 13.527421] legion_laptop: Succeffuly mapped embedded controller: 0xfe0b0400 (in RAM)/0x0 (in EC) to virtual 0x000000006444867e
[ 13.527661] legion PNP0C09:00: Read embedded controller ID 0x5507
[ 13.527662] legion PNP0C09:00: Creating debugfs inteface
[ 13.527667] legion_laptop: Creating sysfs inteface
[ 13.527775] legion_laptop: Creating hwmon interface
[ 13.527852] legion_laptop: Creating platform profile support
[ 13.527853] legion_laptop: Init WMI driver support
[ 13.527863] legion_wmi 887B54E3-DDDC-4B2C-8B88-68A26A8835D0: Register after probing for WMI.
[ 13.527879] legion_wmi 10AFC6D9-EA8B-4590-A2E7-1CD3C84BB4B1: Register after probing for WMI.
[ 13.527888] legion_wmi D320289E-8FEA-41E0-86F9-611D83151B5F: Register after probing for WMI.
[ 13.527908] legion_wmi 8FC0DE0C-B4E4-43FD-B0F3-8871711C1294: Register after probing for WMI.
[ 13.527921] legion_laptop: Init keyboard backlight LED driver
[ 13.528407] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 13.528825] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 13.528826] legion_laptop: Init Y-Logo LED driver
[ 13.529310] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 13.529594] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 13.529596] legion_laptop: Init IO-Port LED driver
[ 13.529614] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 13.529615] legion_laptop: Error WMI call for reading brightness: expected a value between 1 and 2, but got 0
[ 13.529616] legion_laptop: Error reading brighntess for light: 5
[ 13.529617] legion PNP0C09:00: Init IO-Port LED driver failed. Skipping ...
[ 13.529618] legion PNP0C09:00: legion_laptop loaded for this device
[ 14.090059] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 14.964757] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 17.990066] legion_laptop: Set powermode
[ 18.245430] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
[ 24.803013] legion_laptop: ACPI result for 8C5B9127-ECD4-4657-980F-851019F99CA5:1: ACPI buffer length: 2
Output of sudo cat /sys/kernel/debug/legion/fancurve:
EC Chip ID: 5507
EC Chip Version: 2a4
legion_laptop features: fancurve powermode platformprofile platformprofilenotify minifancurve
legion_laptop ec_readonly: 0
ACPI CFG error: 0
ACPI CFG: 2081289494
temperature access method: 5
CPU temperature error: 0
CPU temperature: 51
CPU temperature EC error: 0
CPU temperature EC: 80
CPU temperature ACPI error: 0
CPU temperature ACPI: 51
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: 51
GPU temperature error: 0
GPU temperature: 41
GPU temperature EC error: 0
GPU temperature EC: 87
GPU temperature ACPI error: 0
GPU temperature ACPI: 41
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: 41
fan speed access method: 5
1 fanspeed error: 0
1 fanspeed: 1700
1 fanspeed EC error: 0
1 fanspeed EC: 18039
1 fanspeed ACPI error: 0
1 fanspeed ACPI: 1700
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: 1700
2 fanspeed error: 0
2 fanspeed: 1700
2 fanspeed EC error: 0
2 fanspeed EC: 14083
2 fanspeed ACPI error: 0
2 fanspeed ACPI: 1700
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: 1700
powermode access method: 3
powermode error: 0
powermode: 3
powermode EC error: 0
powermode EC: 1
powermode ACPI error: -5
powermode ACPI: 0
powermode WMI error: 0
powermode WMI: 3
has custom powermode: 1
ACPI rapidcharge error: 0
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: 0
EC minifancurve on cool: error
EC lockfancontroller error: 0
EC lockfancontroller: false
fanfullspeed error: 0
fanfullspeed: 0
fanfullspeed EC error: 0
fanfullspeed EC: 0
EC fan curve current point id: 0
EC fan curve points size: 10
Current fan curve in hardware:
rpm1|rpm2|acceleration|deceleration|cpu_min_temp|cpu_max_temp|gpu_min_temp|gpu_max_temp|ic_min_temp|ic_max_temp
100 0 0 0 0 0 0 0 0 0
1500 0 0 0 0 0 0 0 0 0
1700 0 0 0 0 0 0 0 0 0
400 0 0 0 0 0 0 0 0 0
500 0 0 0 0 0 0 0 0 0
600 0 0 0 0 0 0 0 0 0
700 0 0 0 0 0 0 0 0 0
800 0 0 0 0 0 0 0 0 0
800 0 0 0 0 0 0 0 0 0
800 0 0 0 0 0 0 0 0 0
=====================
Current fan curve in hardware (WMI; might be empty)
rpm1|rpm2|acceleration|deceleration|cpu_min_temp|cpu_max_temp|gpu_min_temp|gpu_max_temp|ic_min_temp|ic_max_temp
100 0 0 0 0 0 0 0 0 0
1500 0 0 0 0 0 0 0 0 0
1700 0 0 0 0 0 0 0 0 0
400 0 0 0 0 0 0 0 0 0
500 0 0 0 0 0 0 0 0 0
600 0 0 0 0 0 0 0 0 0
700 0 0 0 0 0 0 0 0 0
800 0 0 0 0 0 0 0 0 0
800 0 0 0 0 0 0 0 0 0
800 0 0 0 0 0 0 0 0 0
=====================
Output of Sensors:
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: +45.0°C
BAT0-acpi-0
Adapter: ACPI interface
in0: 16.71 V
nvme-pci-0600
Adapter: PCI adapter
Composite: +40.9°C (low = -273.1°C, high = +81.8°C)
(crit = +84.8°C)
Sensor 1: +40.9°C (low = -273.1°C, high = +65261.8°C)
Sensor 2: +41.9°C (low = -273.1°C, high = +65261.8°C)
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +54.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +39.0°C (high = +100.0°C, crit = +100.0°C)
Core 4: +44.0°C (high = +100.0°C, crit = +100.0°C)
Core 8: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 12: +46.0°C (high = +100.0°C, crit = +100.0°C)
Core 16: +46.0°C (high = +100.0°C, crit = +100.0°C)
Core 20: +45.0°C (high = +100.0°C, crit = +100.0°C)
Core 24: +47.0°C (high = +100.0°C, crit = +100.0°C)
Core 28: +46.0°C (high = +100.0°C, crit = +100.0°C)
Core 32: +52.0°C (high = +100.0°C, crit = +100.0°C)
Core 33: +52.0°C (high = +100.0°C, crit = +100.0°C)
Core 34: +52.0°C (high = +100.0°C, crit = +100.0°C)
Core 35: +52.0°C (high = +100.0°C, crit = +100.0°C)
Core 36: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 37: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 38: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 39: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 40: +47.0°C (high = +100.0°C, crit = +100.0°C)
Core 41: +47.0°C (high = +100.0°C, crit = +100.0°C)
Core 42: +47.0°C (high = +100.0°C, crit = +100.0°C)
Core 43: +47.0°C (high = +100.0°C, crit = +100.0°C)
Core 44: +48.0°C (high = +100.0°C, crit = +100.0°C)
Core 45: +49.0°C (high = +100.0°C, crit = +100.0°C)
Core 46: +49.0°C (high = +100.0°C, crit = +100.0°C)
Core 47: +49.0°C (high = +100.0°C, crit = +100.0°C)
legion_hwmon-isa-0000
Adapter: ISA adapter
Fan 1: 0 RPM
Fan 2: 0 RPM
CPU Temperature: +56.0°C
GPU Temperature: +45.0°C
IC Temperature: +55.0°C
nvme-pci-7c00
Adapter: PCI adapter
Composite: +34.9°C (low = -273.1°C, high = +81.8°C)
(crit = +84.8°C)
Sensor 1: +34.9°C (low = -273.1°C, high = +65261.8°C)
Sensor 2: +36.9°C (low = -273.1°C, high = +65261.8°C)
Behaviour in GUI:
Crash when loading from config:
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
QStandardPaths: runtime directory '/run/user/1000' is not owned by UID 0, but a directory permissions 0700 owned by UID 1000 GID 100
Create path /root/.config/legion_linux
Traceback (most recent call last):
File "/nix/store/6sxf2yzjl9rjxqfg0ynmlp8qj1a1rdkh-lenovo-legion-app-0.0.5/lib/python3.11/site-packages/legion_gui.py", line 80, in on_load_from_preset
self.model.load_fancurve_from_preset(name)
File "/nix/store/6sxf2yzjl9rjxqfg0ynmlp8qj1a1rdkh-lenovo-legion-app-0.0.5/lib/python3.11/site-packages/legion.py", line 471, in load_fancurve_from_preset
self.fan_curve = self.fancurve_repo.load_by_name(name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/6sxf2yzjl9rjxqfg0ynmlp8qj1a1rdkh-lenovo-legion-app-0.0.5/lib/python3.11/site-packages/legion.py", line 418, in load_by_name
return FanCurve.load_from_file(self._name_to_filename(name))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/6sxf2yzjl9rjxqfg0ynmlp8qj1a1rdkh-lenovo-legion-app-0.0.5/lib/python3.11/site-packages/legion.py", line 49, in load_from_file
with open(filename, 'r', encoding=DEFAULT_ENCODING) as filepointer:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/root/.config/legion_linux/performance-ac.yaml'
Aborted (core dumped)
Battery conservation works. Read from HW displayes values in first Row. Setting does not appear to work.
Unreleated question: My fn + q gives no visual feedback and based on this outputs it my not do anything but on the other hand it might do something - how can I validate ?
I'm here for further testing and assistance. Thank you in advance!
Unreleated question: My fn + q gives no visual feedback and based on this outputs it my not do anything but on the other hand it might do something - how can I validate ?
I think that's dependent on the desktop environment.