Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

OpenCore EFI folder for running macOS Sonoma to Tahoe on the Lenovo ThinkPad T490.

Notifications You must be signed in to change notification settings

5T33Z0/Thinkpad-T490-Hackintosh-OpenCore

Repository files navigation

Lenovo ThinkPad T490 Hackintosh OpenCore

OpenCore macOS Release ThinkPad T490 Hackintosh


About

OpenCore EFI folder and config for running macOS Sonoma and newer on the Lenovo ThinkPad T490. Read the following documentation carefully in order to install/boot macOS successfully!

⚠️ Important Notes
DO NOT APPLY AUDIO OR LEGACY USB PATCHES ON macOS 26.4 BETA 1 until macOS 26.4 Beta 1's Kernel Debug Kit (KDK) is released! MacOS 26.4 Beta 1 is not compatible with older KDK versions and won't boot after applying audio or USB patches.
The Samsung PM981a NVMe that comes with the system is NOT compatible with macOS. You must use a different, compatible NVMe drive!

Notable Features

  • Proper Hibernation (Modes 3 and 25 supported)
  • Cleaner implementation of _OSI checks
  • Optimized Framebuffer Patch for smoother handshake with external displays
  • Added Disable BDPROCHOT driver to fix performance issues after waking from S3/S4 sleep.
  • Working Thunderbolt 3 over USB-C
  • New USB Port Mapping with docking station support
  • Working clamshell mode (when connected to A/C and external display)
  • Working 3D globe in Maps app (macOS 12+)
  • No injection of PlatformInfo data into Microsoft Windows.
  • Lean EFI folder with slimmed kexts (20 MB instead of 62 MB):
    • AirportItlwm_Sonoma: 1,8 instead of 16 MB. Only contains Firmware for Intel AC 9560.
    • AppleALC: 86 Kb instead of 2,3 MB. Only contains layout 97.
    • IntelBluetoothFirmware: 560 KB instead of 11,5 MB.
    • itlwm (1.5 mb instead of 16 mb). Only Contains Firmware for Intel AC 9560.

Known Issues

  • Fingerprint reader → incompatible with macOS
  • Infrared portion of integrated camera unsupported by macOS → So moving the frontside switch to the left actually disables the camera in macOS (if you don't want to disable it in BIOS)
  • SDCard Reader only works when a card is inserted prior to booting (→ see issue 59)
  • YogaSMC hasn't been update in years, causes issues and is incompatibel with macOS Tahoe. That's why it's disabled by default

Important

  • Before reporting any issues, ensure that your system uses the latest available UEFI and EC Firmware.
  • Don't install macOS on an external disk or flash drive – use a compatible internal disk.

Future Developments

  • Adjusted Framebuffer Patch so HDMI/DP Ports on docking stations can be utilized
  • Adding USB ports of docking station to the USB port kext
  • Creating an AppleALC Layout-ID for audio output on Docking Station

System Specs

Category Description
Model Lenovo ThinkPad T490
Variant 20N3
UEFI BIOS v1.84 (2025-07-03)
EC v1.27
ME Firmware v12.0.95.2489
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 PM981a NVMe (unusable)
Western Digital PC SN530 NVMe SSD
Display Full HD (1080p) (Non-Touch)
iGPU Intel(R) Grpahics UHD 620 (spoofed as Intel UHD 630, BusID: 2)
dGPU None
Audio Realtek ALC257 (using Layout 97)
Thunderbolt
  • Model: Titan Ridge Thunderbolt 3 Connector (USB-C)
  • Firmware: 1.41.1353.0
  • Tested with i-tec USB-C Metal Nano Docking Station
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: irrelevant for macOS
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-OSDW.aml
│   │   ├── SSDT-PLUG.aml
│   │   ├── SSDT-PNLF.aml
│   │   ├── SSDT-PORTS.aml
│   │   ├── SSDT-PTSWAK.aml
│   │   ├── SSDT-T490-KBRD.aml
│   │   ├── SSDT-THINK.aml
│   │   └── SSDT-USBX.aml
│   ├── Drivers
│   │   ├── AudioDxe.efi
│   │   ├── DisablePROCHOT.efi
│   │   ├── HfsPlus.efi
│   │   ├── OpenCanopy.efi
│   │   ├── OpenRuntime.efi
│   │   └── ResetNvramEntry.efi
│   ├── Kexts (Loading managed by MinKernel/MaxKernel settings)
│   │   ├── AdvancedMap.kext
│   │   ├── AirportItlwm_Sequoia.kext
│   │   ├── AirportItlwm_Sonoma.kext
│   │   ├── AMFIPass.kext
│   │   ├── AppleALC.kext
│   │   ├── BlueToolFixup.kext
│   │   ├── BrightnessKeys.kext
│   │   ├── CPUFriend.kext
│   │   ├── CPUFriendDataProvider.kext
│   │   ├── ECEnabler.kext
│   │   ├── HibernationFixup.kext
│   │   ├── IntelBluetoothFirmware.kext
│   │   ├── IntelBluetoothInjector.kext
│   │   ├── IntelBTPatcher.kext
│   │   ├── IntelMausiEthernet.kext
│   │   ├── IO80211FamilyLegacy.kext
│   │   ├── IOSkywalkFamily.kext
│   │   ├── itlwm.kext
│   │   ├── Lilu.kext
│   │   ├── NVMeFix.kext
│   │   ├── RealtekCardReader.kext
│   │   ├── RealtekCardReaderFriend.kext
│   │   ├── RestrictEvents.kext
│   │   ├── RTCMemoryFixup.kext
│   │   ├── SimpleMSR.kext
│   │   ├── SMCBatteryManager.kext
│   │   ├── SMCProcessor.kext
│   │   ├── SMCSuperIO.kext
│   │   ├── USBMap.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)
│   │   │   │   └── GoldenGate 
│   │   │   └── Blackosx
│   │   │       └── BsxM1 (removed icons from tree view)
│   │   └── Label (removed files from tree view)
│   └── Config.plist
└── OC Changelog.md

Preparations

Config Adjustments

If your T490 matches the specs listed above and you are installing macOS Sonoma or newer, only minimal changes to config.plist are required.

At minimum, generate valid SMBIOS data.

  • Download the latest release of this EFI and extract it.
  • Open config.plist using ProperTree or OCAT.
  • Make the following adjustments:

PlatformInfo → Generic

  • Generate MLB, SystemSerialNumber, and ROM for MacBookPro15,2 (using GenSMBIOS or OCAT).

Graphics Devices → Properties → Add → PciRoot(0x0)/Pci(0x2,0x0)

  • For macOS ≤ 13.3: Disable/remove enable-backlight-registers-alternative-fix and use enable-backlight-registers-fix instead (prevents black screen).
  • If display issues occur, try a different framebuffer patch from Additional_Files/Framebuffer_Patches/UHD620_Framebuffer_Patches.plist.

Wi-Fi (→ Check AirpotItlwm vs. Itlwm for more details)

  • Sonoma: AirportItlwm_Sonoma (no root patches required).
  • Sequoia/Tahoe: AirportItlwm_Sequoia (requires root patching with OCLP-Mod).
  • Optional: itlwm.kext is present but disabled. If you want to use it, enabled it but disable AirportItlwm kexts.

Kernel → Quirks

  • AppleXcpmCfgLock is not required on my system. Enable only if your machine fails to boot.

NVRAM → Add → 7C436110-AB2A-4BBB-A880-FE41995C9F82

  • Optional debug boot arguments: -v debug=0x100 keepsyms=1

UEFI → APFS

  • For installing macOS Catalina or older, set MinVersion and MinDate to -1.

Save the changes and test the EFI from USB before installing it to the internal disk.

Important

  • Do not change the SMBIOS model unless you also update the model property inside the USBMap.kext because the USB port mapping is SMBIOS-dependent; if mismatched, Bluetooth will not work.
  • This Wi-FI and BT kexts in this EFI are slimmed and only contain firmware for the Intel AC-9560. If your T490 uses a different Wi-Fi card, use the official itlwm and BT Firmware kexts.

Recommended configuration (until further notice)

Since macOS Tahoe 26.4 beta, root-patching audio leads to a bricked, undbootable system. Therefore, I would recommend staying on macOS Sequoia and using itlwm kexts instead of AirportItwm_Sequoia for WiFi since it doesn't require root patching at all.

Nceessary Config adjustment:

  • Kernel/Block:
    • Disable com.apple.iokit.IOSkywalkFamily
  • Kernel/Add:
    • Disable IOSkywalkFamily.kext
    • Disbale IO80211FamilyLegacy.kext
    • Disable AirportItlwm_Sequoia.kext
    • Enable itlwm.kext
  • Use Heliport App to connect to Wi-Fi APs. There's also a fork with an updated version with some qualitiy-of-life improvements

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 (EFI System Partiton), 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
  • Download the latest version of HeliPort and copy the .dmg to your USB Installer (only required for macOS Tahoe since it requires itlwm.kext for WiFi)
  • Next, mount the ESP (EFI System Partiton), of the USB Installer – you can use MountEFI for this
  • Place the EFI folder in the EFI partition
  • Restart your system and boot from the USB installer.
  • Install macOS.
  • Once macOS is installed, copy the bootloader files from the USB Installer to the internal disk in order to boot without the USB flash drive (→ Instructions)
  • Disconnect the USB Installer and reboot into macOS
  • Continue with Post-Install

Caution

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

Post-Install

Disable Gatekeeper (optional)

Gatekeeper can be really annoying and wants to stop you from running python scripts from Github, etc. Do the following to disable it:

  • Open Terminal and run: sudo spctl --master-disable
  • The process has slightly changed in macOS Sequoia 15.1.1. and newer more info

macOS Tahoe fixes (Audio)

In order for Audio to work you need to apply root-pateches with OCLP-Mod since the offial OCLP version is not available yet. Make sure that you are connected to the internet before attempting to apply root patches because the patcher needs to download additional files.

  • Open the app's settings:
    oclpmod02
  • Click on the highlighted Tab and enable the following setting before patching and press "OK" at the bottom:
    Bildschirmfoto 2026-01-02 um 19 24 50
  • Press the upper right button for root patching:
    oclp_mod01
  • Next, press the upper button to install patches and wait until patching is completed:
    oclp_mod02
  • Once patching is complete, reboot.

Audio and Bluetooth should work now. If there's no sound, you have to go into system settings to change the output to "Internal Speakers"

WiFi

Option 1: enable AirportItlwm.kext in macOS Sequoia+

Apply Root-Patches with OCLP-Mod. More details

Option 2: For Itlwm.kext users

  • 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.

Enable YogaSMC (optional, not recommended)

Starting with Release 1.0.5 v1.0 of my OC EFI folder, I've disabled YogaSMC and the required SSDTs due to reported CPU performance issues. You can still re-enable it if you want to but I won't support it.

  • Config Settings:
    • Enable SSDT-ECRW.aml, SSDT-THINK.aml and YogaSMC.kext
    • Disable SSDT-T490-KBRD.aml and ACPI patches for the Keyboard Shortcuts
  • Download YogaSMC.7z and extract it.
  • 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

Configure CPUFriend

  • Use CPUFriendFriend to generate your own CPUFriendDataProvider.kext to optimize CPU Power Management if your T490 uses a different CPU than mine.

Configure Hibernation

Open Terminal and enter the following commands, to enable Hibernation (=hibernatemode 25). If you don't want to use Hibernation, use hibernatemode 3 (= regukar S3 Sleep) instead:

# Enable hibernatemode 25 (sleep to disk, power off RAM)
sudo pmset -a hibernatemode 25

# Enable standby (required for hibernation to actually work)
sudo pmset -a standby 1

# Set standby delays (time before entering hibernation)
sudo pmset -a standbydelayhigh 900    # 15 minutes when battery > 50%
sudo pmset -a standbydelaylow 900     # 15 minutes when battery < 50%

# Sleep timings (optional - adjust to preference)
sudo pmset -a displaysleep 10         # Display sleeps after 10 minutes
sudo pmset -a disksleep 10            # Hard disk sleeps after 10 minutes
sudo pmset -a sleep 1                 # System sleeps after 1 minute of inactivity

# Disable wake-causing features
sudo pmset -a powernap 0              # Disable Power Nap
sudo pmset -a tcpkeepalive 0          # Prevent network from waking system
sudo pmset -a proximitywake 0         # Disable wake when iPhone/iPad nearby
sudo pmset -a ttyskeepawake 0         # Prevent remote login from preventing sleep
sudo pmset -a womp 0                  # Disable wake-on-LAN

Tip

For more details, have a look at my Hibernation Configuration Guide.

Install MonitorControl (optional)

MonitorControl is a helpful little tool that lets you control the brightness and contrast of external displays from the menubar.

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 gets 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.

Disabling YogaSMC

If you don't want to use YogaSMC, do the following:

  • In macOS:
    • Open System Preferences
    • Right-Click on YogaSMCPane and remove it
    • Under "Login items" (or similar) remove the YogaSMC App from the list
  • Config.plist:
    • Under ACPI, disable SSDT-THINK.aml and SSDT-ECRW.aml
    • Under Kernel, disable YogaSMC.kext

Note

After disabling YogaSMC, fan and performance controls are no longer available. F-keys besides Volume and Brightness will no longer work either.

Compiling 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 them on your own in the future. For compiling slimmed kexts, you can follow my guide to do so.

Links

T490 Thunderbolt EEPROM Fix

Credits and Thank Yous