Skip to content

EFI folder to successfully boot macOS on Lenovo Thinkpad L390 Yoga with Opencore.

License

Notifications You must be signed in to change notification settings

antoniomcr96/Thinkpad-L390-Yoga-macOS-Opencore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Thinkpad-L390-Yoga-macOS-Opencore

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...).

Thinkpad L390 Yoga      

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.

Configuration

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)

Status

What works

Almost everything, including gestures, multitouch, touchscreen, bootchime (thanks @mikebeaton), external video output, EC keys, sleep, hibernation ...

What doesn't work but might be fixed in the future

  • 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)

What doesn't work

  • 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.

Useful informations

BIOS

  • 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.

SSDTs

  • 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.

config.plist

  • 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:
  • 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;

Hardware notes

  • 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.

Thanks to

Benchmark

Compare with these.

About

EFI folder to successfully boot macOS on Lenovo Thinkpad L390 Yoga with Opencore.

Topics

Resources

License

Stars

Watchers

Forks

Languages