Contribute
Register

[Guide] Lenovo Yoga C930-13IKB (4K/i7-8550u) 99% working, updated 7 Feb

Status
Not open for further replies.
kextd stall[n], (240s) appleACPICPU issue is due to older clover version, update it to at least 4862
Awesome. I was using rehabman's latest build and didn't know it wasn't the latest clover. Got it to run but now I'm having the issue where I get a kernel panic and reboot again. And it gradually does it faster and faster until it doesn't make it past boot. Perhaps my USB is bad or something?

Edit: I followed rehabman's guide and disabled the APFS format after the first reboot. It then installs recovery, reboots, and after that it reaches a grey screen on the install and reboots. I can't open the MacOS installer again unless I use GParted live to delete the partitions on my SSD.
 
Last edited:
Awesome. I was using rehabman's latest build and didn't know it wasn't the latest clover. Got it to run but now I'm having the issue where I get a kernel panic and reboot again. And it gradually does it faster and faster until it doesn't make it past boot. Perhaps my USB is bad or something?

Edit: I followed rehabman's guide and disabled the APFS format after the first reboot. It then installs recovery, reboots, and after that it reaches a grey screen on the install and reboots. I can't open the MacOS installer again unless I use GParted live to delete the partitions on my SSD.
there is no APFS disable with Mojave
 
there is no APFS disable with Mojave
Okay thanks. Any idea what might be going on with the grey screen and reboot? It happens after the recovery partition is set up.
 
Thanks so much for all your hard work Navaira!

I've got mojave 10.14.4 kind of running on my c930 (I replaced the internal ssd with a samsung 970 pro 1tb and have it triple booting osx/windows 10/ubuntu). I also, replaced the internal wifi card with the one recommended by Navaira as well (that was a huge pain to get working in ubuntu but got there in the end). Installed osx from a 10.14.4 usb installer (I have previously done a bunch of 10.14.1 installs on this laptop that weren't very happy when I tried to update them 10.14.4).

I've installed this so many times and then destroyed it to the point that it has be reinstalled that I've made a script (rehab.sh which I've renamed to rehab.txt as this web site wont let me attach a file called rehab.sh). The script installs homebrew and then grabs all the files you need (other than the usb installer which I created from a vmware osx instance).

What works:
- 4k screen which I've chosen to scale to 1920x1080 which looks great
- Speakers (rather tinny no subwoofer at a guess)
- Keyboard
- usb ports (thus I'm using a mouse)

What doesn't work:
- touchpad (the reason for this post.. hopefully someone can help me)
- touchscreen (haven't tried to get it working yet)
- everything else not listed.. because I probably haven't tried it yet

In /L/E I've got AppleALC, Lilu
In CLOVER/kexts/Other I've got AppleALC, Lilu, USBInjectALL, BrcmFirmwareData, BrcmNonPatchRAM2, FakePCIID_Broadcom_Wifi, FakeSMC, VoodooPS2Controller, WhateverGreen

In CLOVER/ACPI/patched I've got SSDT-PNLF.aml, SSDT-SLEEP.aml, SSDT-TYPC.aml, SSDT-UIAC.aml
In CLOVER/ACPI/origin I've got the original dump from hitting f4

In CLOVER/ I've got two config.lists ... one for doing installs (rehabman's hd520etc one with the platform id updated) and the other is Navaira's config.plist which I use after I've got osx installed.

This is what I've done to try and get the touchpad working (but it's not working at all):

boot to CLOVER menu and hit f4 a few times and fn+f4 because I'm never sure which one is actually f4 on this laptop
boot into mojave
cd ~/Desktop
mkdir origin
cd origin
#mount my efi
mkdir /Volumes/EFI
mount -t msdos /dev/disk0s1 /Volumes/EFI
rsync -axv /Volumes/EFI/EFI/CLOVER/ACPI/origin/* .
mkdir keep
cp DSDT.aml SSDT-* keep/
cd keep
rm SSDT-x* SSDT-11-CB-01.aml SSDT-12-CB-01.aml
#assuming you've installed iasl61
iasl -da -dl DSDT.aml SSDT*.aml
#assuming you've run rehab.sh which installs maciasl or you've installed it manually
open DSDT.dsl
#hit compile in maciasl .. fix any errors you get
#manually apply the touchpad fixes from Navaira's first post in this thread
#here's my version of a patch to do the TPL1 modifications to cut and paste into the patch window of maciasl:
into device label TPL1 code_regex Pin\slist\n\s+0x0000 replaceall_matched begin Pin list \n 0x55 end;
into_all all code_regex If\s\(LLess\s\(OSYS,\s0x07DC\)\)\n\s+\{\n\s+Return\s\(SBFI\)\n\s+\}\n\n\s+If\s\(LEqual\s\(SDM1\,\sZero\)\)\n\s+\{\n\s+Return\s\(ConcatenateResTemplate\s\(SBFB,\sSBFG\)\)\n\s+\}\n\n\s+Return\s\(ConcatenateResTemplate\s\(SBFB,\sSBFI\)\) replaceall_matched begin \n\n\n\n\n\n\n\n\n\n Return (ConcatenateResTemplate (SBFB, SBFG)) end;
#hit compile
#save as ACPI Machine Language Binary
#copy it up from where I saved it .. into CLOVER
cp ~/Desktop/DSDT.aml /Volumes/EFI/EFI/CLOVER/ACPI/patched/
#reboot to see if it worked
reboot

And that's where I'm stuck... any advice as to what I'm doing wrong or where I should look/debug next?

Thanks again Navaira!

Follow up...

The following patch for maciasl to apply against dsdt.dsl has enabled my touchpad and touch screen to work:

into device label TPL1 code_regex Pin\slist\n\s+0x0000 replaceall_matched begin Pin list \n 0x55 end;

into_all all code_regex If\s\(LLess\s\(OSYS,\s0x07DC\)\)\n\s+\{\n\s+Return\s\(SBFI\)\n\s+\}\n\n\s+If\s\(LEqual\s\(SDM1\,\sZero\)\)\n\s+\{\n\s+Return\s\(ConcatenateResTemplate\s\(SBFB,\sSBFG\)\)\n\s+\}\n\n\s+Return\s\(ConcatenateResTemplate\s\(SBFB,\sSBFI\)\) replaceall_matched begin \n\n\n\n\n\n\n\n\n\n Return (ConcatenateResTemplate (SBFB, SBFG)) end;

#VoodooI2C-Patches->[Windows] Windows 10 Patch
into_all method code_regex If\s+\([\\]?_OSI\s+\(\"Windows\s2015\"\)\) replace_matched begin If(LOr(_OSI("Darwin"),_OSI("Windows 2015"))) end;
#VoodooI2C-Patches->[GPIO] GPIO Controller Enable [SKL+]
into method label _STA parent_label GPI0 replace_content begin

Return (0x0F)

end;
 

Attachments

  • rehab.txt
    3.9 KB · Views: 262
Last edited:
Hello, I just received this laptop and build a set of OC configuration from scratch. Since I have some previous experience on hackintosh, maybe I can note something and I'm also interested in your outcome.


Original SSD (don't make my mistake, buy the lowest/cheapest capacity!) replaced by Samsung EVO 870 – you won't be able to use the original SSD anyway

Some model ships with WD SN750, which support 4k sector and do not need any patches. There are some guides on 4k sector:

However, the brand of SSD is unknown until the unit is received, so maybe there are some tradeoffs. I encountered some issues with the SSD. I always reboot immediately after edit my configurations. But the config.plist wasn't saved or saved partially (once missing header and once missing footer), maybe there's something wrong with the cache and I have to eject EFI partition manually before a reboot.

Original Intel wifi replaced with Dell DW1560 (bought mine here)

Also compatible with Lenovo version's BCM94352Z (PN:20-200480, FRU:04X6020), which is a bit cheaper.

– pen works 99% – it behaves like a basic mouse, no pressure sensitivity, I don't know whether that can be added but there is a chance it can, since the screen is detected as Wacom tablet. Wacom Utility didn't help, though. I'm not too bothered, I use tablet mode to read PDFs full screen, mouse is enough to turn the pages.

The pressure related codes are removed by Apple after 10.11 (source: VoodooI2C gitter), so it's unlikely to achieve that unless Apple would get it back in new version with iOS apps fusion. And the I2C touchscreen didn't resemble the way Wacom Tablet works with different driver so there's less to do unless some reverse works on it.

if it's possible to use the rotation sensor let me know, but I would imagine not.
There is another SHUB devices on I2C3, that powered auto rotation on my old tablet. However, I got some errors after enabling that so drivers are not loaded successful. Maybe I will turn to help at VoodooI2C gitter when I have some time. Also, there's another INT33D0 device which VoodooI2CSensorHubEnabler attached to but have no output. It seems there's something to do here.

Code:
kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d63 I2C Transaction error details
kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d63 lost arbitration
kernel: (VoodooI2C) VoodooI2CControllerDriver::pci8086,9d63 I2C Transaction error: 0x11001000 - aborting
kernel: (VoodooI2CHID) VoodooI2CHIDDevice::ITE8353 Request for HID descriptor failed
kernel: (VoodooI2CHID) VoodooI2CHIDDevice::ITE8353 Could not get HID descriptor

– sleep, including Power Nap – sleep on lid close or power button or Apple > Sleep, wake by power button only so far

I think this laptop have the same issue with Linux stuffs. You can check it out here.
There is the issue with S0(S2idle) and S3 sleep. Currently, I could only get S0 working with the power indicator on. I tried to disable deep-idle and get it into normal (S3) sleep, then it couldn't be waked up. Can you check the output the following command log show --predicate "processID=0" --last boot | grep ACPI after wake from sleep and find similar logs below?
Code:
kernel: (AppleACPIPlatform) ACPI: sleep states S0 S3 S4 S5
kernel: (AppleACPIPlatform) ACPI SLEEP
kernel: (AppleACPIPlatform) ACPI S0 WAKE
kernel: (AppleACPIPlatform) AppleACPIPlatformPower Wake reason: PWRB (User)
I'm also interested how X1 Carbon BIOS fixed the similar problems (switchable S0ix and S3 sleep) and if there will be some inspiration from there ACPI table changes.

– Audio except internal microphone (BIOS update 32 enables the subwoofer in macOS but not Ubuntu, which is interesting; Boom 3D takes care of the volume and EQ)

I'm interested with the subwoofer stuffs because that was some difference with linux way. (check that Github link above) An hda-verb command is required to activate this node and I didn't find such clue in the patched codec. Physically, there are L/R channels and another LFE speaker in the hinge and another pair of speakers under the palm-rest. There is a solution with the former one and another possible solution to enable the latter one. I haven't got a linux installation to verify yet and there's few instruction on multichannel patches. The internal mic seems unachievable because that's a privacy protection things. (Maybe there's something with WMI control? I haven't examined it yet)

Use AppleALC 1.3.4.
You can check if you got duplicated patch as well as vanilla AppleHDA. It should work after upgrades.

layout-id 07000000

Only alc-layout-id is enough since 7 is the default route by AppleALC.

It doesn't detect the KabyLake codec HDMI audio – it's a separate codec, there's a chance it would work with a different codec – if someone can be bothered to fix that, let me know and I'll add it to the guide.

The Intel HDMI stuff is also handled by WhateverGreen. It works when connected to a monitor supports audio out and related entry will present in ioreg.

– Intel SGX: disabled (that's the fingerprint reader)

Sadly the macOS couldn't be booted with SGX on which influenced the Windows Authentication (but who cares?). The SGX eats about 256MB memory and that prevents the memory allocation.

– disable Intel Virtual Technology
– Intel Platform Trust Technology: enabled – when I disabled it I was greeted with the Ø sign

Maybe there's some configuration difference and I could get both of them on or off...

Get a magnifying glass or someone with very good vision, because you will install in 4K mode with teeny weeny windows and text.
I think there's something wrong with your clover configuration. Lilu + Whatevergreen can handle such patches in recovery environment, you can follow some guides to fix that and confirm that by entering recovery mode. In this case, the fake id below is not needed.
Follow RehabMan's guide, using the hd520_530_etc. plist. One thing: before install edit the plist and change platform-id in Graphics section to 0x12345678. Create a USB stick with installmedia as RehabMan explains. I used RehabMan's latest build of Clover to install.


FakeID 0x591B8086 IntelGFX

And I have issue with this id, the driver panicked when the display is connected from the rear port. I found the pipe of the connectors in this id is duplicated. I changed that to 0x59168086 and video output works with both ports. You can check it with Hackintool and also increase the VRAM to 2048 MB or higher since the 4k screen consumes a lot. Also, the -cdfon option can be added there.

Device IntelGFX
Key: AAPL, GfxYTile
Value: 01000000

There's also no need to add this one.

Patches used:
HDAS->HDEF
HECI->IMEI (credit: @hauntix)
MEI->IMEI
GFX0->IGPU
PCI0.VID -> IGPU #1 and IGPU #2
XHCI -> XHC
EHC1 -> EH01
EHC2 -> EH02
SAT0 -> SATA (credit: @hauntix)

Whatevergreen and AppleALC will take care of these rename so there's no need to get them renamed manually. You can check the Lilu guides above. Also be aware of the consistency with SSDTs (like SSDT-PNLF). There's no PCI0.VID, EHC1/2 and SAT0 devices active on this model, so there's no need to rename that.

– EmuVariableUefi-64.efi
Since this machine supports real NVRAM and it's better to remove that for compatibility with hibernation (Hibernationfixup.kext) and FileVault2. Also replace AppleImageCodec-64.efi with AppleUiSupport.efi to get FV2. AptioMemory seems a better solution, and you can check EFIstub guides to directly boot linux.

– FakePCIID + FakePCIID_Broadcom_WiFi.kext (for my Broadcom wifi)

You can also try AirportBrcmFixup.kext instead and iirc they both worked in recovery. Also, keep kexts in the same place and have a complete set. InjectKext=Detect will use /L/E one if FakeSMC present there and ignore sets in clover/kexts.

0x55 // this was 0x00
I could enable the touchpad without this patch. Maybe that's because I leave I2C on? Personally I the trackpad is good enough since it support all MT2 gestures except force touch (might have a workaround). The quality only depends on the size and the material of the surface.

into method label I2C0 code_regex \(SMD0, replaceall_matched begin (RECB(0x1C,256), end; into method label _CRS code_regex \(SMD0, replaceall_matched begin (\\_SB.PCI0.LPCB.H_EC.RECB(0x1C,256), end;
Please double check if these methods are in EC scope, since there's another SMD0 at the root domain.

I have no clue what the USR1 and USR2 do, if anything, but since I'm below 15 port limit I just left them in. Compile the code above to AML and put in ACPI/patched/SSDT-UIAC.aml

There's something wrong when the ports are not recognized correctly, especially with Thunderbolt involved. Mine are posted below. The USB stuffs are interested, since the USB2.0 parts of the Type-C ports are redirect to XHC HS and USB3.0 are still connected to the Thunderbolt interface. When booted with nothing connected, USB devices are only recognized at 2.0 speed though type-C ports. Possible due to the XHC controller under TB3 not activated.

Code:
// SSDT-UIAC.dsl
//
// This SSDT demonstrates a custom configuration for USBInjectAll.kext.
//

#ifndef NO_DEFINITIONBLOCK
DefinitionBlock ("", "SSDT", 2, "hack", "_UIAC", 0)
{
#endif
    Device(UIAC)
    {
        Name(_HID, "UIA00000")

        // override EH01 configuration to have only one port
        Name(RMCF, Package()
        {
            "8086_15d4", Package()
            {
                "port-count", Buffer() { 4, 0, 0, 0 },
                "ports", Package()
                {
                    "HS01", Package() // Not connected?
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 1, 0, 0, 0 },
                    },
                    "HS02", Package() // Not connected?
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 2, 0, 0, 0 },
                    },
                    "SS01", Package() // Buttom USB Type-C: 3.1
                    {
                        "UsbConnector", 9,
                        "port", Buffer() { 3, 0, 0, 0 },
                    },
                    "SS02", Package() // Top USB Type-C: 3.1
                    {
                        "UsbConnector", 9,
                        "port", Buffer() { 4, 0, 0, 0 },
                    }
                }
            },
           
            "8086_9d2f", Package()
            {
                "port-count", Buffer() { 14, 0, 0, 0 },
                "ports", Package()
                {
                    "HS01", Package() // Camera
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 1, 0, 0, 0 },
                    },
                    "HS03", Package() // Top USB Type-C: 2.0
                    {
                        "UsbConnector", 9,
                        "port", Buffer() { 3, 0, 0, 0 },
                    },
                 /* "HS05", Package() // Fingerprint Sensor
                    {
                        "UsbConnector", 0,
                        "port", Buffer() { 5, 0, 0, 0 },
                    }, */
                    "HS06", Package() // Buttom USB Type-C: 2.0
                    {
                        "UsbConnector", 9,
                        "port", Buffer() { 6, 0, 0, 0 },
                    },
                    "HS07", Package() // USB 3.0
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 7, 0, 0, 0 },
                    },
                    "HS08", Package() // Bluetooth
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 8, 0, 0, 0 },
                    },
                    "SS01", Package() // USB 3.0
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 13, 0, 0, 0 },
                    }
                }
            }
        })
    }
#ifndef NO_DEFINITIONBLOCK
}
#endif
//EOF
 
Last edited:
Some updates:

Tried to fix I2C3.SHUB with extra MatchID (Or compile latest VoodooI2C) and add the following code to I2C3 scope:

Code:
Name (SSCN, Package () { 432, 507, 30 })
Name (FMCN, Package () { 72, 160, 30 })

These parameter are used to set bus config manually instead of default clock value. (SSCN: I2C_SPEED_STANDARD; FMCN: I2C_SPEED_FAST)

Check it at https://github.com/coreboot/coreboo...349a096#diff-e802ed3034a3c5bd7dc642c3c2aa2535

This eliminates the "lost arbitration" error and enables the driver to receive report descriptor. Now VoodooI2CSensorHubEventDriver is attached to SHUB and VoodooI2CAccelerometerSensor is discovered in this sensor hub.

However, I didn't figure out how to trigger the rotation. On my old tablet with same SHUB device, it will detect whether to rotate when I detach the keyboard folio (USB). But on this laptop, I haven't found the trick to rotate or confirm whether the sensor hub or the driver functions properly.
 
Last edited:
excellent guide!

i was recently trying to hackintosh a lenovo yoga 530 and couldn´t make it run, because of the hdd. my question would be, is the samsung evo ssd in the whitelist or did you just install it and crossed your fingers?

in the yoga530 maintenance documentation they whitelisted a samsung ssd, but not the evo one. do you think i could run into problems?!
 
Thanks for the nice posting. I bought a Yoga C930 last week and would like to do a triple-boot (Windows 10, Mac OS and Linux). Is the wifi module that came with the machine good enough? Is there a better wifi module (faster, more reliable and compatible to all three OSs out of the box) that I can upgrade to by myself?
 
Thanks for the nice posting. I bought a Yoga C930 last week and would like to do a triple-boot (Windows 10, Mac OS and Linux). Is the wifi module that came with the machine good enough? Is there a better wifi module (faster, more reliable and compatible to all three OSs out of the box) that I can upgrade to by myself?
As per rules, please update your hardware profile to allow others to help you easier

please read the faq for proper hardware profile setup:
 
Thanks for the nice posting. I bought a Yoga C930 last week and would like to do a triple-boot (Windows 10, Mac OS and Linux). Is the wifi module that came with the machine good enough? Is there a better wifi module (faster, more reliable and compatible to all three OSs out of the box) that I can upgrade to by myself?

The pre-installed Intel ac 9260 is not supported by macOS. Please read the first post thoroughly. Fortunately, it's replaceable (rare in new laptops) and you can swap with a BCM94352Z (both Lenovo version 04X6020 and Dell version DW1560 works) or BCM943602BAED (Dell DW1830, a little wider, but should fit) with an additional antenna, which is faster and much more expensive due to stock.

When you refer to "faster", the original 9260 card support wave 2 with compatible router and could reach 1.73Gbps at 160MHz, far beyond DW1560 (866Mbps) and DW1830 (1.3Gbps). I hope Apple will get a card with recent technology, like Wifi 6, CNVio, or even switch to Intel ones...
 
Status
Not open for further replies.
Back
Top