Status: Stable | Used daily
DISCLAIMER As you embark on your Hackintosh journey you are encouraged to READ the entire README and Dortania guides before you start. It will save many a message instructing you to RTM. I am not an expert, I haven't forced you to do anything, put on your big boy pants and take responsibility for any mess you get yourself into.
All 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.
This is not a guide!
This is not a guide. It shoud only be used as a reference. I provide some tips and tricks I learned on my journey in building this hackintosh. The best way of using this is as a supplement to the OpenCore guide. If you have questions about how to setup your specific hardware, are unclear about what to do, or would like to compare to the settings I've used.
I understand that some may simply add the OC and Boot folders to their EFI folder. For clarity the EFI partition needs a folder called EFI that contains the Boot and OC folder:
EFI (drive)
EFI
├── BOOT
├── OC
It should work and your X1C7 should boot and work fine. You will at minimum need to generate SMBIOS values if you want Apple services to work. Note that all error reporting/logging has been turned off in the config.plist. You will have a difficult time trouble shooting with the setup provided. You can easily turn on the error reporting and logging if you follow the Dortania guide.
NOTE if you simply wish to copy my EFI please do the following:
- Generate SMBIOS values and add them in the config.plist (MacBookPro15,1 or MacBookPro15,4)
- Ensure the value of
showpicker
istrue
in the config.plist file to provide the opencore menu when booting.- Prepare your install USB
- Move the entire EFI folder (with your modifications) to the proper partition on your USB (or hard drive once the install is complete).
- Install - You'll need to select F12 to get the boot menu options and boot from the USB each time the computer restarts until you've copied the EFI folder onto the hard drive. You may also need to select the correct boot option during install.
This is a guide!
- To install macOS follow the guides provided by Dortania
Credits
Shout out to NotARobot6969 for the DevicesProperties patches to enable HDMI.
- EETagent For orginal T480 OpenCore repo (I like the layout of his guide and used it to create this one)
- The guys from Acidanthera that make this possible
- 1Revenger1 and leo-labs for VoodooRMI and VoodooSMBus
- Apple for macOS and HfsPlus.efi
- corpnewt for USBMap and CPUFriendDataProvider
- headkaze for Hackintool
- jwise for HoRNDIS
- Mieze for IntelMausiEthernet
- MSzturc for ThinkPad Assistant
- OpenIntelWireless for IntelBluetoothFirmware, itlwm and HeliPort
- zhen-zen for YogaSMC
- And every other contributor
- People at r/hackintosh for their advice and help
- Useful tools by CorpNewt and headkaze
Other Repositories
- x1c8-hackintosh repositories:
- x1c7-hackintosh repositories:
- x1c6-hackintosh repositories:
Hardware
At one time I had two Lenovo ThinkPad X1 Gen 7 laptops, an i5 and an i7. Both worked great (including the touch screen on the i7). I now only have the one computer outlined below:
Category | Component | Note |
---|---|---|
Type | 20QD, 20QE | |
CPU | Intel Core i5-8265U | |
GPU | Intel UHD 620 | |
SSD | Toshiba 512GB | Replaced PM 981 which doesn't work reliably |
Screen | 14" WQHD - 2560x1440 | |
Memory | 16GB / 2133MHz LPDDR3 | |
Battery | Integrated Li-Polymer 51Wh | Single battery |
Camera | 720p Camera | |
Wifi & BT | Intel Wireless-AC 9560 | Used AirportItlwm for native Wi-Fi control |
Input | PS2 Keyboard & Synaptics TrackPad | YogaSMC for media keys |
Main software
Component | Version |
---|---|
macOS Monterey | 13.6.6 |
OpenCore | v0.9.9 |
ACPI Files
Component |
---|
SSDT-AWAC |
SSDT-BATT |
SSDT-EC-USBX-LAPTOP |
SSDT-PLUG-DRTNIA |
SSDT-PNLF-CFL |
SSDT-XOSI |
Kernel extensions
Kext | Version |
---|---|
AirportItlwm | 2.2.0 |
AirportItlwmM (Monterey) | 2.2.0 |
AppleALC | 1.8.9 |
BlueToolFixup | 2.6.8 |
BrightnessKeys | 1.0.3 |
CPUFriend | 1.2.7 |
CPUFriendDataProvider | 1.01 |
IntelBluetoothFirmware | 2.4.0 |
IntelBTPatcher | 2.4.0 |
IntelMausi | 1.0.7 |
Lilu | 1.6.7 |
NVMeFix | 1.1.1 |
SMCBatteryManager | 1.3.2 |
SMCProcessor | 1.3.2 |
SMCSuperIO | 1.3.2 |
USBMap | 1.0.1 |
VirtualSMC | 1.3.2 |
VoodooI2C | 2.8.0 |
VoodooI2CHID | 2.8.0 |
VoodooPS2Controller | 2.3.5 |
WhateverGreen | 1.6.6 |
YogaSMC | 1.5.3 |
UEFI drivers
Driver | Version |
---|---|
HfsPlus.efi | OcBinaryData |
OpenRuntime.efi | OpenCorePkg 0.9.9 |
UEFI settings
Config
- Keyboard/Mouse
Trackpoint
EnabledTrackpad
Enabled
- Display
Boot Display Device
ThinkPad LCDTotal Graphics Memory
256MBBoot Time Extension
Disabled
- CPU
Intel Hyper-Threading Technology
Enabled
- Thunderbolt
Thunderbolt BIOS Assist Mode
DisabledSecurity Level
No SecuritySupport in Pre Boot Environment -> Thunderbolt(TM) device
Disabled
Security
Password
DisabledFingerprint
DisabledSecurity Chip
DisabledMemory Protection -> Execution Prevention
EnabledVirtualization -> Kernel DMA Protection
DisabledVirtualization -> Intel Virtualization Technology
EnabledVirtualization -> Intel VT-d Feature
DisabledVirtualization -> Enhanced Windows Biometric Security
DisabledI/O Port Access -> FingerPrint Reader
DisabledI/O Port Access -> Wireless WAN
DisabledSecure Boot -> Secure Boot
DisabledIntel SGX -> Intel SGX Control
DisabledDevice Guard
Disabled
Startup
UEFI/Legacy Boot
UEFI OnlyCSM Support
NoBoot Mode
Diagnostics (This can be changed to "Quick" once you know your system is running properly)
Keyboard Setup - prev-lang-kbd
To set the default language either add it as a string or as a data ( HEX data (ProperTree) )
Format is lang-COUNTRY:keyboard
- 🇺🇸 | [0] en_US - U.S --> en-US:0 --> (656e2d55 533a30 in HEX)
Key | Type | Value |
---|---|---|
prev-lang:kbd | String | en-US:0 |
Pick your keyboard layout here:
Monterey or Ventura
The EFI folder is setup for both Monterey and Ventura. I used MinKernel
and MaxKernel
values in the config.plist to load the proper kexts based on which OS you are installing.
No longer setup for Big Sur. It will likely boot but the kexts for WiFi and Bluetooth will need to be replaced for it to work properly.
TrackPad - Disable force touch
If the Battery management doesn't show up in the System Preferences after the SSDT-Batt.aml file is added to your ACPI folder and config.plist file. You will not be able to change any trackpad settings. You may experience the annoying behaviour of clicking on the touchpad and it doing a Force Touch where the preview of the file is shown. I found this very annoying. You can disable force touch by modifying the file in ~/Library/Preferences/com.apple.AppleMultitouchTrackpad.plist
Opened it with Propertree and changed ForceSuppressed to True
Another trick to manage your trackpad, if you can't get the battery to work, is to connect a bluetooth trackpad. Once the bluetooth trackpad is connected you can adjust the settings. Disconnect the bluetooth trackpad and your built in one will maintain those settings.
I used these methods prior to receiving a SSDT-Batt.aml that worked from a friendly Redditor Galactic_Dev
Generate your own SMBIOS
Use GenSMBIOS to create your own serial #... based off of your preferred model.
- MacBookPro15,1 -
What I previously used
- MacBookPro15,4 -
Presently using
Note: If you use a different SMBIOS model than either of the two above. The provided USB mapping will not work. You will need to edit the USBMap.kext file. You can right click on the file and select Show Package Contents. From there you can open the Info.plist file in ProperTree and change MacBookPro15,1 to whatever Model ID you've chosen. This will provide a working USBMap.kext.
CPUFriend power management
Thanks to madeline-xoxo for the new CPUFriendDataProvider options.
The default CPUFriendDataProvider.kext has changed. It is now set to a battery-conserving "CPUFriendDataProvider.kext". If you'd like more performance you can switch it to the more performant "CPUFriendDataProvider_PERF.kext".
The default CPUFriendDataProvider lasts far, far longer and charges much faster. You can expect battery life of about 18 hours or so in light usage, and anywhere between 14-15 hours or so with heavy usage (update: after writing this whole note, while on battery power, it is still on 100%. This goes to show how much of a difference tuning makes). The PERF option will give you far superior performance (boost, base and avg clocks are all set higher and MBA battery features are disabled), but will take a heavy toll on battery life. You can expect about 6 hours with light usage, and 2-3 hours with heavy usage. Obviously, these are two extremes, and if you want to customize a CPUFriendDataProvider, you can make your own using CorpNewt's amazing CPUFriendFriend. If you don't know what you need, stick with the default. It'll grant you far superior battery life while still providing the boost needed for 1080p60 video streaming.
In terms of charging speed, you'll get from 0% to 100% in about 45 minutes to an hour using BATT, and 0% to 100% in 1 and a half to 2 hours using PERF in my experience.
To change the CPU tuning simply:
- Rename the existing CPUFriendDataProvider.kext to something like CPUFriendDataProvider_BATT.kext.
- Rename CPUFriendDataProvider_PERF.kext to CPUFriendDataProvider.kext.
- Reboot and enjoy.
Audio Setup
Key | Value |
---|---|
boot-args | alcid=71 |
Using the above boot-arg to initially setup your config.plist file. This will enable the top and bottom speakers in the System Preferences>Sound allowing you to select either set of speakers. To combine the two you'll need to open Audio MIDI Setup (use Spotlight to find and open it) and create an Aggregate Device with both sets of speakers. Unfortunately you can't control the volume of an Aggregate Device with the volume keys. You'll need to install a utility as highlighted below.
Create Multi-output device or Aggregate Device in Audio MIDI Setup controller for all speakers - use utility like AggregateVolumeMenu to control the volume
- See description here Change Volume on Aggregate Sound
If you're happy with the setup above you can use the guide to replace alcid=71 per below:
- Add audio codec to DeviceProperties - layout-id | data | 47000000
What's working ✅
- Battery percentage
- Bluetooth - Intel Wireless-AC 9560
- CPU power management
- HDMI -
HDMI is working fine through the HDMI port, haven't tested via the USB-C port though. Doesn't work if plugged in at boot until you unplug and replug.
- GPU UHD 620 hardware acceleration / performance (if not working add
-igfxmlr
flag toboot-args
in config.plist issue #6) - iMessage, FaceTime, App Store, iTunes Store. Generate your own SMBIOS
- Intel I219-V Ethernet port -
works with the Lenovo dongle
- Keyboard
Volume and brightness hotkeys. Another media keys with YogaSMC.
- Realtek® ALC3286 ("ALC285") Audio -
See setup above
- Sleep/Wake
- TouchPad
1-5 fingers swipe gestures
- TrackPoint
Works perfectly. Just like on Windows or Linux.
- USB Ports
USB Map is different for devices with Windows Hello camera.
- Web camera
- Wifi - Intel Wireless-AC 9560
- Multi-Touch Screen
- Graphical Boot menu
OpenCanopy
What's not working ⚠️
- Fingerprint reader -
There is finally after many years working driver for Linux (python-validity), don't expect macOS driver any time.
- Samsung PM 981 NVME -
Still unstable. Could work for some, not for others. (In most cases which it does work, it will give a "hash mismatch" error every so often.)
- Microphone -
Microphone doesn't work due to the fact that there is no AppleALC layout specifically for the X1C7. This will require some knowledge on AppleALC to get working; specifically on how pin configs work and how to make custom layouts. Maybe for someone more experienced? If you're willing to give it a shot,
here's a codec#0 dump I made under xubuntu.Remember to PR if you get it working!
Untested
- Thunderbolt -
No device to test.
- Boot chime -
should work but I don't use it personally
- FireVault 2 -
should work just haven't bothered with it
- Sidecar wired -
untested
- Sidecar wireless -
untested
- Windows/Linux from OC boot menu -
It's best practice to not boot from OC when planning to perform firmware upgrade