LenovoLegionLinux icon indicating copy to clipboard operation
LenovoLegionLinux copied to clipboard

Lenovo Legion Pro 7 16IRX8H on NixOS

Open ComputerCrack opened this issue 1 year ago • 1 comments

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!

ComputerCrack avatar Oct 26 '23 13:10 ComputerCrack

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.

MasterKia avatar Oct 26 '23 14:10 MasterKia