Key metrics and engagement data
Repository has been active for 2 years, 1 month
⭐140
Want deeper insights? Explore GitObs.com
This repository is a bit of a mystery!
No language data found. Maybe it's written in an ancient, forgotten tongue?
TABLE of CONTENTS
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!
⚠️ The built-in Samsung PM981a NVMe that comes with the system is NOT compatible with macOS. You must use a different NVMe!
PlatformInfo
data into Microsoft Windows.97
.[!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.
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) 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 |
|
1EFI2├── BOOT3│ └── BOOTx64.efi4├── OC5│ ├── ACPI6│ │ ├── DMAR.aml7│ │ ├── SSDT-ALS0.aml8│ │ ├── SSDT-AWAC.aml9│ │ ├── SSDT-ECRW.aml10│ │ ├── SSDT-EXT1-FixShutdown.aml11│ │ ├── SSDT-EXT3-LedReset-TP.aml12│ │ ├── SSDT-EXT4-WakeScreen.aml13│ │ ├── SSDT-GPRW.aml14│ │ ├── SSDT-MCHC.aml15│ │ ├── SSDT-PLUG.aml16│ │ ├── SSDT-PNLF.aml17│ │ ├── SSDT-PORTS.aml18│ │ ├── SSDT-PTSWAK.aml19│ │ ├── SSDT-T490-KBRD.aml20│ │ ├── SSDT-THINK.aml21│ │ └── SSDT-USBX.aml22│ ├── Drivers23│ │ ├── AudioDxe.efi24│ │ ├── HfsPlus.efi25│ │ ├── OpenCanopy.efi26│ │ ├── OpenRuntime.efi27│ │ └── ResetNvramEntry.efi28│ ├── Kexts (Loading managed by MinKernel/MaxKernel settings)29│ │ ├── AdvancedMap.kext30│ │ ├── AirportItlwm_Sequoia.kext31│ │ ├── AirportItlwm_Sonoma.kext32│ │ ├── AMFIPass.kext33│ │ ├── AppleALC.kext34│ │ ├── BlueToolFixup.kext35│ │ ├── BrightnessKeys.kext36│ │ ├── CPUFriend.kext37│ │ ├── CPUFriendDataProvider.kext38│ │ ├── ECEnabler.kext39│ │ ├── HibernationFixup.kext40│ │ ├── IntelBluetoothFirmware.kext41│ │ ├── IntelBluetoothInjector.kext42│ │ ├── IntelBTPatcher.kext43│ │ ├── IntelMausiEthernet.kext44│ │ ├── IO80211FamilyLegacy.kext45│ │ ├── IOSkywalkFamily.kext46│ │ ├── itlwm.kext47│ │ ├── Lilu.kext48│ │ ├── NVMeFix.kext49│ │ ├── RealtekCardReader.kext50│ │ ├── RealtekCardReaderFriend.kext51│ │ ├── RestrictEvents.kext52│ │ ├── RTCMemoryFixup.kext53│ │ ├── SMCBatteryManager.kext54│ │ ├── SMCProcessor.kext55│ │ ├── SMCSuperIO.kext56│ │ ├── USBMap.kext57│ │ ├── VirtualSMC.kext58│ │ ├── VoodooPS2Controller.kext59│ │ │ └── Contents60│ │ │ └── PlugIns61│ │ │ ├── VoodooInput.kext (disabled)62│ │ │ ├── VoodooPS2Keyboard.kext63│ │ │ ├── VoodooPS2Mouse.kext (disabled)64│ │ │ └── VoodooPS2Trackpad.kext65│ │ ├── VoodooRMI.kext66│ │ │ └── PlugIns67│ │ │ ├── RMII2C.kext (disabled)68│ │ │ ├── RMISMBus.kext69│ │ │ └── VoodooInput.kext70│ │ ├── VoodooSMBus.kext71│ │ ├── WhateverGreen.kext72│ │ └── YogaSMC.kext73│ ├── OpenCore.efi74│ ├── Resources75│ │ ├── Audio76│ │ │ └── OCEFIAudio_VoiceOver_Boot.mp377│ │ ├── Font78│ │ │ ├── Font_1x.bin79│ │ │ ├── Font_1x.png80│ │ │ ├── Font_2x.bin81│ │ │ └── Font_2x.png82│ │ ├── Image83│ │ │ ├── Acidanthera (removed icons from tree view)84│ │ │ │ ├── Chardonnay85│ │ │ │ ├── GoldenGate86│ │ │ │ └── Syrah87│ │ │ └── Blackosx88│ │ │ └── BsxM1 (removed icons from tree view)89│ │ └── Label (removed files from tree view)90│ └── Config.plist91└── OC Changelog.md
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:
Devices/Properties/Add/PciRoot(0x0)/Pci(0x2,0x0)
enable-backlight-registers-alternative-fix
and use enable-backlight-registers-fix
instead to fix black screen issues.AppleXcpmCfgLock
is not required on my system. Try for yourself if your T490 needs it to boot.boot-args
-v
, debug=0x100
and keepsyms=1
for debugging if you face issues.MinVersion
and MinDate
to -1
if you want to run macOS Catalina or older.MLB
, Serial
and ROM
for MacBookPro15,2
using GenSMBIOS or OCAT.[!CAUTION]
- Don't change the SMBIOS or the USB port mapping injected by
USBMap.kext
won't be applied and Bluetooth won't work either! If you change the SMBIOS, then you also need to change themodel
property in theinfo.plist
contained 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.kext
instead 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)
itlwm.kext
itlwm.kext
itlwm.kext
MinKernel
and MaxKernel
settingsitlwm.kext (used in macOS Tahoe)
itlwm.kext
works across multiple versions of macOSAirportItlwm
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 (unlikeitlwm.kext
, which requires an additional app to do so). Currently,AirportItlwm
kexts for macOS Sonoma and Sequoia are included, while macOS Tahoe requiresitlwm.kext
.If you want to use
itlwm
, disableAirportItlwm
(all variants), enableitlwm
and adjust theMinKernel
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.
itlwm.kext
is used for Wi-Fi)[!CAUTION]
Upgrading from to macOS 14.3.1 to 14.4 or newer via
System Update
causes a Kernel Panic during install! DisableAiportItlwm
and enableitlwm.kext
instead. SetSecureBootModel
toDisabled
, 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:
sudo spctl --master-disable
Apple deleted the AppleHDA required for on-board audio in macOS 26 beta 2. Since there's no official OCLP version available for macOS Tahoe yet, we are going to use OCLP Mod to apply root patches – which will also install AppleHDA, thereby re-enabling audio. (→ Instructions)
AirportItlwm.kext
in macOS SequoiaBy 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:
HeliPort
from Login-Items (if present) – you won't need it any more.More details about this patch can be found here
Itlwm.kext
usersStarting with Release 1.0.5 v1.0 of my OC EFI folder, I've disabled YogaSMC, CPUFriend 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.
SSDT-ECRW.aml
, SSDT-THINK.aml
and YogaSMC.kext
SSDT-T490-KBRD.aml
and ACPI patches for the Keyboard ShortcutsYogaSMC
app into the "Programs" folder and run itCPUFriendDataProvider.kext
to optimize CPU Power Management if your T490 uses a different CPU than mine.sudo pmset -a powernap 0
sudo pmset -a hibernatemode 3
[!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 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"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.If you don't want to use YogaSMC, do the following:
YogaSMCPane
and remove itACPI
, disable SSDT-THINK.aml
and SSDT-ECRW.aml
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.
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.