This is the AppleBCM5701Ethernet.kext taken from Catalina, patched to work for Big Sur and newer.
- This kext was patched and uploaded by Exception in Apple Life. The original thread is in Russian, but someone had made a well written explanation about it in English here (archived).
Download the kext here. Note that this will only work if your specific ethernet model worked with FakePCIID in Catalina.
- Add your device-id in the kext's Info.plist if not included.
- Set MinKernel to 20.0.0.
This is optional. You could also apply a Kernel -> Patch to show the correct model in System Report, edit accordingly to match your model.
Identifier* | Find | Replace | maxKernel | Comment |
---|---|---|---|---|
com.apple.iokit.AppleBCM57XXEthernet | 35373736 35 | 35373738 35 | 20.0.0 | IOReg model 57765 -> 57785 |
3 5 3 7 3 7 3 6 3 5 -> 3 5 3 7 3 7 3 8 3 5
I’m only re-uploading it here because I noticed that the longer the attachment stays in that thread, the more likely it will automatically get deleted.
Alternatively, you could also use the CatalinaBCM5701Ethernet.kext provided in OCLP.
Add these to Kernel -> Patch AS IT IS:
Identifier* | Find | Replace | minKernel | Comment |
---|---|---|---|---|
com.apple.iokit.CatalinaBCM5701Ethernet | E80000FF FF668983 00050000 | B8B41600 00668983 00050000 | 20.0.0 | Broadcom BCM577XX Patch |
The purpose of this kernel patch is to bypass the hardware device ID check in the binary code of the CatalinaBCM5701Ethernet kext. The AppleBCM57XXEthernet kext has also been patched in a similar manner. Both CatalinaBCM5701Ethernet and AppleBCM57XXEthernet kexts have already been patched to prevent conflicts with the native AppleBCM5701Ethernet kext in the system (S/L/E), but CatalinaBCM5701Ethernet was originally intended for use on real Macs, and therefore did not require patching out the device ID check. Hence, we patch it ourselves to enable its use on non-Mac systems.
- This patch is just the same as the
Broadcom BCM57785 Patch
from the sample.plist of Opencorepkg, but finds/replace the whole series of hex instead without the base and hex mask. In theory, the OC'sBroadcom BCM57785 Patch
should still be applicable to this kext as it was from Catalina anyway, however in my attempt it did not work. Opencore probably does not support masking on injected kexts. I had raised an issue about it, and they also had recommended me to use that patchedAppleBCM57XXEthernet
from the Apple Life thread instead.
This is optional. I've had these device properties in my config.plist since the beginning I used this kext, I tried to remove them and the kext still loaded. Do not inject your real device-id, we will need to spoof it to a natively supported one, copy the following as it is:
Key* | Value | Type |
---|---|---|
compatible | pci14e4,16b4 | String |
device-id | B4160000 | Data |
built-in | 01 | Data |
If the kext didn't load without the device properties, then you may need to add them.
This is optional. You could also apply a Kernel -> Patch to show the correct model in System Report, edit accordingly to match your model.
Identifier* | Find | Replace | minKernel | Comment |
---|---|---|---|---|
com.apple.iokit.CatalinaBCM5701Ethernet | 35373736 35 | 35373738 35 | 20.0.0 | IOReg model 57765 -> 57785 (Cosmetic) |
3 5 3 7 3 7 3 6 3 5 -> 3 5 3 7 3 7 3 8 3 5
For Catalina and older, it is possible to use either the:
- The easy way: FakePCIID and FakePCIID_BCM57XX_as_BCM57765.kext, or;
- Using the
Broadcom BCM57785 Patch
from the sample.plist of Opencorepkg - in combination withdevice-id
, andcompatible
device property injection of a native model (BCM57765). Do not inject your real device-id, we will need to spoof it to a natively supported one, copy the following as it is:
Key* | Value | Type |
---|---|---|
compatible | pci14e4,16b4 | String |
device-id | B4160000 | Data |
built-in | 01 | Data |
- Both of these will load the native AppleBCM5701Ethernet.kext in the system.
- Don't mind the naming of the patch in the sample.plist. It is named "Broadcom BCM57785 patch" perhaps because the patch was originally made by someone who had a BCM57785, but it should still work with other models supported by the native kext (via spoofing).
This is optional. You could also apply a Kernel -> Patch to show the correct model in System Report, edit accordingly to match your model.
Identifier* | Find | Replace | maxKernel | Comment |
---|---|---|---|---|
com.apple.iokit.AppleBCM5701Ethernet | 35373736 35 | 35373738 36 | 19.99.9 | IOReg model 57765 -> 57785 (Cosmetic) |
3 5 3 7 3 7 3 6 3 5 -> 3 5 3 7 3 7 3 8 3 5
If you use any of the aforementioned that needed device properties injection, the device-id will show as the spoofed one (14e4,16b4/BCM57765) - as these methods require spoofing the ethernet into a native model to make the kext load.
Again, if you get confused by the naming of the kext, here's the difference:
AppleBCM5701Ethernet
- Native/"Vanilla", it's in the System/Library/ExtensionsCatalinaBCM5701Ethernet
- from OCLP, it's theAppleBCM5701Ethernet
from Catalina, patched to not conflict with the native kext as it is needed to be re-injected on Big Sur and newer on older macs. (ref)AppleBCM57XXEthernet
- from Apple Life, same asCatalinaBCM5701Ethernet
but a function that checks the hardware device-id is patched, to be used in non-macs - where their Broadcom ethernet is supported by the kext. (ref)
The only reason we need to reinject the older version of the kext is because it was heavily rewritten in Big Sur, and some support was also dropped. As you can see, the OCLP had the need to reinject the kext on older Macs that had Broadcom Ethernet.
Credits:
- Sunki for coming up with the patches - that was used for the
AppleBCM57XXEthernet
- Exception for this patched kext
- Andrey1970AppleLife for Cosmetic patch
- Dortania for CatalinaBCM5701Ethernet
- Acidanthera/Sunki for the Kernel Patches