simprecicchiani / ThinkPad-T460s-macOS-OpenCore

Bootloader configuration for macOS on T460s and possibly other 6th gen ThinkPads
BSD 3-Clause "New" or "Revised" License
338 stars 60 forks source link
bigsur catalina efi hackintosh laptop macos opencore t460s thinkpad

macOS on ThinkPad T460s

Lenovo ThinkPad T460s macOS Hackintosh OpenCore

macOS OpenCore Model BIOS License

DISCLAIMER:
Read the entire README before you start.
The developers are not responsible for any damages you may cause.
Should you find an error or improve anything — whether in the config or in the documentation — please consider opening an issue or pull request.

Introduction

Getting started 📖
**Meet the bootloader:** - [Why OpenCore](https://dortania.github.io/OpenCore-Install-Guide/why-oc.html) - Dortania's [website](https://dortania.github.io) **Recommended tools:** - Plist editor [ProperTree](https://github.com/corpnewt/ProperTree) - Handy-dandy ESP mounting script [MountEFI](https://github.com/corpnewt/MountEFI) - Update OpenCore and kexts [OCAuxiliaryTools](https://github.com/ic005k/OCAuxiliaryTools) **Resources** - [OpenCore](https://github.com/acidanthera/OpenCorePkg) - [OC-little](https://github.com/daliansky/OC-little) - [X1 Carbon config](https://github.com/tylernguyen/x1c6-hackintosh) - [T460 config](https://github.com/MSzturc/Lenovo-T460-OpenCore)

Tested Hardware 💻
| Model | ThinkPad T460s 20F90002\*\* | | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Processor | Core i5-6200U (2C, 2.4 / 3.0GHz, 3MB) | | Graphics | Integrated Intel HD Graphics 520 | | Memory | 4GB Soldered + 8GB DIMM 2133MHz DDR4, dual-channel | | Display | 14" Full HD (1920x1080) IPS, Touch (read [Post-install>Enable Touchscreen](https://github.com/simprecicchiani/ThinkPad-T460s-macOS-OpenCore#post-install-optional)) | | Storage | Western Digital Black SN550 500GB NVMe SSD | | Ethernet | Intel Ethernet Connection I219-LM (Jacksonville) | | WLAN + Bluetooth | 11ac+BT, Intel® Dual Band Wireless-AC 8260, 2x2 card | | Camera | HD720p resolution, low light sensitive, fixed focus | | Audio support | HD Audio, Realtek ALC3245 codec, stereo speakers 1Wx2, dual array microphone, combo audio/microphone jack | | Keyboard | 6-row, spill-resistant, multimedia Fn keys, LED backlight | | Battery | Front Li-Polymer 3-cell (23Wh) and rear Li-Ion 3-cell (26Wh), both Integrated |
Hardware compatibility 🧰
This EFI will suit any T460s regardless of CPU model[1](#CPU), amount of RAM, display resolution[2](#Res) and internal storage[3](#NVMe). 1. Optional custom CPU Power Management guide. 2. 1440p displays should change `NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> UIScale`:`2` to get proper scaling while booting. 3. Follow NVMe fix guide below for NVMe drives. This bootloader configuration may be compatible with other 6th generation ThinkPads with some caveats (i.e. not working USB ports, display ports, etc.). You may find more luck searching for your specific device on GitHub. Here are some notable repositories for similar devices: | Author | Model | Bootloader | | :------ | -------------------------------------------------------------------------- | ---------- | | MSzturc | [T460](https://github.com/MSzturc/Lenovo-T460-OpenCore) | Opencore | | duszmox | [X1 Carbon Gen 4](https://github.com/duszmox/ThinkPad-X1C4-macOS-OpenCore) | Opencore | | Tluck | [T560/T460](https://github.com/tluck/Lenovo-T460-Clover) | Clover |

Installation

How to install macOS
1. [Create an installation media](https://dortania.github.io/OpenCore-Install-Guide/installer-guide/#making-the-installer) 1. Download the [latest EFI folder](https://github.com/simprecicchiani/ThinkPad-T460s-macOS-OpenCore/releases) and copy it into the ESP partiton 1. Change your BIOS settings according to the table below 1. Boot from the USB installer (press `F12` to choose boot volume) and [start the installation process](https://dortania.github.io/OpenCore-Install-Guide/installation/installation-process.html#booting-the-opencore-usb) | Menu | | | Setting | | -------- | ----------------- | ------------------------------- | ----------- | | Config | USB | UEFI BIOS Support | `Enable` | | | Power | Intel SpeedStep Technology | `Enable` | | | | CPU Power Management | `Enable` | | | CPU | Hyper-Threading Technology | `Enable` | | Security | Security Chip | | `Disable` | | | Memory Protection | Execution Prevention | `Enable` | | | Virtualization | Intel Virtualization Technology | `Enable` | | | | Intel VT-d Feature | `Enable` | | | Anti-Theft | Computrace | `Disable` | | | Secure Boot | | `Disable` | | | Intel SGX | | `Disable` | | | Device Guard | | `Disable` | | Startup | UEFI/Legacy Boot | | `UEFI Only` | | | CSM Support | | `No` | | | Boot Mode | | `Quick` |
Enable Apple Services
1. Run the following script in Terminal ```bash git clone https://github.com/corpnewt/GenSMBIOS && cd GenSMBIOS && chmod +x GenSMBIOS.command && ./GenSMBIOS.command ``` 2. Type `3` to Generate SMBIOS, then press ENTER 3. Type `MacbookPro16,3 5`, then press ENTER. Leave this Terminal window open. 4. Open `/EFI/OC/Config.plist` with any editor and navigate to `PlatformInfo -> Generic` 5. Add the script's last result to `MLB, SystemSerialNumber and SystemUUID` ```diff PlatformInfo Generic AdviseWindows SystemMemoryStatus Auto MLB + M0000000000000001 ProcessorType 0 ROM ESIzRFVm SpoofVendor SystemProductName MacBookPro16,3 SystemSerialNumber + W00000000001 SystemUUID + 00000000-0000-0000-0000-000000000000 ``` 6. Save and reboot the system
How to update the bootloader
1. Download the [latest release](https://github.com/simprecicchiani/ThinkPad-T460s-macOS-OpenCore/releases) 1. Copy and Paste your `PlatfromInfo` 1. Enable optional kexts if needed (NVMEFix, AirportItlwm, etc.) 1. Test the new bootloader with an USB stick (Set `BootProtect: None` whenever booting with external drives) 1. Customize boot preferences (skip picker, disable verbose, etc.) 1. Mount your ESP partition 1. Backup your old EFI folder and replace it with the new one

Post-install (optional)

Enable Touchscreen
1. Open `/EFI/OC/Config.plist` with any editor 1. Add the content of [#touchscreen.plist](EFI/OC/%23touchscreen.plist) 1. Save and reboot the system **Note:** Tested on macOS BigSur, [working with gestures](https://youtu.be/-F0JAVIG92M).
Enable Intel WLAN cards
The EFI contains macOS Monterey and Ventura compatible drivers. The default driver enabled in `config.plist` is macOS Monterey compatible. Should you need the Ventura driver, please disable `Airportitlwm.kext` and enable `Airportitlwm-13.kext`. If you're running a different version of macOS please download and enable a compatible version of [AirportItlwm.kext](https://github.com/OpenIntelWireless/itlwm/releases). If you have bluetooth problem please reference to the [IntelBluetoothFirmware](https://openintelwireless.github.io/IntelBluetoothFirmware/FAQ.html#what-does-this-kext-do) Optional: [Remove unnecessary firmware files from OpenIntelWireless drivers](./Guides/Clean-OpenIntelWireless.md).
Enable non-natively supported Broadcom WLAN cards
1. Download [AirportBrcmFixup](https://github.com/acidanthera/AirportBrcmFixup/releases) and [BrcmPatchRAM](https://github.com/acidanthera/BrcmPatchRAM/releases). 1. Copy `AirportBrcmFixup.kext`, `BrcmBluetoothInjector.kext`, `BrcmFirmwareData.kext` and `BrcmPatchRAM3.kext` to `/EFI/OC/Kexts` 1. Open `/EFI/OC/Config.plist` with any editor 1. Add the content of [#broadcom-wlan.plist](/EFI/OC/%23broadcom-wlan.plist) 1. Save and reboot the system If you have bluetooth problem please reference to the [AirportBrcmFixup](https://github.com/acidanthera/AirportBrcmFixup)
Fix NVMe power management
1. Open `/EFI/OC/Config.plist` with any editor 1. Add the content of [#nvme-fix.plist](/EFI/OC/%23nvme-fix.plist) 1. Save and reboot the system
Custom CPU Power Management
1. Run the following script in Terminal ``` git clone https://github.com/corpnewt/CPUFriendFriend; cd CPUFriendFriend; chmod +x ./CPUFriendFriend.command; ./CPUFriendFriend.command ``` 1. When asked, select preferred values 1. From the pop-up window, copy `ssdt_data.aml` into `/EFI/OC/ACPI/` folder (rename it if you'd like) 1. Open `/EFI/OC/Config.plist` with any editor 1. Add the content of [#cpu-pm.plist](/EFI/OC/%23cpu-pm.plist) (make sure `SSDT-PLUG.aml` is disabled and match your new SSDT filename) 1. Save and reboot the system
ThinkPad Dock USB ports mapping
Please follow this [USB mapping guide](https://dortania.github.io/OpenCore-Post-Install/usb/).

Other tweaks

Enable HiDPI
1. [Disable SIP](https://dortania.github.io/OpenCore-Install-Guide/troubleshooting/troubleshooting.html#disabling-sip) 1. Run the following script in Terminal ```bash bash -c "$(curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/hidpi.sh)" ``` 1. Follow the instructions, then reboot 1. Re-enable SIP (if desired) Or try an [alternative method](https://github.com/bbhardin/A-Guide-to-MacOS-Scaled-Resolutions)
Enable multimedia keys, fan & LEDs control
1. Download and install [YogaSMC-App-Release.dmg](https://github.com/zhen-zen/YogaSMC/releases) (both the pref-panel and app itself) 1. Open the app 1. Check the `launch on login` option
Use PrtSc key as Screenshot shortcut
Super useful shortcut that I wish I had it on my previous MBP. Default is `⌘⇧5`. 1. Open SystemPreferences.app 1. Go under `Keyboard > Shortcuts > Screenshots` 1. Click on `Screenshot and recording options` field 1. Press `PrtSc` on your keyboard (it should came out as `F13`)
Use calibrated display profile
NotebookCheck's calibrated profiles. Not all panel are the same, final result may vary. 1. Run one of the following script in Terminal - for 1440p displays ```bash cd ~/Library/ColorSync/Profiles; wget https://github.com/simprecicchiani/ThinkPad-T460s-macOS-OpenCore/raw/master/Files/DisplayColorProfiles/T460s_WQHD_VVX14T058J02.icm ``` - for 1080p displays ```bash cd ~/Library/ColorSync/Profiles; wget https://github.com/simprecicchiani/ThinkPad-T460s-macOS-OpenCore/raw/master/Files/DisplayColorProfiles/T460s_FHD_N140HCE_EAA.icm ``` 2. Go under `SystemPreferences > Displays > Colour` 3. Select the profile
Add Apple Watch authentication to sudo
If you have an Apple Watch and you already [replaced the built-in WiFi card](/Guides/Replace-WLAN.md), you could enable authenticating as sudo with you Apple Watch using [pam-watch](https://github.com/biscuitehh/pam-watchid). 1. Download the latest [ZIP file](https://github.com/biscuitehh/pam-watchid/archive/main.zip) 1. Unzip, which by default creates a folder called `pam-watchid-main`. 1. Open Terminal and install it: ``` cd ~/Downloads/pam-watchid-main sudo make install ``` 1. Register the new PAM module for sudo: - Edit `/etc/pam.d/sudo` - Add a new line under line 1 (which is a comment) containing: ``` auth sufficient pam_watchid.so ``` That’s it. Now, whenever you use sudo, you have the option of using your Watch to authenticate. Apple Watch authenticating with sudo
Monitor temperatures and power consumption
1. Download and install [HWMonitor](https://github.com/kzlekk/HWSensors/releases) 1. Check `launch on login` (optional)
Faster macOS dock animation
This enables auto-hide and speeds up the animation 1. Run the following script in Terminal ```bash defaults write com.apple.dock autohide-delay -float 0; defaults write com.apple.dock autohide-time-modifier -float 0.5; killall Dock ```
Boot process tweaks
| Menu | | | Setting | What does it do? | | :--- | :---- | :--------- | :--------- | :------------------- | | Misc | Boot | ShowPicker | `False` | Skip bootloader page | | UEFI | Audio | PlayChime | `Disabled` | Always silent boot |
Setup hibernation and sleep
[Script](https://www.tonymacx86.com/threads/release-sleeponlowbattery-solb.264785) that performs auto sleep/hibernate at low battery. 1. Open terminal 1. Enter commands below one by one Settings for AC: ``` sudo pmset -c standby 1 sudo pmset -c hibernatemode 0 ``` Setting for battery: ``` sudo pmset -b standby 1 sudo pmset -b standbydelayhigh 900 sudo pmset -b standbydelaylow 60 sudo pmset -b hibernatemode 25 sudo pmset -b highstandbythreshold 70 ``` Settings for all: ``` sudo pmset -a acwake 0 sudo pmset -a lidwake 1 sudo pmset -a powernap 0 ``` To restore default system settings run ``` sudo pmset restoredefaults ```
Advanced energy management `acwake`: wake the machine when power source (AC/battery) is changed (value = 0/1) `lidwake`: wake the machine when the laptop lid (or clamshell) is opened (value = 0/1) `powernap`: enable/disable Power Nap on supported machines (value = 0/1) `standbydelayhigh` and `standbydelaylow` specify the delay, in seconds, before writing the hibernation image to disk and powering off memory for Standby. standbydelayhigh is used when the remaining battery capacity is above `highstandbythreshold`(has a default value of 50 percent), and standbydelaylow is used when the remaining battery capacity is below highstandbythreshold. `hibernatemode` supports values of 0, 3, or 25. To disable hibernation, set hibernatemode to 0. `hibernatemode` = 0 by default on desktops. The system will not back memory up to persistent storage. The system must wake from the contents of memory; the system will lose context on power loss. `hibernatemode` = 3 by default on portables. The system will store a copy of memory to persistent storage (the disk), and will power memory during sleep. The system will wake from memory, unless a power loss forces it to restore from hibernate image. `hibernatemode` = 25 is only settable via pmset. The system will store a copy of memory to persistent storage (the disk), and will remove power to memory. The system will restore from disk image. If you want "hibernation" - slower sleeps, slower wakes, and better battery life, you should use this setting. [Source](https://www.dssw.co.uk/reference/pmset.html)

BIOS Mod
A [brief guide](/Guides/Bios-Mod.md) referencing other guides.

Status

What's working ✅
- [x] CPU Power Management `~1W on IDLE` - [x] Intel HD 520 Graphics `incuding graphics acceleration` - [x] USB ports - [x] Internal camera `working fine on FaceTime, Skype, Zoom and others` - [x] Sleep / Hibernatemode `25 or 3` / Wake / Shutdown / Reboot - [x] Intel Gigabit Ethernet - [x] Wifi, Bluetooth, Airdrop, Handoff, Continuity, Sidecar wireless `some functionalities may be buggy or broken on Intel WLAN cards` - [x] iMessage, FaceTime, App Store, iTunes Store `Please generate your own SMBIOS` - [x] Speakers and headphones combo jack - [x] Batteries - [x] Keyboard map and hotkeys with [YogaSMC](https://github.com/zhen-zen/YogaSMC) - [x] Touchscreen - [x] [Trackpad, Trackpoint and physical buttons](./Images/VoodooRMI-T460s-trackpad-gestures.gif) `all macOS gestures working thanks to VoodooRMI` - [x] SIP and FileVault 2 can be turned on - [x] HDMI `with digital audio passthrough` - [x] SD Card Reader `slow r/w speed but works`
What's not working ⚠️
- [ ] Some users reported Mini DisplayPort is broken for them with latest updates, but it's working for me just fine - [ ] Safari DRM `Use Chromium engine to watch Apple TV+, Amazon Prime Video, Netflix and others` - [ ] WWAN (needs to be implemented) - [ ] Fingerprint Reader - [ ] Bluetooth (You can enable blutooth in the config.plist but it will cause the "volume hash mismatch" problem .Waiting for the solution.
Update tracker 🔄
| [EFI Release](https://github.com/simprecicchiani/ThinkPad-T460s-macOS-OpenCore/releases) | 0.8.5 | | ---------------------------------------------------------------------------------------------- | ----- | | [MacOS](https://www.apple.com/macos/) | 13.0 | | [OpenCore](https://github.com/acidanthera/OpenCorePkg/releases) | 0.8.5 | | [Lilu](https://github.com/acidanthera/Lilu/releases) | 1.6.2 | | [VirtualSMC](https://github.com/acidanthera/VirtualSMC/releases) | 1.3.0 | | [YogaSMC](https://github.com/zhen-zen/YogaSMC/releases) | 1.5.3 | | [WhateverGreen](https://github.com/acidanthera/WhateverGreen/releases) | 1.6.1 | | [AppleALC](https://github.com/acidanthera/AppleALC/releases) | 1.7.5 | | [VoodooPS2Controller](https://github.com/acidanthera/VoodooPS2/releases) | 2.3.1 | | [VoodooRMI](https://github.com/VoodooSMBus/VoodooRMI/releases) | 1.3.4 | | [VoodooI2C/VoodooI2CHID](https://github.com/VoodooI2C/VoodooI2C/releases) | 2.6.5 | | [IntelMausi](https://github.com/acidanthera/IntelMausi/releases) | 1.0.7 | | [HibernationFixup](https://github.com/acidanthera/HibernationFixup/releases) | 1.4.6 | | [CPUFriend](https://github.com/acidanthera/CPUFriend/releases) | 1.2.6 | | [NVMeFix](https://github.com/acidanthera/NVMeFix/releases) | 1.1.0 | | [RTCMemoryFixup](https://github.com/acidanthera/RTCMemoryFixup/releases) | 1.0.7 | | [AirportItlwm](https://github.com/OpenIntelWireless/itlwm/releases) | 2.2.0 | | [IntelBluetoothFirmware](https://github.com/OpenIntelWireless/IntelBluetoothFirmware/releases) | 2.2.0 | | [BlueToolFixup](https://github.com/acidanthera/BrcmPatchRAM/releases) | 2.6.4 | | [AppleBacklightSmoother](https://github.com/hieplpvip/AppleBacklightSmoother/releases) | 1.0.2 | | [BrightnessKeys](https://github.com/acidanthera/BrightnessKeys/releases) | 1.0.2 | | [RealtekCardReader](https://github.com/0xFireWolf/RealtekCardReader/releases) | 0.9.7 | | [RealtekCardReaderFriend](https://github.com/0xFireWolf/RealtekCardReaderFriend/releases) | 1.0.4 |

Performance

Power consumption and thermals 🔥
| Idle State | Max Frequency | 2 Thread Frequency | All Thread Frequency | GPU Max Frequency | | ------------------------- | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | | ![](/Images/ipg-idle.png) | ![](./Images/ipg-max-freq.png) | ![](./Images/ipg-two-freq.png) | ![](./Images/ipg-all-freq.png) | ![](./Images/ipg-gpu-freq.png) |
Benchmarks ⏱
| CPU | Single-Core | Multi-Core | | :---------- | ----------: | ---------: | | Geekbench 5 | 730 | 1611 | | **GPU** | **OpenCL** | **Metal** | | Geekbench 5 | 4097 | 4179 | macOS 12.3.1, EFI release 0.8.0, CPU:6200u

Thanks to