Contribute
Register
Status
Not open for further replies.
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
 

Attachments

  • 0 bytes · Views: 314
  • 0 bytes · Views: 262
  • 0 bytes · Views: 111
  • 0 bytes · Views: 123
  • 0 bytes · Views: 200
  • 0 bytes · Views: 263
  • 0 bytes · Views: 360
  • 0 bytes · Views: 185
  • 0 bytes · Views: 200
  • 0 bytes · Views: 124
Last edited by a moderator:
I am following you up on this guide. Currently running on HP Elitebook 840 g4. Bluetooth working, WIFI working 2ghz only. Detected as third party wifi.
I am aplying a boot arg for 5ghz and will report once it is done. I have followed all the steps on your last thread except removeing fakesmc as machine works flawlesly with it and i followed RehabMan installation tutorial for it so i have all dsdt and patches in it already and i am afraid it wont boot with virtualsmc, but if kp attacks i will add that mod as well.

thank you.

Edit: After applying the patch i have 5ghz and now it is seen as an airport extreme card
Broadcom BCM43xx 1.0 (7.15.166.24.3)

One up occurred when i installed it the first time. Using the hack now benchmarking downloading and uploading without an issue.
 
Last edited:
I am following you up on this guide. Currently running on HP Elitebook 840 g4. Bluetooth working, WIFI working 2ghz only. Detected as third party wifi.
I am aplying a boot arg for 5ghz and will report once it is done. I have followed all the steps on your last thread except removeing fakesmc as machine works flawlesly with it and i followed RehabMan installation tutorial for it so i have all dsdt and patches in it already and i am afraid it wont boot with virtualsmc, but if kp attacks i will add that mod as well.

thank you.

Copy your current setup over to your usb drive with macOS that you used to install it and swap out the fakesmc for virtualsmc along with the virtualsmc-64.efi driver which will take the place of fakesmc-64efi in the drivers64uefi folder and then test it from there and if it boot the system you know you're good. Virtualsmc is the future man. Fakesmc works and virtualsmc doesn't have many add ons at the moment but its a modular smc which can even take the place of genuine smc firmware on real Macs. It will boot trust me, the only difference is it requires Lilu.kext to be present as well, other than that its going to replace fakesmc alltogether in the very near future
 
I'm pretty sure I've solved the dilemma with this card, refer to my post above this one and report back on your devices stability.
Thats great! I think I'll go ahead and order one of these bad boys and give it a try!
 
Last edited by a moderator:
Copy your current setup over to your usb drive with macOS that you used to install it and swap out the fakesmc for virtualsmc along with the virtualsmc-64.efi driver which will take the place of fakesmc-64efi in the drivers64uefi folder and then test it from there and if it boot the system you know you're good. Virtualsmc is the future man. Fakesmc works and virtualsmc doesn't have many add ons at the moment but its a modular smc which can even take the place of genuine smc firmware on real Macs. It will boot trust me, the only difference is it requires Lilu.kext to be present as well, other than that its going to replace fakesmc alltogether in the very near future


Looks like its working with VirutalSmc. It boots from second try always, not sure why. On the second round smc sensors are reporting errors i will remove them.

Edit: Removed sensors, now everything working fine, it looks like smc IO sensor and Light were the culprits.

Kp occured with bluetooth on, while entering the os upon login when alot of programs opened at once, so i preusme there was a spike in power on all rails and therefore it crashed. No devices attached to bluetooth so far so good.

Geekbench got 20% increase with VirtualSMC.
 
Last edited by a moderator:
Looks like its working with VirutalSmc. It boots from second try always, not sure why. On the second round smc sensors are reporting errors i will remove them.

Edit: Removed sensors, now everything working fine, it looks like smc IO sensor and Light were the culprits.

Kp occured with bluetooth on, while entering the os upon login when alot of programs opened at once, so i preusme there was a spike in power on all rails and therefore it crashed. No devices attached to bluetooth so far so good.

Geekbench got 20% increase with VirtualSMC.
Hey same here. Boots only from second. I also experience sound crackling when I chabge volume on bluetooth headphones.

@Jsassu20 im just thinking out loud. Is there maybe a way we could reflash the firmware of the bluetooth with a mac compatible one?
 
Hey same here. Boots only from second. I also experience sound crackling when I chabge volume on bluetooth headphones.

@Jsassu20 im just thinking out loud. Is there maybe a way we could reflash the firmware of the bluetooth with a mac compatible one?

After removing the sensors now it boots immediately. I had a kp again when i was connection a bt mouse, it got connnected disoriented and then bt failed, just disappeared, ( Bluetooth not available ) and the light was going on and of.
KP was so hard i could not start the hack at all for a few minutes.
Bluetooth now disabled in Bios, hack working 7 hours without any issue, heavy usage internet and processing.
 
Hey guys, I still can't get 5ghz, despite of the courtypatch. Any idea why?
 
Status
Not open for further replies.
Back
Top