web-dev-qa-db-fra.com

Bluetooth Broadcom 43142 ne fonctionne pas

Bluetooth est activé mais ne peut pas être trouvé ou trouvé par aucun autre appareil.

Sortie de Sudo service bluetooth status:

● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
   Active: active (running) since ხუთ 2015-06-04 22:33:18 GET; 13min ago
 Main PID: 26678 (bluetoothd)
   CGroup: /system.slice/bluetooth.service
           └─26678 /usr/sbin/bluetoothd -n

ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPAG
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPHS
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSource
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSink
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPAG
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/HFPHS
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSource
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Endpoint registered: sender=:1.63 path=/MediaEndpoint/BlueZ4/A2DPSink
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: Adapter /org/bluez/26678/hci0 has been enabled
ივნ 04 22:39:14 Rangoo bluetoothd[26678]: bluetoothd[26678]: Adapter /org/bluez/26678/hci0 has been enabled

Sortie de lsusb:

Bus 003 Device 005: ID 0a5c:21d7 Broadcom Corp. BCM43142 Bluetooth 4.0

Comment puis-je le réparer?

35
Guja1501

Vous devez installer un firmware.

La distribution du micrologiciel Broadcom n'est pas autorisée par la licence Broadcom. Donc, vous devez l'obtenir vous-même. C'est un peu complexe, mais il n'y a pas d'autre moyen légal .

  1. Télécharger pilote Windows 8 de Broadcom ou DE ICI .

Si votre périphérique ne figure pas dans ces pilotes, vous devrez en trouver une version plus récente quelque part. Broadcom a supprimé les derniers pilotes de leur site pour rendre la tâche plus difficile.

Certains constructeurs d'ordinateurs portables ont des pilotes Bluetooth sur leurs sites, mais certains ne sont pas décompressables. C'est donc une quête. Je pourrais télécharger les derniers pilotes Broadcom à partir de leur site, mais ce n’est plus là.

  1. Ouvrez ce fichier par Archive Manager et trouvez-y le fichier bcbtums-win8x86-brcm.inf. Le nom du fichier peut différer selon les pilotes. Il peut s'agir de bcbtums.inf situé dans le répertoire Win32 ou Win64. Ce n'est pas grave 32 ou 64 bits à télécharger.
  2. Recherchez dans ce fichier VID _ 0A5C & PID _ 21D7 . Ces chiffres proviennent de votre sortie lsusb

    0a5c: 21d7 Broadcom Corp. BCM43142 Bluetooth 4.0.

Commentaire: Certains appareils ne sont pas reconnus comme Broadcom BT dans lsusb. Si vous ne savez pas quel est votre périphérique BT, exécutez la commande usb-devices, elle vous donnera des informations plus détaillées. Vous y trouverez des ID de produit et de fournisseur.

Vous verrez une ligne se terminant par RAMUSB21D7

Recherchez dans ce fichier RAMUSB21D7. Vous trouverez une section comme celle-ci:

    [RAMUSB21D7.CopyList]
    bcbtums.sys
    btwampfl.sys
    BCM43142A0_001.001.011.0122.0126.hex

C'est ce que nous recherchons. Nom du fichier du firmware. BCM43142A0_001.001.011.0122.0126.hex

  1. Maintenant, extrayez ce firmware à partir du même fichier cab.

    Ensuite, vous devez convertir ce fichier du format hexadécimal au format hcd.

  2. Téléchargez l'outil pour cela

    git clone git://github.com/jessesung/hex2hcd.git
    cd hex2hcd
    make
    

    Vous aurez le dossier hex2hcd dans votre répertoire personnel.

  3. Placez le fichier du firmware dans votre dossier personnel et exécutez

    ~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd
    

    Vous voyez que 0a5c-21d7 est l'identifiant de votre adaptateur de lsusb .

Important: Pour les noyaux 4.2+, vous appelez ce fichier sous le nom BCM.hcd.

   ~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM.hcd

Pour les noyaux 4.8+, le nom du fichier doit être BCM-<VID>-<PID>.hcd, comme BCM-0a5c-21d7.

  1. Maintenant, copiez simplement BCM43142A0-0a5c-21d7.hcd, ou un autre fichier correspondant à la version du noyau dans le répertoire /lib/firmware/brcm en

    Sudo cp ~/BCM43142A0-0a5c-21d7.hcd /lib/firmware/brcm
    

Pour les noyaux 4.2+

    Sudo cp ~/BCM.hcd /lib/firmware/brcm

Pour les noyaux 4.8+

    Sudo cp ~/BCM-0a5c-21d7.hcd  /lib/firmware/brcm

Vous pouvez toujours vérifier si le nom du fichier est correct en exécutant dmesg | grep -i blue. Il y aura un message d'erreur si le fichier n'est pas trouvé.

  1. Éteignez et rallumez votre ordinateur. Pas simplement redémarrer!

    Votre adaptateur obtiendra un micrologiciel et Bluetooth devrait fonctionner.

Tout cela a l'air compliqué, mais c'est à Broadcom que les avocats sont responsables. La plupart des autres fournisseurs permettent de redistribuer le micrologiciel à condition que cela se fasse en même temps que la licence.

Cela permet aux mainteneurs de Linux d'inclure le micrologiciel dans les distributions.

Mais pas dans le cas de Broadcom. C'est pourquoi ce n'est pas facile.

Beaucoup de gens pourraient convertir tous les fichiers hexadécimaux en hcd et les rendre disponibles. Ou simplement les ajouter au paquet linux-firmware d'Ubuntu.

Mais ce n'est pas légal : - ((

73
Pilot6

Voici un projet qui vise à automatiser un peu le processus: https://github.com/winterheart/broadcom-bt-firmware

copier le BCM dans le bon répertoire/nom en fonction du noyau (comme décrit ci-dessus).

Sur la 4.8, je n'ai pas eu besoin d'un redémarrage, simplement dans un terminal:

Sudo modprobe -r btusb
Sudo modprobe btusb

dmesg | grep -i blu

devrait montrer si elle est chargée. Assurez-vous que l'ID du matériel correspond au fichier. Il peut être trouvé avec:

lsusb

qui montre cela sur mon Lenovo (uniquement cette ligne):

Bus 001 Device 006: ID 105b:e065 Foxconn International, Inc. BCM43142A0 Bluetooth module

J'espère que ça aide :)

15
Vincent Gerris

C'est tout ce dont vous avez besoin: https://github.com/winterheart/broadcom-bt-firmware

Sur ce référentiel, vous pouvez trouver plus d'informations et tous les pilotes de carte sans fil Broadcom nécessaires .


Pour être plus concret, je vous donne les instructions que j'ai écrites pour moi-même:

Ce tutoriel est destiné à faire fonctionner la carte réseau sans fil/Bluetooth Broadcom Corporation BCM43142 802.11b/g/n (rev 01) (Device ID: 0a5c: 216d) sur des systèmes Linux (je l’ai essayé sur Elementary OS 0.4.1 Loki, basé sur sur Ubuntu 16.04.3 LTS).

Cela ne pourrait pas fonctionner pour d'autres appareils, mais cela ne devrait pas trop différer de cette procédure pour d'autres appareils Broadcom. Les pilotes Broadcom nécessaires se trouvent sur ce dossier de reposity de GitHub au format .hcd.

  1. Entrez la commande suivante pour déterminer le nom du pilote recherché par le noyau lors du chargement des lecteurs lors du démarrage:

    dmesg | grep -i 'firmware load'
    

    Essayez celui-ci s'il ne trouve rien:

    dmesg | grep -i 'bluetooth'
    

    Le résultat devrait ressembler à ceci:

    bluetooth hci0: Direct firmware load for brcm/BCM.hcd failed with error -2
    

    Explication: dans mon cas, le noyau recherche le fichier BCM.hcd dans le répertoire /lib/firmware/brcm où devraient se trouver les pilotes Broadcom. Si le noyau recherche un autre nom de pilote, vous devez renommer le fichier de pilote (BCM43142A0-0a5c-216c.hcd dans mon cas pour le BCM43142 (0a5c: 216d)) en nom requis par le noyau.

  2. Déplacez le pilote renommé (BCM.hcd) vers votre répertoire personnel (/ home/VotreUsername /) et exécutez la commande suivante afin de le déplacer dans le dossier que recherche le noyau pendant le démarrage:

    Sudo mv ~/BCM.hcd /lib/firmware/brcm
    

    Vous devez utiliser le pilote correspondant en fonction de votre périphérique et le renommer si cela est demandé pour le noyau.

  3. Redémarrez votre ordinateur et cela devrait fonctionner! * (Vous pouvez entrer dmesg | grep -i 'bluetooth' une fois de plus pour voir si le pilote a été chargé)

3