Single-disk triple-boot hackintosh on Lenovo X1 Extreme Gen 3

Single-disk triple-boot hackintosh on Lenovo X1 Extreme Gen 3

https://preview.redd.it/3iwqfnx33e071.png?width=1920&format=png&auto=webp&s=be55b93684241eb501a0ef16309792dc2026a423

Hardware:

Laptop: Lenovo X1 Extreme Gen 3 (20TK001JUS)
CPU: Intel i9-10885h (Comet Lake)
iGPU: Intel UHD 630
dGPU: NVIDIA GeForce GTX 1650 Ti with Max-Q design (Turing architecture)
RAM: 32 GB DDR4-2933 MHz
Chipset: WM490 chipset
Audio Codec: ALC3286 (Functionally ALC 285)
Wifi/BT Card: Intel Wi-Fi 6 AX201
Touchpad and touch display devices: Synaptics clickpad/trackpoint over SMBus, PS/2
BIOS revision: N2VET30W (1.15 )
Hard disk: Western Digital PC SN730 SDBQNTY-1T00-1001 over NVMe

What Works:

Graphics:
iGPU Hardware Acceleration
Fairplay 1.x, 2.x and 3.x DRM

Audio: Internal speakers & headphone port

USB Ports: USB-A ports' 2.0 and 3.2 personalities
USB-C/Thunderbolt ports' USB 2.0 personality
Internal Camera

Sensors:
Laptop Lid
CPU power consumption
SSD & CPU temperature
RAM, SSD, & network usage
Battery level & AC Adapter (ECEnabler came at a very convenient time)

Network:
Wi-fi (using itlwm and HeliPort)
Bluetooth

Security:
Filevault
SIP
Apple Secure Boot (Without ApECID; including it for some reason caused OC to attempt to load a kernel file that didn't exist)
ScanPolicy
OC Vault
UEFI Secure Boot

Misc:
Sleep
iServices
CPU power management
3rd-party boot manager (GRUB2, because I don't like what OC's patches to to Windows & Ubuntu; even if my ACPI was completely platform-agnostic I'm of the belief that there would still be changes that affect these operating systems.)

What's not working:

Internal microphone array (It's through Intel SST)
SD Card reader (It's over PCI so it needs a driver, but it's a Gensys so none are available)
dGPU (Turing architecture is unsupported, so it's disabled using ACPI.)
HDMI port (hardwired to dGPU)
Fairplay 4.x DRM (Reliant on dGPU)
Bootchime (OC is unable to detect the HDEF device until after the boot process.)
CFG Lock (Lenovo firmware remains impregnable to all methods I've attempted, and RU.efi refuses to boot on my machine. Thankfully, CPU power management seems unaffected.)
Fingerprint reader (TouchID cannot be emulated)
Multitouch gestures (They're technically working, but need to be over-exaggerated for some reason. This is because VoodooRMI wasn't playing nice with tap-to-click, the trackpoint or secondary-click so I'm sticking with VoodooPS2 and VoodooSMBus for now with this being the cost for that choice.)

Untested:

USB-C/Thunderbolt ports' USB 3.0 personality, and Thunderbolt and Displayport capability (Suspected to likely not work)

Guides used:

Dortania
https://dortania.github.io/
RodsBooks' guide to UEFI Secure Boot
https://www.rodsbooks.com/efi-bootloaders/secureboot.html#signing

Often-used resources:

OpenCore Configuration.pdf
https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf
WEG documentation
https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md
VoodooSMBUS troubleshooting:
https://github.com/VoodooSMBus/VoodooSMBus/tree/dev#voodoosmbus-does-not-load

Things that I wish I had known at the beginning:

  1. Hackintoshing is a long, hard process, with many issues to address that are specific to your exact hardware. It was very humbling to come to learn how little I actually knew about computers. For me it took four weeks with an average of 4-6 hours per day. It is for this reason that I'm as proud as I am for having finished this project and for how much I learned, however.
  2. Use the -igfxmlr and -igfxblr boot arguments (Or their corresponding DeviceProperties) in addition to 0x3EA60005 as your framebuffer with a device-id of 0x00003EA6.I've had so many graphics-related headaches throughout the span of this project, and I kid you not knowing this at the beginning would've saved me a full week. Keep in mind these numbers are tuned for this exact combination of hardware and spoofed SMBIOS, so don't copy any part of it into your EFI and expect anything to work better without knowing why.
  3. How signing binaries works & how to use UEFI Secure Boot. This was a bit of a toughie at the very end, since the terms & file extensions were so confusing and often synonymous. In the end Configuration.pdf was the biggest help here in terms of what order to do things in, but I basically had to learn cryptography 101 and then use RodsBooks' guide for actually generating the keys & signing binaries because "sign the binaries with the private key" is not an instruction the average person knows how to follow.
  4. OpenCorePkg's Configuration.pdf is your friend. It is pretty much guaranteed to be more accurate than most guides out there, with the drawbacks of being verbose & highly technical in language. I recommend reading the entire thing through, stopping when you are confused or don't understand something before you begin the hack, especially if the learning aspect of hackintoshing is of significant importance to you.

Bonus bit of info that I'm very glad I did know and likely avoided a huge issue thanks to: Resetting NVRAM through Opencore on Thinkpads carries a risk of bricking the device. It's mentioned in the manual and multiple places online, but since this issue stops computers from getting to POST it is worth mentioning again. I decided to turn off AllowResetNVRAM in config.plist and removed the ResetNVRAM.efi from Tools very early on in the process because it's simply not a risk I'm willing to take. This was doubly true since I had the option of resetting UEFI variables & BIOS settings using the "Setup Defaults" option in the UEFI Firmware settings (Thinkpad Setup/BIOS Setup Utility).

Feel free to comment with questions if your hardware is the same, I'd hate for others to have to experience the same headaches I did.

submitted by /u/Majestic-Tiger5377
[link] [comments]