• Become a Premium Member for $25/year with no ads to improve your community experience. Upgrade to Pro Account for faster response and no wait times!

GUIDE How to Enable Broadcom WiFi on macOS Sonoma and Later without Root Patching

EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
9,287
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
13.x
Bootloader
  1. OpenCore (UEFI)
Mac
  1. Mac mini
  2. MacBook Pro
Mobile Phone
  1. Android
  2. iOS

How to Enable Broadcom WiFi on macOS Sonoma and Later without Root Patching

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 without root patching.

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

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 and Later, 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.


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

In an effort to make the WiFi working on macOS Sonoma and later, the old workaround was to add the missing kexts and root patch the system volume using OCLP which downgrades the stock IOSkywalkFamily.kext. Although this worked fine, it had its own disadvantages as it broke several Ethernet (including onboard and AICs). Although, not every ethernet model was broken but most of them and the only solution was to use a third-party kext to use the Broadcom WiFi+Ethernet in conjunction. Today, most of the Ethernet chips are driven by the .DEXT and in order to load these new drivers, it heavily relies on the native IOSkywalkFamily.kext which was blocked and downgraded, resulting in broken ethernet. The IOSkwalkFamily serves as a dependency for several Ethernet chips including the high performance ones such as Intel XXV710, XL710, MLX. When you downgrade the IOSkywalkFamily to drive the BCM cards, the ethernet chips depending on the IOSkywalkFamily will no longer function. This is because, the other kexts (driver kit) has their minimum version set and it differs from each to each macOS version. But when you downgrade the IOSkywalkFamily, the other ethernet related kexts simply cannot find the IOSkywalkFamily version it requires and with the downgraded IOSkwalkFamily, you’ll have to downgrade the other related ethernet kexts which were bundled altogether so that the minumum kexts version requirements can be met if you wish to run the ethernet with the downgraded IOSkywalkFamily. See this thread for more information.

The advantage of this new method is that you no longer require to block and downgrade the IOSkywalkFamily and the WiFi works without root patching using OCLP. As a result, this is a preferred choice for users who want to use native ethernet drivers or want to use high speed ethernet that relies on IOSkywalkFamily.kext, giving you a full control over high performance NICs or onboard using the native built-in macOS drivers. However, the support is limited and it does not support several newer Broadcom models.

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 Compatible Broadcom WiFi/BT. See WiFi Compatibility for more information.
  • BCM43602 (BCM943602BAED, BCM943602CDP, BCM943602CS, DW1830) and BCM4350 (BCM94350ZAE, DW1820A)
  • Only Device ID 43BA and 43A3 are supported at the moment.
macOS
  • macOS Sonoma 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
Tools
  • 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: Revert Root Patches

BCMC doesn't require the SIP or AMFI to be disabled and relies on Apple's WiFi driver and 802.11 wireless networking stack and you should ensure that the system must not have root patched and no kexts or frameworks should be modified/blocked. . However, if you have used OCLP to root patch the system volume, then you'll have to revert the root patches and remove the related configuration and kexts from the config.plist.

1. Mount your ESP.
2. Remove IOSkywalkFamily.kext, IO80211FamilyLegacy.kext, IO80211ElCap.kext, AirPortBrcmFixup.kext, and AMFIPass.kext from EFI/OC/Kexts directory.
3. Open your config.plist and remove the above mentioned kext entries in the Kernel>Add section of your config.plist.
4. Remove the following under Kernel>Block section of your config.plist.
ArchIdentifier*CommentMinKernelMaxKernelMaxKernelStrategyEnabled
Anycom.apple.iokit.IOSkywalkFamilyAllow IOSkywalkFamily DowngradeExcludeYESNO

5. Remove amfi=0x80 from the boot-args key under the 7C436110-AB2A-4BBB-A880-FE41995C9F82 UUID list in the NVRAM section of your config.plist.
6. Set the csr-active-config to 00000000 as the DATA value.
7. Open OCLP and you'll see something similar to the screenshot attached below:
Screenshot 2023-10-05 at 9.13.21 AM-min.png


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

9. Click on Revert 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


10. 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 reverting the patches on the system volume.

STEP 4: Enable Apple VT-d

Most of the newer drivers require Apple VT-d and IOMapper to function. To enable Apple VT-d, follow the guide linked below:

STEP 5: Download and Copy WiFi Firmware

The next step is to download the WiFi firmware required by Broadcom FullMAC WiFi cards for a proper functioning.

1. Open Terminal and execute the following commands:

Code:
#Clone AppleBCMWLANCompanion
git clone https://github.com/0xFireWolf/AppleBCMWLANCompanion.git

#Create wifi directory on system
sudo mkdir -p /usr/local/share/firmware/wifi/

#Move to AppleBCMWLANCompanion
cd AppleBCMWLANCompanion

#Copy the required firmwares to required location (use the appropriate firmware for your card)
sudo cp -R Firmwares/BCM4350/brcmfmac4350-pcie_7.35.180.119.bin /usr/local/share/firmware/wifi/
sudo cp -R Firmwares/BCM43602/brcmfmac43602-pcie_7.35.177.61 /usr/local/share/firmware/wifi/

2. Quit Terminal

STEP 6: Add Required Device Properties

1. Download Hackintool.
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:
4. Right click on the PCI path in the Device Path column and select Copy Device Path.
5. Mount your ESP.
6. Open config.plist and navigate to the DeviceProperties section.
7. Click on the + button and add the device path that you copied from Hackintool
8. Add the following key to the device path you added:

KeyValueTypeRequiredNotes
bcmc-firmware-path/usr/local/share/firmware/wifi/<FirmwareName>.binStringYes<FirmwareName>.bin is the firmware file name.
bcmc-firmware-hashbf4cfc23ee952a3d82ef33a0f5f87853201c98f1bed034876a910f354f37862d (BCM43602)
5691d1e0ceb70baf18efb7a0ec6cb84feb9edd2d0700c525b42930c4e7e4b845 (BCM4350)
DATAYes
bcmc-srom-slide00000000 for BCM43602,
40000000 for BCM4350
DATAYesRequired for BCM4350.
Not Required for BCM43602.
bcmc-disable-io-mapper00000000 to enable the IOMapper,
01000000 to disable the IOMapper
DATAFor systems that don't have Apple VT-d enabled.
Mainly meant for AMD platforms
When the IOMapper is disabled (on AMD platforms), the network speed is reduced to an extent.
bcmc-default-country-codeStringNoSpecify the Country code that will be used by the firmware.
bcmc-enable-auto-country00000000 to disable the country code automatically,
01000000 to set the country code automatically
DATANoSpecify whether the firmware should set the country code automatically.

STEP 7: Add Required Kexts

The next step is to install the required kexts in order to enable WiFi support. To enable the WiFi support, you'll need to add AppleBCMWLANCompanion.kext along with the Lilu.kext. These two kexts are needed together to work in conjunction in order to enable the WiFi.

1. Download AppleBCMWLANCompanion.
2. Extract the downloaded RELEASE.zip file.
3. Mount your ESP.
4. Copy AppleBCMWLANCompanion.kext to EFI/OC/Kexts directory.
5. Open your config.plist and add AppleBCMWLANCompanion.kext entry 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 and Later.

NOTES:
  • Please ensure the kexts are loading in the correct sorting order. AppleBCMWLANCompanion requires Lilu to function and must load after Lilu.kext.
  • 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
  • Your kext list and entries may differ as each system is different and will have different requirements.

STEP 7: Add Boot Args

Once you have added the required kexts, 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 wlan.pcie.detectsabotage=0 to the boot-args key under the 7C436110-AB2A-4BBB-A880-FE41995C9F82 UUID list in the NVRAM section of your config.plist.
2. Save 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 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

Limitations and Known Issues

The current limitations and known issues are outlined below:
 
Last edited:

Forum statistics

Threads
2,169
Messages
19,963
Members
30,512
Latest member
nowey22