johnfanv2 / LenovoLegionLinux

Driver and tools for controlling Lenovo Legion laptops in Linux including fan control and power mode.
https://github.com/johnfanv2/LenovoLegionLinux
GNU General Public License v2.0
1.53k stars 55 forks source link

Support for older Legion y720 #72

Open lilongueti opened 1 year ago

lilongueti commented 1 year ago

I know it's an older model, but it always had overheating problems (99 C while gaming) and i was hoping this would help image

Distribution: Pop!_OS 22.04 LTS Model name: Legion Y720 CPU model: Intel i7 7700HQ GPU model: Nvidia GTX 1060 Keyboard backlight: single color with off/medium/bright Light in lid or logo: yes, but i dont think its configurable, at least not on windows Light at IO-Ports at back: no

Output of sudo dmidecode -t system. Please remove Serial Number and UUID for privacy:

# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
    Manufacturer: LENOVO
    Product Name: 80VR
    Version: Lenovo Y720-15IKB
    Serial Number: -
    UUID: -
    Wake-up Type: Power Switch
    SKU Number: LENOVO_MT_80VR_BU_idea_FM_Y720-15IKB
    Family: Y720-15IKB

Handle 0x001F, DMI type 12, 5 bytes
System Configuration Options
    Option 1: ConfigOptions1
    Option 2: ConfigOptions2
    Option 3: ConfigOptions3

Handle 0x0023, 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 0x0030, DMI type 32, 11 bytes
System Boot Information
    Status: No errors detected

Output of sudo dmidecode -t bios:

Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: LENOVO
    Version: 4GCN38WW
    Release Date: 07/18/2018
    Address: 0xE0000
    Runtime Size: 128 kB
    ROM Size: 6 MB
    Characteristics:
        PCI is supported
        BIOS is upgradeable
        BIOS 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
    BIOS Revision: 1.38
    Firmware Revision: 1.38

Handle 0x0020, DMI type 13, 22 bytes
BIOS 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:

doesn't exist
johnfanv2 commented 1 year ago

We can try but I am not sure if all features will work. Which features are the most useful for you?

To this end, please provide the following information so that I can configure the driver:

Inspecting WMI entries

# Install required tools
sudo apt install fwts

# Create folder for all the new files
mkdir fwts_re
cd fwts_re
sudo fwts wmi - > fwts_wmi.log

Then upload files.

Disassembling ACPI tables

# Install requiered tools
sudo apt install acpica-tools
# Create folder for all the new files
mkdir acpi_re
cd acpi_re

# List ACPI tables and copy them
ls /sys/firmware/acpi/tables/
sudo cp --no-preserve=mode /sys/firmware/acpi/tables/*SDT* .

# Disassemble tables to output DSDT.dsl
iasl -e SSDT* -d DSDT

Then upload files.

Gathering WMI info in Windows

If you have Windows, then the following information are very very useful to make use of the ACPI methods. If you do not have Windows skip it. Open powershell as admin in Windows and run the following script. It will list all available lenovo WMI methods. Copy output to a file and upload.

$wmi_classes = Get-WmiObject -Namespace 'ROOT/WMI' -List -Class "*LENOVO*"
foreach ($wmi_class in $wmi_classes){
  Write-Host "########################################"
  Write-Host "########################################"
  Write-Host "########################################"
  Write-Host "Name:" $wmi_class.Name
  Write-Host "Class Name:" $wmi_class.Name 
  Write-Host "Class GUID:" $wmi_class.Qualifiers["guid"].Value
  Write-Host "Description:" $wmi_class.Methods.Count
  Write-Host "Methods:"
  foreach ($method in $wmi_class.Methods){
    Write-Host "Name:" $method.Name
    Write-Host "WmiMethodId:" $method.Qualifiers["WmiMethodId"].Value
    Write-Host "Class Name:" $wmi_class.Name 
    Write-Host "Class GUID:" $wmi_class.Qualifiers["guid"].Value
    Write-Host "Description:" $method.Qualifiers["Description"].Value
    Write-Host "Implemented:" $method.Qualifiers["Implemented"].Value
    Write-Host ""
  }
  Write-Host ""
}

First Debug

I added your model to the driver to get more information. Please get the newest version and try to load it. Then, please provide the output of the following commands:

sudo cat /sys/kernel/debug/legion/ecmemoryram | hexdump -C
sudo cat /sys/kernel/debug/legion/ecmemory | hexdump -C
sudo cat /sys/kernel/debug/legion/fancurve
sudo dmesg | grep legion
lilongueti commented 1 year ago

files.zip

sudo cat /sys/kernel/debug/legion/ecmemoryram | hexdump -C

00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000600

sudo cat /sys/kernel/debug/legion/ecmemory | hexdump -C

00000000  00 00 00 00 00 00 22 00  00 00 00 00 00 49 56 00  |......"......IV.|
00000010  00 00 80 00 05 00 09 02  00 01 07 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000040  00 00 00 00 00 00 00 00  00 00 00 00 71 4d 00 00  |............qM..|
00000050  00 00 00 0f 00 00 56 00  00 00 00 00 00 00 00 00  |......V.........|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080  00 00 00 00 08 00 00 00  80 00 c2 01 00 00 00 53  |...............S|
00000090  4d 50 00 31 31 00 00 00  4c 31 36 4d 34 50 42 30  |MP.11...L16M4PB0|
000000a0  00 08 00 86 00 00 00 61  64 00 00 00 64 25 02 00  |.......ad...d%..|
000000b0  55 00 00 00 00 00 00 00  02 11 00 00 00 00 11 00  |U...............|
000000c0  70 02 cd 07 f7 02 bd 3c  00 3c 70 17 ff 13 27 13  |p......<.<p...'.|
000000d0  fc 05 a7 05 00 00 00 29  3a 06 0b 00 00 00 00 00  |.......):.......|
000000e0  00 00 19 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000f0  01 00 00 00 75 4b 30 43  00 00 00 00 00 00 24 00  |....uK0C......$.|
00000100  82 00 00 00 00 00 03 03  1d 1d 37 1d 1d 1d 25 1d  |..........7...%.|
00000110  fe 00 16 03 00 00 ff 03  00 00 00 00 00 00 00 00  |................|
00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000150  21 29 37 42 48 50 5a 5a  21 29 37 42 48 50 5a 5a  |!)7BHPZZ!)7BHPZZ|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000190  00 1c 24 32 3d 43 4b 55  00 1c 24 32 3d 43 4b 55  |..$2=CKU..$2=CKU|
000001a0  00 13 17 19 1d 1f 21 23  00 10 15 17 1f 21 23 25  |......!#.....!#%|
000001b0  83 0d 46 0e 23 25 07 03  56 00 00 00 00 00 00 00  |..F.#%..V.......|
000001c0  00 00 00 3c 43 50 55 55  00 00 00 3c 43 50 55 55  |...<CPUU...<CPUU|
000001d0  00 00 00 00 37 3e 4b 50  00 00 00 00 37 3e 4b 50  |....7>KP....7>KP|
000001e0  00 00 00 00 1d 1f 21 23  00 00 00 00 1f 21 23 25  |......!#.....!#%|
000001f0  00 00 00 00 cd 07 00 00  03 07 00 00 23 25 5a 5a  |............#%ZZ|
00000200  23 25 00 00 00 00 00 00  00 00 00 00 00 04 00 00  |#%..............|
00000210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000230  00 00 00 00 00 00 00 00  00 00 00 00 00 02 00 00  |................|
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000280  32 fc 64 06 00 00 00 00  00 00 00 00 00 00 00 00  |2.d.............|
00000290  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000002a0  00 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
000002b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000002e0  00 00 00 00 00 00 00 64  00 00 00 00 00 00 00 00  |.......d........|
000002f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000300

sudo cat /sys/kernel/debug/legion/fancurve

EC Chip ID: 8226
EC Chip Version: 1a2
legion_laptop features: fancurve powermode platformprofile platformprofilenotify minifancurve
legion_laptop ec_readonly: 0
ACPI CFG error: 0
ACPI CFG: 3155031318
temperature access method: 1
CPU temperature error: 0
CPU temperature: 33
CPU temperature EC error: 0
CPU temperature EC: 33
CPU temperature ACPI error: 0
CPU temperature ACPI: 94
CPU temperature WMI error: 0
CPU temperature WMI: 0
CPU temperature WMI2 error: -14
CPU temperature WMI2: 0
CPU temperature WMI3 error: -14
CPU temperature WMI3: 0
GPU temperature error: 0
GPU temperature: 35
GPU temperature EC error: 0
GPU temperature EC: 35
GPU temperature ACPI error: -5
GPU temperature ACPI: 35
GPU temperature WMI error: 0
GPU temperature WMI: 0
GPU temperature WMI2 error: -14
GPU temperature WMI2: 0
GPU temperature WMI3 error: -14
GPU temperature WMI3: 0
fan speed access method: 1
1 fanspeed error: 0
1 fanspeed: 0
1 fanspeed EC error: 0
1 fanspeed EC: 0
1 fanspeed ACPI error: 0
1 fanspeed ACPI: 3400
1 fanspeed WMI error: 0
1 fanspeed WMI: 3400
1 fanspeed WMI2 error: -14
1 fanspeed WMI2: 3400
1 fanspeed WMI3 error: -14
1 fanspeed WMI3: 3400
2 fanspeed error: 0
2 fanspeed: 0
2 fanspeed EC error: 0
2 fanspeed EC: 0
2 fanspeed ACPI error: 0
2 fanspeed ACPI: 3600
2 fanspeed WMI error: 0
2 fanspeed WMI: 3600
2 fanspeed WMI2 error: -14
2 fanspeed WMI2: 3600
2 fanspeed WMI3 error: -14
2 fanspeed WMI3: 3600
powermode access method: 3
powermode error: 0
powermode: 0
powermode EC error: 0
powermode EC: 0
powermode ACPI error: -5
powermode ACPI: 0
powermode WMI error: 0
powermode WMI: 0
has custom powermode: 1
ACPI rapidcharge error: 0
ACPI rapidcharge: 0
WMI backlight 2 state: 0
WMI backlight 3 state: -5
WMI light IO port: -5
WMI light y logo/lid: -5
EC minifancurve feature enabled: 1
EC minifancurve on cool: error
EC lockfancontroller error: 0
EC lockfancontroller: false
EC fanfullspeed error: false
EC fanfullspeed status: 0
EC fan curve current point id: 0
EC fan curve points size: 0
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
=====================
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
=====================

sudo dmesg | grep legion

[ 1191.727387] legion_laptop: legion_laptop starts loading
[ 1191.727449] legion PNP0C09:00: legion_laptop platform driver probing
[ 1191.727452] legion PNP0C09:00: Read identifying information: DMI_SYS_VENDOR: LENOVO; DMI_PRODUCT_NAME: 80VR; DMI_BIOS_VERSION:4GCN38WW
[ 1191.727454] legion_laptop: Read identifying information: DMI_SYS_VENDOR: LENOVO; DMI_PRODUCT_NAME: 80VR; DMI_BIOS_VERSION:4GCN38WW
[ 1191.727458] legion PNP0C09:00: is_denied: 0; is_allowed: 1; do_load_by_list: 1; do_load: 1
[ 1191.727461] legion PNP0C09:00: Using configuration for system: 4GCN
[ 1191.727509] legion PNP0C09:00: ACPI CFG: 3155031318
[ 1191.727511] legion_laptop: Creating RAM access to embedded controller
[ 1191.727528] legion_laptop: Succeffuly mapped embedded controller: 0xfe00d400 (in RAM)/0x0 (in EC) to virtual 0x000000000826a862
[ 1191.727675] legion PNP0C09:00: Read embedded controller ID 0x8226
[ 1191.727677] legion PNP0C09:00: Creating debugfs inteface
[ 1191.727690] legion_laptop: Creating sysfs inteface
[ 1191.727712] legion_laptop: Creating hwmon interface
[ 1191.727884] legion_laptop: Creating platform profile support
[ 1191.727889] legion_laptop: Init WMI driver support
[ 1191.727924] legion_wmi 887B54E3-DDDC-4B2C-8B88-68A26A8835D0: Register after probing for WMI.
[ 1191.727973] legion_wmi BFD42481-AEE3-4501-A107-AFB68425C5F8: Register after probing for WMI.
[ 1191.727996] legion_wmi D062906B-12D4-4510-999D-4831EE80E985: Register after probing for WMI.
[ 1191.728014] legion_wmi BFD42481-AEE3-4502-A107-AFB68425C5F8: Register after probing for WMI.
[ 1191.728037] legion_wmi BC72A435-E8C1-4275-B3E2-D8B8074ABA59: Register after probing for WMI.
[ 1191.728057] legion_wmi 10AFC6D9-EA8B-4590-A2E7-1CD3C84BB4B1: Register after probing for WMI.
[ 1191.728084] legion_laptop: Init keyboard backlight LED driver
[ 1191.728087] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[ 1191.728089] legion_laptop: Error for WMI method call to get brightness
[ 1191.728090] legion_laptop: Error reading keyboard brighntess
[ 1191.728091] legion PNP0C09:00: Init keyboard backlight LED driver failed. Skipping ...
[ 1191.728093] legion_laptop: Init Y-Logo LED driver
[ 1191.728094] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[ 1191.728096] legion_laptop: Error for WMI method call to get brightness
[ 1191.728097] legion_laptop: Error reading brighntess for light: 3
[ 1191.728098] legion PNP0C09:00: Init Y-Logo LED driver failed. Skipping ...
[ 1191.728100] legion_laptop: Init IO-Port LED driver
[ 1191.728101] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[ 1191.728103] legion_laptop: Error for WMI method call to get brightness
[ 1191.728103] legion_laptop: Error reading brighntess for light: 5
[ 1191.728105] legion PNP0C09:00: Init IO-Port LED driver failed. Skipping ...
[ 1191.728106] legion PNP0C09:00: legion_laptop loaded for this device
[ 2804.066647] legion_laptop: WMI evaluation error for: 92549549-4bde-4f06-ac04-ce8bf898dbaa:8
[ 2804.066651] legion_laptop: WMI evaluation error for: dc2a8805-3a8c-41ba-a6f7-092e0089cd3b:17
[ 2804.066894] legion_laptop: WMI evaluation error for: 92549549-4bde-4f06-ac04-ce8bf898dbaa:8
[ 2804.066897] legion_laptop: WMI evaluation error for: dc2a8805-3a8c-41ba-a6f7-092e0089cd3b:17
[ 2804.067281] legion_laptop: WMI evaluation error for: 92549549-4bde-4f06-ac04-ce8bf898dbaa:7
[ 2804.067283] legion_laptop: WMI evaluation error for: dc2a8805-3a8c-41ba-a6f7-092e0089cd3b:17
[ 2804.067702] legion_laptop: WMI evaluation error for: 92549549-4bde-4f06-ac04-ce8bf898dbaa:7
[ 2804.067705] legion_laptop: WMI evaluation error for: dc2a8805-3a8c-41ba-a6f7-092e0089cd3b:17
[ 2804.068438] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[ 2804.068441] legion_laptop: Error for WMI method call to get brightness
[ 2804.068442] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[ 2804.068444] legion_laptop: Error for WMI method call to get brightness
[ 2804.068445] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[ 2804.068446] legion_laptop: Error for WMI method call to get brightness
[ 2804.068517] legion_laptop: Unexpected value in MINIFANCURVE register:0
[ 2804.075799] legion_laptop: Size of object: 48
[ 2804.075807] legion_laptop: ACPI evaluation error for: 92549549-4bde-4f06-ac04-ce8bf898dbaa:5
[ 2804.075810] legion_laptop fan table wmi buffer00000000e6651b36: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[ 2804.075814] legion_laptop fan table wmi buffer000000001ce4a090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[ 2804.075816] legion_laptop fan table wmi buffer000000008ee8fcc5: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[ 2804.075819] legion_laptop fan table wmi buffer00000000fd9daa0b: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[ 2804.075821] legion_laptop fan table wmi buffer00000000eea50ed3: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[ 2804.075823] legion_laptop fan table wmi buffer000000005eadaa2e: 00 00 00 00 00 00 00 00
johnfanv2 commented 1 year ago

Log output look promising. I guess fan control might work.

Please upload the files to github, e.g. as a zip file, so they will be stored for a longer period combined with this repo. You can do that by drag/dropping them into the text field.

lilongueti commented 1 year ago

i've updated the comment with the zip file, as for which features are the most useful for me, its just the fan curve really, it's sub woofer has never worked under linux (i've tried with hdajackretask), but i'm guessing this isn't related to this chip and outside the scope of this repo

MrDuartePT commented 11 months ago

@lilongueti you can test with the latest commit if features work?

lilongueti commented 10 months ago

it doesnt seem to be much diffrent, however i tried poking /sys/module/legion_laptop/drivers/platform\:legion/PNP0C09\:00/hwmon/hwmon6/pwm*_auto_point*_pwm with diffrent values, but it does weird things, it seems like no matter what value i put it just stops the fan for a couple seconds and then goes back to regular speed, besides it was first running the left fan, then i rebooted and now its doing the same thing with the right one and the left one doesnt move at all even with a load, also pwm1 and pwm2 seems to behave as the same thing, also it does the same on points 2-9, point1 doesn't do anything

sudo cat /sys/kernel/debug/legion/ecmemoryram | hexdump -C

00000000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000600

sudo cat /sys/kernel/debug/legion/ecmemory | hexdump -C

00000000  00 01 00 00 00 00 00 00  00 00 10 00 00 24 2c 00  |.............$,.|
00000010  00 00 80 00 05 00 09 02  00 01 07 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000040  00 00 00 00 00 00 00 00  00 00 00 00 71 4d 00 00  |............qM..|
00000050  00 00 00 22 00 00 2c 00  00 00 00 00 00 00 00 00  |..."..,.........|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080  00 00 00 00 08 00 00 00  c0 00 c2 01 00 00 00 53  |...............S|
00000090  4d 50 00 31 31 00 00 00  4c 31 36 4d 34 50 42 30  |MP.11...L16M4PB0|
000000a0  00 08 00 06 00 00 00 61  64 00 00 00 64 25 00 00  |.......ad...d%..|
000000b0  2c 00 00 00 00 00 00 00  02 11 00 00 00 00 01 00  |,...............|
000000c0  74 01 17 08 f7 02 71 39  00 3c 70 17 95 11 2e 24  |t.....q9.<p....$|
000000d0  2a fa f5 f9 00 00 00 1d  a5 05 00 00 00 00 00 00  |*...............|
000000e0  00 00 18 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000f0  01 00 00 00 75 4b 30 43  00 00 00 00 00 00 15 00  |....uK0C........|
00000100  82 00 00 00 00 00 06 06  1d 1d 1d 25 25 25 1e 1d  |...........%%%..|
00000110  06 00 be 03 00 00 ff 03  00 00 00 00 00 00 00 00  |................|
00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000130  00 00 00 00 00 00 04 00  00 00 00 00 00 00 00 00  |................|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000150  00 00 00 00 00 00 00 00  00 00 37 42 48 50 5a 5a  |..........7BHPZZ|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000190  00 00 00 00 00 00 00 00  00 00 24 32 3d 43 4b 55  |..........$2=CKU|
000001a0  00 00 00 00 00 00 00 00  00 00 15 17 1f 21 23 25  |.............!#%|
000001b0  00 00 70 08 00 15 07 00  2c 00 00 00 00 00 00 00  |..p.....,.......|
000001c0  00 00 00 00 00 00 00 00  00 00 00 3c 43 50 55 55  |...........<CPUU|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 37 3e 4b 50  |............7>KP|
000001e0  00 00 00 00 1d 1f 21 23  00 00 00 00 1f 21 23 25  |......!#.....!#%|
000001f0  00 00 00 00 17 08 00 00  03 02 00 00 00 15 19 46  |...............F|
00000200  00 15 00 00 00 00 00 00  00 00 00 00 00 04 00 00  |................|
00000210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000230  00 00 00 00 00 00 00 00  00 00 00 00 00 02 00 00  |................|
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000280  fe f1 64 06 00 00 00 00  00 00 00 00 00 00 00 00  |..d.............|
00000290  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000002a0  00 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
000002b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000002e0  00 00 00 00 00 00 00 64  00 00 00 00 00 00 00 00  |.......d........|
000002f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000300

fancurve

EC Chip ID: 8226
EC Chip Version: 1a2
legion_laptop features: fancurve powermode platformprofile platformprofilenotify minifancurve
legion_laptop ec_readonly: 0
ACPI CFG error: 0
ACPI CFG: 3155031318
temperature access method: 1
CPU temperature error: 0
CPU temperature: 33
CPU temperature EC error: 0
CPU temperature EC: 33
CPU temperature ACPI error: 0
CPU temperature ACPI: 42
CPU temperature WMI error: 0
CPU temperature WMI: 0
CPU temperature WMI2 error: -14
CPU temperature WMI2: 0
CPU temperature WMI3 error: -14
CPU temperature WMI3: 0
GPU temperature error: 0
GPU temperature: 35
GPU temperature EC error: 0
GPU temperature EC: 35
GPU temperature ACPI error: -5
GPU temperature ACPI: 35
GPU temperature WMI error: 0
GPU temperature WMI: 0
GPU temperature WMI2 error: -14
GPU temperature WMI2: 0
GPU temperature WMI3 error: -14
GPU temperature WMI3: 0
fan speed access method: 1
1 fanspeed error: 0
1 fanspeed: 0
1 fanspeed EC error: 0
1 fanspeed EC: 0
1 fanspeed ACPI error: 0
1 fanspeed ACPI: 0
1 fanspeed WMI error: 0
1 fanspeed WMI: 0
1 fanspeed WMI2 error: -14
1 fanspeed WMI2: 0
1 fanspeed WMI3 error: -14
1 fanspeed WMI3: 0
2 fanspeed error: 0
2 fanspeed: 0
2 fanspeed EC error: 0
2 fanspeed EC: 0
2 fanspeed ACPI error: 0
2 fanspeed ACPI: 2100
2 fanspeed WMI error: 0
2 fanspeed WMI: 2100
2 fanspeed WMI2 error: -14
2 fanspeed WMI2: 2100
2 fanspeed WMI3 error: -14
2 fanspeed WMI3: 2100
powermode access method: 3
powermode error: 0
powermode: 0
powermode EC error: 0
powermode EC: 0
powermode ACPI error: -5
powermode ACPI: 0
powermode WMI error: 0
powermode WMI: 0
has custom powermode: 1
ACPI rapidcharge error: 0
ACPI rapidcharge: 0
WMI backlight 2 state: 0
WMI backlight 3 state: -5
WMI light IO port: -5
WMI light Y logo/lid: -5
EC minifancurve feature enabled: 1
EC minifancurve on cool: true
EC lockfancontroller error: 0
EC lockfancontroller: false
fanfullspeed error: -22
fanfullspeed: 0
fanfullspeed EC error: 0
fanfullspeed EC: 0
EC fan curve current point id: 0
EC fan curve points size: 0
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
=====================
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
=====================

dmesg

[   35.551905] legion_laptop: Loading legion_laptop
[   35.551960] legion PNP0C09:00: legion_laptop platform driver probing
[   35.551962] legion PNP0C09:00: Read identifying information: DMI_SYS_VENDOR: LENOVO; DMI_PRODUCT_NAME: 80VR; DMI_BIOS_VERSION:4GCN38WW
[   35.551964] legion_laptop: Read identifying information: DMI_SYS_VENDOR: LENOVO; DMI_PRODUCT_NAME: 80VR; DMI_BIOS_VERSION:4GCN38WW
[   35.551968] legion PNP0C09:00: is_denied: 0; is_allowed: 1; do_load_by_list: 1; do_load: 1
[   35.551970] legion PNP0C09:00: Using configuration for system: 4GCN
[   35.552006] legion PNP0C09:00: ACPI CFG: 3155031318
[   35.552008] legion_laptop: Creating RAM access to embedded controller
[   35.552020] legion_laptop: Successfully mapped embedded controller: 0xfe00d400 (in RAM)/0x0 (in EC) to virtual 0x00000000d3a98658
[   35.552161] legion PNP0C09:00: Read embedded controller ID 0x8226
[   35.552163] legion PNP0C09:00: Creating debugfs interface
[   35.552170] legion_laptop: Creating sysfs interface
[   35.552186] legion_laptop: Creating hwmon interface
[   35.552291] legion_laptop: Creating platform profile support
[   35.552294] legion_laptop: Init WMI driver support
[   35.552324] legion_wmi 887B54E3-DDDC-4B2C-8B88-68A26A8835D0: Register after probing for WMI.
[   35.552349] legion_wmi BFD42481-AEE3-4501-A107-AFB68425C5F8: Register after probing for WMI.
[   35.552363] legion_wmi D062906B-12D4-4510-999D-4831EE80E985: Register after probing for WMI.
[   35.552376] legion_wmi BFD42481-AEE3-4502-A107-AFB68425C5F8: Register after probing for WMI.
[   35.552387] legion_wmi BC72A435-E8C1-4275-B3E2-D8B8074ABA59: Register after probing for WMI.
[   35.552399] legion_wmi 10AFC6D9-EA8B-4590-A2E7-1CD3C84BB4B1: Register after probing for WMI.
[   35.552417] legion_laptop: Init keyboard backlight LED driver
[   35.552420] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[   35.552421] legion_laptop: Error for WMI method call to get brightness
[   35.552422] legion_laptop: Error reading keyboard brightness
[   35.552422] legion PNP0C09:00: Failed to init keyboard backlight LED driver. Skipping ...
[   35.552423] legion_laptop: Init Y-Logo LED driver
[   35.552424] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[   35.552425] legion_laptop: Error for WMI method call to get brightness
[   35.552426] legion_laptop: Error reading brightness for light: 3
[   35.552427] legion PNP0C09:00: Failed to init Y-Logo LED driver. Skipping ...
[   35.552428] legion_laptop: Init IO-Port LED driver
[   35.552429] legion_laptop: ACPI evaluation error for: 8C5B9127-ECD4-4657-980F-851019F99CA5:1
[   35.552430] legion_laptop: Error for WMI method call to get brightness
[   35.552430] legion_laptop: Error reading brightness for light: 5
[   35.552431] legion PNP0C09:00: Failed to init IO-Port LED driver. Skipping ...
[   35.552432] legion PNP0C09:00: legion_laptop loaded for this device
[  399.711094] legion_laptop: Set fancurve
[  452.631225] legion_laptop: Set fancurve
[  469.843168] legion_laptop: Set fancurve
[  512.423389] legion_laptop: Set fancurve
maxinne-dev commented 5 months ago

Hi,

So, I tried to run on my Y720, but was unsuccessful, just like @lilongueti. Fortunately, I have an image from the original disk that came with it, so I booted it up, and got the WMI from windows and some WMI logs as well.

Interestingly, I noticed that the module echoes PNP0C09:00, and windows event log uses PNP0C14, so it maybe the problem for us...

Thanks @johnfanv2 and @MrDuartePT for your continued support!

Here is the data I got: WMI Fan Event

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Events>
    <Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>
        <System>
            <Provider Name='Microsoft-Windows-WMI-Activity'
                Guid='{1418ef04-b0b4-4623-bf7e-d74ab47bbdaa}' />
            <EventID>12</EventID>
            <Version>0</Version>
            <Level>4</Level>
            <Task>0</Task>
            <Opcode>0</Opcode>
            <Keywords>0x8000000000000000</Keywords>
            <TimeCreated SystemTime='2024-04-20T21:21:33.4139462Z' />
            <EventRecordID>28</EventRecordID>
            <Correlation ActivityID='{7470b5d2-91ad-4089-a605-01da43274e57}' />
            <Execution ProcessID='4112' ThreadID='11944' />
            <Channel>Microsoft-Windows-WMI-Activity/Trace</Channel>
            <Computer>LAPTOP-********</Computer>
            <Security UserID='S-1-5-18' />
        </System>
        <UserData>
            <Operation_Provider_Info_New xmlns='http://manifests.microsoft.com/win/2006/windows/WMI'>
                <GroupOperationId>815</GroupOperationId>
                <Operation>Provider::ExecMethod - WMIProv :
                    LENOVO_GAMEZONE_DATA.InstanceName="ACPI\\PNP0C14\\GMZN_0"::GetFanCoolingStatus</Operation>
                <HostId>9280</HostId>
                <ProviderName>WMIProv</ProviderName>
                <ProviderGuid>{D2D588B5-D081-11d0-99E0-00C04FC2F8EC}</ProviderGuid>
                <Path>%systemroot%\system32\wbem\wmiprov.dll</Path>
            </Operation_Provider_Info_New>
        </UserData>
    </Event>
</Events>

Windows Powershell Script Result

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_FAN_COOLING_EVENT
Class Name: LENOVO_GAMEZONE_FAN_COOLING_EVENT
Class GUID: {BC72A435-E8C1-4275-B3E2-D8B8074ABA59}
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_KEYLOCK_STATUS_EVENT
Class Name: LENOVO_GAMEZONE_KEYLOCK_STATUS_EVENT
Class GUID: {10AFC6D9-EA8B-4590-A2E7-1CD3C84BB4B1}
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_TEMP_EVENT
Class Name: LENOVO_GAMEZONE_TEMP_EVENT
Class GUID: {BFD42481-AEE3-4501-A107-AFB68425C5F8}
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_OC_EVENT
Class Name: LENOVO_GAMEZONE_OC_EVENT
Class GUID: {D062906B-12D4-4510-999D-4831EE80E985}
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_GPU_TEMP_EVENT
Class Name: LENOVO_GAMEZONE_GPU_TEMP_EVENT
Class GUID: {BFD42481-AEE3-4502-A107-AFB68425C5F8}
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_DATA
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: 30
Methods:
Name: GetIRTemp
WmiMethodId: 1
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get IR temp
Implemented: True

Name: GetThermalTableID
WmiMethodId: 2
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get ThermalTable ID
Implemented: True

Name: SetThermalTableID
WmiMethodId: 3
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Set ThermalTable ID
Implemented: True

Name: IsSupportGpuOC
WmiMethodId: 4
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Is SupportGpu OverClock
Implemented: True

Name: GetGpuGpsState
WmiMethodId: 5
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get GpuGpsState
Implemented: True

Name: SetGpuGpsState
WmiMethodId: 6
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Set GpuGpsState
Implemented: True

Name: GetFanCount
WmiMethodId: 7
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get Fan Count
Implemented: True

Name: GetFan1Speed
WmiMethodId: 8
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get Fan1 Speed
Implemented: True

Name: GetFan2Speed
WmiMethodId: 9
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get Fan2 Speed
Implemented: True

Name: GetFanMaxSpeed
WmiMethodId: 10
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get Fan Max Speed
Implemented: True

Name: GetVersion
WmiMethodId: 11
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get AslCode Version
Implemented: True

Name: IsSupportFanCooling
WmiMethodId: 12
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Fan cooling capabilty
Implemented: True

Name: SetFanCooling
WmiMethodId: 13
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Set Fan cooling on/off
Implemented: True

Name: IsSupportCpuOC
WmiMethodId: 14
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: cpu oc capability
Implemented: True

Name: IsBIOSSupportOC
WmiMethodId: 15
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: bios has overclock capability
Implemented: True

Name: SetBIOSOC
WmiMethodId: 16
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: enble or disable overclock in bios
Implemented: True

Name: GetTriggerTemperatureValue
WmiMethodId: 17
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get temperature change trigger temp value
Implemented: True

Name: GetCPUTemp
WmiMethodId: 18
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get CPU temperature
Implemented: True

Name: GetGPUTemp
WmiMethodId: 19
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get GPU temperature
Implemented: True

Name: GetFanCoolingStatus
WmiMethodId: 20
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get Fan cooling on/off status
Implemented: True

Name: IsSupportDisableWinKey
WmiMethodId: 21
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: EC support disable windows key capability
Implemented: True

Name: SetWinKeyStatus
WmiMethodId: 22
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Set windows key disable/enable
Implemented: True

Name: GetWinKeyStatus
WmiMethodId: 23
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get windows key disable/enable status
Implemented: True

Name: IsSupportDisableTP
WmiMethodId: 24
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: EC support disable touchpad capability
Implemented: True

Name: SetTPStatus
WmiMethodId: 25
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Set touchpad disable/enable
Implemented: True

Name: GetTPStatus
WmiMethodId: 26
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get touchpad disable/enable status
Implemented: True

Name: GetGPUPow
WmiMethodId: 27
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get GPU normal mode max TDP(W)
Implemented: True

Name: GetGPUOCPow
WmiMethodId: 28
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get GPU OC mode max TDP(W)
Implemented: True

Name: GetGPUOCType
WmiMethodId: 29
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get GPU OC Type
Implemented: True

Name: GetKeyboardfeaturelist
WmiMethodId: 30
Class Name: LENOVO_GAMEZONE_DATA
Class GUID: {887B54E3-DDDC-4B2C-8B88-68A26A8835D0}
Description: Get Keyboard Feature List
Implemented: True

##############################################
##############################################
##############################################
Name: Lenovo_SystemElement
Class Name: Lenovo_SystemElement
Class GUID:
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: Lenovo_BatteryInformation
Class Name: Lenovo_BatteryInformation
Class GUID: C3A03776-51AC-49AA-AD0F-F2F7D62C3F3C
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_CPU_OC_DATA
Class Name: LENOVO_GAMEZONE_CPU_OC_DATA
Class GUID: {887B54E1-DDDC-4B2C-8B88-68A26A8835D0}
Description: 0
Methods:

##############################################
##############################################
##############################################
Name: LENOVO_GAMEZONE_GPU_OC_DATA
Class Name: LENOVO_GAMEZONE_GPU_OC_DATA
Class GUID: {887B54E2-DDDC-4B2C-8B88-68A26A8835D0}
Description: 0
Methods: