• Stars
    star
    643
  • Rank 70,000 (Top 2 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created over 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An open source kernel extension providing a set of patches required for non-native Airport Broadcom Wi-Fi cards.

AirportBrcmFixup

Build Status Scan Status

An open source kernel extension providing a set of patches required for non-native Airport Broadcom Wi-Fi cards.

Notes

Currently this kext requires macOS 10.10 or newer.

Note: Debug version of Lilu.kext should be put in the same folder as AirportBrcmFixup! And they should be also used together!

Features

  • Supports AirPort_Brcm4360, AirPort_BrcmNIC and AirPort_BrcmNIC_MFG
  • Implements patch for chip identificator checking (0xaa52), in <=10.12 it's required for successful driver starting
  • Implements patch for "Failed PCIe configuration patch", required for some cards
  • Implements patch for "Third Party Device" (returns vendor name "Apple")
  • Implements patch for removing of white-list check
  • Implements 5Ghz and country code patch (US by default)
  • Implements WOWL (WoWLAN) disabler (turned on by default) - no low speed after wake
  • Implements patch to disable LPO panic in AirPortBrcmNIC

Installation types

  • Clover Airport Fix + AirportBrcmFixup
  • Clover Airport Fix + AddProperties(fake device-id) + AirportBrcmFixup (preferable)
  • Clover Airport Fix + AirportBrcmFixup + FakePCIID + FakePCIID_Broadcom_WiFi.kext
  • AirportBrcmFixup + FakePCIID + FakePCIID_Broadcom_WiFi.kext

Boot-args

  • -brcmfxdbg turns on debugging output
  • -brcmfxbeta enables loading on unsupported osx
  • -brcmfxoff disables kext loading
  • -brcmfxwowl enables WOWL (WoWLAN) - it is disabled by default
  • -brcmfx-alldrv allows patching for all supported drivers, disregarding current system version (see Matching device-id and kext name in different macOS versions)

Specific boot-args and ioreg properties

  • brcmfx-country=XX changes the country code to XX (US, CN, #a, ...), also can be injected via DSDT or Properties β†’ DeviceProperties in bootloader
  • brcmfx-aspm overrides value used for pci-aspm-default
  • brcmfx-wowl enables/disables WoWLAN patch
  • brcmfx-delay delays start of native broadcom driver for specified amount of milliseconds. It can solve panics or missing wi-fi device in Monterey. You can start with 15 seconds (brcmfx-delay=15000) and successively reduce this value until you notice instability in boot.
  • brcmfx-alldrv allows patching for all supported drivers, disregarding current system version (see Matching device-id and kext name in different macOS versions)
  • brcmfx-driver=0|1|2|3 enables only one kext for loading, 0 - AirPortBrcmNIC-MFG, 1 - AirPortBrcm4360, 2 - AirPortBrcmNIC, 3 - AirPortBrcm4331, also can be injected via DSDT or Properties β†’ DeviceProperties in bootloader

Possible values for brcmfx-aspm (and pci-aspm-default):

  • 0 disables ASPM
  • kIOPCIExpressASPML0s = 0x00000001,
  • kIOPCIExpressASPML1 = 0x00000002,
  • kIOPCIExpressCommonClk = 0x00000040,
  • kIOPCIExpressClkReq = 0x00000100

Credits

  • Apple for macOS
  • vit9696 for Lilu.kext and great help in implementing some features
  • PMheart for the initial idea and implementation
  • darkvoid & RehabMan for FakePCIID implementation (partly used in AirportBrcmFixup)
  • al3xtjames for disabling LPO panic in AirPortBrcmNIC
  • lvs1974 for writing the software and maintaining it

Matching device-id and kext name in different macOS versions

[10.8]

  • AirPortBrcm4360: 43a0, IOProbeScore = 641
  • AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 615

[10.9]

  • AirPortBrcm4360: 43a0, IOProbeScore = 842
  • AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 700

[10.10]

  • AirPortBrcm4360: 43ba, 43a3, 43a0, 4331, 4353, IOProbeScore = 930
  • AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 900

[10.11]

  • AirPortBrcm4360: 43ba, 43a3, 43a0, 4331, 4353, IOProbeScore = 1040
  • AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800

[10.12]

  • AirPortBrcm4360: 43ba, 43a3, 43a0, 4331, 4353, IOProbeScore = 1152
  • AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800

[10.13]

  • AirPortBrcm4360: 4331, 4353, IOProbeScore = 1240
  • AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800
  • AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1241
  • AirPortBrcmNIC-MFG: 43ba, 43a3, 43a0, IOProbeScore = -1000

[10.14]

  • AirPortBrcm4360: 4331, 4353, IOProbeScore = 1400
  • AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800
  • AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400
  • AirPortBrcmNIC-MFG: 43ba, 43a3, 43a0, IOProbeScore = -1000

[10.15]

  • AirPortBrcm4360: 4331, 4353, IOProbeScore = 1400
  • AirPortBrcm4331: removed
  • AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400
  • AirPortBrcmNIC-MFG: removed

[11]

  • AirPortBrcm4360: removed
  • AirPortBrcm4331: removed
  • AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400
  • AirPortBrcmNIC-MFG: removed

[12]

  • AirPortBrcm4360: removed
  • AirPortBrcm4331: removed
  • AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400, kext is moved to the new location - IO80211FamilyLegacy.kext/Contents/PlugIns
  • AirPortBrcmNIC-MFG: removed

[13]

  • AirPortBrcm4360: removed
  • AirPortBrcm4331: removed
  • AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400, kext is moved to the new location - IO80211FamilyLegacy.kext/Contents/PlugIns
  • AirPortBrcmNIC-MFG: removed

[14]

  • AirPortBrcm4360: removed
  • AirPortBrcm4331: removed
  • AirPortBrcmNIC: removed
  • AirPortBrcmNIC-MFG: removed

Explanation in russian language: (https://applelife.ru/threads/airportbrcmfixup-lilu-plagin-s-naborom-patchej-dlja-wi-fi-kart-broadcom.2355103/page-16#post-751173)

Until version [10.13] there were only two kexts and for the most cases FakeID = 43a0 was enough to get working Wi-Fi. In [10.13] (and later) one family was separated into AirPortBrcm4360 (probably will be removed in 10.15), AirPortBrcmNIC and AirPortBrcmNIC-MFG. A proper fake-id has to be considered to load appropriate kext. Some device-id have limitations in one kext (like 5 Ghz range), but do not have it another.

Please pay attention

In 11+ class AirPortBrcm4360 has been completely removed. Using of injector kext with such class name and matched vendor-id:device-id blocks loading of original airport kext. To address this issue and keep compatibility with older systems injectors for AirPortBrcm4360 and AirPortBrcmNIC were removed from main Info.plist file. Instead, the two new kext injectors are deployed in PlugIns folder: AirPortBrcm4360_Injector.kext and AirPortBrcmNIC_Injector.kext. You have to block (or remove) AirPortBrcm4360_Injector.kext in 11+. In OpenCore you can specify MaxKernel 19.9.9 for AirPortBrcm4360_Injector.kext. In Clover you can have two different AirportBrcmFixup.kext, but in kext folder with version name 11 and 12 and 13 AirportBrcmFixup.kext must not contain AirPortBrcm4360_Injector.kext. You don't need these injectors at all if your vendor-id:device-id is natively supported by AirPortBrcmNIC or AirPortBrcm4360 (your device-id is included into Info.plist in these kexts).

More Repositories

1

OpenCorePkg

OpenCore bootloader
C
13,029
star
2

Lilu

Arbitrary kext and process patching on macOS
C
3,585
star
3

AppleALC

Native macOS HD audio for not officially supported codecs
C++
3,439
star
4

WhateverGreen

Various patches necessary for certain ATI/AMD/Intel/Nvidia GPUs
C++
3,236
star
5

VirtualSMC

SMC emulator layer
C++
1,664
star
6

BrcmPatchRAM

C++
1,037
star
7

MaciASL

ACPI editing IDE for macOS
Objective-C
749
star
8

OcBinaryData

733
star
9

NVMeFix

C++
685
star
10

MacHyperVSupport

Hyper-V integration support for macOS
C++
620
star
11

AppleSupportPkg

AppleSupportPkg - contains UEFI drivers for Apple environment support
559
star
12

CPUFriend

Dynamic macOS CPU power management data injection
C++
535
star
13

VoodooPS2

C++
513
star
14

IntelMausi

Intel Ethernet LAN driver for macOS
C
390
star
15

bugtracker

Acidanthera Bugtracker
375
star
16

HibernationFixup

A Lilu plugin intended to fix hibernation compatibility issues
C++
371
star
17

FeatureUnlock

Add Sidecar support to unsupported models
C++
362
star
18

gfxutil

Device Properties conversion tool
C
274
star
19

MacInfoPkg

Mac Platform Information
249
star
20

RestrictEvents

C++
249
star
21

CpuTscSync

It is a Lilu plugin, combining functionality of VoodooTSCSync and disabling xcpm_urgency if TSC is not in sync. It should solve kernel panics after wake.
C++
171
star
22

MacKernelSDK

macOS kernel SDK targeting various XNU versions
C
167
star
23

AptioFixPkg

AptioFixPkg drivers to workaround macOS compatibility with APTIO UEFI FW
161
star
24

Shiki

Protected video playback support and hardware video acceleration on various hardware.
152
star
25

VoodooInput

Generic Multitouch Handler kernel extension for macOS
C++
151
star
26

BrightnessKeys

Handler for brightness keys without DSDT patches
C++
132
star
27

RTCMemoryFixup

open source kernel extension providing a way to emulate some offsets in your CMOS (RTC) memory
C++
97
star
28

macserial

Decode mac serial number
96
star
29

CryptexFixup

Various patches to install Rosetta Cryptex
C++
88
star
30

BT4LEContinuityFixup

72
star
31

OcSupportPkg

OpenCore common libraries
71
star
32

IOJones

Realtime I/O Registry viewer
60
star
33

DebugEnhancer

A Lilu plugin intended to enable debug output in the macOS kernel
C++
58
star
34

audk

Acidanthera UEFI Development Kit based on EDK II edk2-stable202405
C
57
star
35

dmidecode

dmidecode version with macOS specific improvements
C
40
star
36

ocbuild

Shell
39
star
37

EmeraldSDHC

SD host controller support for macOS
C++
39
star
38

OpenCoreShell

Patched UDK Shell adopted for wide firmware range
38
star
39

EfiPkg

38
star
40

UEFIGraphicsFB

UEFI framebuffer driver for macOS
C++
28
star
41

mac-efi-firmware

C
24
star
42

CpuTopologySync

Rebuild asymmetric CPU topology on macOS.
23
star
43

DuetPkg

Duet UEFI firmware emulator
15
star
44

ocmtoc

C
7
star
45

OcLegacyPkg

Legacy OpenCorePkg repository left for historical purposes
7
star