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 Clover or OpenCore bootloader.Overview
Apple has been using Broadcom WiFi/BT Cards on their Macs for a long time which works out of the box i.e. requires no additional driver or any sort of configuration. As always, Apple uses specific models so that the hardware is supported natively with the provided kexts in macOS/OS X. However, when it comes to non-Apple computers, most of the systems are equipped with Intel and/or Realtek WiFi/BT module which isn't supported by Apple drivers yet and Broadcom stands as one of the top choice if you want to experience a full-featured WiFi/BT functionality under macOS. Although these Broadcoms are usually natively supported, there are some models which require an additional configuration (like firmware upload) to enable the WiFi/BT function and fix potential issues on non-Apple computers.
With the newer releases of Mac models, Apple has also dropped support for some of the Broadcom WiFi/BT modules under macOS. This guide will cover a workaround for such outdated models as well.
Compatibility
Not all Broadcom WiFi/BT is compatible with macOS. Refer to the thread linked below for more information on Broadcom WiFi compatibility.

WiFi Compatibility List for OS X and macOS [Broadcom, Atheros, Intel and Realtek]
WiFi Compatibility List for OS X and macOS [Broadcom, Atheros, Intel and Realtek] Following are the list of compatible and non-compatible WiFi models for Mac. For Broadcom https://www.elitemacx86.com/threads/how-to-enable-broadcom-wifi.606/ For Atheros...

Requirements
Following are the requirements for enabling Broadcom Bluetooth on macOS. Please ensure you meet the requirements before proceeding with this guide.
WiFi/ BT Hardware |
|
macOS |
|
Bootloader |
|
Kexts |
|
In addition, this guide assumes that you have already mapped your USB Ports and have set the Bluetooth as Internal (255). See Mapping USB Ports for more information.
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/BT 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're having 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 slot is not 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
Network Controller
under the Class
and Subclass
column.4. The BT can be verified in the Hackintool>USB section. In case, if you're unable to verify the BT using Hackintool, you can verify it from the
System Report>Hardware>USB
section.STEP 3: Add Required Kexts
The next step is to install the required kexts in order to enable WiFi and Bluetooth support.
I. WiFi
To enable the WiFi support, you'll need to add AirportBrcmFixup.kext. AirportBrcmFixup doesn't work standalone. AirportBrcmFixup and Lilu are needed together to work in conjunction in order to enable WiFi. To install the kexts, follow the steps below.
1. Download AirportBrcmFixup and Lilu from the downloads section of this forum.
2. Mount your ESP.
3. Depending on your bootloader,
For Clover:
If you're using Clover, copy
AirportBrcmFixup.kext
to EFI/Clover/Kext/Others
directory.For OpenCore:
If you're using OpenCore, copy
AirportBrcmFixup.kext
to EFI/OC/Kexts
directory. You'll also need to add the kext entry in the Kernel
section of your config.plist.NOTES:
|
II. Bluetooth
To enable Bluetooth support, you'll need to add BrcmPatchRAM kexts.
Kexts | Notes |
---|---|
BlueToolFixup |
|
BrcmBluetoothInjector |
|
BrcmFirmwareData |
|
BrcmPatchRAM2 |
|
BrcmPatchRAM3 |
|
1. Download the kexts according to your macOS version from the downloads section of this forum.
2. Mount your ESP.
For Clover:
If you're using Clover, copy the kexts to EFI/Clover/Kext/Others
For OpenCore:
If you're using OpenCore, copy the kexts to EFI/OC/Kexts. You'll also need to add the kext entries in the Kernel section of your config.plist.
NOTES:
|
STEP 4: Configure Quirks
The next step is to enable ExtendBTFeatureFlags which will enable the full functionality of Bluetooth including Continuity. To enable ExtendBTFeatureFlags, follow the steps below.
1. Assuming the ESP is still mounted,
For OpenCore:
If you're using OpenCore, enable
ExtendBTFeatureFlags
Quirk in the Kernel>Quirks section of your config.plist2. Save your config.plist.
STEP 5: 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.
You can see a WiFi icon in the menu bar now. If not, you can enable it from System Preferences>Network>WiFi>Show Wi-Fi status in the menu bar.
NOTE: See AirPortBrcmFixup Boot Arguments for a list of supported boot arguments.
Verifying the WiFi and BT
The next step is to verify whether the WiFi and BT are working or not. Follow the steps to verify the
Recommended Configuration
The following configurations are the only valid configurations. Anything else is likely wrong and should not be used.
WiFi
Target OS | Kext Configuration | Kext Install Location |
---|---|---|
OS X Mountain Lion (10.10) - macOS Catalina (10.15.x) |
|
|
macOS Big Sur (11.x) - macOS Ventura (13.x) |
|
|
NOTES:
- Choose one of the configurations depending on the macOS version, never both.
- You have to block or remove
AirPortBrcm4360_Injector.kext
for macOS Big Sur and later. This can be achieved either by removing the kext entry or using the boot arg to load only one specific driver or via Device Properties or DSDT/SSDT patch or through specifying the MinKernel and MaxKernel for OpenCore. For Clover, you can either remove theAirPortBrcm4360_Injector.kext
fromAirportBrcmFixup.kext/Contents/Plugins
directory or can use the boot arg to load only one specific driver or via Device Properties or DSDT/SSDT patch.
Target OS | Kext Configuration¹ | Kext Configuration² | Kext Location |
---|---|---|---|
OS X Yosemite (10.10) and Prior |
|
|
|
OS X El Capitan (10.11) - macOS Mojave (10.14) |
|
|
|
macOS Catalina (10.15) - macOS Big Sur (11.x) |
|
|
|
macOS Monterey (12.x) - macOS Ventura (13.x) |
|
|
|
NOTES:
- Choose one of the configurations, never both.
- Configuration¹ is the preferred configuration and highly recommended.
Power Management
With a few Broadcom BCM94350 Chipsets (commonly known as DW1820A), some users may experience a Kernel Panic when booting the macOS installer, before reaching the installation stage. Although there could be several underlying causes for a Kernel Panic, this panic is related to the particular DW1820A used in the target system. This can also be seen using the verbose mode:
These WiFi Cards are known to cause random Kernel Panics and it is not even possible to boot the macOS installer when installed in the target system. The system throws an immediate Kernel Panic before you can reach the macOS installer. If you're attempting a clean installation of macOS, you'll either need to disable the Wireless completely in BIOS or remove the hardware itself in order to complete the installation. Once installed, you can either enable the Wireless back in the BIOS or install the hardware back. However, this would cause severe lags and performance degradation (as seen previously) once you reach the desktop as if the card just clogged up CPU resources. This is because cards based on these chipsets don't support power management correctly under macOS and therefore needs to be disabled using one of the methods described below.
The steps mentioned below are only valid if your system has a Kernel Panic relating to the ASPM and will not work if your system has a Kernel Panic due to some other cause. Please check the verbose log to ensure you're in the right direction.
Method #1: Using Device Properties
Using Device Properties, you can disable the ASPM without the need of extra coding. This method is a lot easier and more friendly and recommended for newbie users. To disable the ASPM using the Device Properties method, follow the steps below.
STEP 1: Finding the Device Path of the WiFi
The very step is to find the Device's Path. Without the correct path, the device properties injection will never work.
STEP 2: Injecting Properties
Once you have obtained the Device's Path, you're ready to inject the device properties. To inject the device properties, follow the steps below.
1. Mount your ESP.
2. Depending on your bootloader,
For Clover:
1. Open your config.plist using any XML editor from the
EFI/Clover
directory.2. Add the Device path which you obtained in STEP #1 of this guide under
Devices>Properties
section of your config.plist. In our case, the Device path would be PciRoot (0x0)/Pci(0x1C,0x02)/Pci(0x0,0x0)
.3. Add the following Properties under
Properties
in the Devices section of your config.plist.Key* =
pci-aspm-default
Value =
00000000
Type =
DATA
For OpenCore:
1. Open your config.plist using any XML editor from the
EFI/OC
directory.2. Add the Device path which you obtained in STEP #1 of this guide under the
DeviceProperties
section of your config.plist. In our case, the Device path would be PciRoot (0x0)/Pci(0x1C,0x02)/Pci(0x0,0x0)
.3. Add the following Properties under the
DeviceProperties
section of your config.plist.Key* =
pci-aspm-default
Value =
00000000
Type =
DATA
4. Save your config.plist.
STEP 3: Restarting 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.
Method #2: Using Hotpatch
Using the Hotpatch method, you can also disable the ASPM. However, beginner users may find this method a bit difficult and therefore new users are advised to use Method #1. To disable the ASPM using the Hotpatch method, follow the steps below.
STEP 1: Determining the ACPI Path of your WiFi/BT Card
The very step is to find the ACPI Path. This is the most important step and is the root therefore the ACPI Path must be accurate in order for the guide to work. Without the correct ACPI path, the guide simply won't work.
STEP 2: Modifying the SSDT
Once you have obtained the ACPI path, you're ready to disable the ASPM by modifying the sample SSDT. Typically, the modification consists of changing the ACPI path only. The rest of the values in the SSDT does not need to be changed. To modify the SSDT, follow the steps below.
1. Based on Rehabman's class-code technique, download SSDT-NVME-DISABLE.aml.
2. Download the MaciASL of your choice.
3. Extract the MaciASL and move it to the Applications folder.
4. Open the downloaded SSDT-NVME-DISABLE.aml using MaciASL.
5. Now you need to change the ACPI Path in the SSDT to match yours. You can either manually replace these values or you can also use Find and Replace option in MaciASL using Command+F or using the menu Edit>Find and Replace option.
To Replace | Original Value | Note |
---|---|---|
ACPI Path | PCXX.XXXX.XXXX | Depending on your ACPI path, change the ACPI Path with the value obtained in STEP #1. In our case, the ACPI path would be PCI0.GPP1.DEV0 |
Before changing:
After changing:
6. Click on Compile and look for errors in the Compiler Summary. If there's an error, fix it and again click on Compile.
7. Save the changes to the SSDT using the
File>Save
option.STEP 4: Installing the SSDT
Now you can install the SSDT-NVME-DISABLE.aml file such that Clover or OpenCore can load it. If you're preparing your USB, you'll place it on the EFI of your Bootable USB, otherwise it will be on the EFI of your boot drive. Follow the steps below to install the SSDT.
1. Mount your ESP.
2. Depending on your bootloader,
For Clover:
If you're using Clover, copy the SSDT-NVME-DISABLE.aml and SSDT-DTGP.aml to EFI/Clover/ACPI/patched directory.
For OpenCore:
If you're using OpenCore, copy SSDT-NVME-DISABLE.aml and SSDT-DTGP.aml to EFI/OC/ACPI directory. You'll also need to add the ACPI entries in ACPI>Add section of your config.plist.
3. Save your config.plist.
STEP 5: Restarting 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 work
The next step is to verify whether the aspm is disabled or not.
IOReg
5GHz and Country Code
Using the default Country Code, most of the cards work at full speed (5GHz/80MHz). However, a few cards may not work at full speed but with a significantly reduced speed. To fix this issue, you'll need to use
brcmfx-country=XX
property on WiFi for full 5GHz/80MHz operation. Where XX
is the target value, e.g.: US
, FR
, #a
, etc. Please note that this fix requires AirportBrcmFixup.kext
. To add the Country Code property, follow the steps below.1. Mount your ESP.
2. Depending on your bootloader,
For Clover:
1. Open your config.plist using any XML editor from the
EFI/Clover
directory.2. Add the Device path of your WiFi Card under
Devices>Properties
section of your config.plist. In our case, the Device path would be PciRoot (0x0)/Pci(0x1C,0x02)/Pci(0x0,0x0)
.3. Add the following Properties under
Properties
in the Devices section of your config.plist.Key* =
pci-aspm-default
Value =
00000000
Type =
DATA
For OpenCore:
1. Open your config.plist using any XML editor from the
EFI/OC
directory.2. Add the Device path of your WiFi Card under the
DeviceProperties
section of your config.plist. In our case, the Device path would be PciRoot (0x0)/Pci(0x1C,0x02)/Pci(0x0,0x0)
.3. Add the following Properties under the
DeviceProperties
section of your config.plist.Key* =
brcmfx-country
Value =
XX
Type =
DATA
4. If you don't want to inject the property using Device Properties, you can use the same patch using
brcmfx-country=XX
as a boot-arg in your config.plist. See How to Add Boot Args for more information.5. Once added, save your config.plist.
On a side note, please note that
AirportBrcmFixup.kext
implements US Country Code by default, and using any Country Code other than the default US setting of the card can make an impact on the wireless performance i.e. fluctuating and reduced RX/TX rate).6. 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.
macOS Monterey and Later
Since macOS Monterey, a lot has been changed in the Bluetooth stack. If you have followed the guide properly and still having issues regarding Bluetooth, we've created a separate thread covering such issues. You can find the link to the thread linked below.

GUIDE - How to Fix Bluetooth on macOS Monterey and Later
How to Fix Bluetooth on macOS Monterey and Later This guide covers fixing Bluetooth on macOS Monterey and Later using Clover and OpenCore. By following this guide, you'll be able to enable Bluetooth on macOS Monterey and Later using Clover or OpenCore Bootloader. Background Recently, we...

Last edited: