Applicable to: OCLP 1.0.0+
INDEX
During the early stages of macOS Sonoma development, kexts and frameworks required for driving older Wi-Fi/BT Cards were removed from the OS, leaving the Wi-Fi portion of commonly used BT/Wi-Fi cards in a non-working state.
This affects the following Wi-Fi card chipsets:
- "Modern" cards:
- Broadcom:
BCM94350
(incudingBCM94352
),BCM94360
,BCM43602
,BCM94331
,BCM943224
- Required Kexts: IOSkywalkFamily, IO80211FamilyLegacy, AirPortBrcmNIC, AirportBrcmFixup, AirPortBrcmNIC_Injector.
- Broadcom:
- "Legacy" cards:
- Atheros:
AR928X
,AR93xx
,AR242x
/AR542x
,AR5418
,AR5416
(never used by Apple) - Broadcom:
BCM94322
,BCM94328
- Required Kexts: corecaptureElCap, IO80211ElCap, AirPortAtheros40 (for Atheros only)
- Atheros:
Thanks to Dortania's OpenCore Legacy Patcher (OCLP), it's possible to re-enable these Wi-Fi cards by patching some system files (as well as injecting additional kexts via OpenCore). If you want to know how Wi-Fi patching with OCLP works, have a look at this post.
Besides patching Wifi/BT cards officially used in Apple products, OCLP also supports Wi-Fi patching of systems with 3rd party Broadcom chipsets (enabled by AirportBrcmFixup.kext
) which are often found in Hackintoshes:
- device-id
pci12e4,4357
→ BCM43225 - device-id
pci12e4,43B1
→ BCM4352 - device-id
pci12e4,43B2
→ BCM4352 (2.4 GHz).
Generally speaking, if a) your system's USB ports are mapped correctly and b) the latest kexts required for enabling Bluetooth are present in your EFI folder, BT will most likely work already after installing macOS 14. macOS Sequoia requires additional NVRAM entries in the config.plist
in order for BT to work.
Since Apple never used Intel Wi-Fi/BT cards in their Macs, there are no root patches available nor required. Wi-Fi and Bluetooth are handled kexts provided by the OpenIntelWireless project (except for BluetoolFixup.kext
which is part of BrcmPatchRAM). The required kexts and config setting are also listed in the examples for Kext Loading Sequence. macOS Sequoia requires additional NVRAM entries in the config.plist
in order for BT to work.
Apply the following changes to your config (or copy them over from the plist examples (→ Legacy WiFi → Modern WiFi) and add the listed kexts to EFI/OC/Kexts
folder:
Config Section | Action |
---|---|
Kernel/Add |
|
Kernel/Block |
|
Misc/Security | Change SecureBootModel to Disabled to rule-out early Kernel Panics caused by security conflicts. You can re-enable it afterwards once everything is working! |
NVRAM/Add/...-FE41995C9F82 |
|
NVRAM/Delete...-FE41995C9F82 | Add the following parameters:
|
Note
- Make sure to perform an NVRAM reset after applying these settings and after switching macOS versions (if you have different versions of macOS installed)
- I have noticed that it can take 5 to 10 seconds or so until BT is available after applying these changes.
Prior to applying root patches it's probably a good idea to verify that the kexts we added are loaded.
- Save your config and reboot
- Reset NVRAM
- Boot into macOS Sonoma+
- Next, open Termial and enter
kextstat
- This will list all loaded kexts. Verify that the following kexts are present (use CMD+F for searching):
- For "Modern" Wi-Fi:
IOSkywalkFamily
IO80211FamilyLegacy
AirportBrcmFixup
AirPort.BrcmNIC
Amfipass
- For "Legacy" Wi-Fi:
corecaptureElCap
IO80211ElCap
AirPortAtheros40
Amfipass
- For "Modern" Wi-Fi:
- If these kexts are not loaded, you have to check your config and EFI/OC folder again.
- If
Amfipass
is not loaded, add-amfipassbeta
boot-arg and reboot - If Wi-Fi is available but you cannot connect to any access points, add
-brcmfxbeta
boot-arg and reboot.
Once you have verified that the required kext are actually loaded, you can continue with applying root patches with OCLP
- Download the latest release of OpenCore Legacy Patcher and install it.
- Run OCLP and click on "Post Install Root Patch".
- If the option to patch "Networking: Modern Wireless" or "Networking: Legacy Wireless" is available, click on "Start Root Patching" (otherwise check → Troubleshooting)
- Once patching is done, reboot
- Enjoy working Wi-Fi again!
Example: Modern Wi-Fi patching (Click to reveal!)
For enabling Wi-Fi cards from Intel, there are actually 2 kexts available that can be used: Itlwm.kext
and AirportItlwm.kext
. While AirportItlwm acts as a Wi-Fi driver, the card will be detected as an Ethernet Controller when using Itlwm. Both kexts have different pros and cons, so which one to use depends on personal preference and the used OS (find out more).
Unlike Itlwm.kext
, AirportItlwm.kext
requires a different variant of the kext per macOS version (macOS High Sierra up to Sonoma are currently supported). In macOS Sequoia, using itlwm.kext
is mandatory to get WiFi working. When using Itlwm.kext
, you also need an additional app called HeliPort to connect to Wi-Fi Hotspots.
If you have multiple versions of macOS installed and want to use AirportItlwm.kext
in all of them, you have to a) rename the kexts in order to place them all in the "kexts" folder and b) you also have to adjust their MinKernel
and MaxKernel
settings, so only the correct one gets loaded.
Listed below are instruction of how to cobinate itlwm and AirportIlmw kexts. In this case, itlwm is used for macOS Sequoia, while AirportItlwm is used for macOS Big Sur up to Sonoma.
- Visit https://github.com/OpenIntelWireless/itlwm/releases
- Click on “Assets”
- Download the builds of the
AirportItlwm
of your choice - Extract and rename them: I usually add an underscore followed by the name of the OS, e.g.
AirportItlwm_Sonoma.kext
(don’t add blank spaces!) - Add them to
EFI/OC/Kexts
and yourconfig.plist
- Disable
itlwm.kext
(if present) - Next, add
MinKernel
andMaxKernel
settings to limit the kext to only load the kext for the macOS version it’s designed for: - Save your config and reboot
Important
- Use either
AirportItlwm
orItlwm
– never both! - When using
AirportItlwm
, adding the correctMinKernel
andMaxKernel
settings is madatory. Otherwise Wi-Fi won’t work and the system might crash when injecting the kext multiple times! - When renaming kexts, you can’t automatically fetch kext updates for them with tools like OCAT any longer.
- When updating macOS Sonoma (14.3 and newer), you must disable
AirportItlwm.kext
in favor ofitlwm.kext
and setSecureBootModel
toDisabled
prior to updating. Otherwise the installer will crash (more info). Afterwards, you can enableSecureBootModel
again.
If your Intel Wi-FI/BT card is supported by the OpenIntelWireless project, the following kexts are required for enabling Bluetooth in macOS 14+ (→ plist):
Kext | Comment | MinKernel |
MaxKernel |
---|---|---|---|
BlueToolFixup.kext |
BT enabler for macOS 12 and newer | 21.0.0 | |
IntelBluetoothFirmware.kext |
Intel BT FIrmware |
Screenshot:
Note
- Make sure to perform an NVRAM reset after applying these settings and after switching macOS versions (if you have different versions of macOS installed)
- I have noticed that it can take like 10 seconds or so until BT is available after applying these changes.
- For using Intel Bluetooth in macOS Monterey and newer, read this.
If BT is not working after adding the two kexts, do the following:
- Open Terminal and enter
NVRAM -p
- If the output contains
bluetoothExternalDongleFailed=%01
, you need to change it to%00
in NVRAM. - So enter:
sudo NVRAM bluetoothExternalDongleFailed=%00
- Followed by
sudo pkill bluetoothd
to kill and restart the Bluetooth stack
- Acidanthera for OpenCore and Kexts
- Dortania for OpenCore Legacy Patcher
- Acquarius13 for figuring out what to edit in OCLPs Source Code
- deeveedee for pointing me towards using
brcmfxbeta
boot-arg - jrycm for tips with getting Intel Cards to work on Sequoia 15.2