-
Notifications
You must be signed in to change notification settings - Fork 45
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
BT firmware compatibility issues with DW1820A (CN-08PKF4) WiFi + BT card #715
Comments
Same here. |
A warm reset will preserve the firmware that has already been loaded onto the board. I was double checking this and figured out that bypassing firmware upload itself cannot not resolve this issue, and, more over, uploading firmware is essential to get this card up and running. The only way I've found so far to get around this is to load firmware version v12.0.1.940 shown as v7 c5799 -- It can be downloaded from this repo and I managed to upload this from Ubuntu. For example, mine is One thing I cannot understand is that the firmware shipped with BrcmPatchRAM3.kext (v12.0.1.1105) seems to be newer than the one works for me (v12.0.1.940), but its version number looks older. Is there any chance to include this firmware of DW1820A in the next update of BrcmPatchRAM3.kext? Thanks. |
Fixed in master. |
I pulled in the latest commit
My EFI is generated by OC-tool with the attached plist zip archive. |
Sorry, forgot to update IOKitPersonalities. Should be fixed now (upload the log if not). |
It is still not working here after pulled latest commit 70bda57.
|
Well, it is all we can do from our side. The request was to update the firmware, which we did. If you have a newer firmware that works for you, we can imagine including it. Bugs with the firmware should be filed at Broadcom, we only have the binary blobs. |
Thanks @vit9696. I can confirm the firmware can be loaded with commit What would work: What would not work: Again I think this quick check rules out the fact that whether uploading firmware or not will not impact bluetooth connectivity. On the other hand, I'm suspecting the firmware loaded by BrcmPatchRAM3 is somehow corrupted. I was verifying this by starting from the firmware binary blob downloaded from Microsoft Update Catalog (v12.0.0.1012, released on 03/29/2017), compressed with zlib (via Python3, best compression - 9), and then I get a bite-wise identical zhx file. Should this discover be detailed in a separate ticket? [PS] I blew up my memory sticks and they will be on their way for RMA. May not be able to test it in the next couple of weeks. |
It is unlikely that BrcmPatchRAM3 uploads the wrong firmware (I checked that part, and it looks sane to me), but it is quite possible, that Linux does extra things. Unfortunately I am too unfamiliar with the process to debug this (I do not even have any non-Apple BT hardware) and I also do not have spare resources to look at it. I reopened the issue in the hopes somebody else could give it a try. |
I updated the firmware to 12.0.1.1105 and your commit says you updated to 12.0.1.1012. Are you sure it's a newer version? Either way your latest commit works fine for me so it sounds like these users have a configuration issue. Several common causes are not placing the kexts in the appropriate location and not having USB configured correctly. |
@headkaze I reverted to 12.0.1.1012 as it is the latest version available on technet, it is the one used on Linux, and it was reported to work fine. Now that it actually did not help, I am not sure what is the correct route for this, it seems that the only place that has the new firmware is Dell support website: Interestingly, it says the following in the changelog:
You are right that the version linked from Dell (12.0.1.1105) is indeed newer at the very least:
|
There actually is another firmware version, 12.0.1.1104 (BCM4350C5_003.006.007.0222.4688): |
CC @ameeno, perhaps you can shed some light on all these versions and perhaps the issue itself. |
@headkaze TBH I have the same question as well. So far the only working firmware on my machine is the one from Winterheart's Github Repo, and by looking into its commit history it might belong to release 12.0.1.940. (Yet it is showing c5799 in MacOS.) Does it means that the smaller version number shown on MacOS's bluetooth info page is actually newer (i.e. v7 c4689 is newer than v7 c5799)? I can't figure out how to create hcp files required by Linux kernel so I don't know how to confirm if 12.0.1.1105 (v7 c4689) works under Ubuntu. BTW my USB configurations are generated with USBMap, with the port for 1820A configured as internal (255). SSDT-CPUX.aml, SSDT-UIAC.aml, SSDT-USBX.aml are all in place with |
I'm no expert in this driver. I only made changes to make it work in Catalina and updated the firmware. There are instructions in the readme for adding your own custom firmware but I've never tried it. The main work on this driver is by @the-darkvoid and @RehabMan but I'm not sure if they're available to help anymore. @vit9696 it might be worth updating the firmware to 12.0.1.1104 as that changelog describes a common issue |
Hi, thanks for reaching out. If I recall correctly, The changes had something to do with a Modification of the BrcmPatchRAM2.kext/Contents/Info.plist to add the correct device ID string for the BT in the DW1820a, As well as ensuring that firmware referenced also exists inside: BrcmFirmwareRepo.kext/Contents/Resources/ with the appropriate filename and syntax. I believe Diff'ing the files will reveal all? Its been a really long time since I made the changes & got it working. On a side note, it has come to light that there are several variants of this card, some of which work some of which don't. hope that is useful. |
Oh, as this relates to Windows: similar thing really, the standard drivers don't contain the correct firmware for the device ID. for the bt portion. getting the right firmware to load is the key. |
Mhm. I changed the DW1820A firmware to 8784 (12.0.1.1104) version, the one present in @ameeno repository. While it is older than the latest 8785 (12.0.1.1105) from Dell it was tested working by several people at the very least. I also added a simple tool, My current suspect is that your card may indeed be "problematic", and it is possible that it may not work at all despite the efforts, however. |
I turned on the computer just now, then I found that bluetooth was working. |
I had the same observations too:
By the way: |
@havvk Sorry I'm confused about the description:
Does it mean that you were uploading v8784 via I'd also assume you have Does Windows leaves driver logs so that we could check which firmware does Windows actually load? I'm not 100% certain but based on the version number maybe the original |
Maybe your particular card does not support handshake, and thus is not reset properly? Try removing the entry from this list: https://github.com/acidanthera/BrcmPatchRAM/blob/2d94e78/BrcmPatchRAM/BrcmPatchRAM3.cpp#L54 You can then play with the delays via boot-args: |
Actually reworked configuration arguments in the latest commit to make more sense. Handshake support can now be configured independently via |
3000 might be a bit too much, I am not sure whether the driver will not be unhappy of this. However, if trying lower values e.g. 100, 200, 300, 400 does not work, I guess you are indeed out of luck at least for now. The logs are fine, although it is a bit suspicious that the device constantly power-cycles. |
@hftsai256 yes.the firmware is loaded properly through BrcmPatchRAM3, but it requires a warm reset. Neither Windows nor Linux is involved in this process. I have 2 0a5c_6412 cards, which type is DW1820A(8PKF4). |
Hmmmm. Hard to say, it might be the case that we need some kind of extra device reset. Somebody probably needs to check Linux source code and maybe backport stuff if necessary. I will keep the issue open for now. |
The same story here. CN-0VW3T3. I've never noticed it because I mainly work on Linux and occasionally reboot to MacOS. But after The Bluetooth driver always after shutting down ignores previously saved LinkKeys and requires to pair devices again. Current master. |
This may not be relevant, but I want to provide some possible clue: To use DW1820A or it's variants (0a5c_6412, 0a5c_6414,etc), you have to set Does this have anything to do with the See als |
@vit9696 i have some information, for some reasons emulating windows with _OSI, fixes the problem and you can connect to bluetooth devices. Reboot and devices will connect properly, i had a lot of people on tmx86 that reported this problem and this dirty solution worked for all of them, will look if i can find that post and link it here, good thing there was an issue for this here so i can report it. Maybe someone with this can trace where the problem is. Thanks ! |
Well, you should not have much difficulty tracing this in the ACPI table. |
I've posted some observations and potential leads regarding issue of loading Bluetooth firmware on DW1820a cards upon cold boots. 1st of all, FW version provided for DW1820a 0a5c:6412 is not v8784 but v4688 or v4689; this mistake was probably the result of some erroneous assumption that FW version = 4096 + version stated in file name. It's not always the case and this only applies to some versions. Then -and I don't know if this can be classified as a bug- I found that using a shorter name for FW file allowed my Hackintosh laptop to load my own firmware to the card when the kexts's default provided firmware failed in that respect until its name was too shorten. I changed it from BCM4350C5_003.006.007.0221.4688_v8784.zhx to BCM4350C5_v8784.zhx and then Bluetooth started working properly with it. This may explain why many users reported failures at using those new versions of BrcmBluetoothInjector + BrcmFirmwareRepo + BrcmPatchRAM3 unless they were doing warm reboots from Windows. I used and tested only the kexts for caching (i.e. with Repo), not for injecting (i.e. with Data). I was able to load extracted and uncompressed firmware version v5974 to my BT module and Bluetooth now works repeatedly on cold reboots, not just upon warm reboots from Windows. |
@RV-ABZ Thanks for your research. I pushed two changes in BrcmPatchRAM:
I have not changed anything regarding file names, but even if long files do not work, I am afraid the issue is with macOS, not BrcmPatchRAM. Our limits for file path are PATH_MAX, which is 1024 bytes. I would suggest you focusing on BrcmFirmwareData, as BrcmFirmwareRepo is deprecated and is not supported anymore. There is a chance something is wrong with the decompression (although we use macOS-provided zlib once again), please try checking that as I believe it can be the key to the problem. |
I also think that it is a userspace issue. BT devices don't want to authenticate the adapter under macOS. Once authenticated and if a BT device haven't been powered off, it will connect even during cold reboots. As I understand macOS on Macs saves into nvram two variables UPD. I've made an experiment. Scenario 1.
Scenario 2.
I.e. it works properly if driver is in state UPD 2. I'm not sure but I think that Also here seemingly a port from Linux for Intel BT, there's also no any parsing |
@mishurov thanks for the research and patch fix. As for parsing I would agree it is unnecessarily overcomplicated, but this is the legacy we got unfortunately. Could more people test the suggested fix in acidanthera/BrcmPatchRAM#4? |
Just tested with @mishurov fix. I confirm it works great on my 0a5c_6412 device. |
Good, closing as resolved. |
WiFi + BT card : DW1820A with P/N CN-08PKF4
macOS version: 10.15.3
EFI: OpenCore based, installed from HaC-Mini release version 2.5
brcm kexts is referenced in HaC-Mini project.
Sometimes BT devices can't be connected, although BT devices can be discovered.
Most times below command followed with a system shutdown and power on will fix the issue.
sudo kextcache -i /
log show --last boot | grep -y brcmpatchram
working case:
not working case:
It seems bypass 'firmware upgrade' can fix the issue, If yes, please provide a option to bypass the upgrade so that the DW1820A BT card can also work.
similar issue is reported here:
osy/HaC-Mini#125
Thank you very much!
Really Appreciated!
The text was updated successfully, but these errors were encountered: