Bluetooth Broadcom 43142 não está funcionando

30

O Bluetooth está ativado, mas não pode ser encontrado ou encontrado por outros dispositivos.

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

lsusb

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

Como posso corrigir isso?

    
por Guja1501 04.06.2015 / 20:45

3 respostas

64

Você precisa instalar o firmware.

A distribuição do firmware da Broadcom não é permitida pela licença da Broadcom. Então você precisa pegar você mesmo. É um pouco complexo, mas não há outra maneira legal .

  1. Faça o download do driver do Broadcom Windows 8 ou AQUI .

Se o dispositivo não estiver listado nesses drivers, você precisará encontrar uma versão mais recente dele em algum lugar. A Broadcom removeu os drivers mais recentes de seu site para torná-lo mais difícil.

Alguns fornecedores de laptops têm drivers Bluetooth em seus sites, mas alguns deles não são impossíveis de abrir. Então é alguma quest. Eu poderia baixar os drivers mais recentes da Broadcom de seu site, mas não está mais lá.

  1. Abra este arquivo pelo Gerenciador de arquivos e encontre o arquivo bcbtums-win8x86-brcm.inf . O nome do arquivo pode ser diferente em alguns drivers. Pode ser bcbtums.inf localizado no diretório Win32 ou Win64. Não importa 32 ou 64 bits para download.
  2. Pesquise este arquivo para VID_ 0A5C e PID_ 21D7 . Esses números são do seu lsusb output

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

Comentário: Alguns dispositivos não são reconhecidos como Broadcom BT em lsusb . Se você não tiver certeza de qual é o seu dispositivo BT, execute o comando usb-devices , ele fornecerá informações mais detalhadas. Lá você pode encontrar IDs de produtos e fornecedores.

Você verá uma linha finalizando com RAMUSB21D7

Pesquise este arquivo para RAMUSB21D7. Você encontrará uma seção lá assim:

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

É isso que estamos procurando. Nome do arquivo de firmware.      BCM43142A0_001.001.011.0122.0126.hex

  1. Agora extraia esse firmware do mesmo arquivo cab.

    Então você precisa converter este arquivo de hex para o formato hcd.

  2. Baixe a ferramenta para isso

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

    Você obterá a pasta hex2hcd em seu diretório pessoal.

  3. Coloque o arquivo do firmware em sua pasta pessoal e execute

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

    Você vê que 0a5c-21d7 é o id do seu adaptador de lsusb .

Importante: Para os kernels 4.2+, você chama esse arquivo como BCM.hcd .

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

Para os kernels, o nome do arquivo deve ser + BCM-<VID>-<PID>.hcd , como BCM-0a5c-21d7 .

  1. Agora copie apenas BCM43142A0-0a5c-21d7.hcd , ou outro arquivo de acordo com a versão do kernel para o diretório /lib/firmware/brcm por

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

Para os kernels 4.2 +

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

Para kernels 4.8 +

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

Você sempre pode verificar se o nome do arquivo estiver correto executando dmesg | grep -i blue . Haverá uma mensagem de erro se o arquivo não for encontrado.

  1. Desligue e ligue o computador novamente. Não apenas reinicialize!

    Seu adaptador receberá firmware e o bluetooth deverá funcionar.

Tudo isso parece complicado, mas são os advogados da Broadcom os culpados por isso. A maioria dos outros fornecedores permite redistribuir o firmware sob a condição de que seja feito acompanhado da licença.

Isso permite que os mantenedores do Linux incluam firmware nas distribuições.

Mas não no caso da Broadcom. É por isso que isso não é feito de maneira fácil.

Muitas pessoas podem converter todos os arquivos hex para hcd e disponibilizá-los. Ou apenas adicione-os ao pacote linux-firmware do Ubuntu.

Mas não é legal : - ((

    
por Pilot6 04.06.2015 / 21:03
12

Aqui está um projeto que visa automatizar um pouco o processo: link

copie o BCM para a dir / name direita, dependendo do kernel (como descrito acima).

On 4.8 Eu não precisei de uma reinicialização, simplesmente em um terminal:

sudo modprobe -r btusb
sudo modprobe btusb

dmesg | grep -i blu

deve mostrar se está carregado. Certifique-se de que a ID do hardware corresponda ao arquivo. Pode ser encontrado em:

lsusb

que mostra isso no meu Lenovo (apenas essa linha):

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

Espero que ajude:)

    
por Vincent Gerris 13.12.2016 / 12:12
2

É tudo o que você precisa: link

Neste repositório você pode encontrar mais informações e todos os drivers de placa wireless Broadcom necessários .

Para ser mais concreto, dou as instruções que escrevi para mim:

Este tutorial destina-se a tornar a placa de rede sem fio / bluetooth Broadcom Corporation BCM43142 802.11b / g / n (rev 01) (ID do dispositivo: 0a5c: 216d) funcionando em sistemas Linux (testei no Elementary OS 0.4.1 Loki, baseado no Ubuntu 16.04.3 LTS).

Não funcionou para outros dispositivos, mas não deve variar muito desse procedimento para outros dispositivos da Broadcom. Os drivers necessários da Broadcom estão nesta pasta de repositório do GitHub no formato .hcd.

  1. Digite o seguinte comando para descobrir qual nome de driver é o kernel procurando ao carregar as unidades durante a inicialização:

    dmesg | grep -i 'firmware load'
    

    Tente este se não encontrar nada:

    dmesg | grep -i 'bluetooth'
    

    O resultado deve ser algo assim:

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

    Explicação: no meu caso, o kernel está procurando pelo arquivo BCM.hcd no diretório /lib/firmware/brcm , onde se espera que os drivers da Broadcom estejam. Se o Kernel estiver procurando por outro nome de driver, você deverá renomear o arquivo do driver ( BCM43142A0-0a5c-216c.hcd no meu caso para o BCM43142 (0a5c: 216d)) para o nome requerido pelo kernel.

  2. Mova o driver renomeado (BCM.hcd) para o seu diretório pessoal (/ home / YourUsername /) e execute o seguinte comando para movê-lo para a pasta em que o kernel está olhando durante a inicialização:

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

    Você deve usar o driver correspondente dependendo do seu dispositivo e renomeá-lo se for solicitado para o kernel.

  3. Reinicie seu computador e ele deve funcionar! * (você pode inserir dmesg | grep -i 'bluetooth' mais uma vez para ver se o driver foi carregado)

por Juan Gómez Carrillo 10.12.2017 / 18:41