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

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:

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.

Screenshot 2023-10-05 at 9.07.50 AM-min.png Screenshot 2023-10-05 at 9.07.37 AM-min.png
Neither it is available in the Menu bar.

Screenshot 2023-10-05 at 9.59.32 AM-min.png Screen Shot 2023-10-05 at 10.58.11 PM-min.png

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.
Screenshot 2023-10-05 at 9.07.22 AM-min.png

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.
Screen Shot 2023-10-05 at 10.57.06 AM-min.png
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.
Screen Shot 2023-10-05 at 11.06.17 AM-min.png
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.

Screen Shot 2023-10-05 at 11.31.51 AM-min.png
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.
Screenshot 2023-10-06 at 9.16.54 AM-min.png
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.
Screenshot 2023-10-06 at 9.17.48 AM-min.png
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.
Screenshot 2023-10-06 at 11.33.08 AM-min.png
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).
Screenshot 2023-10-06 at 10.13.30 AM-min.png
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.
Screenshot 2023-10-06 at 10.14.38 AM-min.png
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.
Screenshot 2023-10-06 at 10.17.53 AM-min.png
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 the IOSkywalkFamily.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.

ArchIdentifier*CommentMinKernelMaxKernelMaxKernelStrategyEnabled
Anycom.apple.iokit.IOSkywalkFamilyAllow IOSkywalkFamily Downgrade23.0.0ExcludeYES
Screen Shot 2023-10-05 at 11.08.21 AM-min.png
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
Screen Shot 2023-10-05 at 11.08.56 AM-min.png
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 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.

Screen Shot 2023-10-05 at 11.09.14 AM-min.png
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.
Screen Shot 2023-10-05 at 11.09.20 AM-min.png
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.

Screenshot 2023-10-05 at 9.19.08 AM-min.png Screenshot 2023-10-05 at 9.19.28 AM-min.png
Neither the WiFi Networks are available from the Menubar

Screenshot 2023-10-05 at 9.19.18 AM-min.png

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

Screen Shot 2023-10-05 at 11.15.17 PM-min.png



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.
Screenshot 2023-10-05 at 9.13.21 AM-min.png
3. Click on Post Install Root Patch and you'll see something similar to the screenshot attached below.

Screenshot 2023-10-05 at 9.22.33 AM-min.png

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"

Screenshot 2023-10-05 at 9.13.29 AM-min.png

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.

Screenshot 2023-10-05 at 9.22.37 AM-min.png
Click on Yes to relaunch OCLP as root. When prompted, enter your system password. You'll see something similar to the screenshot attached below.

Screenshot 2023-10-07 at 12.33.23 PM-min.png Screenshot 2023-10-05 at 9.22.58 AM-min.png


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

Screenshot 2023-10-05 at 9.23.14 AM-min.png


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

Screenshot 2023-10-05 at 9.23.18 AM-min.png Screenshot 2023-10-07 at 12.12.42 PM-min.png

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
Screenshot 2023-10-05 at 9.25.06 AM-min.png
System Preferences
  • Verify WiFi discoverability in System Preferences>Network
Screenshot 2023-10-05 at 9.25.18 AM-min.png
System Report
  • Verify the WiFi Interface connection with 2.4GHz and 5GHz in About This Mac>System Report>Wi-Fi
Screenshot 2023-10-07 at 2.41.30 PM-min.png Screenshot 2023-10-05 at 9.26.39 AM-min.png

System Preferences
  • Verify WiFi connection in System Preferences>Network
Screenshot 2023-10-05 at 9.26.54 AM-min.png Screenshot 2023-10-05 at 9.26.57 AM-min.png
Menubar
  • Verify connected WiFi Networks and Other Networks
Screenshot 2023-10-05 at 9.27.02 AM-min.png Screenshot 2023-10-05 at 9.27.09 AM-min.png
Menubar
  • Verify the network details such as signal strength and channel number using the Alt key.

Screenshot 2023-10-07 at 2.21.54 PM-min.png Screenshot 2023-10-05 at 10.16.05 AM-min.png
IOReg
  • Verify AirPort_BrcmNIC and AirPort_Brcm43xxLLSkywalkInterface is loading in IOReg
Screen Shot 2023-10-05 at 11.11.05 PM-min.png
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.

Screen Shot 2023-10-09 at 2.27.10 AM-min.png Screen Shot 2023-10-09 at 2.27.55 AM-min.png

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
 
Last edited:
  • Like
Reactions: ImtiazAliRao
Thank you for this guide. Asus PCE AC68 worked OOB in Ventura. Thanks to this guide now it is working fine in Sonoma. I only have one noob's question: should I remove added boot args and enable SIP back?
 
Thank you for this guide. Asus PCE AC68 worked OOB in Ventura. Thanks to this guide now it is working fine in Sonoma. I only have one noob's question: should I remove added boot args and enable SIP back?
Glad to hear!

If you want to remove the boot args, you'll have to add AMFI.kext
 
  • Like
Reactions: creogen
Glad to hear!

If you want to remove the boot args, you'll have to add AMFI.kext
Hi,

I was wondering the same question. Can you show me where can I get that kext? I've searched but it only shows up on MacMeUp. Is that the right place?
 
  • Like
Reactions: KVyDavid
i was able to make wifi working again but i reinstall SIP now wifi gone so should i disable again to make wifi working again ?
 
i was able to make wifi working again but i reinstall SIP now wifi gone so should i disable again to make wifi working again ?
Yes, indeed.
 

Forum statistics

Threads
1,490
Messages
14,158
Members
21,405
Latest member
dinesh1