Bluetooth Broadcom 43142が機能しない


38

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

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


回答:


78

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

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

  1. Broadcom Windows 8ドライバーまたはこちらからダウンロードしてください。

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

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

  2. Archive Managerでこのファイルを開き、ファイルを見つけbcbtums-win8x86-brcm.infます。一部のドライバーでは、ファイルの名前が異なる場合があります。それは可能なbcbtums.infのWin32またはWin64のディレクトリにあります。ダウンロードするのに32ビットでも64ビットでもかまいません。

  3. このファイルでVID_ 0A5C&PID_ 21D7を検索します。これらの数値はlsusb出力からのものです

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

    コメント:一部のデバイスはでBroadcom BTとして認識されませんlsusb。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

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

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

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

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

    あなたはなりますhex2hcdホームディレクトリのフォルダを。

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

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

    あなたはそれを参照0a5c-21d7はからあなたのアダプタのIDですlsusbが

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

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

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

    カーネル5.0の場合、ファイル名は再び BCM43142A0-0a5c-21d7.hcd

    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。ファイルが見つからない場合は、エラーメッセージが表示されます。

    要求されたファイル名が作成したファイルと一致しない場合は、ファイルの名前を変更しhcdます。

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

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

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

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

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

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

しかし、それは合法ではありません:-((


6
ほとんどの場合、ラップトップを起動したときに、bluetoothモジュールの再ロードがカーネルスタックトレースで失敗します。再起動せずにbluetoothが必要な場合は、blueoothを再度動作させるには、bluetoothモジュールをアンロード(sudo modprobe -r btusb)し、再ロード()する必要がありますsudo modprobe btusbbugzilla.kernel.org/show_bug.cgi?id=81821
solsTiCe

1
ステップ6では、hex2hcdに次のような出力ファイルを指定する必要があります。hex2hcd [入力ファイル] -o [出力ファイル]回答を更新してください。
ミナスミナ

回答には出力ファイルがあります。または、著者はそれを変更しましたか。以前は `hex2hcd input-file output-file
Pilot6

4
メイン投稿を更新してくれてありがとう@ Pilot6 私の場合、エラーを調べdmesgて正しいファイルを確認しました。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
デュアルブートユーザー:Windows OSから正しいファームウェアを抽出できることに注意してください。それを行うには、Windowsデバイスマネージャーに移動し、Bluetoothデバイスを見つけて右クリックし、[プロパティ]、[ドライバー]、[ドライバーの詳細]を選択します。そこに.hexファイルへのパスがあり、それをLinuxシステムにコピーできます。その後、手順5〜8に従います。ところで、この答えは素晴らしいです。
マヌーCJ

18

プロセスを少し自動化することを目的とするプロジェクトは次のとおりです。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

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


1
私の場合(UtechSmart USB Bluetooth 4.0デバイスID:0a5c:21e8)、ウィンターハートドライバーは読み込まれましたが、hcitool devまだデバイスが表示されず、syslogにエラーがありました。plugable.com/2014/06/23/で別のドライバーが見つかりました...うまくいきました。
グレッグブレイ

8

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

このリポジトリでは、必要なすべてのBroadcomワイヤレスカードドライバーと詳細情報を見つけることができます。


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

このチュートリアルは、Linuxシステムで動作するワイヤレス/ BluetoothネットワークカードBroadcom Corporation BCM43142 802.11b / g / n(rev 01)(デバイスID:0a5c:216d)を作成することを目的としています(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。カーネルが別のドライバー名を探している場合は、ドライバーファイル(BCM43142A0-0a5c-216c.hcdBCM43142(0a5c:216d)の場合)の名前をカーネルが必要とする名前に変更する必要があります。

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

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

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

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


出来た!どうもありがとう!私の場合、「BCM43142 802.11b / g / n [14e4:4365](rev 01)」バージョンはgithubフォルダーでは使用できませんでしたが、BCM43142A0-185f-2167.hcdで試してみましたが、うまくいきました!
スリラムカンナン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.