Skip to content

5T33Z0/Thinkpad-T490-Hackintosh-OpenCore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lenovo ThinkPad T490 Hackintosh OpenCore

OpenCore macOS Sonoma release
10053604

TABLE of CONTENTS

About

OpenCore EFI folder and config for running macOS Monterey and newer on the Lenovo ThinkPad T490. Read the documentation carefully in order to boot macOS successfully.

Caution

Upgrading from to macOS 14.3.1 to 14.4 via System Update causes a Kernel Panic during install! Disable AiportItlwm and enable itlwm.kext insteaed. Set SecureBootModel to Disabled, Reset NVRAM and run the update again. If this does not work, follow this workaround to install macOS 14.4 on a new APFS volume. Use Migration Manager afterwards to get your data onto the new volume!

Notable Features

  • Compatible with macOS Sonoma
  • OS-independent USB port mapping via ACPI!
  • Working MicroSD Card Reader
  • Working Clamshell mode (when connected to A/C and external display)
  • Optimized Framebuffer Patch for smoother handshake with external display
  • Lean EFI folder with slimmed kexts (20 mb instead of 70) :
    • AppleALC (87 kB instead of 2.2 mb). Only contains layout 97.
    • AirportItlwm (1.7 mb instead of 16 mb). Only Contains Firmware for Intel AC 9560.
    • itlwm (1.5 mb instead of 16 mb). Only Contains Firmware for Intel AC 9560.
  • YogaSMC support for additional features like CPU fan control, performance bias, all Fn Key shortcuts working, additional OSD overlays, etc.
  • No injection of PlatformInfo data into Windows.
  • 3D globe view in Maps (macOS 12+)

Future Developments

  • Creating AppleALC Layout for Docking Station

Issues

  • Audio Jack creates an unpleasant buzz/noise during driver initialization. So it's best to connect Headphones to it after booting.

Important

Before reporting any issues, ensure that your system uses the latest UEFI and EC Firmware as I do. I have no time trying to fix issues which are not caused by my EFI but rather by running the system on outdated firmware!

Specs

Category Description
Model Lenovo ThinkPad T490
Variant 20N3
BIOS UEFI: v1.82 (2024-02-22)
Embedded Controller: v1.27
CPU Intel Intel Core i5 8265U (Quad Core)
RAM 16 GB:
  • 8 GB Samsung DDR 4 @2666 Mhz (soldered)
  • 8 GB Samsung DDR 4 @2666 Mhz (RAM Slot)
Storage Samsung PM981 NVMe (unusable)
250 GB M.2 Crucial MX 500 SATA SSD
Display Full HD (1080p) (Non-Touch)
iGPU Intel(R) Grpahics UHD 620 (spoofed as Iris 655, BusID: 2)
dGPU None
Audio Realtek ALC257 (using Layout 97)
Thunderbolt Titan Ridge Thunderbolt 3 Connector (USB-C)
(Reported working but I don't have any gear to test it)
Ethernet Intel I219-V
WiFi Intel AC-9560
Firmware: iwm-9000-46 (Screenshot)
Bluetooth Device: Intel Wireless Bluetooth
BT Version: 5.1
VID: 0x8087, PID: 0x0aaa
Firmware: ibt-17-16-1.sfi, ibt17-16-1.ddc
USB Port: HS10
Trackpad Synaptics
Device-id: pci8086,9de8. Controlled via SMBus.
SD Card Reader Realtek MicroSD Card Reader
Dock ThinkPad Ultra Docking Station

BIOS Settings

After powering on the machine, spam F1 until you hear a beep to enter the BIOS. Change the following settings:

Category Setting
Config Display
  • Shared Display Priority: HDMI
  • Total Graphics Memory: 256 MB
CPU
  • Intel Hyperthreading Technology: ON
Security Fingerprint
  • Predesktop Authentication: OFF
Security Chip
  • Security ChipON or OFF (enable for Windows 11)
Memory Protection
  • Execution Prevention: ON
Virtualization
  • Kernel DMA Protection: ON (enables VT-D by design)
I/O Port Access
  • Ethernet LAN: ON
  • Wireless LAN: ON
  • Bluetooth: ON
  • USB Port: ON
  • Memory Card Slot: ON
  • Smart Card Slot: OFF
  • Integrated Camera: ON
  • Integrated Audio: ON
  • Microphone: ON
  • Fingerprint Reader: ON (works in Windows only) or OFF
  • Thunderbolt 3: ON
Absolute Persistance Module
  • Absolute Persistance Module Activation: Disabled
Secure Boot Configuration
  • Secure Boot: OFF
Intel SGX
  • Intel SGX Control: Disabled
Startup
  • UEFI/ Legacy Boot: UEFI Only
  • Boot Mode: Quick (Skips Diagnostics)

EFI Folder Content

Click to reveal
EFI
├── BOOT
│   └── BOOTx64.efi
├── OC
│   ├── ACPI
│   │   ├── DMAR.aml
│   │   ├── SSDT-ALS0.aml
│   │   ├── SSDT-AWAC.aml
│   │   ├── SSDT-ECRW.aml
│   │   ├── SSDT-EXT1-FixShutdown.aml
│   │   ├── SSDT-EXT3-LedReset-TP.aml
│   │   ├── SSDT-EXT4-WakeScreen.aml
│   │   ├── SSDT-GPRW.aml
│   │   ├── SSDT-MCHC.aml
│   │   ├── SSDT-PLUG.aml
│   │   ├── SSDT-PNLF.aml
│   │   ├── SSDT-PORTS.aml
│   │   ├── SSDT-PTSWAK.aml
│   │   ├── SSDT-THINK.aml
│   │   └── SSDT-USBX.aml
│   ├── Drivers
│   │   ├── AudioDxe.efi
│   │   ├── HfsPlus.efi
│   │   ├── OpenCanopy.efi
│   │   ├── OpenRuntime.efi
│   │   └── ResetNvramEntry.efi
│   ├── Kexts (Loading managed by MinKernel/MaxKernel settings)
│   │   ├── AMFIPass.kext
│   │   ├── AdvancedMap.kext
│   │   ├── AirportItlwm_Monterey.kext
│   │   ├── AirportItlwm_Sonoma.kext
│   │   ├── AirportItlwm_Ventura.kext
│   │   ├── AppleALC.kext
│   │   ├── BlueToolFixup.kext
│   │   ├── BrightnessKeys.kext
│   │   ├── CPUFriend.kext
│   │   ├── CPUFriendDataProvider.kext
│   │   ├── ECEnabler.kext
│   │   ├── IntelBTPatcher.kext
│   │   ├── IntelBluetoothFirmware.kext
│   │   ├── IntelBluetoothInjector.kext
│   │   ├── IntelMausiEthernet.kext
│   │   ├── itlwm.kext (disabled)
│   │   ├── Lilu.kext
│   │   ├── NVMeFix.kext
│   │   ├── RealtekCardReader.kext
│   │   ├── RealtekCardReaderFriend.kext
│   │   ├── RestrictEvents.kext
│   │   ├── SMCBatteryManager.kext
│   │   ├── SMCProcessor.kext
│   │   ├── SMCSuperIO.kext
│   │   ├── VirtualSMC.kext
│   │   ├── VoodooPS2Controller.kext
│   │   │   └── Contents
│   │   │       └── PlugIns
│   │   │           ├── VoodooInput.kext (disabled)
│   │   │           ├── VoodooPS2Keyboard.kext
│   │   │           ├── VoodooPS2Mouse.kext (disabled)
│   │   │           └── VoodooPS2Trackpad.kext
│   │   ├── VoodooRMI.kext
│   │   │       └── PlugIns
│   │   │           ├── RMII2C.kext (disabled)
│   │   │           ├── RMISMBus.kext
│   │   │           └── VoodooInput.kext
│   │   ├── VoodooSMBus.kext
│   │   ├── WhateverGreen.kext
│   │   └── YogaSMC.kext
│   ├── OpenCore.efi
│   ├── Resources
│   │   ├── Audio
│   │   │   └── OCEFIAudio_VoiceOver_Boot.mp3
│   │   ├── Font
│   │   │   ├── Font_1x.bin
│   │   │   ├── Font_1x.png
│   │   │   ├── Font_2x.bin
│   │   │   └── Font_2x.png
│   │   ├── Image
│   │   │   ├── Acidanthera (removed icons from tree view)
│   │   │   │   ├── Chardonnay
│   │   │   │   ├── GoldenGate
│   │   │   │   └── Syrah 
│   │   │   └── Blackosx
│   │   │       └── BsxM1 (removed icons from tree view)
│   │   └── Label (removed files from tree view)
│   └── Config.plist
└── OC Changelog.md

Preparations

Config Adjustments

  • Download the latest Release of my EFI folder and unzip it
  • Open the config.plist with a plist editor (e.g. ProperTree or OCAT) and adjust the following settings based on the used version of macOS and personal preferences:
    • Graphics
      • Devices/Properties/Add/PciRoot(0x0)/Pci(0x2,0x0)
        • If you plan to install macOS 13.3 or older, disable/delete enable-backlight-registers-alternative-fix and use enable-backlight-registers-fix instead to fix black screen issues.
        • If other issues occur, try the other framebuffer patch in the config (the one that's disable by #)!
        • An additional list of Framebuffer Patches can be found here
    • Wi-Fi: Decide, which Wi-Fi kext you want to use (→ see AirportItlwm vs itlwm). AirportItlwm is enabled by default.
    • Kernel/Quirks:
      • AppleXcpmCfgLock is not required on my system. Try for yourself if your T490 can boot without it.
    • NVRAM/Add/7C436110-AB2A-4BBB-A880-FE41995C9F82
      • Optional: add boot-args -v, debug=0x100 and keepsyms=1 for debugging if you face issues.
    • UEFI/APFS
      • Change MinVersion and MinDate to -1 if you want to run macOS Catalina or older.
    • Platforminfo/Generic: SMBIOS
      • Generate MLB, Serial and ROM for MacBookPro15,2 using GenSMBIOS or OCAT.
  • Save the changes

Caution

  • Don't change the SMBIOS or the USB port mapping stored in USBMap_MBP152.kext won't be applied and Bluetooth won't work either! If you must change the SMBIOS then you also need to change the model property inside the info.plist of the kext to match the selected SMBIOS as well (instructions).
  • If your T490 model uses a different WiFi/BT card thn the stock Intel AC-9560 card, use the official itlwm.kext instead because mine only contains the firmware for the 9560 so it won't work with other cards.

AirportItlwm.kext vs. itlwm.kext

Although the Intel AC-9560 Card is compatible with both kexts (use either one or the other), there are Pros and Cons to both of them (check the FAQs for other differences):

  • AirportItlwm: (default)

    • Pro: Can be used during macOS installation which is not possible with itlwm.kext
    • Pro: Supports Location Services and "Find My Mac"
    • Con: Doesn't perform as well as itlwm.kext and takes a bit longer to connect to access points
    • Con: Can't connect to hidden WiFi Networks
    • Con: Requires using the correct kext per macOS version, so running multiple version of macOS requires multiple versions of this kext controlled via MinKernel and MaxKernel settings
    • Con: iMessage and FaceTime don't work when using AirportItlwm (→ See Issue 14)
  • itlwm.kext (disabled)

    • Pro: Connects much faster to WiFi hotspots and loading times feel slightly better than with AirportItlwm
    • Pro: Can connect to hidden WiFi Networks
    • Pro: Does work with iMessage and FaceTime
    • Pro: Only one kext to cover WiFi across multiple versions of macOS
    • Con: Requires HeliPort app to connect to Wi-Fi hotspots, so it can't be used during macOS installation
    • Con: Doesn't support Location Services

Note

My config uses AirportItlw.kext by default since it allows accessing the internet during macOS installation (unlike itlwm.kext which requires an additional app to do so). Currently, AirportItlwm kexts for macOS Monterey, Ventura and Sonoma are included. My itlwm.kext is a slimmed-down version only containing the firmware for the Intel AC-9560 (1,5 MB instead of 16,1 MB). If you want to use itlwm, disable AirportItlwm (all variants) and enable itlwm in the config.plist instead. Next, download the Helipad app, run it and add it to "Login Items" (in System Settings) so that it starts automatically with macOS.

Deployment

If macOS is installed already

  • Put the EFI folder on a FAT32 formatted USB flash drive
  • Reboot from said USB flash drive for testing
  • If it works, mount your system's ESP, replace the BOOT and OC folders in the EFI folder
  • Continue with Post-Install

If macOS is not installed

  • Follow Dortania's OpenCore Install Guide to prepare a USB Installer
  • Optional: Once the USB has been created, download the latest version of HeliPort and copy the .dmg to your USB Installer (only required when itlwm.kext is used for Wi-Fi)
  • Next, mount the ESP of the USB Installer (you can use MountEFI for this)
  • Put the EFI folder on the EFI partition of the USB installer
  • Reboot from the USB installer
  • Install macOS
  • Once that is completed, continue with Post-Install

Post-Install

  • Disable Gatekeeper: sudo spctl --master-disable because it is annoying and wants to stop you from running scripts from github etc.
  • Wi-Fi (itlwm.kext users only):
    • Mount HeliPort.dmg, drag the app into the "Programs" folder and run it.
    • Use it to connect to your WiFI hotspot.
    • Add HeliPort to "Login Items", so it stars with macOS and connects to your WiFi network automatically.
  • YogaSMC:
    • Download YogaSMC-App and mount it. This is a custom build which fixes the "Failed to open Preferences" issue in Ventura and nwer
    • Double-click the YogaSMC prefPane to install it
    • Drag the YogaSMC app into the "Programs" folder and run it
    • Click on the icon (⌥) in the menu bar and select "Start at Login"
    • Now you can control performance profiles, fan speed and other settings
  • Use CPUFriendFriend to generate your own CPUFriendDataProvider.kext to optimize CPU Power Management if your T490 uses a different CPU than mine.
  • Enabling Hibernation: Use Terminal or change in Hackintool
    • Disable PowerNap: sudo pmset -a powernap 0
    • Change Hibernatemode to 25: sudo pmset -a hibernatemode 25

Understanding YogaSMC Settings

Open the YogaSMC preference pane. You will find the following options (among others):

  • DYTC: DYTC stands for Dynamic Thermal Control. It allows the OS or firmware to manage the thermal characteristics of a device or component dynamically, adjusting power and performance to maintain safe operating temperatures. 3 profiles are available: "Quiet", "Balanced", and "Performance"
  • If you tick the PSC support, the control for the slider becomes more nuanced. Instead of 3 positions it now has more a lot more increments. I think PSC refers to Power State Current in the DSDT and is used to control different levels of performance via the slider.

For OCAT Users

Add the following entries to the "Kext URL Upgrade" list accessible via "Settings" from the "Sync" window (if not present already), so kext which are marked in grey in the Sync window will be downloaded when checking for updates:

Kext Name Source URL
AdvancedMap.kext https://github.com/notjosh/AdvancedMap
AirportItlwm.kext https://github.com/OpenIntelWireless/itlwm
IntelBluetoothFirmware.kext https://github.com/OpenIntelWireless/IntelBluetoothFirmware
IntelMausiEthernet.kext https://github.com/CloverHackyColor/IntelMausiEthernet
itlwm.kext https://github.com/OpenIntelWireless/itlwm
RealtekCardReader.kext https://github.com/0xFireWolf/RealtekCardReader
RealtekCardReaderFriend.kext https://github.com/0xFireWolf/RealtekCardReaderFriend

Important

Don't update AirportItlwm.kext, AppleALC.kext, IntelBluetoothFirmware.kext and itlwm.kext via OCAT because then you lose the slimmed versions of these kexts!

Compile Intel Wi-Fi and Bluetooth Firmware kexts easily

Chris1111 has created a helpful little app called Wifi-Intel-KextsBuilder which automates the process of compiling Intel Wi-Fi and Bluetooth Firmware kexts. It only requires you to have Xcode installed and will handle the rest on its own once you run it.

Wifi-Intel-KextsBuilder downloads the source code of itlwm, IntelBluetoothFirmware, MacKernelSDK and Lilu and then compiles itlwm, AirportItlwm and Intel Bluetooth Firmware kexts. They will be located under "Users/YOUR_USERNAME/Developer/Wifi-Intel-KextsBuilder/ in the "build/Release" folder of each repo.

These kexts won't be slimmed like the ones present in my EFI folders but at least you now have a simple option to compile these kexts on your own in the future.

Credits and Thank Yous