Skip to content

seven-of-eleven/Lenovo-ThinkPad-X1C7-OC-Hackintosh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

X1C7-OpenCore-Hackintosh

Status: Stable | Used daily

X1C7 macOS

OpenCore macOS-Stable macOS-Stable

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.

Introduction

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:

  1. Generate SMBIOS values and add them in the config.plist (MacBookPro15,1 or MacBookPro15,4)
  2. Ensure the value of showpicker is true in the config.plist file to provide the opencore menu when booting.
  3. Prepare your install USB
  4. Move the entire EFI folder (with your modifications) to the proper partition on your USB (or hard drive once the install is complete).
  5. 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.

Credit to all these great people whom I don't know but have made my hackintosh dreams a reality:

Other 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:

UEFI

X1C7 i5

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
Neofetch screenshots

Neofetch Monterey

Installation Notes

UEFI settings

Config

  • Keyboard/Mouse
    • Trackpoint Enabled
    • Trackpad Enabled
  • Display
    • Boot Display Device ThinkPad LCD
    • Total Graphics Memory 256MB
    • Boot Time Extension Disabled
  • CPU
    • Intel Hyper-Threading Technology Enabled
  • Thunderbolt
    • Thunderbolt BIOS Assist Mode Disabled
    • Security Level No Security
    • Support in Pre Boot Environment -> Thunderbolt(TM) device Disabled

Security

  • Password Disabled
  • Fingerprint Disabled
  • Security Chip Disabled
  • Memory Protection -> Execution Prevention Enabled
  • Virtualization -> Kernel DMA Protection Disabled
  • Virtualization -> Intel Virtualization Technology Enabled
  • Virtualization -> Intel VT-d Feature Disabled
  • Virtualization -> Enhanced Windows Biometric Security Disabled
  • I/O Port Access -> FingerPrint Reader Disabled
  • I/O Port Access -> Wireless WAN Disabled
  • Secure Boot -> Secure Boot Disabled
  • Intel SGX -> Intel SGX Control Disabled
  • Device Guard Disabled

Startup

  • UEFI/Legacy Boot UEFI Only
  • CSM Support No
  • Boot 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:

AppleKeyboardLayouts.txt

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

GenSMBIOS

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:

  1. Rename the existing CPUFriendDataProvider.kext to something like CPUFriendDataProvider_BATT.kext.
  2. Rename CPUFriendDataProvider_PERF.kext to CPUFriendDataProvider.kext.
  3. Reboot and enjoy.
Audio Setup

Audio Setup enable both top and bottom speakers:

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

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

Status

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 to boot-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