Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using DW1820A (BCM94350ZAE) for Hac-Mini #113

Closed
goodbest opened this issue Nov 6, 2019 · 12 comments
Closed

Using DW1820A (BCM94350ZAE) for Hac-Mini #113

goodbest opened this issue Nov 6, 2019 · 12 comments
Labels
enhancement New feature or request wireless Wireless networking issues

Comments

@goodbest
Copy link
Collaborator

goodbest commented Nov 6, 2019

I have successfully made the Wi-Fi and bluetooth to work with this card on 10.15.1,
so now the 2nd nvme port can be used for hard drive.🤩
Hope @osy86 can add these option for this wifi card in the installation package in the future😄

The steps that made it work for me:

  1. Follow the readme for HaC-mini to get all things done. (without the wifi part, of course).

2 open the box, replace the DW1820A with pre-installed intel 8265 wifi-card
IMG_6837

  1. (Important!!!) In the BIOS, disable PCIE ASPM (Active-state power management ).

  2. boot into the system, mount efi (with clover configurator, or whatever), get into the path EFI/OC

  3. Put the following kexts into Kexts dir

  1. add the following content in config.plist into the correct position.
  • For kexts, position is under Kernel/Add to let opencore to load the above kexts (example attached below)
  • To add boot-args (e.g. brcmfx-country=#a), position is under NVRAM/Add/<Some UUID>/boot-args
    Screen Shot 2019-11-06 at 21 43 28
  1. reboot, and profit.
    All are working fine: Airdrop, Handoff, Unlock with Watch, Hotspot,..
    Screen Shot 2019-11-06 at 21 53 15

  2. If you stuck in the bootloop, you can disable the wifi and bluetooth in BIOS, log into the system and reverse the above changes. Good luck.

PS.

  1. My wi-fi card SN is DW1820A CN-08PKF4
    Vendor and Device is 14e4,43a3
    Sub Vendor and Device is 106B, 0023
    Some posts show mixed results for DW1820A with different kind of device/subdevice ID, But I've got lucky

  2. Some posts says you must masking some pin in the card to get it working, but I think the step 3 above already did that "softly" (It's only my guess)

  3. Some posts says you must add device properties to load 4360 kexts, but my machine and card don't need that

  4. Some Reference
    https://osxlatitude.com/forums/topic/11322-broadcom-bcm4350-cards-under-high-sierramojavecatalina/
    https://osxlatitude.com/forums/topic/12169-bcm4350-cards-registry-of-cardslaptops-interop/
    https://blog.daliansky.net/DW1820A_BCM94350ZAE-driver-inserts-the-correct-posture.html

			<dict>
				<key>BundlePath</key>
				<string>AirportBrcmFixup.kext</string>
				<key>Enabled</key>
				<true/>
				<key>ExecutablePath</key>
				<string>Contents/MacOS/AirportBrcmFixup</string>
				<key>PlistPath</key>
				<string>Contents/Info.plist</string>
			</dict>
			<dict>
				<key>BundlePath</key>
				<string>BrcmFirmwareData.kext</string>
				<key>Enabled</key>
				<true/>
				<key>ExecutablePath</key>
				<string>Contents/MacOS/BrcmFirmwareData</string>
				<key>PlistPath</key>
				<string>Contents/Info.plist</string>
			</dict>
			<dict>
				<key>BundlePath</key>
				<string>BrcmPatchRAM3.kext</string>
				<key>Enabled</key>
				<true/>
				<key>ExecutablePath</key>
				<string>Contents/MacOS/BrcmPatchRAM3</string>
				<key>PlistPath</key>
				<string>Contents/Info.plist</string>
			</dict>
			<dict>
				<key>BundlePath</key>
				<string>BrcmBluetoothInjector.kext</string>
				<key>Enabled</key>
				<true/>
				<key>PlistPath</key>
				<string>Contents/Info.plist</string>
			</dict>
@osy osy added the enhancement New feature or request label Nov 10, 2019
@osy
Copy link
Owner

osy commented Nov 11, 2019

Did you need to add anything to PciRoot(0x0)/Pci(0x1c,0x2)/Pci(0x0,0x0) like in #91 (comment) ?

Did you have to make any other changes? Currently I am just including the kext and boot-arg. Is anything else needed?

osy pushed a commit that referenced this issue Nov 11, 2019
@goodbest
Copy link
Collaborator Author

Currently on 10.15.1, I don't have to add those PciRoot(0x0)/Pci(0x1c,0x2)/Pci(0x0,0x0) and blabla, as long as device 0x14E4,43a3 (for DW1820A) is natively supported by AirPortBrcmNIC in Apple.

However, if Apple drops the native device id for future potential system upgrade, you have to add those properties to fake DW1820A as Brcm4360 devices.

osy pushed a commit that referenced this issue Nov 11, 2019
@osy osy closed this as completed in 19561fa Nov 12, 2019
@osy osy added the wireless Wireless networking issues label Dec 21, 2019
@chatelp
Copy link

chatelp commented Feb 5, 2020

Hi there,

I'm also trying to make my DW1820A (model CN-08PKF4) work under Catalina. After following the advices here, my Wifi is working, but can't connect to bluetooth devices. Like many of you it seems. Is there any new advice/solution in Feb 2020?

  • My loaded BT firmware version is v7 c44689, although it looks like that BrcmPatchRAM is not able to connect to the device at boot time (see boot log bellow)
  • On the kext site, I'm using BrcmPatchRAM-2.5.1-RELEASE in S/L (BrcmBluetoothInjector.kext, BrcmFirmwareRepo.kext and BrcmPatchRAM3.kext). I also tried first the vanilla / boot injection first with clover (swapping BrcmFirmwareRepo.kext with BrcmFirmwareData.kext) but same result.
  • My device properties is as follows:
<key>PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)</key>
            <dict>
                <key>AAPL,slot-name</key>
                <string>WLAN</string>
                <key>compatible</key>
                <string>pci14e4,4353</string>
                <key>device_type</key>
                <string>Airport Extreme</string>
                <key>model</key>
                <string>Dell DW1820 (BCM4350) 802.11ac wireless</string>
                <key>name</key>
                <string>Airport</string>
                <key>pci-aspm-default</key>
                <integer>0</integer>
            </dict>
  • My boot args are as follows:
<key>Arguments</key>
        <string>kext-dev-mode=1 amfi_get_out_of_my_way=1 dart=0 -igfxnohdmi brcmfx-country=#a rtcfx_exclude=56-58 brcmfx-driver=1</string>
  • I didn't see any ASPM option to disable in my BIOS, but there is the pci-aspm-default/0 entry in clover. Is that enough?

What's less clear to me:
- I saw multiple advices on forums about checking USB? My System Informations says that BCM2045AO is "internal". Is that enough?
- Is there anything else I can try?

Boot log from BrcmPatchRAM:

Filtering the log data using "process == "kernel" AND composedMessage CONTAINS[c] "brcm""
Skipping info and debug messages, pass --info and/or --debug to include.
Timestamp                       (process)[PID]
2020-02-04 22:36:05.093980+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211Controller::init(OSDictionary*)> AirPort_BrcmNIC::init AirPortFamily_kexts-1580.2 "AirPortFamily_kexts-1580.2" Jan  9 2020 21:50:21
2020-02-04 22:36:05.094015+0100  localhost kernel[0]: (AirPortBrcmNIC) <AirPortBrcmNIC`osl_iolog_withtimestamp> ARPT: 1.094012: AirPort_Brcm43XX:probe:, this[0x5726cc79de9f6595]  score[2048]
2020-02-04 22:36:05.094030+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211Controller::init(OSDictionary*)> AirPort_BrcmNIC::init AirPortFamily_kexts-1580.2 "AirPortFamily_kexts-1580.2" Jan  9 2020 21:50:21
2020-02-04 22:36:05.094048+0100  localhost kernel[0]: (AirPortBrcmNIC) <AirPortBrcmNIC`osl_iolog_withtimestamp> ARPT: 1.094046: AirPort_Brcm43XX:probe:, this[0x5726cc79dfeca595]  score[1400]
2020-02-04 22:36:05.094060+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211Controller::init(OSDictionary*)> AirPort_Brcm4360::init AirPortFamily_kexts-1580.2 "AirPortFamily_kexts-1580.2" Jan  9 2020 21:50:21
2020-02-04 22:36:05.094076+0100  localhost kernel[0]: (AirPortBrcm4360) <AirPortBrcm4360`osl_iolog_withtimestamp> ARPT: 1.094074: AirPort_Brcm43XX:probe:, this[0x8dfdfc16f0fb27f7]  score[1110]
2020-02-04 22:36:08.302842+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211Controller::init(OSDictionary*)> AirPort_BrcmNIC::init AirPortFamily_kexts-1580.2 "AirPortFamily_kexts-1580.2" Jan  9 2020 21:50:21
2020-02-04 22:36:08.302895+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211Controller::init(OSDictionary*)> AirPort_BrcmNIC::init AirPortFamily_kexts-1580.2 "AirPortFamily_kexts-1580.2" Jan  9 2020 21:50:21
2020-02-04 22:36:08.302919+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211Controller::init(OSDictionary*)> AirPort_Brcm4360::init AirPortFamily_kexts-1580.2 "AirPortFamily_kexts-1580.2" Jan  9 2020 21:50:21
2020-02-04 22:36:08.302990+0100  localhost kernel[0]: (AirPortBrcm4360) <AirPortBrcm4360`osl_iolog_withtimestamp> ARPT: 5.398926: AirPort_Brcm43XX:probe:, this[0x8dfdfc16f0edf7f7]  score[1110]
2020-02-04 22:36:08.320802+0100  localhost kernel[0]: (kernel) BrcmPatchRAM: Version 2.5.1 starting on OS X Darwin 19.3.
2020-02-04 22:36:08.441690+0100  localhost kernel[0]: (AirPortBrcm4360) <AirPortBrcm4360`osl_iolog_withtimestamp> ARPT: 5.537627: BRCM tunables:
2020-02-04 22:36:08.942980+0100  localhost kernel[0]: (BrcmFirmwareRepo) <BrcmFirmwareRepo`BrcmFirmwareStore::loadFirmwareFile(char const*, char const*)> BrcmPatchRAM: Loaded firmware "BCM4350C5_003.006.007.0222.4689_v8785.zhx" from resources.
2020-02-04 22:36:08.943266+0100  localhost kernel[0]: (BrcmFirmwareRepo) <BrcmFirmwareRepo`BrcmFirmwareStore::loadFirmware(unsigned short, unsigned short, OSString*)> BrcmPatchRAM: Decompressed firmware (12582 bytes --> 31740 bytes).
2020-02-04 22:36:08.943524+0100  localhost kernel[0]: (BrcmFirmwareRepo) <BrcmFirmwareRepo`BrcmFirmwareStore::loadFirmware(unsigned short, unsigned short, OSString*)> BrcmPatchRAM: Firmware is valid IntelHex firmware.
2020-02-04 22:36:09.045125+0100  localhost kernel[0]: (kernel) BrcmPatchRAM: uploadFirmware could not open the device!
2020-02-04 22:36:09.045131+0100  localhost kernel[0]: (kernel) BrcmPatchRAM: Processing time 0.101 seconds.
2020-02-04 22:36:09.049014+0100  localhost kernel[0]: (kernel) BrcmPatchRAM: Version 2.5.1 starting on OS X Darwin 19.3.
2020-02-04 22:36:09.149684+0100  localhost kernel[0]: (kernel) BrcmPatchRAM: [0a5c:6412]: USB [F828196A1998 v274] "BCM2045A0" by "Broadcom Corp"
2020-02-04 22:36:09.152125+0100  localhost kernel[0]: (kernel) BrcmPatchRAM: [0a5c:6412]: Firmware upgrade not needed.
2020-02-04 22:36:09.152257+0100  localhost kernel[0]: (kernel) BrcmPatchRAM: Processing time 0.103 seconds.
2020-02-04 22:36:09.668802+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211Controller::logDebug(char const*, ...)> AirPort_Brcm4360::getSSIDData(): Get failure: APPLE80211_IOC_SSID: 6
2020-02-04 22:36:12.820869+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211VirtualInterface::init(IO80211Controller*, ether_addr*, unsigned int, char const*)> IO80211VirtualInterface::AirPort_Brcm4360_P2PInterface::init name <p2p0> role 1
2020-02-04 22:36:12.821841+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211P2PInterface::init(IO80211Controller*, ether_addr*, unsigned int, char const*)> AirPort_Brcm4360_P2PInterface::init <p2p> role 1
2020-02-04 22:36:12.823553+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211VirtualInterface::init(IO80211Controller*, ether_addr*, unsigned int, char const*)> IO80211VirtualInterface::AirPort_Brcm4360_P2PInterface::init name <awdl0> role 4
2020-02-04 22:36:12.823572+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211P2PInterface::awdlAttachToBpf()> AirPort_Brcm4360_P2PInterface::awdlAttachToBpf name <awdl0> role 4 successful attach to bpf type 147
2020-02-04 22:36:12.839765+0100  localhost kernel[0]: (IO80211Family) <IO80211Family`IO80211P2PInterface::init(IO80211Controller*, ether_addr*, unsigned int, char const*)> AirPort_Brcm4360_P2PInterface::init <awdl> role 4

@chatelp
Copy link

chatelp commented Feb 5, 2020

@missingsince
Copy link

Found solution : https://osxlatitude.com/forums/topic/12392-solved-7490-catalina-dw1820a-bluetooth-problem/

Same card here. Bluetooth works fine (even after waking from sleep).

However, if I reboot the system or shut down - it will not connect to anything when coming back on.

If I pull the power cord (no matter how long for) reattach power and cold boot - it’ll work every single time.

Are you experiencing anything like that ?

@goodbest
Copy link
Collaborator Author

Found solution : https://osxlatitude.com/forums/topic/12392-solved-7490-catalina-dw1820a-bluetooth-problem/

Same card here. Bluetooth works fine (even after waking from sleep).

However, if I reboot the system or shut down - it will not connect to anything when coming back on.

If I pull the power cord (no matter how long for) reattach power and cold boot - it’ll work every single time.

Are you experiencing anything like that ?

What is the version of kexts you have?

  • If you use the link above, those kexts would be version 2. (I think it's a modified version, couldn't find the source code of it).
  • If you use the kexts bundled with current hac-mini pkg, it would be version 2.5.1

I use the 2.5.1 version, but I experience quite differently from you:
If I pull the power cord and boot for the first time, BT could't connect.
But if I then soft reboot again (or multiple times), it'll work perfectly.
(A hard power reboot, and then a soft reboot is necessary).

I believe the issue is related with kext's uploading firmware or connection initialization.

@swatchie-1
Copy link

@goodbest hi is your Apple Watch auto unlock working consistently? I followed your instructions too and I got bluetooth, handoff, continuity to work.

But I can't get Wifi Personal Hotspot with my iPhone to work.
I also can't get the Apple Watch Auto unlock to work.

Can you give some advice?

@lmshsqlc
Copy link
Contributor

@goodbest hi is your Apple Watch auto unlock working consistently? I followed your instructions too and I got bluetooth, handoff, continuity to work.

But I can't get Wifi Personal Hotspot with my iPhone to work.
I also can't get the Apple Watch Auto unlock to work.

Can you give some advice?

3rd party WiFi card won’t give you consistent Apple Watch unlock.

@swatchie-1
Copy link

@lmshsqlc what about iPhone's personal Hotspot through the Wifi ? does it work with the DW1820a?

@lmshsqlc
Copy link
Contributor

@lmshsqlc what about iPhone's personal Hotspot through the Wifi ? does it work with the DW1820a?

It works.

@swatchie-1
Copy link

@lmshsqlc what about iPhone's personal Hotspot through the Wifi ? does it work with the DW1820a?

It works.

Then you must be doing something right.
Can I know your Device properties for PciRoot(0x0)/Pci(0x1c,0x01)/Pci(0x0)
Is your compatible string: pci14e4,43a0 ?

as for your kexts can I know if you using the latest:
Brcmbluetoothinjector.kext
Brcmfirmwaredata.kext
brimpatchram3.kext?

Any other kext?
Appreciate some advice.

@lmshsqlc
Copy link
Contributor

@lmshsqlc what about iPhone's personal Hotspot through the Wifi ? does it work with the DW1820a?

It works.

Then you must be doing something right.
Can I know your Device properties for PciRoot(0x0)/Pci(0x1c,0x01)/Pci(0x0)
Is your compatible string: pci14e4,43a0 ?

as for your kexts can I know if you using the latest:
Brcmbluetoothinjector.kext
Brcmfirmwaredata.kext
brimpatchram3.kext?

Any other kext?
Appreciate some advice.

actually I’m not using it anymore but it does not support consistent Apple Watch unlock. For further help please relay to the community.
I am now using an apple airport card and it works flawlessly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request wireless Wireless networking issues
Projects
None yet
Development

No branches or pull requests

6 participants