Contribute
Register

<< Solved >> Lenovo Yoga c930-13IKB

Status
Not open for further replies.
OK – I can't figure out the sleep problem :(

As above, I re-extracted DSDT/SSDT files, re-patched the DSDT, power management and USB are configured (correctly – I hope!). As far as I can see the laptop doesn't actually get to sleep at all. It does the pre-sleep...whatever it is that it does. Screen and sound are off. Fans remain at the same speed they were before (hardware-controlled), keyboard backlight works (hardware-controlled), but Caps Lock doesn't, which makes me think the laptop at this point already crashed. What I saw in the logs looked like the laptop was basically all good to go, then BOOM.

I think I've gone through every single guide I could find, googled everything about sleep/wake problems, etc. My last desperate idea was to add CPUFriend, I didn't notice any difference. Tried VirtualSMC instead of FakeSMC, no difference. Tried EDID patching, many interesting results (such as the Macbook Air EDID giving me glorious 1920x1080 resolution with biiiiig pixels), no sleep.

I edited the profile as well as I could, seeing as none of my components were available in the dropdown menu.

As a curio, I can't get Clover to start in any resolution other than 3840x2160 (native) or...1024x768. So I got myself a 4K theme and I'm all good. Verbose output is a PITA to read, though.

Thanks in advance for any suggestions!
 

Attachments

  • debug_7391.zip
    2.8 MB · Views: 52
Progress!

https://pikeralpha.wordpress.com/2017/01/12/debugging-sleep-issues/

My IOReg doesn't display the first value, PMStatusCode at all. After an hour or so of googling I found out that's really "cosmetic" and what matters is the other two, the second of which will appear in IOReg after a sleep/wake cycle. Which is something I can now do.

IOPMDeepIdleSupported = true
IOPMSystemSleepType = 7

I used Pike's script to create a miniature .aml, which allowed me to get to the point where I can actually *sort of* put the laptop to sleep and wake it up with power button. Sometimes it wakes up to backlit black screen (keyboard works, I can even control the brightness of the black screen!), I press the power button, it goes back to sleep, I press it again, it comes back. Audio works. USB untested yet, because I want to get it to actually sleep – fans keep going, keyboard is backlit, power button LED doesn't blink. Yet...

Here's the latest pmset -g log:

Code:
Total Sleep/Wakes since boot at 2019-01-27 20:40:43 +0100 :4

2019-01-27 20:56:57 +0100 : Showing all currently held IOKit power assertions
Assertion status system-wide:
   BackgroundTask                 0
   ApplePushServiceTask           0
   UserIsActive                   1
   PreventUserIdleDisplaySleep    0
   PreventSystemSleep             0
   ExternalMedia                  0
   PreventUserIdleSystemSleep     0
   NetworkClientActive            0
Listed by owning process:
   pid 100(hidd): [0x0000001f00098080] 00:00:00 UserIsActive named: "com.apple.iohideventsystem.queue.tickle.4294968511.11"
    Timeout will fire in 600 secs Action=TimeoutActionRelease
Kernel Assertions: 0x4=USB
   id=500  level=255 0x4=USB mod=01/01/1970, 01:00 description=com.apple.usb.externaldevice.14300000 owner=IOUSBHostDevice
Idle sleep preventers: IODisplayWrangler

What worries me is the usb.externaldevice, because I don't have any. I even disconnected the charger to see. The IOUSBHostDevice is something that appears on the list of my USB devices, it's connected to one of the HS** ports. I found out I still had "bluetooth devices can wake this computer" on, it's off now. Still... WTF is this external device? Because it better not be the wifi/bluetooth card or, worse, keyboard...

This post will be updated if I come up with anything. (If you do, please tell me!)

Edit: it's the goddamn fingerprint reader!!! Disabling it now. (I wonder if this will allow me to re-enable it in Windows?)
 
Last edited:
Progress!

https://pikeralpha.wordpress.com/2017/01/12/debugging-sleep-issues/

My IOReg doesn't display the first value, PMStatusCode at all. After an hour or so of googling I found out that's really "cosmetic" and what matters is the other two, the second of which will appear in IOReg after a sleep/wake cycle. Which is something I can now do.

IOPMDeepIdleSupported = true
IOPMSystemSleepType = 7

I used Pike's script to create a miniature .aml, which allowed me to get to the point where I can actually *sort of* put the laptop to sleep and wake it up with power button. Sometimes it wakes up to backlit black screen (keyboard works, I can even control the brightness of the black screen!), I press the power button, it goes back to sleep, I press it again, it comes back. Audio works. USB untested yet, because I want to get it to actually sleep – fans keep going, keyboard is backlit, power button LED doesn't blink. Yet...

Here's the latest pmset -g log:

Code:
Total Sleep/Wakes since boot at 2019-01-27 20:40:43 +0100 :4

2019-01-27 20:56:57 +0100 : Showing all currently held IOKit power assertions
Assertion status system-wide:
   BackgroundTask                 0
   ApplePushServiceTask           0
   UserIsActive                   1
   PreventUserIdleDisplaySleep    0
   PreventSystemSleep             0
   ExternalMedia                  0
   PreventUserIdleSystemSleep     0
   NetworkClientActive            0
Listed by owning process:
   pid 100(hidd): [0x0000001f00098080] 00:00:00 UserIsActive named: "com.apple.iohideventsystem.queue.tickle.4294968511.11"
    Timeout will fire in 600 secs Action=TimeoutActionRelease
Kernel Assertions: 0x4=USB
   id=500  level=255 0x4=USB mod=01/01/1970, 01:00 description=com.apple.usb.externaldevice.14300000 owner=IOUSBHostDevice
Idle sleep preventers: IODisplayWrangler

What worries me is the usb.externaldevice, because I don't have any. I even disconnected the charger to see. The IOUSBHostDevice is something that appears on the list of my USB devices, it's connected to one of the HS** ports. I found out I still had "bluetooth devices can wake this computer" on, it's off now. Still... WTF is this external device? Because it better not be the wifi/bluetooth card or, worse, keyboard...

This post will be updated if I come up with anything. (If you do, please tell me!)
normally if your HS* are USB3.0 then you would have a companion SS port

ie HS07 would also have SS07 set to 3
 
This HS port was "IOUSBDevice" or something similar. It was the fingerprint reader. Cut it out from my SSDT USB file and now I'm just hunting the other reasons that prevent sleep – there are some weird processes running. At least now I can look at Apple communities, not just Hack ones. And even though the computer doesn't actually sleep sleep and I can only wake it up with the power button, I can safely shut the lid which was 80% of my point :)

I only have those USBs left:

HS01 = internal stuff
HS03, HS06 = USB-C ports (corresponding with SS01, SS02)
HS07 = USB-A port
HS08 = Wifi/Bluetooth
USR1, USR2 = I have no clue whatsoever, left them in just in case they do something. I haven't seen USR ports mentioned anywhere in guides/tutorials.

Damn, I like it when things start to work. Once I'm done with this the only thing I will want fixed will be the internal microphone which will require Lenovo to update the BIOS. I posted a guide (which I will update once I got the sleep to work) in the meantime. Right now fighting iohideventsystem:

Code:
2019-01-27 21:33:56 +0100 : Showing all currently held IOKit power assertions
Assertion status system-wide:
   BackgroundTask                 0
   ApplePushServiceTask           0
   UserIsActive                   1
   PreventUserIdleDisplaySleep    0
   PreventSystemSleep             0
   ExternalMedia                  0
   PreventUserIdleSystemSleep     1
   NetworkClientActive            0
   InternalPreventSleep           1
Listed by owning process:
   pid 57(powerd): [0x000003cc000d8214] 00:00:07 InternalPreventSleep named: "com.apple.powermanagement.acwakelinger"
    Timeout will fire in 38 secs Action=TimeoutActionRelease
   pid 82(timed): [0x000003cc00018215] 00:00:07 NoIdleSleepAssertion named: "com.apple.timed.ntp"
    Timeout will fire in 103 secs Action=TimeoutActionTurnOff
   pid 100(hidd): [0x00000032000980c2] 00:00:00 UserIsActive named: "com.apple.iohideventsystem.queue.tickle.4294968191.3"
    Timeout will fire in 599 secs Action=TimeoutActionRelease
No kernel assertions.
Idle sleep preventers: IODisplayWrangler

Edit 1: got rid of the IOHID event (as in, shortened the time before display goes dark in Energy Saver).

Edit 2: got rid of Address Book sync (what a PITA). Got to the point where the laptop can sleep on lid close for 5 minutes, enter DeepIdle, then when I open the lid I have to press the power button to wake it, then close the lid and open it again (!) Haven't figured out how to wake it up by keypress, trackpad, or simply lid open yet. Don't know what will happen when it enters standby either yet, that's fun for tomorrow.
 
Last edited:
Welp, within 8.5 hours it lost 20% of the battery. The power button LED never started to blink, the fans took a WHILE to stop working. But this is good enough for me. I can shut it safely, it will fall asleep, sure I'd prefer 1% rather than 20% battery power loss. Woke up at first press of the power button. Sound, wifi, trackpad, keyboard, USB w/ hotplug work, there's no lag, no graphical glitches.

(Actually how good/bad is less than 2.5% per hour for a Hackintosh laptop?)

Full guide here: https://www.tonymacx86.com/threads/guide-lenovo-yoga-c930-13ikb-4k-i7-8550u-98-working.270421/
 
Last edited:
Status
Not open for further replies.
Back
Top