Bluetooth Broadcom 43142 ne fonctionne pas

38

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?

Guja1501
la source
Une question similaire avec une réponse pour la carte 4352 askubuntu.com/questions/617513/…
Wilf

Réponses:

79

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échargez le pilote Broadcom Windows 8 ou FROM 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à.

  2. Ouvrez ce fichier par Archive Manager et trouvez-y le bcbtums-win8x86-brcm.inffichier. Le nom du fichier peut différer selon les pilotes. Il peut être bcbtums.infsitué dans le répertoire Win32 ou Win64. Ce n'est pas grave 32 ou 64 bits à télécharger.

  3. Recherchez dans ce fichier VID_ 0A5C & PID_ 21D7 . Ces chiffres proviennent de votre lsusbsortie

    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 usb-devicescommande, 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

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

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

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

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

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

  6. 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 comme à la BCM.hcdplace.

    ~/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, par exemple BCM-0a5c-21d7.

    Pour le noyau 5.0, le nom du fichier est à nouveau BCM43142A0-0a5c-21d7.hcd

    Maintenant, il suffit de copier BCM43142A0-0a5c-21d7.hcd, ou un autre fichier selon la version du noyau dans le /lib/firmware/brcmrépertoire par

    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 le lançant dmesg | grep -i blue. Il y aura un message d'erreur si le fichier n'est pas trouvé.

    Si le nom de fichier demandé ne correspond pas au fichier que vous avez créé, renommez-le hcd.

  7. Éteignez et rallumez votre ordinateur. Pas juste redémarrer!

    Votre adaptateur obtiendra un micrologiciel et Bluetooth devrait fonctionner.

Tout cela semble compliqué, mais les avocats de Broadcom sont à blâmer pour cela. La plupart des autres constructeurs permettent de redistribuer le micrologiciel à condition que ce soit accompagné de la licence.

Cela permet aux responsables 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 linux-firmwarepaquet d'Ubuntu.

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

Pilote6
la source
6
La plupart du temps, lorsque je réveille mon ordinateur portable, le rechargement du module Bluetooth échoue avec une trace de pile du noyau. Si vous avez besoin de Bluetooth sans redémarrer, vous devrez décharger le module Bluetooth ( sudo modprobe -r btusb) et le recharger ( sudo modprobe btusb) pour que blueooth fonctionne à nouveau. bugzilla.kernel.org/show_bug.cgi?id=81821
solsTiCe
1
À l'étape 6, hex2hcd doit recevoir un fichier de sortie, tel que: hex2hcd [fichier d'entrée] -o [fichier de sortie] Pouvez-vous s'il vous plaît mettre à jour la réponse?
Minas Mina
Il y a un fichier de sortie dans la réponse. Ou l'auteur l'a-t-il changé? C'était jadis `hex2hcd fichier d'entrée fichier de sortie
Pilote6
4
Merci @ Pilot6 pour la mise à jour du post principal. Dans mon cas, j'ai cherché l'erreur dmesgpour connaître mon fichier correct. Exemple de sortie dmesg:[ 3.479417] bluetooth hci0: Direct firmware load for brcm/BCM-0a5c-6410.hcd failed with error -2 [ 3.479421] Bluetooth: hci0: BCM: Patch brcm/BCM-0a5c-6410.hcd not found
morhook
5
UTILISATEURS DUALBOOT: Notez que vous pouvez extraire le microprogramme approprié à partir de votre système d’exploitation Windows. Pour ce faire, allez dans le Gestionnaire de périphériques Windows, recherchez votre périphérique Bluetooth, cliquez avec le bouton droit de la souris sur Propriétés, Pilote, Détails du pilote. Vous y trouverez le chemin d'accès à votre .hexfichier, que vous pouvez copier sur votre système Linux. Après cela, suivez les étapes 5 à 8. Cette réponse est excellente, au fait.
Manu CJ
18

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).

Le 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 :)

Vincent Gerris
la source
1
Dans mon cas (identificateur de périphérique USB Bluetooth 4.0 UtechSmart: 0a5c: 21e8), les pilotes winterheart étaient chargés mais hcitool devne montraient toujours aucun périphérique et il y avait une erreur dans syslog. Vous avez trouvé un autre pilote sur plugable.com/2014/06/23/… qui a fonctionné.
Greg Bray
8

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

Vous trouverez plus d'informations sur ce référentiel 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 a pour but de 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 dans le dossier Repos de ce 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.hcddans le répertoire /lib/firmware/brcmoù 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.hcddans 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 nouvelle fois pour voir si le pilote a été chargé)

Juan Gómez Carrillo
la source
Ça a marché! Merci beaucoup! Dans mon cas, la version "BCM43142 802.11b / g / n [14e4: 4365] (rev 01)" n'était pas disponible dans le dossier github, mais je l'ai simplement essayée avec BCM43142A0-185f-2167.hcd et tout a fonctionné!
Sriram Kannan