• Become a Premium Member for $25/year with no ads to improve your community experience.

How to Fix Broadcom WiFi on macOS Sequoia and Later

This guide covers fixing Broadcom WiFi on macOS Sequoia and Later using Clover and OpenCore. By following this guide, you'll be able to enable Broadcom based WiFi on macOS Sequoia 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 Sequoia 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:



Overview



Recently, Apple announced their new macOS lineup i.e. macOS Sequoia on June 06, 2023, and publicly released the final version this fall i.e. on September 26, 2023. Unfortunately, with the announcement of macOS Sequoia, 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 Sequoia. 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 Sequoia, 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 Sequoia, 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 Sequoia, 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 Sequoia, 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.

View attachment 6594View attachment 6595
Neither it is available in the Menu bar.

View attachment 6596View attachment 6597

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
  • OS X Yosemite and Later (Pre-installed).
Bootloader
  • Clover or OpenCore. Please ensure to use the latest version to avoid issues.
Kexts
  • Vanilla Network kexts in S/L/E
  • Lilu
  • IOSkywalkFamily
  • IO80211FamilyLegacy
  • AirPortBrcmFixup
  • corecaptureElCap
  • IO80211ElCap
Tools
  • OpenCore Legacy Ptcher (OCLP) v1.0.1 or Later
  • IOReg
  • OCAT or any equivalent .plist editor

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.
View attachment 6598

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.
View attachment 6599
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 Sequoia.
View attachment 6600
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.

View attachment 6601
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.
View attachment 6612
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.
View attachment 6613
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.
III. Legacy Cards

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.kext 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.
View attachment 6615
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).
View attachment 6616
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.
View attachment 6617
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.
View attachment 6618
NOTE: Your kext list and entries may differ as each system is different and will have different requirements.

AMFI
You can either use this step or can use STEP #. Never both.

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 the IOSkywalkFamily.kext in macOS Sequoia 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 Sequoia.

ArchIdentifier*CommentMinKernelMaxKernelMaxKernelStrategyEnabled
Anycom.apple.iokit.IOSkywalkFamilyAllow IOSkywalkFamily Downgrade23.0.0ExcludeYES
View attachment 6619
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 below

1. Assuming the config.plist is still open, set the SecureBootModel to Disabled under the Misc>Security section of your config.plist
View attachment 6620
NOTE: Once you're done with the root patching and the WiFi is enabled, you can set the SecureBootModel to Default again.

STEP 6: Add Bluetooth Parameters

Once you have added the required kexts, the next step is to add the required parameters for Bluetooth functionality. To add the Bluetooth parameters, follow the steps below:

1. Assuming the config.plist is still open, add the following keys under the 7C436110-AB2A-4BBB-A880-FE41995C9F82 UUID list in the NVRAM section of your config.plist:

Key: bluetoothExternalDongleFailed
Value: 00
Type: DATA

Key: bluetoothInternalControllerInfo
Value: 00000000 00000000 00000000 0000
Type: DATA

Screenshot 2024-09-25 at 5.19.40 AM-min.png


2. Navigate to the Delete section and add the following keys under the 7C436110-AB2A-4BBB-A880-FE41995C9F82 UUID list in the NVRAM section of your config.plist:
  • bluetoothExternalDongleFailed
  • bluetoothInternalControllerInfo
Screenshot 2024-09-25 at 5.19.50 AM-min.png



5. Save your config.plist

NOTE: Values and letters are case sensitive.

STEP 7: 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 below

1. 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.

View attachment 6621
QUICK INFO: When using amfi=0x80 boot arg, certain applications may not respond and eventually crash such as Firefox as reported by @svan71.

STEP 8: 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.
View attachment 6622
2. Save your config.plist.

STEP 9: Add ECM Dongle Fix
This is a complete optional step and is only required if you wish to use USB to Ethernet adapter/dongle that utilizes the ECM protocol.

STEP 9: 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.

View attachment 6625View attachment 6626
Neither the WiFi Networks are available from the Menubar

View attachment 6627

If you check the IOReg, you'll find that neither the AirPort_BrcmNIC or the IOSkywalk Kexts are loading.

View attachment 6628



STEP 10: 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.
View attachment 6629
3. Click on Post Install Root Patch and you'll see something similar to the screenshot attached below.

View attachment 6631

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"

View attachment 6632

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.

View attachment 6633
Click on Yes to relaunch OCLP as root. When prompted, enter your system password. You'll see something similar to the screenshot attached below.

View attachment 6638View attachment 6639


Once the OCLP is launched as root, it will start patching the system volume.

View attachment 6640


Once OCLP finishes patching the system volume, it will prompt to reboot. Click on Reboot to restart your system.

View attachment 6641View attachment 6642

STEP 11: 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
View attachment 6644
System Preferences
  • Verify WiFi discoverability in System Preferences>Network
View attachment 6645
System Report
  • Verify the WiFi Interface connection with 2.4GHz and 5GHz in About This Mac>System Report>Wi-Fi
View attachment 6649View attachment 6650

System Preferences
  • Verify WiFi connection in System Preferences>Network
View attachment 6651View attachment 6652
Menubar
  • Verify connected WiFi Networks and Other Networks
View attachment 6653View attachment 6654
Menubar
  • Verify the network details such as signal strength and channel number using the Alt key.

View attachment 6656View attachment 6657
IOReg
  • Verify AirPort_BrcmNIC and AirPort_Brcm43xxLLSkywalkInterface is loading in IOReg
View attachment 6658
Browser
  • Verify the speed tests for 2.4GHz and 5GHz Network
NOTE: The speed tests were performed on a test system that did not have an antenna installed and the WiFi Router was at least 3m away from the system.

View attachment 6662 View attachment 6663

STEP

This is optional step and might be required for your system. On some systems, if the VT-d is enabled, the WiFi interface will keep cycling continuously unless you turn it off. This issue was also documented in the thread. This issue is mostly seen on GIGABYTE Motherboards. To fix this, you'll have to patch the DMAR table. See for more info.

Recommended Configuration

The following configurations are the only valid configurations. Anything else is likely wrong and should not be used.

Card TypeKext ConfigurationKext Install Location
Apple Airport and Fenvi
  • IOSkywalkFamily.kext
  • IO80211FamilyLegacy.kext
    • AirPortBrcmNIC.kext
  • EFI/CLOVER/Kexts/Others or EFI/OC/Kexts
Non-AirPort and Non-Fenvi
  • IOSkywalkFamily.kext
  • IO80211FamilyLegacy.kext
    • AirPortBrcmNIC.kext
  • AirPortBrcmFixup.kext
    • AirPortBrcmNIC_Injector.kext
  • EFI/CLOVER/Kexts/Others or EFI/OC/Kexts
Legacy
  • corecaptureElCap.kext
  • IO80211ElCap.kext
    • AirPortBrcm4331.kext
    • AirPortBrcm43224.kext
  • EFI/CLOVER/Kexts/Others or EFI/OC/Kexts


Miscellaneous

Although, the downgrade will make the WiFi work, there's a catch. macOS has introduced a new driver style "DEXT" which requires the VT-d to function and load the appropriate driver for the ethernet. The ethernet models which has native support on macOS using the DEXT, is dependent on IOSkywalk. The Ethernet depending on the IOSkywalk, will no longer work, as now most of the Ethernet are now supported natively, as long as you have VT-d enabled. To overcome this issue, you’ll have to use the third party kexts for the Ethernet, when patching the WiFi on macOS Sonoma or later. Such as IntelMausi for Intel and AppleIGC (I225/I226). The other NICs such as Atheros which never had native support, will have no problems as its based off a community driver, ported from Linux drivers. Most of these problems for the onboard NICs can be solved by using the alternative kexts. A few exceptions are there like I210/I211.

However, another problem is that if you’re going to use high performance Ethernet such as Intel 700 or 800 series or Mellanox, again, the downgraded IOSkywalkFamily (due to patching the BCM cards) will not let you load the drivers (DEXT) as the drivers are native and to function, they require two things: VT-d and Vanilla IOSkywalk. The Vanilla IOSkywalk will not let your BCM WiFi working on macOS Sonoma or later as the support for BCM cards is removed by Apple since Sonoma. So, as of now, the only solution is to patch the BT, use Ethernet to have the full advantage of speed and forget the Broadcom WiFi on newer macOS versions. This limits the AirDrop and Handoff function but you can enjoy your high performance network card. The alternative solution is to either use the BT function only from the BCM cards or switch to an Intel based WiFi with limited support for AirDrop, Handoff and AirPlay. This issue has also been confirmed by @PeterMack and @lopess as well. See for more information.

To those who are looking for solution, currently, there is no other workaround yet which is reliable. If a method is discovered, this article would be updated in the future.
 
Last edited:

Forum statistics

Threads
1,918
Messages
17,798
Members
27,622
Latest member
hai_kt