Skip to content

Latest commit

 

History

History
527 lines (402 loc) · 25 KB

File metadata and controls

527 lines (402 loc) · 25 KB

Lenovo ThinkPad X380 Yoga - OpenCore Configuration

macOS running on the X380 Yoga

macOS macOS macOS OpenCore Model BIOS issues last commit License

DISCLAIMER:
This OpenCore EFI works fine on my Thinkpad X380 Yoga. As you embark on your Hackintosh journey you are encouraged to READ the entire README and Dortania guides before you start to get an understanding of the install process. It will save many a message instructing you to read the manual.

With that said I'm happy to help when/where I can. When you encounter bug or want to improve this repo, consider opening an issue or pull request. You can also find a wealth of knowledge on Reddit, TonyMacX86 or Google.

👋 Introduction

📖 Getting started

Meet the Bootloader:

Recommended tools:

  • Plist editor ProperTree
  • Handy-dandy ESP mounting script MountEFI
  • Cross-platform GUI management tools for OpenCore OCAT
  • Py script that uses acidanthera's macserial to generate SMBIOS GenSMBIOS
  • The Swiss army knife of vanilla Hackintoshing Hackintool

Resources

💻 My Hardware
Category Component Note
Type 20LJ
CPU Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz
GPU Intel UHD 620
SSD Lexar NM620 512GB M.2 NVMe SSD Replaced cursed PM 981 which still doesn't work reliably. Read this Anti-Hackintosh Buyers Guide - Storage
Screen 13.3" FHD 1920x1080 Multi touch and pen* support working
Memory 16GB DDR4 2400Mhz
Camera 720p Camera + IR Camera
Audio Conexant® CX8200 I suggest trying several layout ID 3, 15, 21, 23, or 80
Touchpad ELAN v4 LEN2034 PS2 Interface If the Trackpad is not working properly, try disabling the Trackpoint in the BIOS.
Wifi & BT Intel AC 8265 and Bluetooth Use AirportItlwm for your macOS version and enjoy native Wi-Fi control.
Ethernet Intel I219-LM4 Gigabit Ethernet
Input PS2 Keyboard & I2CHID TrackPad (touchscreen and pen) I'm using YogaSMC for media keys. The kext is in the folder but you must install the YogaSMC app separately.
📦 Main software
Component Version
macOS Sequoia 15.7.2
OpenCore v1.0.6

📖 Installation

How to install macOS
  1. Create an installation media
  2. Download the latest EFI folder and copy it into the ESP partiton
  3. Change your BIOS settings according to the table below
  4. Boot from the USB installer (press F12 to choose boot volume) and start the installation process

BIOS Config

Menu Setting
Config USB UEFI BIOS Support Enable
Power Intel SpeedStep Technology Enable
CPU Power Management Enable
CPU Hyper-Threading Technology Enable
Security Security Chip Disable
Memory Protection Execution Prevention Enable
Virtualization Intel Virtualization Technology Enable
Intel VT-d Feature Enable
Anti-Theft Computrace Disable
Secure Boot Disable
Intel SGX Disable
Device Guard Disable
Startup UEFI/Legacy Boot UEFI Only
CSM Support No
Boot Mode Quick
Enable Apple Services

Config to allow you to use Apple Services (such as iMessage)

🗒️Note:

If you (still) can't login to iMessage you may need to contact Apple Support to unblacklist your AppleID (You can try opening the Message app from terminal to check the log to see if you're getting a Customer Code error, which is an indication that your AppleID got blacklisted. See more info here)

  1. Download (or clone) GenSMBIOS and run it in terminal
  2. Type 3 to generate SMBIOS, then press Enter
  3. Type MacBookPro15,2 5, then press Enter
  4. Open EFI/Config.plist (I highly recommend using ProperTree) and navigate to PlatformInfo -> Generic
  5. Add one of the script's result to MLB, SystemSerialNumber, and SystemUUID
  6. Replace ROM with your MAC Address (System Preferences -> Network -> Ethernet -> Advanced -> Hardware -> MAC Address, then remove all the colons :). Or you can also try using a real Apple MAC Address
  7. Save and Reboot
  8. Check the Serial Number validity. Repeat step 5 and choose different result (or generate new set of SMBIOS) until you find invalid Serial Number

🧰 Post-install (optional)

Audio Setup

The X380 Yoga has CX8200 for audio which requires the boot-arg or device property below. You can use the boot-args to initially setup your config.plist file as suggested in the guide or simply add the device property. Everything should work, built-in microphone, speakers, headphone jack and microphone.

NVRAM:

Key Value
boot-args alcid=23

DeviceProperties

Key Type Value
PciRoot(0x0)/Pci(0x1F,0x3) Dictionary
layout-id Data 0f000000
Enable Intel WLAN cards

Although the Intel AC-8265 Card is compatible with both kexts (use either one or the other), there are Pros and Cons to both of them (check the FAQs for other differences):

[!IMPORTANT] WiFi Kext Compatibility: The included AirportItlwm.kext is specifically for macOS Sequoia.
If you plan to install macOS Sonoma, you MUST replace this kext with the version compiled for Sonoma. Using the wrong version will result in boot failures or non-functional WiFi.

  • AirportItlwm: (used in macOS Sonoma)

    • Pro: Can be used during macOS Setup/Recovery which is not possible with itlwm.kext
    • Pro: Supports Location Services and "Find My Mac"
    • Pro: Connects faster to Wi-Fi Hotspots than itlwm.kext
    • Con: Doesn't perform as well as itlwm.kext
    • Con: Can't connect to hidden WiFi Networks
    • Con: Requires the correct kext per macOS version, so running multiple version of macOS requires multiple versions of this kext controlled via MinKernel and MaxKernel settings
  • itlwm.kext (used in Sequoia)

    • Pro: itlwm.kext works across multiple versions of macOS
    • Pro: Loading webpages feels a lot quicker than with AirportItlwm
    • Pro: Can connect to hidden WiFi Networks
    • Pro: Does work with iMessage and FaceTime
    • Con: Requires HeliPort app to connect to Wi-Fi hotspots, so it can't be used during macOS Setup/Recovery
    • Con: Doesn't support Location Services
  • Pre-compiled WiFi kexts for other versions of macOS can be found in the Additional Files section! You will need them if you want to run other macOS versions than Sonoma or Sequoia!

🗒️Note:

My config uses AirportItlw.kext by default since it allows accessing the internet during macOS installation (unlike itlwm.kext which requires an additional app to do so). Currently, AirportItlwm kexts for macOS Sequoia is included but you must patch using OCLP-Mod. If you want to use itlwm, disable AirportItlwm (all variants) and enable itlwm in the config.plist instead. Next, download the Helipad app, run it and add it to "Login Items" (in System Settings) so that it starts automatically with macOS.

CPUFriend power management

Generate CPUFriendDataProvider or ssdt_data.aml (choose one) for your machine here or use the ssd_data.aml file provided. My files are set for power conservation over performance. Highly recommended that you use power management.

USB Port Mapping

While first port mapping I followed the Dortania guide here with USBInjectAll.kext install... when doing so the internal USB ports did not show up and the cameras, touch screen, and bluetooth did not function. I noticed on the USBmap tool screen that RHUB was showing so I Googled it and it brought me back to the Dortania guide here. I added the SSDT-RHUB.aml to the APCI folder rebooted and all the ports showed up. I then mapped the USB ports creating the included USBMap.kext file.

🛠️ Other tweaks

Enable HiDPI
  1. Disable SIP
  2. Run the following script in Terminal
    bash -c "$(curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/hidpi.sh)"
  3. Follow the instructions, then reboot
  4. Re-enable SIP (if desired)

Or try an alternative method

Enable multimedia keys, fan & LEDs control
  • Download YogaSMC-App and mount it. This is a custom build which fixes the "Failed to open Preferences" issue in Ventura and newer
    • Double-click the YogaSMC prefPane to install it
    • Drag the YogaSMC app into the "Programs" folder and run it
    • Click on the icon () in the menu bar and select "Start at Login"
    • Now you can control performance profiles, fan speed and other settings
Use PrtSc key as Screenshot shortcut

Super useful shortcut that I wish I had it on my previous MBP. Default is ⌘⇧5.

  1. Open SystemPreferences.app
  2. Go under Keyboard > Shortcuts > Screenshots
  3. Click on Screenshot and recording options field
  4. Press PrtSc on your keyboard (it should came out as F13)
Use Thinkpad Assistant
  1. Get a pair of Patch & SSDT from Samples folder
  2. Compile SSDT (ex. iasl -vo SSDT-X380-KBRD.dsl)
  3. Copy SSDT.aml to EFI/OC/ACPI
  4. Apply patch on config.plst with OCAT
  5. Download Thinkpad Assistant
  6. Extract & Copy to Applications folder
  7. Start Thinkpad Assistant & Tick 'Launch on Login' in Menubar
  8. Reboot
Faster macOS dock animation

This enables auto-hide and speeds up the animation

  1. Run the following script in Terminal
    defaults write com.apple.dock autohide-delay -float 0; defaults write com.apple.dock autohide-time-modifier -float 0.5; killall Dock
Fix Windows Time Sync

RealTimeIsUniversal registry key still works in Windows 8, 10, and 11! Just tested it by myself. The instructions to use this method are explained lot of times everywhere, for example in this answer.

I will replicate the answer here:

Win+S, regedit, Enter.

Navigate to the key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Create new DWORD (32-bit) Value, name it RealTimeIsUniversal. Set its value to 1.

After this is done, just reboot your machine. After it is up and running again, let Windows set time automatically (click on the current time in tray, Date and Time Settings > Set Time Automatically), this time it will not mess with it.

Boot process tweaks
Menu Setting What does it do?
Misc Boot ShowPicker False Skip bootloader page
UEFI Audio PlayChime Disabled Always silent boot
Setup hibernation and sleep

Script that performs auto sleep/hibernate at low battery.

  1. Open terminal

  2. Enter commands below one by one

    Settings for AC:

    sudo pmset -c standby 1
    sudo pmset -c hibernatemode 0
    

    Setting for battery:

    sudo pmset -b standby 1
    sudo pmset -b standbydelayhigh 900
    sudo pmset -b standbydelaylow 60
    sudo pmset -b hibernatemode 25
    sudo pmset -b highstandbythreshold 70
    

    Settings for all:

    sudo pmset -a acwake 0
    sudo pmset -a lidwake 1
    sudo pmset -a powernap 0
    

To restore default system settings run

sudo pmset restoredefaults
Grant/remove accessibility permissions to any app

tccutil with extended capabilities allowing you to grant/remove accessibility permissions to any app.

I never recommend manually modifying any system database because if a mistake is made you risk boot-looping your computer. This is why this tool is using the undocumented TCC.framework to make changes just like macOS does internally.

Requires SIP and AMFI to be disabled.

Currently can only add one or all (not recommended) services at a time. Using reset All is fine.

tccplus [add/reset] SERVICE [BUNDLE_ID]
Services: 
 - All 
 - Accessibility 
 - AddressBook 
 - AppleEvents 
 - Calendar 
 - Camera 
 - ContactsFull 
 - ContactsLimited 
 - DeveloperTool 
 - Facebook 
 - LinkedIn 
 - ListenEvent 
 - Liverpool 
 - Location 
 - MediaLibrary 
 - Microphone 
 - Motion 
 - Photos 
 - PhotosAdd 
 - PostEvent 
 - Reminders 
 - ScreenCapture 
 - ShareKit 
 - SinaWeibo 
 - Siri 
 - SpeechRecognition 
 - SystemPolicyAllFiles 
 - SystemPolicyDesktopFolder 
 - SystemPolicyDeveloperFiles 
 - SystemPolicyDocumentsFolder 
 - SystemPolicyDownloadsFolder 
 - SystemPolicyNetworkVolumes 
 - SystemPolicyRemovableVolumes 
 - SystemPolicySysAdminFiles 
 - TencentWeibo 
 - Twitter 
 - Ubiquity 
 - Willow

Usage Example: Get application bundle ID:

grep 'BundleIdent' -A 1 /Applications/<APPLICATION NAME>/Contents/Info.plist

Pass result to tccplus

user@iMac ~ % grep 'BundleIdent' -A 1 /Applications/Discord.app/Contents/Info.plist
    <key>CFBundleIdentifier</key>
    <string>com.hnc.Discord</string>
user@iMacc ~ % grep 'BundleIdent' -A 1 /Applications/zoom.us.app/Contents/Info.plist
    <key>CFBundleIdentifier</key>
    <string>us.zoom.xos</string>
user@iMac ~ % ./tccplus add Microphone com.hnc.Discord
Successfully added Microphone approval status for com.hnc.Discord
Advanced energy management

acwake: wake the machine when power source (AC/battery) is changed (value = 0/1)

lidwake: wake the machine when the laptop lid (or clamshell) is opened (value = 0/1)

powernap: enable/disable Power Nap on supported machines (value = 0/1)

standbydelayhigh and standbydelaylow specify the delay, in seconds, before writing the hibernation image to disk and powering off memory for Standby. standbydelayhigh is used when the remaining battery capacity is above highstandbythreshold(has a default value of 50 percent), and standbydelaylow is used when the remaining battery capacity is below highstandbythreshold.

hibernatemode supports values of 0, 3, or 25. To disable hibernation, set hibernatemode to 0.
hibernatemode = 0 by default on desktops. The system will not back memory up to persistent storage. The system must wake from the contents of memory; the system will lose context on power loss.
hibernatemode = 3 by default on portables. The system will store a copy of memory to persistent storage (the disk), and will power memory during sleep. The system will wake from memory, unless a power loss forces it to restore from hibernate image.
hibernatemode = 25 is only settable via pmset. The system will store a copy of memory to persistent storage (the disk), and will remove power to memory. The system will restore from disk image. If you want "hibernation" - slower sleeps, slower wakes, and better battery life, you should use this setting.

Source

📊 Status

✅ What's working
  • Intel HD 620 Graphics including graphics acceleration
  • Battery management
  • USB ports
  • Internal camera working fine on FaceTime, Skype, Zoom and others
  • Sleep / Wake / Shutdown / Reboot
  • Intel WiFi & Bluetooth (thanks to itlwn & Heliport )
  • iMessage, FaceTime, App Store, iTunes Store (Requires valid SMBIOS)
  • Speakers and headphones combo jack
  • Microphone
  • Keyboard map and hotkeys with YogaSMC
  • Multi-Touch Screen Touchscreen feels more natural than using Touchpad (Touchpad gesture enabled). Pen also working
  • SIP and FileVault 2 can be turned on
  • Micro SD Card Reader Kext removed in 1.0.6 update
⚠️ What's not working
  • Safari DRM Use Chromium engine to watch Apple TV+, Amazon Prime Video, Netflix and others
  • Fingerprint reader - No. Don't expect macOS driver any time soon.
  • Samsung PM 981 NVME drive - Still unstable. Could work for some, not for others. See Anti-Hackintosh Buyers Guide - Storage
  • Sidecar Wireless doesn't work without apple native WIFI card
🔄 Not tested
  • Apple Watch Unlock
  • WWAN
  • AirDrop
  • HDMI
  • Thunderbolt

⚡ Performance

🔥 Power consumption and thermals

Sequoia

Idle State Max Frequency 2 Thread Frequency All Thread Frequency GPU Max Frequency

Sonoma

Idle State Max Frequency 2 Thread Frequency All Thread Frequency GPU Max Frequency
⏱️ Benchmarks
CPU Single-Core Multi-Core
Geekbench 5 689 2670
GPU OpenCL Metal
Geekbench 5 4191 3683
macOS Sequoia 15.2, EFI release 1.0.3, CPU: i5-8350U
CPU Single-Core Multi-Core
Geekbench 5 755 2479
GPU OpenCL Metal
Geekbench 5 2819 2471
macOS Sonoma14.7.2, EFI release 1.0.3, CPU: i5-8350U

Credits

  • Apple for macOS.
  • Acidanthera for OpenCore and all the lovely hackintosh work. .
  • CorpNewt for ProperTree, CPUFriendFriend and SSDTTime
  • Dortania Made the OpenCore Install Guide which was used to make this EFI.
  • ic005k for OpenCore Auxiliary Tools
  • benbaker76 for Hackintool
  • zhen-zen for YogaSMC
  • r/hackintosh community for helping me find solution to various issue I came across