it-swarm.com.de

Bluetooth Broadcom 43142 funktioniert nicht

Bluetooth ist aktiviert, kann aber von keinem anderen Gerät gefunden werden.

Ausgabe von 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

Ausgabe von lsusb:

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

Wie kann ich es reparieren?

36
Guja1501

Sie müssen die Firmware installieren.

Die Weitergabe der Broadcom-Firmware ist gemäß der Broadcom-Lizenz nicht zulässig. Sie müssen es sich also selbst besorgen. Es ist ein bisschen komplex, aber es gibt keinen anderen legalen Weg.

  1. Laden Sie Broadcom Windows 8-Treiber oder VON HIER herunter.

Wenn Ihr Gerät in diesen Treibern nicht aufgeführt ist, müssen Sie irgendwo eine neuere Version finden. Broadcom hat die neuesten Treiber von ihrer Site entfernt, um dies zu erschweren.

Einige Laptop-Anbieter haben Bluetooth-Treiber auf ihren Websites, einige können jedoch nicht entpackt werden. Es ist also eine Suche. Ich könnte die neuesten Broadcom-Treiber von ihrer Website herunterladen, aber es ist nicht mehr da.

  1. Öffnen Sie diese Datei mit dem Archiv-Manager und suchen Sie dort die Datei bcbtums-win8x86-brcm.inf. Der Name der Datei kann in einigen Treibern abweichen. Es kann sich um bcbtums.inf handeln, das sich im Win32- oder Win64-Verzeichnis befindet. Das Herunterladen von 32 oder 64 Bit spielt keine Rolle.
  2. Durchsuchen Sie diese Datei nach VID _ 0A5C & PID _ 21D7 . Diese Zahlen stammen aus Ihrer Ausgabe von lsusb

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

Bemerkung: Einige Geräte werden in lsusb nicht als Broadcom BT erkannt. Wenn Sie sich nicht sicher sind, welches Ihr BT-Gerät ist, führen Sie den Befehl usb-devices aus, um detailliertere Informationen zu erhalten. Dort finden Sie Produkt- und Lieferanten-IDs.

Sie werden einige Zeilen sehen, die mit RAMUSB21D7 enden

Durchsuchen Sie diese Datei nach RAMUSB21D7. Dort finden Sie einen Abschnitt wie diesen:

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

Das suchen wir. Name der Firmware-Datei. BCM43142A0_001.001.011.0122.0126.hex

  1. Extrahieren Sie nun diese Firmware aus derselben CAB-Datei.

    Dann müssen Sie diese Datei von hex in das hcd-Format konvertieren.

  2. Laden Sie das Tool dafür herunter

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

    Sie erhalten hex2hcd Ordner in Ihrem Home-Verzeichnis.

  3. Legen Sie die Firmware-Datei in Ihren Home-Ordner und führen Sie sie aus

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

    Sie sehen, dass 0a5c-21d7 die ID Ihres Adapters von lsusb ist.

Wichtig: Ab Kernel 4.2 rufen Sie diese Datei stattdessen als BCM.hcd auf.

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

Für Kernel 4.8+ sollte der Name der Datei BCM-<VID>-<PID>.hcd lauten, wie BCM-0a5c-21d7.

  1. Kopieren Sie nun einfach BCM43142A0-0a5c-21d7.hcd oder eine andere Datei entsprechend der Kernel-Version in das /lib/firmware/brcm -Verzeichnis von

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

Für Kernel 4.2+

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

Für Kernel 4.8+

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

Sie können jederzeit überprüfen, ob der Dateiname korrekt ist, indem Sie dmesg | grep -i blue ausführen. Es wird eine Fehlermeldung angezeigt, wenn die Datei nicht gefunden wird.

  1. Schalten Sie Ihren Computer aus und wieder ein. Nicht nur ein Neustart!

    Ihr Adapter erhält Firmware und Bluetooth sollte funktionieren.

All dies sieht kompliziert aus, aber es sind Broadcom Anwälte, die dafür verantwortlich sind. Die meisten anderen Anbieter gestatten die Weiterverteilung von Firmware unter der Bedingung, dass dies zusammen mit der Lizenz erfolgt.

Dies ermöglicht Linux-Betreuern, Firmware in Distributionen einzubeziehen.

Aber nicht bei Broadcom. Deshalb ist es nicht einfach.

Viele Leute könnten alle Hex-Dateien in hcd konvertieren und verfügbar machen. Oder füge sie einfach dem Linux-Firmware-Paket von Ubuntu hinzu.

Aber es ist nicht legal : - ((

76
Pilot6

Hier ist ein Projekt, das darauf abzielt, den Prozess ein wenig zu automatisieren: https://github.com/winterheart/broadcom-bt-firmware

kopieren Sie das BCM je nach Kernel in das richtige Verzeichnis/den richtigen Namen (wie oben beschrieben).

Auf 4.8 brauchte ich keinen Neustart, einfach in einem Terminal:

Sudo modprobe -r btusb
Sudo modprobe btusb

dmesg | grep -i blu

sollte anzeigen, ob es geladen ist. Stellen Sie sicher, dass die Hardware-ID mit der Datei übereinstimmt. Es kann gefunden werden mit:

lsusb

das zeigt dies auf meinem Lenovo (nur diese Zeile):

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

Ich hoffe das hilft :)

16
Vincent Gerris

Das ist alles was Sie brauchen: https://github.com/winterheart/broadcom-bt-firmware

In diesem Repository finden Sie weitere Informationen und alle benötigten Treiber für Broadcom-Funkkarten .


Um genauer zu sein, gebe ich Ihnen die Anweisungen, die ich für mich selbst geschrieben habe:

Mit diesem Tutorial soll die Funk-/Bluetooth-Netzwerkkarte Broadcom Corporation BCM43142 802.11b/g/n (Version 01) (Geräte-ID: 0a5c: 216d) auf Linux-Systemen (ich habe sie auf Elementary OS 0.4.1 Loki ausprobiert) funktionieren auf Ubuntu 16.04.3 LTS).

Es könnte nicht für andere Geräte funktionieren, aber es sollte nicht zu sehr von diesem Verfahren für andere Broadcom-Geräte abweichen. Die benötigten Broadcom-Treiber befinden sich auf diesem GitHubs Reposity-Ordner im .hcd-Format.

  1. Geben Sie den folgenden Befehl ein, um herauszufinden, nach welchem ​​Treibernamen der Kernel sucht, wenn Sie die Laufwerke beim Booten laden:

    dmesg | grep -i 'firmware load'
    

    Versuchen Sie dies, wenn es nichts findet:

    dmesg | grep -i 'bluetooth'
    

    Das Ergebnis sollte ungefähr so ​​aussehen:

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

    Erläuterung: In meinem Fall sucht der Kernel nach der Datei BCM.hcd im Verzeichnis /lib/firmware/brcm, in dem sich die Broadcom-Treiber befinden sollen. Wenn der Kernel nach einem anderen Treibernamen sucht, müssen Sie die Treiberdatei (BCM43142A0-0a5c-216c.hcd in meinem Fall für den BCM43142 (0a5c: 216d)) durch den Kernel in den erforderlichen Namen umbenennen.

  2. Verschieben Sie den umbenannten Treiber (BCM.hcd) in Ihr Home-Verzeichnis (/ home/YourUsername /) und führen Sie den folgenden Befehl aus, um ihn in den Ordner zu verschieben, auf den der Kernel beim Booten zugreift:

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

    Sie müssen den entsprechenden Treiber abhängig von Ihrem Gerät verwenden und ihn umbenennen, wenn Sie für den Kernel dazu aufgefordert werden.

  3. Starten Sie Ihren Computer neu und es sollte funktionieren! * (Sie können dmesg | grep -i 'bluetooth' noch einmal eingeben, um zu sehen, ob der Treiber geladen wurde)