broadcom devices are often very broken; they can only work properly if fxed in software, that is if proper firmware is loaded to them. Mageia doesn't ship the firmware loader, so users can't easily make them work. Two new (and very small) rpm packages are needed (they are shipped in Debian): hex2hcd: that converts hex format (used by *.hex files shipped in CDs that come with the hardware) to hcd (used by the firmware loaders). git://github.com/jessesung/hex2hcd.git brcm_patchram_plus (I suggest that package name), the loader itself: git clone https://code.google.com/p/broadcom-bluetooth/ the package has three loaders, the used one seems to be only the *_usb one. while right place for firmware loaders would be imho on /usr/sbin, for compatibility with possible existing scripts they should be installed on /usr/bin, as SuSE puts it there. rpm package should "Requires: hex2hcd" with those two packages, and googling a bit, advanced users can make their devices work. For user friendly support what should be needed: * a tool to read those *.ini files coming with windows drivers, in order to find the proper *.hex file in the CDs given an usb vendorid/modelid pair. * convert that *.hex to hcd and copy it to /lib/firmware/fw-xxxx_yyyy.hcd (with xxxx = vendorid in lowercase, yyyy = product id in lowercase) * have a systemd brcm_patchram_plus_usb.service that calls /usr/bin/brcm_patchram_plus_usb.service --patchram /lib/firmware/fw-%x-%y.hcd %d (research to find the real % things) * have udev rule to call brcm_patchram_plus_usb.service In my case (usb device 0a5c 21e8) I have (with hardcoded id values) udev rule: -------------------------------------- ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="21e8", GROUP="usb", RUN+="/usr/bin/systemctl start brcm_patchram_plus_usb.service" -------------------------------------- and systemd service (with hardcoded id values; should be improved to make it generic): -------------------------------------- # loads firmware on bluetooth device [Unit] Description=uploading firmware to BCM20702A0 bluetooth adapter Requires=bluetooth.service After=bluetooth.service, sys-subsystem-bluetooth-devices-hci0.device [Service] Type=oneshot ExecStart=/usr/bin/brcm_patchram_plus_usb --patchram /lib/firmware/fw-0a5c_21e8.hcd hci0 [Install] Alias=fw-upload-bcm20702a0.service [Service] TimeoutSec=300 ------------------------------------- I can then have interaction with my bluetooth devices Reproducible: Steps to Reproduce:
Created attachment 4128 [details] systemd service file to load firmware, to be triggered by udev first try at a systemd service unit that will call brcm_patchram_plus_usb maybe it should call a script instead of the firmware loader directly? (to allow actions in case firmware is not ther, for example). FIXME: I use fixed value "hci0"; that should be changed as if more than one bluetooth adapter is present it may be "hci1", etc; but I have no idea how to get the actual value.
CC: (none) => pablo
Created attachment 4129 [details] udev rules to call brcm_patchram_plus_usb trough systemd udev rules file to call the systemd service to load firmware trough brcm_patchram_plus_usb. I use RUN+=... as I'm not able to make TAG+="systemd" work (on MGA3). list of matching devices taken from: https://bbs.archlinux.org/viewtopic.php?pid=1038550#p1038550 I only have 0a5c:21e8 to test
Mageia 3 changed to end-of-life (EOL) status 4 months ago. http://blog.mageia.org/en/2014/11/26/lets-say-goodbye-to-mageia-3/ Mageia 3 is no longer maintained, which means that it will not receive any further security or bug fix updates. As a result we are closing this bug. If you can reproduce this bug against a currently maintained version of Mageia please feel free to click on "Version" change it against that version of Mageia and reopen this bug. Thank you for reporting this bug and we are sorry it could not be fixed. -- The Mageia Bugsquad
Status: NEW => RESOLVEDResolution: (none) => OLD