Bluetooth Broadcom 43142 non funziona


38

Il Bluetooth è attivo ma non può essere trovato o trovato da nessun altro dispositivo.

Uscita di 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

Uscita di lsusb:

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

Come posso ripararlo?


Domanda simile con una risposta per la carta 4352 askubuntu.com/questions/617513/…
Wilf

Risposte:


78

Devi installare il firmware.

La distribuzione del firmware Broadcom non è consentita dalla licenza Broadcom. Quindi devi prenderlo da solo. È un po 'complesso, ma non esiste altro modo legale .

  1. Scarica il driver Broadcom per Windows 8 o DA QUI .

    Se il tuo dispositivo non è elencato in questi driver, dovrai trovarne una versione più recente. Broadcom ha rimosso i driver più recenti dal loro sito per renderlo più difficile.

    Alcuni produttori di laptop dispongono di driver Bluetooth nei loro siti, ma alcuni di essi non sono decompressivi. Quindi è una ricerca. Potrei scaricare gli ultimi driver Broadcom dal loro sito, ma non è più lì.

  2. Apri questo file da Archive Manager e trova lì il bcbtums-win8x86-brcm.inffile. Il nome del file potrebbe differire in alcuni driver. Può trovarsi bcbtums.infnella directory Win32 o Win64. Non importa 32 o 64 bit per il download.

  3. Cerca questo file per VID_ 0A5C e PID_ 21D7 . Questi numeri provengono dal tuo lsusboutput

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

    Commento: alcuni dispositivi non sono riconosciuti come Broadcom BT in lsusb. Se non sei sicuro di quale sia il tuo dispositivo BT, esegui il usb-devicescomando, fornirà informazioni più dettagliate. Qui puoi trovare gli ID prodotto e fornitore.

    Vedrai alcune righe che terminano con RAMUSB21D7

    Cerca questo file per RAMUSB21D7. Troverai una sezione lì come quella:

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

    Questo è quello che stiamo cercando. Nome del file del firmware. BCM43142A0_001.001.011.0122.0126.hex

  4. Ora estrai quel firmware dallo stesso file di cabina.

    Quindi è necessario convertire questo file dal formato esadecimale al formato hcd.

  5. Scarica lo strumento per questo

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

    Otterrete hex2hcd cartella nella vostra home directory.

  6. Posiziona il file del firmware nella cartella principale ed esegui

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

    Si vede che 0a5c-21d7 è id dell'adattatore da lsusb .

    Importante: per i kernel 4.2+ si chiama questo file come BCM.hcdinvece.

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

    Per i kernel 4.8+ il nome del file dovrebbe essere BCM-<VID>-<PID>.hcd, come BCM-0a5c-21d7.

    Per il kernel 5.0 il nome del file è di nuovo BCM43142A0-0a5c-21d7.hcd

    Ora basta copiare BCM43142A0-0a5c-21d7.hcdo un altro file in base alla versione del kernel nella /lib/firmware/brcmdirectory

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

    Per i kernel 4.2+

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

    Per i kernel 4.8+

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

    È sempre possibile verificare se il nome del file è corretto eseguendo dmesg | grep -i blue. Verrà visualizzato un messaggio di errore se il file non viene trovato.

    Se il nome del file richiesto non corrisponde al file creato, rinominare il hcdfile.

  7. Spegni e riaccendi il computer. Non solo riavviare!

    L'adattatore riceverà il firmware e il bluetooth dovrebbe funzionare.

Tutto questo sembra complicato, ma è colpa degli avvocati di Broadcom . La maggior parte degli altri fornitori consente di ridistribuire il firmware a condizione che venga eseguito insieme alla licenza.

Ciò consente ai manutentori di Linux di includere il firmware nelle distribuzioni.

Ma non nel caso di Broadcom. Ecco perché non è fatto in modo semplice.

Molte persone potrebbero convertire tutti i file esadecimali in hcd e renderli disponibili. O semplicemente aggiungili al linux-firmwarepacchetto di Ubuntu.

Ma non è legale : - (((


6
La maggior parte delle volte quando mi sono svegliato il mio laptop, il ricaricamento del modulo bluetooth fallisce con una traccia dello stack del kernel. Se hai bisogno di bluetooth senza riavviare, dovrai scaricare il modulo bluetooth ( sudo modprobe -r btusb) e ricaricarlo ( sudo modprobe btusb) affinché blueooth funzioni di nuovo. bugzilla.kernel.org/show_bug.cgi?id=81821
solsTiCe

1
Nel passaggio 6, hex2hcd deve ricevere un file di output, come: hex2hcd [file di input] -o [file di output] Puoi aggiornare la risposta?
Minas Mina,

C'è un file di output nella risposta. O l'autore l'ha cambiato. In passato era `hex2hcd file di input file di output
Pilot6

4
Grazie @ Pilot6 per l'aggiornamento del post principale. Nel mio caso ho verificato l'errore dmesgper conoscere il mio file corretto. Esempio di output di 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
UTENTI DUALBOOT: Nota che puoi estrarre il firmware corretto dal tuo sistema operativo Windows. Per fare ciò, vai su Gestione dispositivi di Windows, trova il tuo dispositivo Bluetooth, fai clic con il pulsante destro del mouse, Proprietà, Driver, Dettagli driver. Lì troverai il percorso del tuo .hexfile, che puoi copiare sul tuo sistema Linux. Successivamente, seguire i passaggi 5-8. Questa risposta è eccellente, comunque.
Manu CJ

18

Ecco un progetto che mira ad automatizzare un po 'il processo: https://github.com/winterheart/broadcom-bt-firmware

copia il BCM nel giusto dir / nome a seconda del kernel (come descritto sopra).

Con 4.8 non avevo bisogno di riavviare, semplicemente in un terminale:

sudo modprobe -r btusb
sudo modprobe btusb

dmesg | grep -i blu

dovrebbe mostrare se è caricato. Assicurarsi che l'ID hardware corrisponda al file. Si può trovare con:

lsusb

che mostra questo sul mio Lenovo (solo quella linea):

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

Spero che aiuti :)


1
Nel mio caso (UtechSmart USB Bluetooth 4.0 ID dispositivo: 0a5c: 21e8) i driver di winterheart sono stati caricati ma hcitool devnon hanno ancora mostrato alcun dispositivo e si è verificato un errore in syslog. Ho trovato un altro driver su plugable.com/2014/06/23/… che ha funzionato.
Greg Bray,

8

Questo è tutto ciò di cui hai bisogno: https://github.com/winterheart/broadcom-bt-firmware

Su questo repository è possibile trovare ulteriori informazioni e tutti i driver necessari per le schede wireless Broadcom .


Per essere più concreti, ti do le istruzioni che ho scritto per me stesso:

Questo tutorial ha lo scopo di far funzionare la scheda di rete wireless / bluetooth Broadcom Corporation BCM43142 802.11b / g / n (rev 01) (ID dispositivo: 0a5c: 216d) su sistemi Linux (l'ho provata su OS 0.4.1 Loki elementare, basato su Ubuntu 16.04.3 LTS).

Non potrebbe funzionare con altri dispositivi, ma non dovrebbe variare troppo da questa procedura per altri dispositivi Broadcom. I driver Broadcom necessari si trovano nella cartella di reposity di GitHub in formato .hcd.

  1. Immettere il comando seguente per scoprire quale nome del driver è il kernel cercato quando si caricano le unità durante l'avvio:

    dmesg | grep -i 'firmware load'
    

    Prova questo se non trova nulla:

    dmesg | grep -i 'bluetooth'
    

    Il risultato dovrebbe essere qualcosa del genere:

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

    Spiegazione: nel mio caso il kernel sta cercando il file BCM.hcdnella directory in /lib/firmware/brcmcui dovrebbero essere i driver Broadcom. Se il kernel sta cercando un altro nome del driver, è necessario rinominare il file del driver ( BCM43142A0-0a5c-216c.hcdnel mio caso per il BCM43142 (0a5c: 216d)) con il nome richiesto dal kernel.

  2. Sposta il driver rinominato (BCM.hcd) nella tua home directory (/ home / YourUsername /) ed esegui il seguente comando per spostarlo nella cartella che il kernel sta cercando durante l'avvio:

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

    È necessario utilizzare il driver corrispondente a seconda del dispositivo e rinominarlo se richiesto per il kernel.

  3. Riavvia il computer e dovrebbe funzionare! * (Puoi accedere dmesg | grep -i 'bluetooth'nuovamente per vedere se il driver è stato caricato)


Ha funzionato! Molte grazie! Nel mio caso, la versione "BCM43142 802.11b / g / n [14e4: 4365] (rev 01)" non era disponibile nella cartella github, ma l'ho appena provata con BCM43142A0-185f-2167.hcd e ha funzionato!
Sriram Kannan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.