Home

Awesome

macOS on ThinkPad T460s

<img align="right" src="./Images/t460s-monterey.png" alt="Lenovo ThinkPad T460s macOS Hackintosh OpenCore" width="300">

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

<details> <summary><strong>Getting started 📖</strong></summary> </br>

Meet the bootloader:

Recommended tools:

Resources

</details> </details> <details> <summary><strong>Tested Hardware 💻</strong></summary> </br>
ModelThinkPad T460s 20F90002**
ProcessorCore i5-6200U (2C, 2.4 / 3.0GHz, 3MB)
GraphicsIntegrated Intel HD Graphics 520
Memory4GB Soldered + 8GB DIMM 2133MHz DDR4, dual-channel
Display14" Full HD (1920x1080) IPS, Touch (read Post-install>Enable Touchscreen)
StorageWestern Digital Black SN550 500GB NVMe SSD
EthernetIntel Ethernet Connection I219-LM (Jacksonville)
WLAN + Bluetooth11ac+BT, Intel® Dual Band Wireless-AC 8260, 2x2 card
CameraHD720p resolution, low light sensitive, fixed focus
Audio supportHD Audio, Realtek ALC3245 codec, stereo speakers 1Wx2, dual array microphone, combo audio/microphone jack
Keyboard6-row, spill-resistant, multimedia Fn keys, LED backlight
BatteryFront Li-Polymer 3-cell (23Wh) and rear Li-Ion 3-cell (26Wh), both Integrated
</details> <details> <summary><strong>Hardware compatibility 🧰</strong></summary> </br>

This EFI will suit any T460s regardless of CPU model<sup>1</sup>, amount of RAM, display resolution<sup>2</sup> and internal storage<sup>3</sup>.

<a name="CPU">1</a>. Optional custom CPU Power Management guide.
<a name="Res">2</a>. 1440p displays should change NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> UIScale:2 to get proper scaling while booting.
<a name="NVMe">3</a>. 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:

AuthorModelBootloader
MSzturcT460Opencore
duszmoxX1 Carbon Gen 4Opencore
TluckT560/T460Clover
</details>

Installation

<details> <summary><strong>How to install macOS</strong></summary> </br>
  1. Create an installation media
  2. Download the latest EFI folder and copy it into the ESP partiton
  3. Change your BIOS settings according to the table below
  4. Boot from the USB installer (press F12 to choose boot volume) and start the installation process
MenuSetting
ConfigUSBUEFI BIOS SupportEnable
PowerIntel SpeedStep TechnologyEnable
CPU Power ManagementEnable
CPUHyper-Threading TechnologyEnable
SecuritySecurity ChipDisable
Memory ProtectionExecution PreventionEnable
VirtualizationIntel Virtualization TechnologyEnable
Intel VT-d FeatureEnable
Anti-TheftComputraceDisable
Secure BootDisable
Intel SGXDisable
Device GuardDisable
StartupUEFI/Legacy BootUEFI Only
CSM SupportNo
Boot ModeQuick
</details> <details> <summary><strong>Enable Apple Services</strong></summary> </br>
  1. Run the following script in Terminal
git clone https://github.com/corpnewt/GenSMBIOS && cd GenSMBIOS && chmod +x GenSMBIOS.command && ./GenSMBIOS.command
  1. Type 3 to Generate SMBIOS, then press ENTER
  2. Type MacbookPro16,3 5, then press ENTER. Leave this Terminal window open.
  3. Open /EFI/OC/Config.plist with any editor and navigate to PlatformInfo -> Generic
  4. Add the script's last result to MLB, SystemSerialNumber and SystemUUID
<key>PlatformInfo</key>
<dict>
   <key>Generic</key>
   <array>
      </dict>
         <key>AdviseWindows</key>
         <false/>
         <key>SystemMemoryStatus</key>
         <string>Auto</string>
         <key>MLB</key>
+        <string>M0000000000000001</string>
         <key>ProcessorType</key>
         <integer>0</integer>
         <key>ROM</key>
         <data>ESIzRFVm</data>
         <key>SpoofVendor</key>
         <true/>
         <key>SystemProductName</key>
         <string>MacBookPro16,3</string>
         <key>SystemSerialNumber</key>
+        <string>W00000000001</string>
         <key>SystemUUID</key>
+        <string>00000000-0000-0000-0000-000000000000</string>
      </dict>
   </array>
</dict>
  1. Save and reboot the system
</details> <details> <summary><strong>How to update the bootloader</strong></summary> </br>
  1. Download the latest release
  2. Copy and Paste your PlatfromInfo
  3. Enable optional kexts if needed (NVMEFix, AirportItlwm, etc.)
  4. Test the new bootloader with an USB stick (Set BootProtect: None whenever booting with external drives)
  5. Customize boot preferences (skip picker, disable verbose, etc.)
  6. Mount your ESP partition
  7. Backup your old EFI folder and replace it with the new one
</details>

Post-install (optional)

<details> <summary><strong>Enable Touchscreen</strong></summary> </br>
  1. Open /EFI/OC/Config.plist with any editor
  2. Add the content of #touchscreen.plist
  3. Save and reboot the system

Note: Tested on macOS BigSur, working with gestures.

</details> <details> <summary><strong>Enable Intel WLAN cards</strong></summary> </br>

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.

If you have bluetooth problem please reference to the IntelBluetoothFirmware

Optional: Remove unnecessary firmware files from OpenIntelWireless drivers.

</details> <details> <summary><strong>Enable non-natively supported Broadcom WLAN cards</strong></summary> </br>
  1. Download AirportBrcmFixup and BrcmPatchRAM.
  2. Copy AirportBrcmFixup.kext, BrcmBluetoothInjector.kext, BrcmFirmwareData.kext and BrcmPatchRAM3.kext to /EFI/OC/Kexts
  3. Open /EFI/OC/Config.plist with any editor
  4. Add the content of #broadcom-wlan.plist
  5. Save and reboot the system

If you have bluetooth problem please reference to the AirportBrcmFixup

</details> <details> <summary><strong>Fix NVMe power management</strong></summary> </br>
  1. Open /EFI/OC/Config.plist with any editor
  2. Add the content of #nvme-fix.plist
  3. Save and reboot the system
</details> <details> <summary><strong>Custom CPU Power Management</strong></summary> </br>
  1. Run the following script in Terminal

    git clone https://github.com/corpnewt/CPUFriendFriend; cd CPUFriendFriend; chmod +x ./CPUFriendFriend.command; ./CPUFriendFriend.command
    
  2. When asked, select preferred values

  3. From the pop-up window, copy ssdt_data.aml into /EFI/OC/ACPI/ folder (rename it if you'd like)

  4. Open /EFI/OC/Config.plist with any editor

  5. Add the content of #cpu-pm.plist (make sure SSDT-PLUG.aml is disabled and match your new SSDT filename)

  6. Save and reboot the system

</details> <details> <summary><strong>ThinkPad Dock USB ports mapping</strong></summary> </br>

Please follow this USB mapping guide.

</details>

Other tweaks

<details> <summary><strong>Enable HiDPI</strong></summary> </br>
  1. Disable SIP
  2. Run the following script in Terminal
    bash -c "$(curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/hidpi.sh)"
    
  3. Follow the instructions, then reboot
  4. Re-enable SIP (if desired)

Or try an alternative method

</details> <details> <summary><strong>Enable multimedia keys, fan & LEDs control </strong></summary> </br>
  1. Download and install YogaSMC-App-Release.dmg (both the pref-panel and app itself)
  2. Open the app
  3. Check the launch on login option
</details> <details> <summary><strong>Use PrtSc key as Screenshot shortcut</strong></summary> </br>

Super useful shortcut that I wish I had it on my previous MBP. Default is ⌘⇧5.

  1. Open SystemPreferences.app
  2. Go under Keyboard > Shortcuts > Screenshots
  3. Click on Screenshot and recording options field
  4. Press PrtSc on your keyboard (it should came out as F13)
</details> <details> <summary><strong>Use calibrated display profile</strong></summary> </br>

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
      cd ~/Library/ColorSync/Profiles; wget https://github.com/simprecicchiani/ThinkPad-T460s-macOS-OpenCore/raw/master/Files/DisplayColorProfiles/T460s_WQHD_VVX14T058J02.icm
      
    • for 1080p displays
      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
<img src="./Images/display-profile.png" height="300"> </details> <details> <summary><strong>Add Apple Watch authentication to sudo</strong></summary> </br>

If you have an Apple Watch and you already replaced the built-in WiFi card, you could enable authenticating as sudo with you Apple Watch using pam-watch.

  1. Download the latest ZIP file

  2. Unzip, which by default creates a folder called pam-watchid-main.

  3. Open Terminal and install it:

    cd ~/Downloads/pam-watchid-main
    sudo make install
    
  4. 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. <img src="./Images/AW-sudo.png" alt="Apple Watch authenticating with sudo" height="300">

</details> <details> <summary><strong>Monitor temperatures and power consumption</strong></summary> </br>
  1. Download and install HWMonitor
  2. Check launch on login (optional)
</details> <details> <summary><strong>Faster macOS dock animation</strong></summary> </br>

This enables auto-hide and speeds up the animation

  1. Run the following script in Terminal
    defaults write com.apple.dock autohide-delay -float 0; defaults write com.apple.dock autohide-time-modifier -float 0.5; killall Dock
    
    </details>
<details> <summary><strong>Boot process tweaks</strong></summary> </br>
MenuSettingWhat does it do?
MiscBootShowPickerFalseSkip bootloader page
UEFIAudioPlayChimeDisabledAlways silent boot
</details> <details> <summary><strong>Setup hibernation and sleep</strong></summary> </br> [Script](https://www.tonymacx86.com/threads/release-sleeponlowbattery-solb.264785) that performs auto sleep/hibernate at low battery.
  1. Open terminal

  2. 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
<details> <summary><strong>Advanced energy management</strong></summary>

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

</details> </br> </details> <details> <summary><strong>BIOS Mod</strong></summary> </br>

A brief guide referencing other guides.

</details>

Status

<details> <summary><strong>What's working ✅</strong></summary> </br> </details> <details> <summary><strong>What's not working ⚠️</strong></summary> </br> </details> <details> <summary><strong>Update tracker 🔄</strong></summary> </br>
EFI Release0.8.5
MacOS13.0
OpenCore0.8.5
Lilu1.6.2
VirtualSMC1.3.0
YogaSMC1.5.3
WhateverGreen1.6.1
AppleALC1.7.5
VoodooPS2Controller2.3.1
VoodooRMI1.3.4
VoodooI2C/VoodooI2CHID2.6.5
IntelMausi1.0.7
HibernationFixup1.4.6
CPUFriend1.2.6
NVMeFix1.1.0
RTCMemoryFixup1.0.7
AirportItlwm2.2.0
IntelBluetoothFirmware2.2.0
BlueToolFixup2.6.4
AppleBacklightSmoother1.0.2
BrightnessKeys1.0.2
RealtekCardReader0.9.7
RealtekCardReaderFriend1.0.4
</details>

Performance

<details> <summary><strong>Power consumption and thermals 🔥</strong></summary> </br>
Idle StateMax Frequency2 Thread FrequencyAll Thread FrequencyGPU Max Frequency
</details> <details> <summary><strong>Benchmarks ⏱</strong></summary> </br>
CPUSingle-CoreMulti-Core
Geekbench 57301611
GPUOpenCLMetal
Geekbench 540974179

<small>macOS 12.3.1, EFI release 0.8.0, CPU:6200u</small>

</details>

Thanks to