How to Fix Broadcom WiFi on macOS Sonoma and Later
This guide covers fixing Broadcom WiFi on macOS Sonoma and Later using Clover and OpenCore. By following this guide, you'll be able to enable Broadcom based WiFi on macOS Sonoma and Later using Clover or OpenCore Bootloader. This guide is solely for OpenCore users and may not work with Clover as it has no option to block the kexts permanently other than manually which is done from the Clover GUI picker. This guide will be updated in the future if Clover gets such a feature.This guide must be followed on macOS Sonoma and later only. If you're running a prior version of macOS, there is the original Broadcom WiFi and Bluetooth guide that works up to macOS Ventura:
GUIDE - How to Enable Broadcom WiFi and Bluetooth on macOS [Clover/OpenCore]
How to Enable Broadcom WiFi and Bluetooth on macOS [Clover/OpenCore] This guide describes how to enable Broadcom WiFi and Bluetooth on macOS using Clover and OpenCore. By following this guide, you'll be able to enable Broadcom WiFi and Bluetooth on your non-Apple computer running macOS using...
elitemacx86.com
Please note that for Bluetooth, the existing guide will serve on macOS Sonoma as well.
Overview
Recently, Apple announced their new macOS lineup i.e. macOS Sonoma on June 06, 2023, and publically released the final version this fall i.e. on September 26, 2023. Unfortunately, with the announcement of macOS Sonoma, Apple has officially dropped support up to Skylake, including IGPU support, followed by macOS Ventura. However, the biggest downfall we see is the removal of Broadcom WiFi support in macOS Sonoma. This has led to a major disappointment with the users who use non-Apple computers with macOS installed.
If you're not new and familiar with non-Apple computers running macOS, you might already know that on non-Apple computers, Broadcom WiFi is generally preferred for a native WiFi/BT function (such as Fenvi T919, BCM94360NG, BCM94352Z, etc). However, since the release of macOS Sonoma, Apple has removed support for all unsoldered Broadcom WiFi so if you have any of such models, the WiFi will not work as of now. If you check S/L/E, you'll notice that the support for older Broadcom based WiFi Cards are absolutely absent and all the related kexts are removed from the respective directory. This means even if you install a native WiFi Card (such as Fenvi T919 or BCM94360NG), the WiFi will still not work due to the lack of required drivers. Third-party WiFi such as Intel will continue to work with third-party kexts. In addition, the USB based WiFi having Realtek/MediaTek chipsets will also work with the supplied drivers from its manufacturer. However, there is still a workaround to get those cards working on macOS Sonoma, thanks to the OCLP team for their continued support for the legacy hardware.
Apple started to give hints from Monterey, where AirPortBrcmNIC was moved to a new location as a plugin, and a new kext IO80211FamilyLegacy.kext was introduced. To support the other latest WiFi models, a new kext AppleBCMWLANBusInterfacePCIeMac.kext was introduced since macOS Ventura and fast forward to macOS Sonoma, the IO80211FamilyLegacy.kext has been completely removed and no longer exists. This clearly tells us that Apple already planned to make the old models obsolete and remove the support in future releases due to their major shift from Intel to their own Apple Silicon based Mac lineups. This is not the first time Apple has done such. This practice is common with Apple and you would have probably known if you're an Apple enthusiast.
You might have a question that generally Apple has been using Broadcom WiFi in their Mac models since a long time
so does this means native supported Mac models which has support for macOS Sonoma, will lack the WiFi function? Well, the answer is no. That's because
Thus, leaving the WiFi/BT card in an unusable/non-working state.
Neither it is available in the Menu bar.
Requirements
Following are the requirements for enabling Broadcom WiFi on macOS. Please ensure you meet the requirements before proceeding with this guide.
WiFi/ BT Hardware |
|
macOS |
|
Bootloader |
|
Kexts |
|
Tools |
|
If you're attempting a clean install or an upgrade, it is highly recommended to perform a clean install or the upgrade first before you follow this guide.
STEP 1: Setup BIOS
The very first step is to set up BIOS to have the Broadcom WiFi/BT enabled on your system. This is because there are a few systems that have the option to Enable WiFi/BT in BIOS which affects the functionality under macOS/OS X.1. On your target computer, boot to BIOS. Refer to your user manual for the BIOS Key
2. Enable WiFi/BT function.
3. Save & Exit Setup.
STEP 2: Verify the WiFi Detection
The next step is to verify whether the installed card is being detected under macOS or not. This step is required in order to ensure you're on the right track and you have the right card as per the compatibility list. If the Card is not detected, even following the guide correctly will not help to get it recognized. In addition, not all WWN slots are M.2. There are a few systems with cNVi slots, where even if you replace the card with a compatible one, the card will not be detected at all. This is because of the proprietary connectivity interface by Intel. This means the particular CNVi slot on the motherboard will accept only Intel-based WiFi/BT Cards therefore if you replace the card, you must verify the detection of the WiFi/BT module. To verify the WiFi/BT detection, follow the steps below.1. Download Hackintool from the Download section.
2. Open Hackintool.
3. Locate your WiFi module under the PCIe section in Hackintool. The WiFi module is usually listed as a Network Controller under the Class and Subclass column.
STEP 3: Add Required Kexts
The next step is to install the required kexts in order to enable WiFi and Bluetooth support. Depending on your Card type, choose one from below.I. Apple Airport and Fenvi Cards
To enable the WiFi support, you'll need to add
IOSkywalkFamily.kext
and IO80211FamilyLegacy.kext
along with the child kext AirPortBrcmNIC.kext
. These two kexts are needed together to work in conjunction in order to enable the WiFi for Airport and Fenvi based cards.1. Download IOSkywalkFamily.kext and IO80211FamilyLegacy.kext.
2. Mount your ESP.
3. Copy
IOSkywalkFamily.kext
and IO80211FamilyLegacy.kext
to EFI/OC/Kexts
directory.4. Open your
config.plist
and add IOSkywalkFamily.kext
and IO80211FamilyLegacy.kext
entries in the Kernel>Add
section of your config.plist. In addition, you'll need to specify the MinKernel to 23.0.0
to ensure that the kext only loads on macOS Sonoma.NOTE: Your kext list and entries may differ as each system is different and will have different requirements.
II. Non-Apple AirPort and Non-Fenvi Cards
With the injection of IOSkywalker.kext+IO80211FamilyLegacy.kext (consists of AirPortBrcmNIC.kext) and patching with OCLP (later in the guide), the native cards will work (such as Fenvi T919, BCM94360NG, etc). However, if you have a card that does not have any of these matching IDs (14E4:43ba, 14e4:43a3, or 14e4:43a0), such as BCM94352Z, you'll also need to inject AirPortBrcmFixup.kext in order to drive them. It's no wonder that despite these cards being supported, they do not work OOTB and have always required AirPortBrcmFixup.kext and the related kexts for Bluetooth to work! This is because mostly these Cards are non-Apple manufactured cards. This step is only required for Non-Apple Airport and Non-Fenvi Cards i.e. cards that do not work OOTB in macOS Ventura or prior (such as BCM94352Z). Skip this step if you have an Apple AirPort and Fenvi Card with a Device ID (14E4:43ba, 14e4:43a3, or 14e4:43a0).
1. Download IOSkywalkFamily.kext, IO80211FamilyLegacy.kext and AirPortBrcmFixup.kext.
2. Mount your ESP.
3. Copy
IOSkywalkFamily.kext
, IO80211FamilyLegacy.kext
and AirPortBrcmFixup.kext
to EFI/OC/Kexts
directory.4. Open your
config.plist
and add IOSkywalkFamily.kext
, IO80211FamilyLegacy.kext,
and AirPortBrcmFixup.kext
entries in the Kernel>Add
section of your config.plist. In addition, you'll need to specify the MinKernel and MaxKernel as shown below to ensure that the kext only loads on the appropriate version of macOS, if using the same EFI for booting multiple macOS versions.5. You'll have to prevent
AirPortBrcm4360_Injector.kext
from loading. This can be achieved either by (i) removing the kext entry to keep the config.plist more tidy or (ii) using the boot arg to load only one specific driver or (iii) via the Device Properties or (iv) DSDT/SSDT patch or (v) by specifying the MinKernel and MaxKernel.NOTES:
- Please ensure the kexts are loading in the correct sorting order.
- Download the latest version for better support.
- Download only the RELEASE.zip file.
- If the kext is already present in the directory, replace it with a new version
- Do not use AirportBrcmFixup.kext.dSYM
- Your kext list and entries may differ as each system is different and will have different requirements.
Despite these Legacy Cards being supported previously at one time, the support has been removed since Sierra for the Broadcom 43224 and Broadcom 4331 since Mojave. To enable the WiFi support for these legacy cards (BCM4331 and BCM43224), you'll need to add
corecaptureElCap.kext
and IO80211ElCap.kext
along with the child kexts (AirPortBrcm4331.kex
t and AirPortBrcm43224.kext
). These two kexts are needed together to work in conjunction in order to enable the WiFi for legacy cards.1. Download corecaptureElCap.kext and IO80211ElCap.kext.
2. Mount your ESP.
3. Copy
corecaptureElCap.kext
and IO80211ElCap.kext
to EFI/OC/Kexts
directory.4. Open your
config.plist
and add corecaptureElCap.kext
and IO80211ElCap.kext
entries in the Kernel>Add
section of your config.plist. As this guide is for Broadcom only, you'll need to remove the AirPortAtheros40.kext
entry as shown below. In addition, you'll need to specify the MinKernel as shown below to ensure that the kext only loads on the appropriate version of macOS, if using the same EFI for booting multiple macOS versions. You can also use one of the kext as per your card and remove the irrelevant ones to keep the config.plist more tidy (later in the guide).Depending on the card you have e.g. Broadcom 4331, you can keep the
AirPortBrcm4331.kext
and remove the AirPortBrcm43224.kext
to keep the config.plist more tidy.Depending on the card you have e.g. Broadcom 43224, you can keep the
AirPortBrcm43224.kext
and remove the AirPortBrcm4331.kext
to keep the config.plist more tidy.NOTE: Your kext list and entries may differ as each system is different and will have different requirements.
STEP 4: Block Required Kexts
The next step is to block the IOSkywalk.kext. This step is required for Modern WiFi only regardless of the Apple AirPort and Fenvi or Non-AirPort and Non-Fenvi cards. If you have a legacy card, you can skip this step. Bocking theIOSkywalkFamily.kext
in macOS Sonoma will allow us to manually inject a previous version of IOSkywalkFamily.kext
, therefore allowing us to downgrade. This is required because, unless you don't block this kext, you'll not be able to inject the prior version of IOSkywalkFamily.kext
, and while the previous version of IOSkywalkFamily.kext
is injected with no blocking, it will throw an error when booting from the system drive. To block the IOSkywalk.kext
, follow the steps below.1. Assuming the
config.plist
is still open, add the following under Kernel>Block
section of your config.plist
. In addition, you'll need to specify the MinKernel to 23.0.0
to ensure that the kext is only blocked on macOS Sonoma.Arch | Identifier* | Comment | MinKernel | MaxKernel | MaxKernel | Strategy | Enabled |
---|---|---|---|---|---|---|---|
Any | com.apple.iokit.IOSkywalkFamily | Allow IOSkywalkFamily Downgrade | 23.0.0 | Exclude | YES |
NOTE: If you're using a USB Ethernet Adapter that utilizes the ECM Protocol, you'll have to add ECM-Override.kext to prevent Kernel Panic as Apple's DriverKit stack uses IOSkywalk for ECM Adapters.
STEP 5: Disable the Secure Boot Model
Once you have blocked the IOSkywalk.kext, the next step is to disable the Secure Boot Model. To disable the Secure Boot Model, follow the steps below1. Assuming the
config.plist
is still open, set the SecureBootModel
to Disabled
under the Misc>Security
section of your config.plistNOTE: Once you're done with the root patching and the WiFi is enabled, you can set the SecureBootModel to Default again.
STEP 6: Add Boot Args
Once you have disabled the Secure Boot Model, the next step is to add the required boot args. To add the boot args, follow the steps below1. Assuming the
config.plist
is still open, add amfi=0x80
to the boot-args key under the 7C436110-AB2A-4BBB-A880-FE41995C9F82
UUID list in the NVRAM
section of your config.plist.QUICK INFO: When using
amfi=0x80
boot arg, certain applications may not respond and eventually crash such as Firefox as reported by @svan71.STEP 7: Disable System Integrity Protection (SIP)
Once you have added the required boot args, the next step is to disable the System Integrity Protection. To disable the SIP, follow the steps below.1. Assuming the
config.plist
is still open, set the csr-active-config
to 03080000
as the DATA value for root patching.2. Save your
config.plist
.STEP 8: Boot using the new Configuration
Once you're done with the above steps, you'll need to boot with the updated configuration. Simply restart your system. It is recommended to reset NVRAM twice at least.once you boot with the new configuration, the system will how that the wifi is enabled as the required kexts are injected. However, you won't be able to find and/or connect to any network.
Neither the WiFi Networks are available from the Menubar
If you check the IOReg, you'll find that neither the AirPort_BrcmNIC or the IOSkywalk Kexts are loading.
STEP 9: Patch System Volume
To patch the system using OCLP, follow the steps below.1. Download OpenCore Legacy Patcher (OCLP) from the download section of this forum.
2. Open OCLP and you'll see something similar to the screenshot attached below.
3. Click on Post Install Root Patch and you'll see something similar to the screenshot attached below.
As you can see, the OCLP has automatically detected what patch to apply. If the SIP is enabled, you may notice a message stating "SIP is Enabled"
If you notice that, make sure to disable it as described in STEP #1.
Click on Start Root Patching and you'll need to run OCLP as root. You'll see something similar to the screenshot attached below.
Click on Yes to relaunch OCLP as root. When prompted, enter your system password. You'll see something similar to the screenshot attached below.
Once the OCLP is launched as root, it will start patching the system volume.
Once OCLP finishes patching the system volume, it will prompt to reboot. Click on Reboot to restart your system.
STEP 10: Restart your System
After performing all the above steps, restart your system for the applied changes to take effect. It is recommended to reset NVRAM twice at least.Verifying the WiFi
The next step is to verify whether the WiFi and BT are working or not. Follow the steps to verify the WiFi function.System Report
- Verify the WiFi Interface in About This Mac>System Report>Wi-Fi
System Preferences
- Verify WiFi discoverability in System Preferences>Network
System Report
- Verify the WiFi Interface connection with 2.4GHz and 5GHz in About This Mac>System Report>Wi-Fi
System Preferences
- Verify WiFi connection in System Preferences>Network
Menubar
- Verify connected WiFi Networks and Other Networks
Menubar
- Verify the network details such as signal strength and channel number using the Alt key.
IOReg
- Verify AirPort_BrcmNIC and AirPort_Brcm43xxLLSkywalkInterface is loading in IOReg
Browser
- Verify the speed tests for 2.4GHz and 5GHz Network
Recommended Configuration
The following configurations are the only valid configurations. Anything else is likely wrong and should not be used.Card Type | Kext Configuration | Kext Install Location |
---|---|---|
Apple Airport and Fenvi |
|
|
Non-AirPort and Non-Fenvi |
|
|
Legacy |
|
|
Last edited: