This repository contains the files needed to successfully boot macOS on Lenovo Thinkpad L390 Yoga with Opencore. After installing Mac OS 12 and 13, which work well with the current setup, I decided to use Mac OS 11 because it guarantees the best compatibility with bluetooth services (handoff, universal clipboard, sidecar...).
The project is stable. Mac OS 11 works with Windows 11 in dual boot. There are probably things that can be improved, so feel free to open issues or even PRs with suggestions or observations.This is not a support forum, I won't be able to give individual support. I suggest to use the Dortania's Opencore Install Guide to build your EFI folder, then compare with this EFI for the last improvements.
Specifications | Details |
---|---|
Processor | Intel Core i5-8265U @ 1.8 GHz |
Memory | 16 GB DDR4 2400 MHz |
Hard Disk | Crucial P2 SSD PCIe NVMe 512 GB |
Integrated Graphics | Intel UHD Graphics 620 |
Screen | 13.3 inch with Touchscreen @ 1920 x 1080 |
Sound Card | Realtek ALC257 @ layout-id 96 |
Wireless/BT Card | BCM94350ZAE (Lenovo FRU 00JT494) |
- Realtek Card Reader: it works with this driver by 0xFireWolf. However, I have noticed an increase in power consumption (about 0.5w on idle) with the card reader enabled and the kext, so I prefer to disable it;
- Some features of YogaSMC kext: for info, follow this issue and feel free to contribute;
- Continuity features: you need a genuine Apple Airport card to make them work. I tried to install multiple Apple network cards in this laptop, but the m.2 interface is probably incompatible (everything is described below)
- Fingerprint sensor (disabled in BIOS);
- T2 chip related functions (ApplePay for example);
- Hardware DRM support (info);
- Other features related to the native hardware of the Macs that you will find out.
- Disable Secure Boot;
- Disable VTd;
- Disable Wake On Lan;
- UEFI/Legacy Boot: UEFI Only;
- CSM Support: it should be disabled, however enable the CSM support avoids the black screen after hibernation (technical info). There is also an alternative patch at the end of config.plist, which I use in my configuration when I enable hibernation.
- SSDT-INIT: disables RTC device, HPET, injects a OSDW method (useful to check if the system is MacOS) + personal patch to avoid instant wake after sleep with certain usb devices plugged. It patches _PRW methods and must be associated with the relative ACPI patch in config.plist;
- SSDT-DEVICES: patches ADP1 to allow ACPIACAdapter to attach to the device; injects PWRB, DMAC, MCHC, and BUS0 devices (not sure if it makes the difference); injects PGMM, PMCR, SRAM for cosmetic reasons;
- SSDT-HWAC: patches the access in the only 16-bit field of EC;
- SSDT-KEYS: makes the brightness keys work (alternative: Brightness Keys kext) and patches wrong keys for VoodooPS2Controller;
- SSDT-PNLF: from the cross-platform SSDT, only for Coffee Lake;
- SSDT-YogaSMC: useful SSDTs from YogaSMC merged together.
- Device Properties
- (0x0)/(0x2,0x0) -> patches platform-ID (0x3E9B0009) and device-ID (0x3E9B) for WhiskeyLake UHD620 (faked as a UHD630). Whatevergreen FAQ suggests to use another value for device-ID, however I encounterd problems with the suggested values (black screen on boot, blackscreen after wake with backlight on...); patches connectors as suggested in the Dortania guide; patches DVMT allocation; force-online is useful if you use external monitor, otherwise it's better to remove it;
- (0x0)/(0x12,0x0) -> allows AppleIntelPCHPMC to attach to PMCR (pci8086,9df9), not sure if useful;
- (0x0)/(0x1C,0x6)/(0x0,0x0) -> for BCM94350ZAE with pin 53 masked; change aspm if you don't mask the pin; remove if you use other Wireless Cards;
- (0x0)/(0x1F,0x3) -> audio: I created layout-id = 96 specifically for this laptop, but it should also work on other Thinkpads with the same platform (such as X390, T490, and so on... )
- Kernel/Quirks:
- AppleCpuPmCfgLock / AppleXcpmCfgLock -> Interestingly, system boots even though these two patches are disabled and CFG Lock is enabled. Patching CFGLock (or DVMT), maybe, is possible only with a CH341A + SOIC programmer. Anyway, there isn't any public BIOS full patch (with advanced menu) available for this laptop;
- Kernel/Add:
- BrcmPatchRAM, BrcmFirmwareData, AirportBrcmFixup are useful for non-native Broadcom network cards, remove if not needed;
- BlueToolFixup: required for Bluetooth with non-native network cards in Monterey and newer. In Big Sur (and older) use BrcmBluetoothInjector.kext;
- NVRAM
- rtc-blacklist -> for hibernation. You can remove the content of this entry, along with HibernationFixUp and RTCMemoryFixUp kexts, if you don't use hibernation;
- hbfx-ahbm = 1445 -> Auto-hibernation. The value means 1: Enable; +4: When External Power is disconnected; +32: When Battery At Critical Level; +128: DisableStimulusDarkWakeActivityTickle, not sure if useful; +256+1024 = 5%;
- prev-lang:kbd -> change with your language, I'm Italian so I keep it-IT:0;
- If your laptop has a Samsung PM981 NVMe SSD you have to buy another one, because that drive doesn't work with macOS at all.
- Important info about the network card:
- The original network card (Intel wireless 9560NGW) works with OpenIntelWireless. Anyway, if you're interested in features such as Airdrop or Handoff, a supported Broadcom card is a better choice. Check Dortania Wireless Buyers Guide.
- I have tested multiple Broadcom network cards, and the results probably show some hardware limitations of this laptop. In particular:
- I tried two BCM94360NG cards. The card doesn't work in this laptop: the PCIe wireless device isn't enumerated at all in PCIe bus. Bluetooth (USB), instead, works.
- I also tested two BCM94360CS2 cards and a BCRM943602CS card, with two different adapters, in every possible combination. In this case, the PCIe wireless interface is recognized and works, instead Bluetooth isn't recognized at all (HS10 USB port is empty). The above applies to both MacOS, Windows and Linux. Consider that this card doesn't fit the laptop and probably needs some DIY.
- The culprit could be the CNVio interface of the M.2 connector of this laptop. However, this doesn't explain why the wireless interface of BCM94360CS2 and BCM943602CS (PCIe) was recognized! Another problem could be the BIOS of the laptop, but I don't have the knowledge to find out.
- I'm currently using a BCM94350ZAE card, and in particular an OEM card (Lenovo FRU 00JT494). It still can be found in Aliexpress and it's cheap. This card works with AirDrop, Handoff and Universal Clipboard support (at least in Big Sur, Monterey is more problematic). However, Personal Hotspot and Apple Watch Unlock don't work (you need an original Apple Airport card). The guide suggests to set aspm to 0 because the BCM94350ZAE chipset doesn't support power management correctly in macOS. However, I think that it is probably better to mask pin 53 (more info: here and here). If you mask pin 53, you can avoid to use AirPortBrcmFixup kext (Bluetooth kexts still needed).
- These three I2C devices under PCI0 should be removed but I haven't found a way to solve this. VoodooI2C is necessary to make the touchscreen work. More info.
- Battery lasts about 3-4h with a full charge, with a 0.8-1.1W idle power consumption. Undervolting with Voltageshift is a good idea.
- acidanthera
- Dortania's OpenCore Install Guide
- zhen-zen for YogaSMC
- VoodooI2C for the touchscreen driver
- sicreative for VoltageShift
- benbender and tylernguyen for their well-documented thinkpad x1c6 hackintosh project
- OC-Little-Translated