Contribute
Register
Status
Not open for further replies.
hmm, seem the waitq patch for 10.14 changed in 10.14.3 (and potentially 10.14.2), my method is done and probably working fine, I'll have to test on 10.13.6 and see what comes from it.

Lenovo stopped blacklisting T400 series hardware about 2 years ago. Im running the latest bios, you can always flash a modified bios. There are groups that will do it for no charge all over the internet. You just have to buy an eeprm flash tool along with a clip (get both on amazon for 12 bucks) then you dump your bios and upload it and they'll unlock the advanced bios menu that most manufacturers lock up and then you just flash the modified bios and you're in the clear...

that's for the T4xx series, sadly this didnt pass to the P-series and to get to the bios chips is a big pain in the butt (I have to fully disassemble it to get to the chip which is located near the CPU). And flashing is a whole other story with bricking possibility (and I use that laptop to work). Thanks for the heads up btw.
 
Last edited by a moderator:
Ok. So for the people who still need this small hack, first try adding brcmfx-driver=1 to force Brcm4360 driver to load instead of BrcmNIC (requires AirportBrcmFixUp kext), reboot your system, check if you can see/connect to your network (you may also need brcmfx-country=US or brcmfx-country=#a to enable 5Ghz network support, change US or #a with your own local, #a enables 80HT support). HOWEVER, while working with it, check if it doesnt suddenly slowdown and your computer starts lagging like hell and your wifi disconnects, if you get these symptoms, you may need to use this hack (which is the same as the one in this thread, but cleaner, you do not need to edit anything in S/L/E).

Remove AirportBrcmFixUp from your system (both Clover and in the OS disk, because we have 10.14 system and will not apply a patch for the 10.10 kext rollback), then put F_IO80211Family.kext (extracted ofc) in /Library/Extensions (NOT in /System/Library/Extensions, that's the pre-SIP way of doing things, so dont do it), then run in a Terminal window
Code:
sudo chown -R root:wheel /Library/Extensions; sudo chmod -R 755 /Library/Extensions; sudo kextcache -i /
This will fix your /Library/Extensions permissions and rebuild the caches (you should do this instead of using KextBeast, Kext Utility, some other software to install kexts, basically do it yourself.) After running the command you will get some errors about BrcmNIC driver not fulfilling some requirements, ignore them. Once done, add to your Clover config these kext patches:
XML:
            <dict>
                <key>Comment</key>
                <string>10.10-10.11-BCM94352-5GHz-US-FCC-darkvoid</string>
                <key>Find</key>
                <data>QYP8/3QsSA==</data>
                <key>Name</key>
                <string>com.apple.driver.AirPort.Brcm4360</string>
                <key>Replace</key>
                <data>ZscGVVPrKw==</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.10+-BCM94352-Airport-Extreme-Skvo</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>axAAAHUN</data>
                <key>Name</key>
                <string>com.apple.driver.AirPort.Brcm4360</string>
                <key>Replace</key>
                <data>axAAAJCQ</data>
            </dict>

(or if you're lazy:
Name: com.apple.driver.AirPort.Brcm4360
Find: 4183fcff 742c48
Replace: 66c70655 53eb2b
Comment: 10.10-10.11-BCM94352-5GHz-US-FCC-darkvoid

Name: com.apple.driver.AirPort.Brcm4360
Find: 6b100000 750d
Replace: 6b100000 9090
Comment: 10.10+-BCM94352-Airport-Extreme-Skvo)

Both patches were taken from toleda's 10.13 patches for Broadcom, found here: https://github.com/toleda/wireless_broadcom, we're using the 10.10 patches because the kext is literally a rollback of 10.10.5 kext, that kext is taken from the latest Combo Update pkg of Yosemite 10.10.5, and has Bundle versions string, short set to 99.9 and Bundle version set to 9999.9 on both IO80211Family and AirPortBrcm4360 respective Info.plist. This allows them to top the local kext version and will be integrated to the kext cache instead of the local one.

After setting that up you can reboot. YOU WILL EXPERIENCE SOME KERNEL PANICS AT FIRST. That's totally normal (like 2 or so).

Issues with this method:
  • Kernel panics for waitq (YOU MUST APPLY THOSE PATCHES IN CLOVER'S CONFIG IF YOU GET THESE, on my Thinkpad P50 I didnt have to, on my HP Elite X2 G2, I had to, THE KERNEL PATCH WILL ONLY WORK ON 10.14 to 10.14.2, 10.14.3 changed something_.
  • Kernel panics when trying to log out or change user, you will have to enable the login screen (if it's disabled) and then reboot to log to another user.
  • Kernel panics on shutdowns or boot ups
  • Kernel panics on reboots (sometimes)
  • General system instability: it's a rollback, dont expect too much, you may work fine for a while but you may experience instabilities. On my Thinkpad P50, the system was pretty stable, didnt have kernel panics as much as I had on my Elite X2 G2, no idea why. 3 days uptime on my P50 up to now, and stable.
In case you need a patch to boot the installer or macOS on DW1820A:
Since booting with the card will slow your computer down, you will have to add these kext patches to your config:

XML:
            <dict>
                <key>Comment</key>
                <string>Prevent BrcmNIC-MFG kexts from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>com.apple.driver.AirPort.BrcmNIC-MFG</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4355 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4355.Datastore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4355 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4355.Hashstore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4364 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4364.Datastore</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Disabled</key>
                <false/>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4364 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4364.Hashstore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent IO80211 - BrcmNIC from attaching to anything, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.AirPort.BrcmNIC</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Disabled</key>
                <false/>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>

This will let you boot to the installer and macOS to get going, the card will not be used, so you may need to use another way to connect to the internet (Ethernet for example) and install the kext attached bellow.

Some results of this method:

395164

395165

395166

395168


Hope this helps someone. Also I would recommend you edit your kexts on your own (if you're paranoid about the one provided), copy IO80211Family from a 10.10.5 Combo update, do the edits as shown above (for the Info.plist), remove _CodeSignature folders (from IO80211Family and AirportBrcm4360), remove other kexts in the plugins folder (keep only AirportBrcm4360), install in /L/E, enjoy you less than stable system (lol).
 

Attachments

  • F_IO80211Family.kext.zip
    3.1 MB · Views: 560
Last edited:
Thank you @midi1996!
I've followed your guide with:
1. remove AirportBrcmFixUp from /S/L/E, /L/E & clover
2. boot with options: kext-dev-mode=1 dart=0 -igfxnohdmi -brcmfxbeta brcmfx-driver=1 brcmfx-country=US
3. remove AirPortBrcmNIC-MFG.kext, IO80211Family.kext, IO80211FamilyV2.kext from /S/L/E (required, I can't boot with these kexts)
4. install IO80211Family.kext patched on my own to /L/E, fix permission & rebuild cache

395418


Result:
1. Wifi and Bluetooth work with 5G
2. but I got new issue, system often shutdown suddenly (KP IO80211) after logged in and got KP on restart.
3. in my screen shot IO80211 Family is Not install.
 
@hieubq
1. Good, but also never install a kext twice in the OS disk, and if you put it in the OS disk + Clover, make sure you have InjectKexts = Detect
2. you do not need these: kext-dev-mode=1 -brcmfxbeta brcmfx-driver=1 brcmfx-country=US (the first because it's deprecated on 10.14, so makes no sense, the 3 others are AirportBrcmFixUp flags.
3. read my second part of the post, I posted patches that will disable those kexts without deleting them (to keep /S/L/E clean)

Results:
1. Good to hear
2. you will get some of these sadly, that's known, happened to me twice but not after.
3. ??? (please explain)
 
Ok. So for the people who still need this small hack, first try adding brcmfx-driver=1 to force Brcm4360 driver to load instead of BrcmNIC (requires AirportBrcmFixUp kext), reboot your system, check if you can see/connect to your network (you may also need brcmfx-country=US or brcmfx-country=#a to enable 5Ghz network support, change US or #a with your own local, #a enables 80HT support). HOWEVER, while working with it, check if it doesnt suddenly slowdown and your computer starts lagging like hell and your wifi disconnects, if you get these symptoms, you may need to use this hack (which is the same as the one in this thread, but cleaner, you do not need to edit anything in S/L/E).

Remove AirportBrcmFixUp from your system (both Clover and in the OS disk, because we have 10.14 system and will not apply a patch for the 10.10 kext rollback), then put F_IO80211Family.kext (extracted ofc) in /Library/Extensions (NOT in /System/Library/Extensions, that's the pre-SIP way of doing things, so dont do it), then run in a Terminal window
Code:
sudo chown -R root:wheel /Library/Extensions; sudo chmod -R 755 /Library/Extensions; sudo kextcache -i /
This will fix your /Library/Extensions permissions and rebuild the caches (you should do this instead of using KextBeast, Kext Utility, some other software to install kexts, basically do it yourself.) After running the command you will get some errors about BrcmNIC driver not fulfilling some requirements, ignore them. Once done, add to your Clover config these kext patches:
XML:
            <dict>
                <key>Comment</key>
                <string>10.10-10.11-BCM94352-5GHz-US-FCC-darkvoid</string>
                <key>Find</key>
                <data>QYP8/3QsSA==</data>
                <key>Name</key>
                <string>com.apple.driver.AirPort.Brcm4360</string>
                <key>Replace</key>
                <data>ZscGVVPrKw==</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.10+-BCM94352-Airport-Extreme-Skvo</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>axAAAHUN</data>
                <key>Name</key>
                <string>com.apple.driver.AirPort.Brcm4360</string>
                <key>Replace</key>
                <data>axAAAJCQ</data>
            </dict>

(or if you're lazy:
Name: com.apple.driver.AirPort.Brcm4360
Find: 4183fcff 742c48
Replace: 66c70655 53eb2b
Comment: 10.10-10.11-BCM94352-5GHz-US-FCC-darkvoid

Name: com.apple.driver.AirPort.Brcm4360
Find: 6b100000 750d
Replace: 6b100000 9090
Comment: 10.10+-BCM94352-Airport-Extreme-Skvo)

Both patches were taken from toleda's 10.13 patches for Broadcom, found here: https://github.com/toleda/wireless_broadcom, we're using the 10.10 patches because the kext is literally a rollback of 10.10.5 kext, that kext is taken from the latest Combo Update pkg of Yosemite 10.10.5, and has Bundle versions string, short set to 99.9 and Bundle version set to 9999.9 on both IO80211Family and AirPortBrcm4360 respective Info.plist. This allows them to top the local kext version and will be integrated to the kext cache instead of the local one.

After setting that up you can reboot. YOU WILL EXPERIENCE SOME KERNEL PANICS AT FIRST. That's totally normal (like 2 or so).

Issues with this method:
  • Kernel panics for waitq (YOU MUST APPLY THOSE PATCHES IN CLOVER'S CONFIG IF YOU GET THESE, on my Thinkpad P50 I didnt have to, on my HP Elite X2 G2, I had to, THE KERNEL PATCH WILL ONLY WORK ON 10.14 to 10.14.2, 10.14.3 changed something_.
  • Kernel panics when trying to log out or change user, you will have to enable the login screen (if it's disabled) and then reboot to log to another user.
  • General system instability: it's a rollback, dont expect too much, you may work fine for a while but you may experience instabilities. On my Thinkpad P50, the system was pretty stable, didnt have kernel panics as much as I had on my Elite X2 G2, no idea why. 3 days uptime on my P50 up to now, and stable.
In case you need a patch to boot the installer or macOS on DW1820A:
Since booting with the card will slow your computer down, you will have to add these kext patches to your config:

XML:
            <dict>
                <key>Comment</key>
                <string>Prevent BrcmNIC-MFG kexts from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>com.apple.driver.AirPort.BrcmNIC-MFG</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4355 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4355.Datastore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4355 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4355.Hashstore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4364 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4364.Datastore</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Disabled</key>
                <false/>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4364 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4364.Hashstore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent IO80211 - BrcmNIC from attaching to anything, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.AirPort.BrcmNIC</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Disabled</key>
                <false/>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>

This will let you boot to the installer and macOS to get going, the card will not be used, so you may need to use another way to connect to the internet (Ethernet for example) and install the kext attached bellow.

Some results of this method:

View attachment 395164
View attachment 395165
View attachment 395166
View attachment 395168

Hope this helps someone. Also I would recommend you edit your kexts on your own (if you're paranoid about the one provided), copy IO80211Family from a 10.10.5 Combo update, do the edits as shown above (for the Info.plist), remove _CodeSignature folders (from IO80211Family and AirportBrcm4360), remove other kexts in the plugins folder (keep only AirportBrcm4360), install in /L/E, enjoy you less than stable system (lol).
GOOOOD SOLUTION!!!
 
OK I managed to get it running at damn near useable quality. I haven experienced a panic/restart that's been associated with this cards drivers in far longer than the normal amount of time it would usually happen in. I did a couple of things different this time.

First I'm still using the IO80211Family.kext from Yosemite (macOS 10.10) along with the AirPortBrcm4360.kext which can be found as a plugin inside of IO80211.

Second, I disabled all kext patches which are pointed at the AirPortBrcm4360 driver, including the Favco patch. I've instead opted for using AirPortBrcmFixup.kext (Installed in /L/E along with all of my other kext files) alone for the proper patches and fixes because of the fact that it was designed to do just that across multiple cards and kext files.

Next I got rid of IO80211FamilyV2.kext from /S/L/E along with BCMWLANFirmware4355_Datastore.kext, BCMWLANFirmware4355_Hashstore.kext, BCMWLANFirmware4364_Datastore.kext, and BCMWLANFirmware4364_Hashstore.kext which are also found in /S/L/E. I don't really have a reason for doing this, other than the fact that I had read up on issues that were directly related to the malfunctioning of Broadcom cards in official Mac hardware that is experiencing issues related to the systems ability to properly detect the temperature of internal components which it would normally be able to read. My Hackintosh does not have the proper thermal configuration for system temperature regulation outside of what's available and so I'm thinking that this Waitq panic may have something to do with the temperature readings as well.

Next I changed my SMBIOS identity from MacBook Pro 12,1 to MacBook Air 7,2. I also read a few posts about the real MacBook Pro 12,1 experiencing this same Invalid Waitq panic because of heating issues in a defective device which Apple actually swapped out for the individual who posted the information concerning the problem. Heads up there is in fact a whitelist for the MacOS Sierra 10.12 IO80211Family.kext with APBC4360 which designates MBP 4,1 MBP11,5 iMac 17,1 and a few other devices as authorized to load the Kext for pci14e4,43a3 and I also read online a few people using macOS Sierra with iMac 17,1 SMBIOS who were able to get the card running no problem. I attempted to mess around with these identities but had no luck getting the driver to load.

I mad a few other changes to my plist like dropping all OEM SSDTs which I was supposed to be doing in the first place and had never enabled the option. Whenever you choose static patching you have to drop the OEM SSDTs, if you decide to HotPatch and use Clover Configurator to patch your DSDT on the fly then you don't drop the OEM SSDTs. Make sure you have a good understanding of all aspects of the Configuration of clover based on whichever methods you're using because that also plays a big role in the overall functionality of things. For instance changing the dark wake option to darkwake=8 fixed my sleep/wake issues along with the shutdown issues I was having where the system would shutdown but the power light would remain on and require me to hold the button to power off the computer and this would result in the error message about restarting when the computer would first boot up.

I also dropped my video memory config from 512mb to 256mb from the setting in the Bios. One thing I've always been aware of was the affect the the card seemed to have on the systems ability to load the video drivers when the AirPortBrcmNIC kext is present within my system. This is the current designated kext for this device and it will not load the card when its present in the system, nor will the system properly load up. I can curb this behavior by messing with the IONAME using FakID in Clover along with DTGP and Airport hot patches or using SSDT/DSDT patches which do the same and change the cards identity to prevent the kext from loading. This has at the benefit of allowing the system to properly load up during fresh installs and first boot without the need to disable the wifi from the bios in order to remove AirportBrcmNIC.kext in order to allow the system to start up normal with the card active.

I also re-patched my DSDT (which was needed after changing video memory anyway) but this time I ensured that I knew exactly what I was doing and I applied the changes I wanted via patches which I found or created myself for the desired changes. I had a bad habit of making really sloppy edits to the DSDT which included the information of other areas which I would change out with whatever I was attempting to alter but I didn't understand the whole Buffer setup and I would leave those alone or default to (0xAA) when I would get an error, but then I read up on the proper way to do everything and I compiled all the edits into a single patch so that maciASL does all of the editing and I only load the patch to ensure that all changes are done the correct way and not the ghetto way I was doing them. This actually solved my batter issue which was driving me crazy. I would patch the battery but it would only work one way per restart. So if it started plugged in then it would only increase the battery level and then get stuck whenever I would disconnect and remain at the level I unplugged it at and vice versa, now its functioning properly both ways and that is literally because I fixed the buffers so I imagine its possible that it was affecting more than just the battery.

I also renamed all of the devices in my DSDT to match those devices that are found within genuine Mac hardware. I'm not sure if it makes much of a difference or if its purely cosmetic, but the GPUs power management requires the device name to be IGPU for proper functionality, same with HDEF for AppleALC audio functioning so I made sure all of the listed devices were named properly (And I renamed the actual DSDT "OEM ID" to "APPLE" and the "OEM Table ID" to "MACBOOK")This includes the PCI device that was used by the Airport card. It was originally Named EXP2 and had no extra PXSX node present for any of the Patches for Airport functionality to work. So I renamed all EXP devices to RP0 devices (RP02 in this case) then I added the PXSX device nodes to each of the RP0x device points and then renamed the PXSX for RP02 to ARPT which is how official AirPort card are designated in IOREG listings. I thin gave it the proper _DSM Method injections:

# | Rename EXP1-3 devices to RP01-03 (Lenovo T450 My Airport card is located at EXP2 which will become RP02)
#
#
into device label EXP1 set_label begin RP01 end;
into device label EXP2 set_label begin RP02 end;
into device label EXP3 set_label begin RP03 end;
into device label EXP4 set_label begin RP04 end;
into device label EXP5 set_label begin RP05 end;
into device label EXP6 set_label begin RP06 end;
into device label EXP7 set_label begin RP07 end;
into device label EXP8 set_label begin RP08 end;
into device label EXP9 set_label begin RP09 end;
into_all all code_regex EXP1 replaceall_matched begin RP01 end;
into_all all code_regex EXP2 replaceall_matched begin RP02 end;
into_all all code_regex EXP3 replaceall_matched begin RP03 end;
into_all all code_regex EXP4 replaceall_matched begin RP04 end;
into_all all code_regex EXP5 replaceall_matched begin RP05 end;
into_all all code_regex EXP6 replaceall_matched begin RP06 end;
into_all all code_regex EXP7 replaceall_matched begin RP07 end;
into_all all code_regex EXP8 replaceall_matched begin RP08 end;
into_all all code_regex EXP9 replaceall_matched begin RP09 end;
#
# | Insert ARPT Device into RP02 for proper AirPort Configuration (Change proper locations as needed)
#
into device label ARPT parent_label RP02 remove_entry;
into device label RP02 insert begin
Device (ARPT)\n
{\n
Name (_ADR, Zero)\n
}\n
end;
#
# | Inject proper _DSM Information for ARPT device pci14e4,43a3
#
into method label _DSM parent_label ARPT remove_entry;
into device label ARPT parent_label RP02 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
Store (Package () {\n
"AAPL,slot-name", Buffer() { "Built In" },\n
"vendor-id", Buffer() { 0xE4, 0x14, 0x00, 0x00 },\n
"device-id", Buffer() { 0xA3, 0x43, 0x00, 0x00 },\n
"subsystem-id", Buffer() { 0x01, 0x31, 0x00, 0x00 },\n
"subsystem-vendor-id", Buffer() { 0x6b, 0x10, 0x00, 0x00 },\n
"vendor-id", Buffer() { 0xE4, 0x14, 0x00, 0x00 },\n
"name", Buffer() { "pci14e4,43a3" },\n
"model", Buffer() { "Apple Wifi card" },\n
"device_type", Buffer() { "Airport" },\n
"IOName", Buffer() { "pci14e4,43a3" },\n
"built-in", Buffer() { 0x00 },\n
}, Local0)\n
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
Return (Local0)\n
}\n
end;
#
# Insert DTGP (Specific to Apple hardware, Required or you will get errors in DSDT after Injecting ARPT _DSM Info)
#
into method label DTGP remove_entry;
into definitionblock code_regex . insert
begin
Method (DTGP, 5, NotSerialized)\n
{\n
If (LEqual (Arg0, Buffer (0x10)\n
{\n
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, \n
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B\n
}))\n
{\n
If (LEqual (Arg1, One))\n
{\n
If (LEqual (Arg2, Zero))\n
{\n
Store (Buffer (One)\n
{\n
0x03\n
}, Arg4)\n
Return (One)\n
}\n
If (LEqual (Arg2, One))\n
{\n
Return (One)\n
}\n
}\n
}\n
Store (Buffer (One)\n
{\n
0x00\n
}, Arg4)\n
Return (Zero)\n
}
end;


If your AirPort card is located under RP05 in your IOREG then just change all References for RP02 to RP05 or whatever number yours is... If your devices are named something other than EXPx then just replace the EXPx portion to the proper names in your stock DSDT file

I pulled all of that info off of an IOREG which contained the official Apple pci14e4,43a3 branded card present in Macbook8,1 and so I just replicated what was important and injected it in a maciASL patch (make sure your device name and nodes match or it won't change anything when you try and apply it)

And last I made a few changes with the Kexts I used. First I got rid of HibernationFixup.kext and disabled Hibernation all together using the command that Rehabman suggests along with the option in Clover configurator. And I got rid of FakeSMC.kext along with its plugins and the SMCHelper driver and instead I started using VirtualSMC along with its kexts (which I've been using for over a month now but I figured its worth mentioning in case it plays some role in the whole thing. And I also created a proper USB Configuration SSDT instead of using the USBINJECTALL.kext. I even made a kext injector to use in place of usbinjectall along with the properly configured SSDTs for usb port injecting. I also added CPUFriend.kext Lilu Plugin for dynamic CPU Power Management which I feel might actually be a big part of what's changed.

The last thing I did was apply the patch for the Invalid WaitQ panic which a member of one of the forums posted for this issue. I hadn't had success with it before but it could've been because I had issues in my system which I wasn't aware of. Thats the only patch that is active in clover as well, including kernel and kext patches because AirPortBrcmfixup.kext is handling the proper patches for the Airport device:

(KernelToPatch) Clover Configurator

Find: 488D3D04 F1720031 C04889DE
Replace: B8040000 00E9A700 00009090
Comment: disable panic("Invalid waitq: %p", waitq), 10.14
MatchOS: 10.14.x

This is absolutely everything I did and as of right now it's been perfect the entire time (except for one panic the very first time the drive loaded after adding IO80211Family.kext) which I did in the middle of everything and had made more changes to the system following that. But that's the only time its done that and Ive restarted and switched wifi networks along with using the device for a long period of time and haven't experienced any panics at all which I would've usually had at least 4 or 5 by now. Maybe the issue is just a confiiguration problem


Directions:

Make sure to properly patch your DSDT especially the OSI patch, choose the Windows 10 patch and also do not enable any kexttopatch settings for it. It doesn't need them and they will only cause panics. Also Drop AirportBrcmFixup.kext and Lilu into /L/E and replace FakeSMC along with plugins and SMC Helper driver for VirtualSMC+Plugins and VirtualSMC Driver. Then you want to find the Invalid WaitQ Kerneltopatch option for your specific macOS version and apply it. Also disable Hibernate and remove hibernatefixup.kext if its in your system. Add CPUFriend.kext to /L/E as well for proper power management of CPU as the card has issues with panics when the time gets a little high in the system. Do all of that and this card will work just fine for you. Also make sure you have the proper usb SSDTs configuration or kext injector for your hardware. Im including my devices Full MaciASL patch, be sure to void out parts you don't need or copy and paste parts individually most of it is generic, stay away from battery patch, batc patch, fn keys patch, graphics pelf patch, and the dam injections for psi devices as those correspond to my device and aren't universal unless you have a Broadwell Thinkpad. The two Bcrm kexts go into /L/E for proper bluetooth functionality. Also in Mojave delete the 4 BcmWLANFirmware kexts along with IO80211family.kext and IO80211familyv2.kext from /S/L/E and then Install the IO80211Family.kext from this post into the same Location. And the other kexts all go to /Library/Extensions. Don't forget to remove fakesmc if you install virtualsmc also remove smchelper driver from clover and replace it with virtualsmc driver. Then rebuild the cache and repair the permissions in with the following commands

sudo chown -R root:wheel /Library/Extensions
sudo chown -R root:wheel /System/Library/Extensions
sudo chmod -R 755 /Library/Extensions
sudo chmod -R 755 /System/Library/Extensions
sudo touch /System/Library/Extensions
sudo touch /Library/Extensions
sudo kextcache -i /

Then reboot and enjoy your working Airport card with full continuity and airdrop support oob

Hello,
I have an Hp pavilion x360 kaby lake R running Mojave and when I plug de BCM94350ZAE, I can't finish the boot. I'm stuck at the apple logo after verbose boot. To be able to boot, I need to take out the card. So I can't try your solution. Any advice ? Thanx.
 
Hello,
I have an Hp pavilion x360 kaby lake R running Mojave and when I plug de BCM94350ZAE, I can't finish the boot. I'm stuck at the apple logo after verbose boot. To be able to boot, I need to take out the card. So I can't try your solution. Any advice ? Thanx.

Read just a couple of posts above: https://www.tonymacx86.com/threads/...esting-new-methods.265130/page-6#post-1929823

Check the section:
"In case you need a patch to boot the installer or macOS on DW1820A:"
 
Last edited:
Hello,
I have an Hp pavilion x360 kaby lake R running Mojave and when I plug de BCM94350ZAE, I can't finish the boot. I'm stuck at the apple logo after verbose boot. To be able to boot, I need to take out the card. So I can't try your solution. Any advice ? Thanx.


Yes you have to delete AirPortBrcmNIC-MFG.kext along with IO80211Family.kext inside of /system/library/extensions and then replace IO80211Family.kext from earlier in this thread or find the one for macOS Yosemite from online and Install it to /Library/Extensions (You can put it in /system/library/extensions if that doesn't work since its an actual Apple kext). After adding the new kext you need to repair permissions and rebuild kextcache before restarting.

You're going to have issues with this card though, I suggest that you instead hit amazon and purchase an NGFF A/E adapter along with the Apple Broadcom BCM94360CS or CSX. One is Wireless AC 1300 MB/s the other is AC 860 MB/s, the 1300 version requires 3 antennas instead of 2 in order to achieve the full 1300 MB/s speed otherwise you'll be limited to 860 MB/s until you install a 3rd antenna. If that's the route you take and you only have two antennas in your laptop then the Black wire goes on the far left probe and the grey goes on the far right and the middle will be the 3rd antenna when you purchase one (If your wifi speed is slow then switch the black and grey wires).

I struggled for months with the Dell card and it works with my solution but it suffers from random kernel panics which aren't that big of a deal since they happen randomly and usually only when the computer is first booting up (it will start then panic once or twice then be fine for hours and sometimes even days if your computer remains powered on or in sleep mode) but if you instead opt for the official Apple card that I just mentioned then all you need to do is install it and it will function immediately without needing to do absolutely any extra work and it will fix a number of issues including the random panics. I got both the adapter and the official Apple card off of Amazon for 40 bucks total with same day delivery. It was worth every penny! I have the windows drivers too so the card will function under windows if you dual boot. I haven't been able to get it to work on Linux yet but I honestly only tried for like 30 minutes and then just repurposed my laptop to only boot Mac and instead I run linux and widows inside of VMWare Fusion in Mac which works perfectly and literally works much better for my circumstances since I can just swipe between operating systems. As long as you have a minimum of 8GB of ram along with a solid state drive then everything functions beautifully. I have 16 GB of ram and Ill literally have both Windows and Linux virtual machines open at once and have zero issues with performance. I have a dual core 5th Generation i7 which really isn't that powerful compared with a Kabby Lake i5 and I never have issues.

If you want to stick with the Dell card just understand that when you do updates you'll likely be forced to disable the card and delete those kexts again followed by reinstalling the Yosemite IO80211Family.kext again because the system will replace those kexts with the original ones. This problem doesn't exist when you use the real Apple WiFi card and it will always work out of the box. The card I recommended is inside of a number of 2015 Mac so it should be supported for years without having to worry about needing to upgrade and its also much faster than the PC based AC cards that work in Hackintosh laptops since those are much older cards like the Dell DW1560 which actually costs more for some strange reason than the official Apple Broadcom Cards. The Dw1560 is like 60 bucks everywhere I've found it. If your PC can use the Dell DW1820a then you likely have no whitelist for Wireless cards and thus the official Apple WiFi cards should work just fine as well. You have to get the NGFF A/E adapter though because there are no NGFF Apple Wifi cards and the adapter allows them to fit inside of m.2 NGFF pic slots which your laptop uses since the DW1820a is an NGFF card.
 
Ok. So for the people who still need this small hack, first try adding brcmfx-driver=1 to force Brcm4360 driver to load instead of BrcmNIC (requires AirportBrcmFixUp kext), reboot your system, check if you can see/connect to your network (you may also need brcmfx-country=US or brcmfx-country=#a to enable 5Ghz network support, change US or #a with your own local, #a enables 80HT support). HOWEVER, while working with it, check if it doesnt suddenly slowdown and your computer starts lagging like hell and your wifi disconnects, if you get these symptoms, you may need to use this hack (which is the same as the one in this thread, but cleaner, you do not need to edit anything in S/L/E).

Remove AirportBrcmFixUp from your system (both Clover and in the OS disk, because we have 10.14 system and will not apply a patch for the 10.10 kext rollback), then put F_IO80211Family.kext (extracted ofc) in /Library/Extensions (NOT in /System/Library/Extensions, that's the pre-SIP way of doing things, so dont do it), then run in a Terminal window
Code:
sudo chown -R root:wheel /Library/Extensions; sudo chmod -R 755 /Library/Extensions; sudo kextcache -i /
This will fix your /Library/Extensions permissions and rebuild the caches (you should do this instead of using KextBeast, Kext Utility, some other software to install kexts, basically do it yourself.) After running the command you will get some errors about BrcmNIC driver not fulfilling some requirements, ignore them. Once done, add to your Clover config these kext patches:
XML:
            <dict>
                <key>Comment</key>
                <string>10.10-10.11-BCM94352-5GHz-US-FCC-darkvoid</string>
                <key>Find</key>
                <data>QYP8/3QsSA==</data>
                <key>Name</key>
                <string>com.apple.driver.AirPort.Brcm4360</string>
                <key>Replace</key>
                <data>ZscGVVPrKw==</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>10.10+-BCM94352-Airport-Extreme-Skvo</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>axAAAHUN</data>
                <key>Name</key>
                <string>com.apple.driver.AirPort.Brcm4360</string>
                <key>Replace</key>
                <data>axAAAJCQ</data>
            </dict>

(or if you're lazy:
Name: com.apple.driver.AirPort.Brcm4360
Find: 4183fcff 742c48
Replace: 66c70655 53eb2b
Comment: 10.10-10.11-BCM94352-5GHz-US-FCC-darkvoid

Name: com.apple.driver.AirPort.Brcm4360
Find: 6b100000 750d
Replace: 6b100000 9090
Comment: 10.10+-BCM94352-Airport-Extreme-Skvo)

Both patches were taken from toleda's 10.13 patches for Broadcom, found here: https://github.com/toleda/wireless_broadcom, we're using the 10.10 patches because the kext is literally a rollback of 10.10.5 kext, that kext is taken from the latest Combo Update pkg of Yosemite 10.10.5, and has Bundle versions string, short set to 99.9 and Bundle version set to 9999.9 on both IO80211Family and AirPortBrcm4360 respective Info.plist. This allows them to top the local kext version and will be integrated to the kext cache instead of the local one.

After setting that up you can reboot. YOU WILL EXPERIENCE SOME KERNEL PANICS AT FIRST. That's totally normal (like 2 or so).

Issues with this method:
  • Kernel panics for waitq (YOU MUST APPLY THOSE PATCHES IN CLOVER'S CONFIG IF YOU GET THESE, on my Thinkpad P50 I didnt have to, on my HP Elite X2 G2, I had to, THE KERNEL PATCH WILL ONLY WORK ON 10.14 to 10.14.2, 10.14.3 changed something_.
  • Kernel panics when trying to log out or change user, you will have to enable the login screen (if it's disabled) and then reboot to log to another user.
  • Kernel panics on shutdowns or boot ups
  • Kernel panics on reboots (sometimes)
  • General system instability: it's a rollback, dont expect too much, you may work fine for a while but you may experience instabilities. On my Thinkpad P50, the system was pretty stable, didnt have kernel panics as much as I had on my Elite X2 G2, no idea why. 3 days uptime on my P50 up to now, and stable.
In case you need a patch to boot the installer or macOS on DW1820A:
Since booting with the card will slow your computer down, you will have to add these kext patches to your config:

XML:
            <dict>
                <key>Comment</key>
                <string>Prevent BrcmNIC-MFG kexts from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>com.apple.driver.AirPort.BrcmNIC-MFG</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4355 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4355.Datastore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4355 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4355.Hashstore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4364 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4364.Datastore</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Disabled</key>
                <false/>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent BCMWLANFirmware 4364 from attaching to DW1820A, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.BCMWLANFirmware4364.Hashstore</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>
            <dict>
                <key>Comment</key>
                <string>Prevent IO80211 - BrcmNIC from attaching to anything, inspired from CoolStar&apos;s I2C patch</string>
                <key>Name</key>
                <string>com.apple.driver.AirPort.BrcmNIC</string>
                <key>Find</key>
                <data>SU9LaXQ=</data>
                <key>Disabled</key>
                <false/>
                <key>Replace</key>
                <data>SU9LaXM=</data>
                <key>InfoPlistPatch</key>
                <true/>
            </dict>

This will let you boot to the installer and macOS to get going, the card will not be used, so you may need to use another way to connect to the internet (Ethernet for example) and install the kext attached bellow.

Some results of this method:

View attachment 395164
View attachment 395165
View attachment 395166
View attachment 395168

Hope this helps someone. Also I would recommend you edit your kexts on your own (if you're paranoid about the one provided), copy IO80211Family from a 10.10.5 Combo update, do the edits as shown above (for the Info.plist), remove _CodeSignature folders (from IO80211Family and AirportBrcm4360), remove other kexts in the plugins folder (keep only AirportBrcm4360), install in /L/E, enjoy you less than stable system (lol).

Good work bro!!!! Where were you when I was pulling my hair out with this damn card for like 5 months!! Lol no seriously excellent work! I'm impressed and it looks like you did an amazing job solving this issue.

I opted for instead using an NGFF A/E adapter along with an Apple Broadcom BCM94360CS A/C Wireless Card which has been an absolute thing of beauty to use since installing it! No panics no extra steps and full functionality oob including within macOS Install USB as well as recovery which allows for installing macOS over the internet if you don't have access to an Install USB and your computer suffers some issue that requires the OS to be reinstalled. I purchased both items on Amazon with same day delivery for 40 bucks and change which is cheaper than all of the PC based NGFF options Ive found for Hackintosh Laptops (Dell DW1560, Dell DW1830, etc). I also have the Windows drivers saved if anyone decides to go this route and needs Windows functionality (Both WiFi and Bluetooth will function properly with the Widows drivers).
 
Last edited by a moderator:
Status
Not open for further replies.
Back
Top