This is another repository created by another ordinary person focused on implementing MacOS
on the Lenovo ThinkPad X1 Carbon Gen 7
(or, as I like to say, Lenovo ThinkTosh X1C7 😎).
INTRO: This project was created for people who are interested in seeing how it would be if we could implement MacOS
on a laptop that wasn't manufactured by Apple and could be used like a MacBook
by spending less (a lot less!) or even reusing your laptops for productivity, programming, work, entertainment, enthusiasts, etc.
Since late 2023, I've been working to understand how I can develop a way to implement MacOS
on the Lenovo ThinkPad X1
(especially the 7th Gen version), and since then, I've been enhancing the core of the project (config.plist
) to make the experience as good as possible without encountering problems or experiencing lagging. If you need help with any problem that appears, please visit. Reddit, TonyMacX86, call Copilot if you are Gen Z or just Google if you are like a boss.
Note
All tutorial here was made by Windows 10
. If you are using MacOS
or Linux
as a primary OS, maybe some commands be different. So be careful!
Caution
I'm not responsible for any problems or damages that could possibly occur on your laptop if you follow the tutorial below. The procedures transcribed in this repository were executed on the GitHub user's laptop and shared with the community for knowledge purposes without any obligation or warranty of success. By following these steps, YOU TAKE ALL RESPONSIBILITY IF YOU TRY TO REPLICATE THESE ONES.
One of the most important things to know is how MacOS
boot works, the steps before POST, and how EFI/Firmware deal with understanding each line inserted in our OpenCore config (config.plist
), ACPI files, kernel extensions, drivers, etc.
Once you have a basic knowledge about UEFI/BOOT, the minimum requirements that will be useful to boot the OS are to create, edit, and generate your SMBIOS, which is nothing more than simulating your laptop as a MacBook
for the OS.
EFI/BOOT flowchart 🔃
graph TD;
A[Power On] --> B[UEFI/EFI Firmware Initialization]
B --> C[POST Power-On Self-Test]
C --> D[UEFI Boot Manager]
D --> E[Load UEFI Drivers]
E --> F[Locate Boot Loader]
F --> G[Execute Boot Loader]
G --> H[Load Operating System]
B --> B1[Initialize CPU]
B --> B2[Initialize Memory]
C --> C1[Check Hardware Components]
C --> C2[Verify System Integrity]
D --> D1[Check Boot Configuration]
E --> E1[Load Network Drivers]
E --> E2[Load Storage Drivers]
F --> F1[Verify Boot Loader Signature]
G --> G1[Transfer Control to OS]
Working ✅
Feature | Status | Dependency | Remarks |
---|---|---|---|
Full Graphics Accleration (QE/CI) | ✅ | WhateverGreen.kext & AAPL,ig-platform-id = 00009B3E & device-id = A53E0000 |
It this configuration doesn't work, change:AAPL,ig-platform-id : 00009B3E or 0000A53Edevice-id : 9B3E0000 or A53E0000 |
Audio Output | ✅ | AppleALC.kext with Layout ID = 71 |
- |
Audio Speakers | ✅ | AppleALC.kext with Layout ID = 71 |
You have to manually aggregate the two output using "Audio MIDI Setup" to have 4 speakers working |
Audio Input | ✅ | AppleALC.kext with Layout ID = 71 |
Headset microphone is inconsistent and needs more testing |
Automatic Headphone Output Switching | ✅ | AppleALC.kext with Layout ID = 71 |
- |
Feature | Status | Dependency | Remarks |
---|---|---|---|
Battery | ✅ | ECEnabler.kext |
Battery life is native compared to Windows and Linux |
CPU Power Management (SpeedShift) | ✅ | CPUFriend.kext with CPUFriendDataProvider.kext |
Essential to make a battery management |
iGPU Power Management | ✅ | SSDT-PLUG.aml |
Essential to use graphics acceleration |
NVMe Drive Battery Management | ✅ | NVMeFix.kext |
Improves NVMe drive power management |
S3 Sleep / Hibernation Mode 3 | ✅ | HibernationFixup.kext |
Continuously working in improvement |
Feature | Status | Dependency | Remarks |
---|---|---|---|
WiFi | ✅ | AirportIltwm.kext |
Related to Wi-Fi connection |
Bluetooth | ✅ | IntelBluetoothFirmware.kext , BlueToolFixup.kext , and USBMap.kext |
Headset's microphone is not working via Bluetooth |
Ethernet | ✅ | IntelMausi.kext |
- |
HDMI 1.4 | ✅ | BusID patching | It only works properly after being put to sleep and woken up once (Hotplug & 4K resolution are supported) |
1st USB-C (Display output) | ✅ | - | It only works properly after being put to sleep and woken up once (Hotplug & 4K resolution are supported) |
2nd USB-C (Display output) | ✅ | - | It works properly (Hotplug is supported) |
USB 2.0 / USB 3.0 | ✅ | USBMap.kext |
Create your own USBMap.kext using CorpNewt |
USB 3.1 (Type-C) | ✅ | USBMap.kext and enable Thunderbolt 3 in BIOS |
Hotplug is working |
USB Power Properties in macOS | ✅ | - | - |
ThinkPad USB-C Docking Station | ✅ | - | Work smoothly |
Feature | Status | Dependency | Remarks |
---|---|---|---|
Brightness Adjustments | ✅ | WhateverGreen.kext , SSDT-PNLF.aml , enable-backlight-smoother property, and BrightnessKeys.kext |
enable-backlight-smoother property is optional for smoother birghtness adjustments |
TrackPoint | ✅ | VoodooPS2Controller.kext |
- |
TrackPad | ✅ | VoodooI2C.kext and VoodooI2CHID.kext |
- |
Built-in Keyboard | ✅ | VoodooPS2Controller.kext |
- |
Webcam | ✅ | USBMap.kext |
- |
Feature | Status | Dependency | Remarks |
---|---|---|---|
iCloud, iMessage, FaceTime | ✅ | Whitelisted Apple ID, Valid SMBIOS See Dortania / OpenCore-Install-Guide | Switch to itlwm.kext in order to work with macOS Sonoma |
Sidecar (wired) | ✅ | - | Tested with iPad Pro M1 with USB-C to USB-C cable |
Feature | Status | Dependency | Remarks |
---|---|---|---|
Multiple Boot | ✅ | - | macOS, Windows, and Linux distributions (Use this guide to setup dual boot on the same drive) |
Boot chime | ✅ | - | Working like a charme |
Fan Control / Multimedia Keys | ✅ | YogaSMC.kext |
I modified YogaSMC.kext in order to work with my setup |
FireVault 2 | ✅ | - | Working but the keyboard layout during boot is messed up! |
Not working ❌
Feature | Status | Dependency | Remarks |
---|---|---|---|
Fingerprint Reader | ❌ | - | I didn't even get to test |
Wireless WAN | ❌ | DISABLED in BIOS to save power. |
Unable to investigate as I have no need and my model did not come with WWAN |
DRM | ❌ | iGPU | DRM is broken with iGPUs |
Internal Microphone | ❌ | - | I hope it will work one day |
Thunderbolt 3 | ❌ | - | Not working |
Continuity Camera | ❌ | - | Not working with Intel wireless cards |
AirDrop | ❌ | - | Not working with Intel wireless cards |
Apple Watch Auto Unlock | ❌ | - | Not working with Intel wireless cards |
Instant Hotspot | ❌ | - | Not working with Intel wireless cards |
Sidecar (wireless) | ❌ | - | Not working with Intel wireless cards |
Continuity Markup and Sketch | ❌ | - | Not working with Intel wireless cards |
Handoff | ❌ | - | Support dropped with macOS Sonoma and the new AirportIltwm kext |
Universal Clipboard | ❌ | - | Support dropped with macOS Sonoma and the new AirportIltwm kext |
SMS & Phone Call via iPhone | ❌ | - | Support dropped with macOS Sonoma and the new AirportIltwm kext |
AirPlay to Mac | ❌ | - | Support dropped with macOS Sonoma and the new AirportIltwm kext |
Needs to fix 🛠
Color Banding | Unfortunately, I tried so many configurations and ways to fix the color banding on my ThinkPad model. If you had this problem and was able to resolve, please tell me or open a pull request detailing how to fix this issue. |
---|
This is a little brief of my hardware specifications. Depending on the type of model or the region where you reside, components may change:
Hardware info 💻
Category | Component | Note |
---|---|---|
Type | 20QE | - |
CPU | Intel Core i5-8365U | Whiskey Lake |
GPU | Intel UHD Graphics 620 | Whiskey Lake |
SSD | Intel SSDPEKKF256G8L | Swapped for compatibility, the laptop came with a Samsung MZ-VLB256B SSD |
Screen | 14" FHD - 1920 x 1080 | Touch screen |
Memory | 8GB / 2133MHz LPDDR3 | Soldered |
Battery | Integrated Li-Polymer 51Wh | Not removable |
Camera | 720p Camera | - |
Wi-Fi & BT | Intel Wi-Fi 6 AX201 | - |
Input | PS2 Keyboard & Synaptics I2C HID TrackPad | - |
Ports | 2x USB 3.1 Gen 1 (Right USB Always On) 2x USB 3.1 Type-C Gen 2 / Thunderbolt 3 (Power Delivery and DisplayPort) [Max 5120x2880 @60Hz] HDMI 1.4 (Max 4096x2160 @24Hz) |
Component | Version |
---|---|
OpenCore | 1.0.1 |
macOS Sonoma | 14.6.1 |
ProperTree | 0.3.0 |
Components |
---|
SSDT-AWAC |
SSDT-ECRW |
SSDT-PLUG |
SSDT-PNFL |
SSDT-THINK |
SSDT-USBX |
SSDT-XOSI |
Kexts ⚙
AirportItlwm | 2.3.0 |
---|---|
AppleALC | 1.9.1 |
AppleALCU | 1.9.1 |
BlueToolFixup | 2.4.0 |
BrightnessKeys | 1.0.3 |
CPUFriend | 1.2.8 |
CPUFriendDataProvider | 1.2.8 |
ECEnabler | 1.0.5 |
FeatureUnlock | 1.1.6 |
HibernationFixup | 1.5.1 |
IntelBluetoothFirmware | 2.4.0 |
IntelBTPatcher | 2.4.0 |
IntelMausi | 1.0.7 |
IntelSnowMausi | 1.0.7 |
Lilu | 1.6.8 |
NVMeFix | 1.1.1 |
RestrictEvents | 1.1.4 |
SMCBatteryManager | 1.3.3 |
SMCProcessor | 1.3.3 |
SMCSuperIO | 1.3.3 |
USBMap | ❓ |
VirtualSMC | 1.3.3 |
VoodooI2C | 2.8 |
VoodooI2CHID | 2.8 |
VoodooPS2Controller | 2.3.5 |
WhateverGreen | 1.6.7 |
YogaSMC | 1.5.3 |
UEFI 💾
Driver | Version |
---|---|
AudioDxe | OpenCorePkg 1.0.1 |
Ext4Dxe | OpenCorePkg 1.0.1 |
OpenCanopy | OpenCorePkg 1.0.1 |
OpenLinuxBoot | OpenCorePkg 1.0.1 |
OpenHfsPlus | OpenCorePkg 1.0.1 |
OpenRuntime | OpenCorePkg 1.0.1 |
ResetNvramEntry | OpenCorePkg 1.0.1 |
ToggleSipEntry | OpenCorePkg 1.0.1 |
Here, we are talking about how you can create your custom SMBIOS. Remember that each SMBIOS is unique, and because of that, I won't share my full SMBIOS.
- First, download the GenSMBIOS generator;
- Unzip the files where you can easily access them and open the
GenSMBIOS.bat
file; - Click on option 3. Here, the app will download additional packages and, once it finishes, it will shows another screen called "Generate SMBIOS";
- Access this page to choose the best SMBIOS that you want to use. In my case, I'm using the
MacBookPro16,3
SMBIOS; - Then, an entire SMBIOS config will be generated. Copy all the information to Notepad or a similar text editor.
Finished! Now you have your own SMBIOS config to proceed to the next step! 🚧🏃♂️
Now, you need to place the information that you copied from genSMBIOS
to you config.plist
. In this example, we're gonna use the ProperTree
app.
- Download ProperTree app and unzip it in the easy directory;
- Download all the files of this repository and unzip them in an easily accessible directory.
- Open the
ProperTree.bat
file and minimize thecmd prompt
. We don't need it and won't use it. Remember not to close thecmd prompt
, just minimize it! - Once ProperTree is open, click on File > Open and navigate to the path where you unzipped this repository and open the
config.plist
file (it's located in EFI/OC/config.plist). - A lot of information will pop up on your screen. To make this more manageable, right-click on the
Root
node and select “Collapse Children”. - Now, you need to navigate to the path where you will place all the SMBIOS information. Click on PlatformInfo > Generic and here are the fields you will fill in:
MLB | String | Board Serial |
---|---|---|
ROM | Data | Apple Room |
SystemProductName | String | Type |
SystemSerialName | String | Serial |
SystemUUID | String | SmUUID |
There we have it! You've finished the config.plist
configuration.
Now, this is one of the most important steps to do. You will need to download the MacOS image recovery in order to be able to boot up the system on your laptop. An important note to take is that all image paths written inside the recovery_url.txt
file are legitimate and directly pulled from Apple's domain. So, you don't need to worry about customized or malicious images downloaded via the macrecovery
app.
-
Download OpenCorePkg and extract the
macrecovery
utility from Utilities > macrecovery into an easily accessible directory on your PC. -
Now, you can do this in two ways:
- Access the folder where you unzipped the file (e.g.,
J:\macrecovery
), click on the File button in the upper-left corner, and selectOpen Windows PowerShell
orOpen Command Prompt
(depending on how your PC is configured). - Open
Command Prompt
orPowerShell
by right-clicking on the Windows logo and then typing the path where you unzipped the files (e.g.,cd J:\macrecovery
).
- Access the folder where you unzipped the file (e.g.,
-
Once the terminal is configured in the
macrecovery
directory, you will need to paste one of the commands below to download the MacOS Sonoma image recovery and wait until it finishes:python3 ./macrecovery.py -b Mac-937A206F2EE63C01 -m 00000000000000000 download
python3 ./macrecovery.py -b Mac-7BA5B2D9E42DDD94 download
-
When the download has finished, you will notice that two files were downloaded (
BaseSystem.chunklist
andBaseSystem.dmg
).
Well done! Now, you're gonna jump to the final step before trying the first boot up.
Alright, once you have your config.plist
configured and have downloaded the image recovery, it's time to set up your flash drive (or pen drive) to complete this configuration method.
- Choose your preferred flash drive (or pen drive) that will be used in this case. Remember that the device needs to have at least 1GiB to store all files (I recommend using one with 2GiB or higher for safekeeping).
- Format the device with the FAT32 file system. Otherwise, you won't be able to boot it on your laptop!
- Format options: Quick Format. You can use this option or not. It doesn't matter.
- Volume Label:
tempEFI
(optional name to identify). - When the flash drive (pen drive) has been formatted successfully, copy the
EFI
folder that contains theBOOT
andOC
folders, respectively (this is the folder where you edited theconfig.plist
file!). - Then, create a folder named
com.apple.recovery.boot
outside of the EFI folder, and copy and paste the two files that were downloaded bymacrecovery
in the previous step (BaseSystem.chunklist
andBaseSystem.dmg
). - Make a check-in to ensure that you correctly have two folders on your flash drive (pen drive):
EFI
andcom.apple.recovery.boot
.
Congratulations, you have completed all the steps successfully! Let's now make some configurations in the UEFI on your laptop! 🎖
This step may vary depending on your ThinkPad
model, UEFI version, region, etc. Below, there will be two options to choose from:
- The most common configuration found in various GitHub repositories;
- My Configuration.
UEFI settings commonly used
- 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)
My UEFI settings
- 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
User AuthorizationSupport in Pre Boot Environment -> Thunderbolt(TM) device
Disabled
- Security
Password
DisabledFingerprint
EnabledSecurity Chip
EnabledClear Security Chip
EnabledIntel TXT Feature
DisabledPhysical Presence for Clear
EnabledMemory Protection -> Execution Prevention
EnabledVirtualization -> Kernel DMA Protection
DisabledVirtualization -> Intel Virtualization Technology
EnabledVirtualization -> Intel VT-d Feature
EnabledVirtualization -> Enhanced Windows Biometric Security
EnabledI/O Port Access -> FingerPrint Reader
EnabledI/O Port Access -> Wireless WAN
EnabledSecure 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)
Once the configurations were done, let's boot this badboy up! 🚀
Once you have installed MacOS
, you need to move the EFI
folder from the flash drive to the SSD in order to boot the OS without needing the flash drive every time.
- Download MountEFI and install it on you machine;
- Then, click on the Finder option on the taskbar and select “Preferences”. On the General tab, check the Hard disks option and close the window.
- The MacOS HD folder will appear in the upper-right corner. Right-click on it and select “MountEFI”, type your password (if configured), copy the EFI folder from the flash drive, and paste it inside the EFI folder on your SSD (if the EFI folder contains another folder, delete it and paste the EFI folder. Only this folder needs to stay there).
- Close all windows, remove your flash drive, and restart the system. You will notice that
MacOS
can now boot up without needing the flash drive.
Congratulations, you have completed all the steps. Now, enjoy your machine! 🕹
To improve the Trackpad in macOS
, you have to disable Force Click and haptic feedback
in System Preferences -> Trackpad.
Like I said before, I won't share my full SMBIOS. But, you can use GenSMBIOS to create your own SMBIOS. Here is the common SMBIOS used for everyone:
MacBookPro16,3
- What I usedMacBookPro16,2
- Used by others
Note: If you use a different SMBIOS model than the MacbookPro16,3
that I've used. 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 MacBookPro16,3
to whatever Model ID you've chosen. This should provide a working USBMap.kext
.
Using the Layout ID 71
will enable the 4 speakers (top front & bottom rear) in System Preferences > Sound allowing you to select either set of speakers (Two Output). To combine the two you'll need to open Audio MIDI Setup
and create Multi-Output Device
with both sets of speakers. Unfortunately you can't control natively the volume of an Aggregate Device with the volume keys. You'll need to install AggregateVolumeMenu
Many thanks to those who made it possible to hackintosh my laptop and provided the library for this ThinkPad
series:
- X1C8-hackintosh repositories:
- X1C7-hackintosh repositories:
- X1C6-hackintosh repositories:
I wanna thanks this folks that contributed a lot with the idea of bring MacOS
to our ThinkPad
devices:
- @benbender for your hardwork. Much of this repo comes from your research and code. Thank you!
- @Fewtarius for your help with patching audio.
- @Colton-Ko for the great features template.
- @stevezhengshiqi for the one-key-cpufriend script.
- @corpnewt for GibMacOS and EFIMount.
- @xzhih for one-key-hidpi.
- daliansky/OC-little for various ACPI hotpatch samples.
- @velaar for your continual support and contributions.
- @Porco-Rosso putting up with my requests to test repo changes.
- @MSzturc for adding my requested features to ThinkpadAssistant.
- paranoidbashthot and \x for the BIOS mod.
- @zhen-zen for YogaSMC
Tech thanks for the folks below to keep updating the main kerx, ACP and drivers:
- The guys from Acidanthera that make this possible
- ben9923 for VoodooI2C
- Apple for macOS
- CorpNewt for USBMap and CPUFriendDataProvider
- headkaze for Hackintool
- Mieze for IntelMausiEthernet
- OpenIntelWireless for IntelBluetoothFirmware, itlwm and HeliPort
- People at r/hackintosh for their advice and help
- And every other contributor