Hello,
I've been trying to create a config for my Lenovo Yoga 910-13IKB for a couple of days but I got stuck.
First thing I did was, obviously, try out all other available configs. None worked.
Then using RWEverything I opened all the ACPI tables on my computer, after extracting the DSDT table I found nothing but 1 register that seemed related to the fan, "CFAN" it is 1 bit long and changing it doesn't have any effect. Seems to be off by default.
DSDT.txt
After this i started investigating and got into one of the SSDTs where i found this:
Name(OSD1, Package(21)
{
0x04, "CPU Fan Duty Cycle", "RAW", 0x04, "CPU Fan #1 Speed", "RPM",
0x03, "Skin Temp 0", "RAW", 0x03, "Thermistor 1 ", "RAW", 0x03, "Thermistor 2 ",
"RAW", 0x03, "Thermistor 3 ", "RAW", 0x03, "Thermistor 4 ", "RAW"
})
Name(OSD2, Package(24)
{
0x04, "CPU Fan Duty Cycle", "RAW", 0x04, "CPU Fan #1 Speed", "RPM",
0x03, "Skin Temp 0", "RAW", 0x03, "Thermistor 1 ", "RAW", 0x03, "Thermistor 2 ",
"RAW", 0x03, "Thermistor 3 ", "RAW", 0x03, "Thermistor 4 ", "RAW",
0x03, "Thermistor 5 ", "RAW"
})
and a couple lines after i found this:
Method(OSDD, 0, Serialized)
{
If(LEqual(\_SB.PCI0.LPCB.H_EC.ECAV, One))
{
If(LEqual(TSDB, One))
{
Name(OSD2, Package(8)
{
0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
0x80000000, 0x80000000
})
Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.PENV)), Index(OSD2, Zero))
Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.CFSP)), Index(OSD2, One))
Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TSR3)), Index(OSD2, 0x02))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER1)), 0x02), Index(OSD2, 0x03))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER2)), 0x02), Index(OSD2, 0x04))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER3)), 0x02), Index(OSD2, 0x05))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER4)), 0x02), Index(OSD2, 0x06))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER5)), 0x02), Index(OSD2, 0x07))
Return(OSD2)
}
Name(OSD1, Package(7)
{
0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000,
0x80000000
})
Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.PENV)), Index(OSD1, Zero))
Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.CFSP)), Index(OSD1, One))
Store(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TSR3)), Index(OSD1, 0x02))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER1)), 0x02), Index(OSD1, 0x03))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER2)), 0x02), Index(OSD1, 0x04))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER3)), 0x02), Index(OSD1, 0x05))
Store(ShiftLeft(\_SB.PCI0.LPCB.H_EC.ECRD(RefOf(\_SB.PCI0.LPCB.H_EC.TER4)), 0x02), Index(OSD1, 0x06))
Return(OSD1)
}
Return(Package(0){})
}
SSDT.txt
As you can see, it seems that the fan duty cycle is register _SB.PCI0.LPCB.H_EC.PENV and the fan speed is _SB.PCI0.LPCB.H_EC.CFSP. However, I looked in every table for the words "PENV" and "CFSP" but couldn't find the numeric address. (No definition anywhere)
So, using a combination of the ec-probe.exe monitor --clearly and RWEverything I was able to identify a couple of registers that changed in sync with the fan. (Red text and highlighted yellow)

I tried all of these registers out with no luck.
I think the registers from 0x50 to 0x57 are temperature related, 0xB4 seems to be the same. As for the others I have no clue.
I am extremely new to all this so I am probably missing something silly.
Feel free to ask any questions and any help will be greatly appreciated.
Hello,
I've been trying to create a config for my Lenovo Yoga 910-13IKB for a couple of days but I got stuck.
First thing I did was, obviously, try out all other available configs. None worked.
Then using
RWEverythingI opened all the ACPI tables on my computer, after extracting the DSDT table I found nothing but 1 register that seemed related to the fan, "CFAN" it is 1 bit long and changing it doesn't have any effect. Seems to be off by default.DSDT.txt
After this i started investigating and got into one of the SSDTs where i found this:
and a couple lines after i found this:
SSDT.txt
As you can see, it seems that the fan duty cycle is register
_SB.PCI0.LPCB.H_EC.PENVand the fan speed is_SB.PCI0.LPCB.H_EC.CFSP. However, I looked in every table for the words "PENV" and "CFSP" but couldn't find the numeric address. (No definition anywhere)So, using a combination of the
ec-probe.exe monitor --clearlyandRWEverythingI was able to identify a couple of registers that changed in sync with the fan. (Red text and highlighted yellow)I tried all of these registers out with no luck.
I think the registers from 0x50 to 0x57 are temperature related, 0xB4 seems to be the same. As for the others I have no clue.
I am extremely new to all this so I am probably missing something silly.
Feel free to ask any questions and any help will be greatly appreciated.