# macOS on Thinkpad X1 Carbon 6th Generation, Model 20KH*
[![macOS](https://img.shields.io/badge/macOS-Catalina-yellow.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
[![Clover](https://img.shields.io/badge/Clover-5100-red)](https://github.com/996icu/996.ICU/blob/master/LICENSE) *Last Clover version suppported, OpenCore is now my preferred bootloader.
[![BIOS](https://img.shields.io/badge/BIOS-1.43-blue)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
[![MODEL](https://img.shields.io/badge/Model-20KH*-blue)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
[![OpenCore](https://img.shields.io/badge/OpenCore-0.5.6-green)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
[![LICENSE](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
### Check out my blog [tylerspaper.com](https://tylerspaper.com/)
#### READ THE ENTIRE README.MD BEFORE YOU START.
#### I AM NOT RESPONSIBLE FOR ANY DAMAGES YOU MAY CAUSE.
#### IF YOU IMRPOVE UPON ANYTHING HERE, PLEASE CONTRIBUTE BY OPENING AN ISSUE OR A PULL REQUEST.
`I AM A ONE MAN TEAM, AND A FULL TIME STUDENT. SO, I MIGHT NOT BE ABLE TO RESPOND OR HELP YOU IN A TIMELY MANNER. BUT, I PROMISE I WILL GET TO YOU EVENTUALLY. PLEASE UNDERSTAND.`
`Lastly, if my work here helped you. Please consider donating, it would mean a lot to me.`
CHANGELOG
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
2020-3-29
### Added
SSDT-ALS0 hotpatch for faking ambient light sensor ALS0 per Catalina's brightness preservation.
SSDT-GPRW hotpatching for fixing instant wake (0D/6D patch).
### Changed
SSDT-Keyboard with the exception of F7 and F12, now maps all hotkeys to a Fn value that can be remapped within macOS. In addition, PrtSc is now remapped to F13.
SSDT-PLNF to a cleaner version.
Similarly, battery patch has been simplified.
### Deprecated
### Removed
Some unused patches within OpenCore config.plist has now been removed.
2019-12-22
### Added
Project website: https://tylernguyen.github.io/x1c6-hackintosh/
ACPI dump for `BIOS-v1.43`.
CHANGELOG.md to keep track of the project's developments.
OpenCore bootloader, version `0.5.3`.
Better SSDT patching with hotpatches under `patches`. Making sure to read `patches/README`.
### Changed
Switched completely to hotpatching through OpenCore. Credits to [daliansky](https://github.com/daliansky) and [jsassu20](https://github.com/jsassu20).
Updated main README, made it look more visually appealing and organized.
### Deprecated
Clover bootloader. Clover r5100 is the last version I used on this machine. Moving forward, OpenCore is my preferred bootloader. See `EFI-Clover/README.md`.
Reorganized folder/project structure. Setup instructions and references now under `docs`.
### Removed
Old static patches.
Old IORegistryExplorer dump.
ACPI Patches
# Hotpatching Notes
## **Credits and a huge thank you to [daliansky](https://github.com/daliansky) for the great work and documentation, as well as to [jsassu20](https://github.com/jsassu20) for the excellent translations.**
## Some patches here may be unused. Refer to the current OpenCore-EFI folder to see which one I am currently using.
## Some Thinkpad machines are `LPC` and some are` LPCB`. Please examine your own DSDT and modify patches as needed.
> ### SSDT-OCBAT0-TP_re80_tx70-80_x1c5th-6th_s12017_p51
**Need `OpenCore Patches/ TP Battery Basic Rename.plist`** if OpenCore. `preferred`
**Need `OpenCore Patches/ TP battery Mutex is set to 0 and renamed.plist`** if OpenCore. `preferred`
- Single battery system: only `BAT0` in ACPI, no` BAT1`.
> ### SSDT-PLUG-_PR.PR00
Why?: `Processor` in DSDT
```
Scope (\_PR)
{
Processor (PR00, 0x01, 0x00001810, 0x06){}
Processor (PR01, 0x02, 0x00001810, 0x06){}
Processor (PR02, 0x03, 0x00001810, 0x06){}
Processor (PR03, 0x04, 0x00001810, 0x06){}
Processor (PR04, 0x05, 0x00001810, 0x06){}
Processor (PR05, 0x06, 0x00001810, 0x06){}
Processor (PR06, 0x07, 0x00001810, 0x06){}
Processor (PR07, 0x08, 0x00001810, 0x06){}
Processor (PR08, 0x09, 0x00001810, 0x06){}
Processor (PR09, 0x0A, 0x00001810, 0x06){}
Processor (PR10, 0x0B, 0x00001810, 0x06){}
Processor (PR11, 0x0C, 0x00001810, 0x06){}
Processor (PR12, 0x0D, 0x00001810, 0x06){}
Processor (PR13, 0x0E, 0x00001810, 0x06){}
Processor (PR14, 0x0F, 0x00001810, 0x06){}
Processor (PR15, 0x10, 0x00001810, 0x06){}
}
```
> ### SSDT-PNLF-SKL_KBL
Why?: `Skylake/ KabyLake/ KabyLake-R`.
Used in conjufction with `WhateverGreen.kext`
> ### SSDT-HPET_RTC_TIMR-fix
- This patch cannot be used with the following patches:
- ***SSDT-RTC_Y-AWAC_N*** of the "Preset Variable Method"
- OC official ***SSDT-AWAC***
- "Counterfeit Device" or OC official ***SSDT-RTC0***
- ***SSDT-RTC0-NoFlags for CMOS Reset Patch***
> ### SSDT-Keyboard
Keyboard path is `\ _SB.PCI0.LPCB.KBD`.
- Remap 1:
- Remap 2:
- Remap 3:
- Remap 4: F8 (Network) to F18
- Remap 5: F9 (Settings) to F19
- Remap 6: F10 (Bluetooth) to F20
- Remap 7: F11 (Keyboard) to F17
- Remap 8:
- Remap 9:
- Remap 10: PrtSc to F13
> ### SSDT-PTSWAK
### SSDT-EXT3-LedReset-TP
### SSDT-EXT4-WakeScreen
**Need `OpenCore Patches/ Comprehensive Patch Changed Its Name To.plist`** if OpenCore. `preferred`
**Need `Clover Patches/ Comprehensive Patch Changed Its Name To.plist`** if Clover.
Look up `_PTS` and `_WAK` and only apply the corresponding patches:
`_PTS` is `NotSerialized` in my DSDT
`_WAK` is `Serialized` in my DSDT
- ***SSDT-PTSWAK*** —— Comprehensive Patch。
- ***SSDT-EXT3-LedReset-TP*** — `EXT3` extension patch. Solve the problem that the breathing light does not return to normal after the TP machine wakes up。
- ***SSDT-EXT4-WakeScreen*** — `EXT4` extension patch. Solve the problem that some machines need to press any key to light up the screen after waking up. When using, you should inquire whether the `PNP0C0D` device name and path already exist in the patch file, such as` _SB.PCI0.LPCB.LID0`. If not, add it yourself.
> ### SSDT-SBUS
Why?: `0x001F0004` under Device (SBUS).
> ### SSDT-DMAC
Why?: `PNP0200` is missing in DSDT.
> ### SSDT-MCHC
Why?: `MCHC` is missing in DSDT.
> ### SSDT-PMCR
Why?: `PMCR`,` APP9876` missing in DSDT.
> ### SSDT-PWRB
Why?: `PNP0C0C` missing in DSDT.
> ### SSDT-ALS0
Why?: `ACPI0008` missing in DSDT.
> ### SSDT-GPRW
Why?: Fix instant wake by hooking GPRW (0D/6D Patch)
Getting Started
> ## SUMMARY:
| Fully functional | Non-functional | Semi-functional. Additional pulls needed and welcomed. |
|-------------------------------------------------------------------|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| Wifi and Bluetooth \*need card replacement ⚠️| Fingerprint Reader (not needed, DISABLED at BIOS) ❌| HDMI, currently only outputs at 1080p.Though capable of 4K 4096x2150. ⚠️|
| USB A, USB C, Webcam, Audio Playback/Recording Sleep, Ethernet, Intel Graphics, TrackPoint and Trackpad ✅ | Wireless WAN (DISABLED at BIOS) *ENABLED if you have a 2nd drive connected❌ | Function keys, F1-F6 work. The rest need to be mapped and patched via DSDT/SSDTs. ⚠️|
| iCloud suite: App Store, iMessage, FaceTime, iCloud Drive, etc... ✅ | Hibernation ❌ | Power management and optimizations. See [Issue #28](https://github.com/tylernguyen/x1c6-hackintosh/issues/28) ⚠️|
| HiDPI, Handoff, Sidecar ✅ | | USB power property injection - unsure of real values. ⚠️|
| MicroSD card reader ✅| | Thunderbolt 3 Hotplug: partially working [More details](https://github.com/tylernguyen/x1c6-hackintosh/issues/24#issuecomment-603183002) ⚠️|
> ## NEEDED:
A macOS machine would be VERY useful: to create install drives, and for when your ThinkPad cannot boot. Though it is not completely necessary.
[Clover Configurator](https://mackie100projects.altervista.org/download-clover-configurator/), if [Clover](https://github.com/Dids/clover-builder) is your bootloader.
Flash drive, 16GB or more.
Xcode works fine, but I prefer [PlistEdit Pro](https://www.fatcatsoftware.com/plisteditpro/).
[MaciASL](https://github.com/acidanthera/MaciASL), for patching ACPI tables.
[IOJones](https://github.com/acidanthera/IOJones), for diagnosis.
[Hackintool](https://www.insanelymac.com/forum/topic/335018-hackintool-v286/), for diagnosis.
> ## WHERE TO START:
Explore links included this README, especially those in references and other x1c6-hackintosh repos.
Once you are ready, follow the series of README files included `docs/`.
**1_README-HARDWAREandBIOS**: Requirements before starting.
**2_README-installMEDIA**: Creating the macOS install drive.
**3_README-POSTinstallation**: Settings and tweaks post installation.
**4_README-ACPIpatching**: The hardest and most time consuming part, patching the system ACPI table for battery status, brightness, sleep, thunderbolt, thunderbolt hotplugging, etc...
* While you can plug-and-play most of my hotpatches if you have an x1c6, I still suggest that you dump and disassemble your own DSDT. This is imprortant as your DSDT maybe different from mine. And furthermore, you get to learn more about what's actually going on.
> ## MY SPECIFICATIONS:
Refer to [x1c6-Platform_Specifications](https://github.com/tylernguyen/x1c6-hackintosh/blob/master/docs/x1c6-Platform_Specifications.pdf) for possible stock ThinkPad X1 6th Gen configurations.
| Processor Number | # of Cores | # of Threads | Base Frequency | Max Turbo Frequency | Cache | Memory Types | Graphics |
|:--|:--|:--|:--|:--|:--|:--|:--|
| [i7-8650U](https://ark.intel.com/content/www/us/en/ark/products/124968/intel-core-i7-8650u-processor-8m-cache-up-to-4-20-ghz.html) | 4 | 8 | 1.9 GHz | 4.2 GHz | 8 MB | LPDDR3-2133 | Intel UHD 620 |
**Peripherals:**
```
Two USB 3.1 Gen 1 (Right USB Always On)
Two USB 3.1 Type-C Gen 2 / Thunderbolt 3 (Max 5120x2880 @60Hz)
HDMI 1.4b (Max 4096x2160 @30Hz)
Ethernet via ThinkPad Ethernet Extension Cable Gen 2: I219-LM Ethernet (vPro)
No WWAN
TrackPoint: PS/2
TrackPad: PS/2
```
**Display:**
`14.0" (355mm) HDR WQHD (2560x1440)`
**Audio:**
`ALC285 Audio Codec`
**Thunderbolt:**
`Intel JHL6540 (Alpine Ridge 4C) Thunderbolt 3 Bridge`
> ## REFERENCES:
* [The Vanilla Laptop Guide](https://fewtarius.gitbook.io/laptopguide/)
* Daliansky's [Hackintool tutorial](https://translate.google.com/translate?js=n&sl=auto&tl=en&u=https://blog.daliansky.net/Intel-FB-Patcher-tutorial-and-insertion-pose.html).
* [An iDiot's Guide To Lilu and its Plug-ins](https://www.tonymacx86.com/threads/an-idiots-guide-to-lilu-and-its-plug-ins.260063/)
* [General Framebuffer Patching Guide (HDMI Black Screen Problem)](https://www.tonymacx86.com/threads/guide-general-framebuffer-patching-guide-hdmi-black-screen-problem.269149/)
* [Intel Framebuffer patching using WhateverGreen](https://www.tonymacx86.com/threads/guide-intel-framebuffer-patching-using-whatevergreen.256490/)
> ## OTHER x1c6-hackintosh REPOSITORIES:
[zhtengw/EFI-for-X1C6-hackintosh](https://github.com/zhtengw/EFI-for-X1C6-hackintosh)
[Colton-Ko/macOS-ThinkPad-X1C6](https://github.com/Colton-Ko/macOS-ThinkPad-X1C6)
Create a pull request if you like to be added, final decision at my discreation.
> ## OPTIMIZATIONS:
* Repaste the machine with thermal [Grizzly Kryonaut](https://www.thermal-grizzly.com/en/products/16-kryonaut-en).
* Undervolt the machine with [Volta](https://volta.garymathews.com/).
* If you must dual boot with Windows or Linux, I advise against paritition. What I recommend, instead, is getting a second compatible hard drive that fits in the WWAN card slot (I have the WDC PC SN520 NVMe 2242), install Windows/Linux onto that drive. Finally, boot into it with Clover or OpenCore.
* If your laptop did not come with WWAN, you can purchase additional antennas to add to your laptop. This is useful when using Wifi/Bluetooth cards that have 3 antennas.
> ## CONTACT:
https://tylerspaper.com/contact
Signal: (202)-644-9951 *This is a Signal ONLY number. You will not get a reply of you text me at this number.
> ## DONATE AND SUPPORT:
https://tylerspaper.com/support/
> ## Credits and Thank You:
[@Colton-Ko](https://github.com/Colton-Ko/macOS-ThinkPad-X1C6) for the great features template.
[@stevezhengshiqi](https://github.com/stevezhengshiqi) for the one-key-cpufriend script.
[@corpnewt](https://github.com/corpnewt) for CPUFriendFriend.
[@xzhih](https://github.com/xzhih) for one-key-hidpi.
[@daliansky](https://github.com/daliansky) for all the hotpatches.
[@jsassu20](https://github.com/jsassu20) for translating daliansky's documentations.
[@velaar](https://github.com/velaar) for your continual support and contributions.
And the greatest thank you and appreciation to [@Acidanthera](https://github.com/acidanthera), without whom's work, none of this would be possible.
Please let me know if I missed you.