[GH-ISSUE #970] Making Config for Yoga 910 (Need a Little Help) #843

Closed
opened 2026-02-26 00:33:44 +03:00 by kerem · 2 comments
Owner

Originally created by @carloslockward on GitHub (Aug 13, 2020).
Original GitHub issue: https://github.com/hirschmann/nbfc/issues/970

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)

EC-registers

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.

Originally created by @carloslockward on GitHub (Aug 13, 2020). Original GitHub issue: https://github.com/hirschmann/nbfc/issues/970 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](https://github.com/hirschmann/nbfc/files/5067575/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](https://github.com/hirschmann/nbfc/files/5067576/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) ![EC-registers](https://user-images.githubusercontent.com/24941719/90103047-df5ec780-dd0f-11ea-9c7f-8d21d65be126.JPG) 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.
kerem 2026-02-26 00:33:44 +03:00
  • closed this issue
  • added the
    Stale
    label
Author
Owner

@carloslockward commented on GitHub (Aug 24, 2020):

@hirschmann Could you give some advice for this?

<!-- gh-comment-id:678850678 --> @carloslockward commented on GitHub (Aug 24, 2020): @hirschmann Could you give some advice for this?
Author
Owner

@github-actions[bot] commented on GitHub (Feb 22, 2021):

This issue is stale because it has been open more than 180 days with no activity. If nobody comments within 7 days, this issue will be closed

<!-- gh-comment-id:782955890 --> @github-actions[bot] commented on GitHub (Feb 22, 2021): This issue is stale because it has been open more than 180 days with no activity. If nobody comments within 7 days, this issue will be closed
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nbfc-hirschmann#843
No description provided.