TABLE of CONTENTS
- About
- System Specs
- BIOS Settings
- EFI Folder Content
- Preparations
- Deployment
- Post-Install
- Understanding YogaSMC Settings
- Compiling Intel Wi-Fi and Bluetooth Firmware kexts easily
- Credits and Thank Yous
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!
- Compatible and tested with macOS Sonoma to Tahoe (should work with older versions as well)
- Disabled BDPROCHOT to fix performance issues after waking from S3 sleep.
- Working Thunderbolt 3 over USB-C
- New USB Port Mapping with support for docking station
- Optimized Framebuffer Patch for smoother handshake with external displays
- Working clamshell mode (when connected to A/C and external display)
- Working MicroSD Card Reader
- Working 3D globe in Maps app (macOS 12+)
- No injection of
PlatformInfodata into Microsoft Windows. - YogaSMC support for additional features like CPU fan control, performance bias, handling Fn Keyboard shortcuts, additional OSD overlays, etc.
- Lean EFI folder with slimmed kexts (20 MB instead of 62 MB overall):
- 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.
- Hibernation Mode 25 does not work properly
- Fingerprint sensor does not work under macOS since there is currently no way to emulate Touch ID.
- The audio combo jack creates an unpleasant buzz/noise during driver initialization. So it's best to connect headphones after booting.
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.
- Adding USB ports of docking station to the USB port kext
- Creating an AppleALC Layout-ID for audio output on Docking Station
- Adjusted Framebuffer Patch so HDMI/DP Ports on docking stations can be utilized
| 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:
|
| Storage | Western Digital PC SN530 NVMe 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) 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 |
After powering on the machine, spam F1 until you hear a beep to enter the BIOS. Change the following settings:
| Category | Setting |
|---|---|
| Config | Display
|
| Security | Fingerprint
|
| Startup |
|
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-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
- Download the latest Release of my EFI folder and unzip it
- Open the
config.plistwith 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)- For macOS ≤ 13.3, disable/delete
enable-backlight-registers-alternative-fixand useenable-backlight-registers-fixinstead to fix black screen issues. - If other issues occur, try another framebuffer patch. I collected addtitional ones which be found here
- For macOS ≤ 13.3, disable/delete
- Wi-Fi: Decide, which Wi-Fi kext you want to use (→ see AirportItlwm vs. itlwm):
- By default, Sonoma uses AirportItlwm_Sonoma
- By default, Sequoia requires Itlwm. But with the help of OpenCore Legacy Patcher, AirportItlwm can be used as well. And that's what I configured my config for.
- Kernel/Quirks
AppleXcpmCfgLockis not required on my system. Try for yourself if your T490 needs it to boot.
- NVRAM/Add/7C436110-AB2A-4BBB-A880-FE41995C9F82
- Optional: add
boot-args-v,debug=0x100andkeepsyms=1for debugging if you face issues.
- Optional: add
- UEFI/APFS
- Change
MinVersionandMinDateto-1if you want to run macOS Catalina or older.
- Change
- Platforminfo/Generic: SMBIOS
- Generate
MLB,SerialandROMforMacBookPro15,2using GenSMBIOS or OCAT.
- Generate
- Graphics
- Save the changes
Caution
- Don't change the SMBIOS or the USB port mapping injected by
USBMap.kextwon't be applied and Bluetooth won't work either! If you change the SMBIOS, then you also need to change themodelproperty in theinfo.plistcontained in the kext to match the selected SMBIOS (instructions). - If your T490 model uses a different WiFi/BT card than the stock Intel AC-9560 card, use the official
itlwm.kextinstead because mine only contains the firmware for the AC-9560, so it won't work with other cards.
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: (used in macOS Sonoma, requires root patches in Sequoa)
- Pro: Can be used during macOS Setup/Recovery which is not possible with
itlwm.kext - Pro: Supports Location Services and "Find My Mac"
- Pro: Connects faster to Wi-Fi Hotspots than
itlwm.kext - Con: Doesn't perform as well as
itlwm.kext - Con: Can't connect to hidden WiFi Networks
- Con: Requires the correct kext per macOS version, so running multiple version of macOS requires multiple versions of this kext controlled via
MinKernelandMaxKernelsettings - Con: iMessage and FaceTime don't work when using AirportItlwm (→ See Issue 14)
- Pro: Can be used during macOS Setup/Recovery which is not possible with
-
itlwm.kext (used in macOS Tahoe)
- Pro:
itlwm.kextworks across multiple versions of macOS - Pro: Loading webpages feels a lot quicker than with
AirportItlwm - Pro: Can connect to hidden WiFi Networks
- Pro: Does work with iMessage and FaceTime
- Con: Requires HeliPort app to connect to Wi-Fi hotspots, so it can't be used during macOS Setup/Recovery
- Con: Doesn't support Location Services
- Pro:
-
Pre-compiled WiFi kexts for other versions of macOS can be found in the Additional Files section! You will need them if you want to run older versions of macOS!
Note
My config uses AirportItlw 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 Sonoma and Sequoia are included, while macOS Tahoe requires itlwm.kext.
If you want to use itlwm, disable AirportItlwm (all variants), enable itlwm and adjust the MinKernel setting to match the Kernel version of macOS (currently: 24.0.0 = macOS Sequoia). Next, download the HeliPort app, run it and add it to "Login Items" (in System Settings), so that it starts automatically with macOS.
- 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
- 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.kextfor 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!
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
In order for Audio and Bluetooth to work you need to apply root-pateches with OCLP Mod since the offial OCLP version is not ready 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:

- Click on the highlighted Tab and enable the following 2 options before patching and press "OK" at the bottom:

- Press the upper right button for root patching:

- Next, press the upper button to install patches and wait until patching is completed:

- 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"
By default, Itlwm.kext is requird when running macOS 15. But if you want to use AirportItlwm.kext instead, you have to apply "Modern WiFi" patches with OpenCore Legacy patcher:
- Download OpenCore Legacy Patcher (.pkg).
- Remove
HeliPortfrom Login-Items (if present) – you won't need it any more. - Download my EFI folder and extract it.
- Place it in your EFI partition.
- Reboot
- Reset NVRAM
- Boot into macOS Sequoia
- At this stage, WiFi won't work!
- Install OpenCore legacy patcher and run it
- Click on "Root Patches"
- Next, click on "Start Root Patching" to install the required frameworks for "Modern Wi-Fi"
- Once that's done, reboot
- Reset NVRAM and start macOS Sequoia.
- Connect to a WiFi AP via Airport-Utility
More details about this patch can be found here
- 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.
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.amlandYogaSMC.kext - Disable
SSDT-T490-KBRD.amland ACPI patches for the Keyboard Shortcuts
- Enable
- Download YogaSMC.7z and extract it.
- Double-click the YogaSMC prefPane to install it
- Drag the
YogaSMCapp 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.kextto optimize CPU Power Management if your T490 uses a different CPU than mine.
- Disable PowerNap:
sudo pmset -a powernap 0 - Change Hibernatemode to 3:
sudo pmset -a hibernatemode 3 - For more details, have a look at my Hibernation Configuration Guide
Important
Currently, Hibernatemode 25 does not work properly since I haven't figured out completely which RTC memory regions to block. I've managed to skip RTC memory checksum errors and restore the system from the sleepimage but it freezes after returning to the desktop after 2 seconds (scrambled image). Any assistence for fixing this would be highly appreciated.
MonitorControl is a helpful little tool that lets you control the brightness and contrast of external displays from the menubar.
Open the YogaSMC preference pane. You will find the following options (among others):
DYTC: DYTC stands forDynamic 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 thinkPSCrefers toPower State Currentin theDSDTand is used to control different levels of performance via the slider.
If you don't want to use YogaSMC, do the following:
- In macOS:
- Open System Preferences
- Right-Click on
YogaSMCPaneand remove it - Under "Login items" (or similar) remove the YogaSMC App from the list
- Config.plist:
- Under
ACPI, disableSSDT-THINK.amlandSSDT-ECRW.aml - Under
Kernel, disableYogaSMC.kext
- Under
Note
After disabling YogaSMC, fan and performance controls are no longer available. F-keys besides Volume and Brightness will no longer work either.
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.
- Acidanthera for OpenCore, Kexts and maciASL
- Chris1111 for Wifi-Intel-KextsBuilder
- CorpNewt for ProperTree, CPUFriendFriend and SSDTTime
- Dreamwhite for slimmed versions of itlwm.kext
- ic005k for OpenCore Auxiliary Tools
- benbaker76 for Hackintool
- zxystd for Sonoma-compatible BrcmPatchRAM kext
- Special Thx to:
- 1Revenger1 for VoodooRMI and fixing issues with the TrackPad
- deeveedee for advice when trying to optimize the framebuffer patch for connecting to my external display.
- T490 OpenCore Repos used for referencing and ACPI hotfixes:
