web-dev-qa-db-ja.com

Bluetooth Broadcom 43142が機能しない

Bluetoothはオンになっていますが、他のデバイスを見つけられないか、見つけられません。

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

どうすれば修正できますか?

36
Guja1501

ファームウェアをインストールする必要があります。

Broadcomファームウェアの配布は、Broadcomライセンスでは許可されていません。そのため、自分で取得する必要があります。少し複雑ですが、他のlegal方法はありません。

  1. ダウンロード Broadcom Windows 8ドライバー または FROM HERE

デバイスがこれらのドライバーにリストされていない場合は、どこかに新しいバージョンを見つける必要があります。 Broadcomは、最新のドライバーをサイトから削除して、それをより困難にしました。

一部のラップトップベンダーのサイトにはBluetoothドライバーがありますが、それらのいくつかは解凍できません。だから、それはいくつかの探求です。私は彼らのサイトから最新のBroadcomドライバーをダウンロードできましたが、それはもうありません。

  1. Archive Managerでこのファイルを開き、bcbtums-win8x86-brcm.infファイルを見つけます。一部のドライバーでは、ファイルの名前が異なる場合があります。 Win32またはWin64ディレクトリにあるbcbtums.infになります。ダウンロードするのに32ビットでも64ビットでもかまいません。
  2. このファイルでVID _0A5C&PID _21D7を検索します。これらの番号はlsusb出力からのものです

    0a5c:21d7Broadcom Corp. BCM43142 Bluetooth 4.0。

コメント:一部のデバイスは、lsusbでBroadcom BTとして認識されません。 BTデバイスが不明な場合は、usb-devicesコマンドを実行すると、より詳細な情報が表示されます。そこで、製品およびベンダーIDを見つけることができます。

RAMUSB21D7で終わる行が表示されます。

このファイルでRAMUSB21D7を検索します。次のようなセクションがあります。

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

それが私たちが探しているものです。ファームウェアファイルの名前。 BCM43142A0_001.001.011.0122.0126.hex

  1. 次に、同じcabファイルからそのファームウェアを抽出します。

    次に、このファイルを16進数からhcd形式に変換する必要があります。

  2. そのためのツールをダウンロードする

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

    ホームディレクトリにhex2hcdフォルダーを取得します。

  3. ファームウェアファイルをホームフォルダーに配置して実行します

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

    0a5c-21d7lsusbからのアダプタのIDです。

重要:カーネル4.2以降では、代わりにこのファイルをBCM.hcdとして呼び出します。

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

カーネル4.8+の場合、ファイルの名前はBCM-<VID>-<PID>.hcdのようなBCM-0a5c-21d7である必要があります。

  1. BCM43142A0-0a5c-21d7.hcd、またはカーネルバージョンに応じた別のファイルを/lib/firmware/brcmディレクトリにコピーします。

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

カーネル4.2以降の場合

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

カーネル4.8+の場合

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

dmesg | grep -i blueを実行することにより、ファイル名が正しいかどうかをいつでも確認できます。ファイルが見つからない場合は、エラーメッセージが表示されます。

  1. コンピューターの電源を入れ直します。 再起動するだけではありません!

    アダプタはファームウェアを取得し、bluetoothが動作するはずです。

これはすべて複雑に見えますが、Broadcom弁護士が責任を負います。他のほとんどのベンダーは、ライセンスと一緒に行われるという条件の下でファームウェアを再配布することを許可しています。

これにより、Linuxメンテナーはディストリビューションにファームウェアを含めることができます。

しかし、Broadcomの場合はそうではありません。それが簡単な方法ではない理由です。

多くの人がすべてのHEXファイルをhcdに変換して利用可能にすることができます。または、Ubuntuのlinux-firmwareパッケージに追加するだけです。

しかし、それは違法です:-((

76
Pilot6

プロセスを少し自動化することを目的とするプロジェクトを次に示します。 https://github.com/winterheart/broadcom-bt-firmware

カーネルに応じて、BCMを正しいディレクトリ/名前にコピーします(上記を参照)。

4.8では、単にターミナルでリブートする必要はありませんでした。

Sudo modprobe -r btusb
Sudo modprobe btusb

dmesg | grep -i blu

ロードされているかどうかを示す必要があります。ハードウェアIDがファイルと一致していることを確認してください。以下で見つけることができます:

lsusb

私のレノボでこれを示しています(その行のみ):

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

私はそれが役立つことを願っています:)

16
Vincent Gerris

必要なのはそれだけです: https://github.com/winterheart/broadcom-bt-firmware

このリポジトリには、詳細情報と すべてのBroadcomワイヤレスカードドライバーが必要 があります。


より具体的にするために、私は自分のために書いた指示をあなたに与えます:

このチュートリアルは、Linux/Broadcom Corporation BCM43142 802.11b/g/n(rev 01)(デバイスID:0a5c:216d)がLinuxシステムで動作するようにすることを目的としています(Elementary OS 0.4.1 Lokiで試しましたUbuntu 16.04.3 LTS)。

他のデバイスでは機能しない可能性がありますが、他のBroadcomデバイスではこの手順とあまり変わらないはずです。必要なBroadcomドライバーは、この上にあります GitHubのリポジトリーフォルダー .hcd形式。

  1. 次のコマンドを入力して、起動中にドライブをロードするときにカーネルが検索するドライバー名を検出します。

    dmesg | grep -i 'firmware load'
    

    何も見つからない場合はこれを試してください:

    dmesg | grep -i 'bluetooth'
    

    結果は次のようになります。

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

    説明:私の場合、カーネルはBroadcomドライバーが期待されるディレクトリBCM.hcdの下のファイル/lib/firmware/brcmを探しています。カーネルが別のドライバー名を探している場合、ドライバーファイル(BCM43142の場合は私の場合はBCM43142A0-0a5c-216c.hcd(0a5c:216d))をカーネルで必要な名前に変更する必要があります。

  2. 名前を変更したドライバー(BCM.hcd)をホームディレクトリ(/ home/YourUsername /)に移動し、次のコマンドを実行して、起動中にカーネルが探しているフォルダーに移動します。

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

    デバイスに応じて対応するドライバを使用し、カーネルに要求された場合は名前を変更する必要があります。

  3. コンピューターを再起動すると動作するはずです!*(もう一度[dmesg | grep -i 'bluetooth']と入力して、ドライバーがロードされているかどうかを確認できます)