TABLE of CONTENTS
- About
- Issues
- Specs
- BIOS Settings
- EFI Folder Content
- Preparations
- Deployment
- Post-Install
- Mounting the EFI partition in macOS 15 beta 5
- Understanding YogaSMC Settings
- For OCAT Users
- Compile 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!
Caution
Upgrading from to macOS 14.3.1 to 14.4 and 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, 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!
- Compatible with macOS Sonoma and Sequoia
- New USB Port Mapping (includes ports of Docking Station)
- Working MicroSD Card Reader
- Working clamshell mode (when connected to A/C and external display)
- Optimized Framebuffer Patch for smoother handshake with external displays
- Lean EFI folder with slimmed kexts (20 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.
- YogaSMC support for additional features like CPU fan control, performance bias, all Fn Keyboard shortcuts working, additional OSD overlays, etc.
- No injection of
PlatformInfo
data into Windows. - Working 3D Globe in Maps (macOS 12+)
- Adding USB ports of docking station to the USB port kext
- Creating an AppleALC Layout-ID for audio output on Docking Station
- Adjusting Framebuffer Patch for HDMI/DP Ports on Docking Station
- 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!
Category | Description |
---|---|
Model | Lenovo ThinkPad T490 |
Variant | 20N3 |
BIOS | UEFI: v1.83 (2024-06-20) Embedded Controller: v1.27 |
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) (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 |
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-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_Sequoia.kext
│ │ ├── AdvancedMap_Sonoma.kext
│ │ ├── AirportItlwm_Sonoma.kext
│ │ ├── AppleALC.kext
│ │ ├── BlueToolFixup.kext
│ │ ├── BrightnessKeys.kext
│ │ ├── CPUFriend.kext
│ │ ├── CPUFriendDataProvider.kext
│ │ ├── ECEnabler.kext
│ │ ├── IntelBTPatcher.kext
│ │ ├── IntelBluetoothFirmware.kext
│ │ ├── IntelBluetoothInjector.kext
│ │ ├── IntelMausiEthernet.kext
│ │ ├── itlwm.kext
│ │ ├── 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
- 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 useenable-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 disabled by
#
)! - An additional list of Framebuffer Patches can be found here
- If you plan to install macOS 13.3 or older, disable/delete
- Wi-Fi: Decide, which Wi-Fi kext you want to use (→ see AirportItlwm vs. itlwm):
- Sonoma uses AirportItlwm_Sonoma
- Sequoia uses Itlwm because there's no AirportItlwm variant for Sequoia yet
- 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
andkeepsyms=1
for debugging if you face issues.
- Optional: add
- UEFI/APFS
- Change
MinVersion
andMinDate
to-1
if you want to run macOS Catalina or older.
- Change
- Platforminfo/Generic: SMBIOS
- Generate
MLB
,Serial
andROM
forMacBookPro15,2
using GenSMBIOS or OCAT.
- Generate
- Graphics
- 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 themodel
property inside theinfo.plist
of the kext to match the selected SMBIOS as well (instructions). - If your T490 model uses a different WiFi/BT card than 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.
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 Setup/Recoveery 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
MinKernel
andMaxKernel
settings - Con: iMessage and FaceTime don't work when using AirportItlwm (→ See Issue 14)
- Pro: Can be used during macOS Setup/Recoveery which is not possible with
-
itlwm.kext (disabled)
- Pro:
itlwm.kext
works 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!
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 Sonoma is 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.
- 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
- 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
- Disable Gatekeeper:
sudo spctl --master-disable
because it is annoying and wants to stop you from running scripts from github etc. This command no longer works in macOS Sequoia – it requires a different method to disable Gatekeeper. - 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 newer
- 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
- Disable PowerNap:
Apple changed how FAT32 partitions are handled, so mounting the EFI partition does no longer work. For now, use this tool to mount the EFI partition.
Note
This issue has been resolved in beta 6, so this workaround is no longer required.
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 thinkPSC
refers toPower State Current
in theDSDT
and is used to control different levels of performance via the slider.
If you don't want to use YogaSMC, do the following:
- 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
, disableSSDT-THINK.aml
andSSDT-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.
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 |
AMFIPass.kext | https://github.com/dortania/OpenCore-Legacy-Patcher |
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!
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, follow my guide
- 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: