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
どうすれば修正できますか?
ファームウェアをインストールする必要があります。
Broadcomファームウェアの配布は、Broadcomライセンスでは許可されていません。そのため、自分で取得する必要があります。少し複雑ですが、他のlegal方法はありません。
デバイスがこれらのドライバーにリストされていない場合は、どこかに新しいバージョンを見つける必要があります。 Broadcomは、最新のドライバーをサイトから削除して、それをより困難にしました。
一部のラップトップベンダーのサイトにはBluetoothドライバーがありますが、それらのいくつかは解凍できません。だから、それはいくつかの探求です。私は彼らのサイトから最新のBroadcomドライバーをダウンロードできましたが、それはもうありません。
bcbtums-win8x86-brcm.inf
ファイルを見つけます。一部のドライバーでは、ファイルの名前が異なる場合があります。 Win32またはWin64ディレクトリにあるbcbtums.inf
になります。ダウンロードするのに32ビットでも64ビットでもかまいません。このファイルで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
次に、同じcabファイルからそのファームウェアを抽出します。
次に、このファイルを16進数からhcd形式に変換する必要があります。
そのためのツールをダウンロードする
git clone git://github.com/jessesung/hex2hcd.git
cd hex2hcd
make
ホームディレクトリにhex2hcdフォルダーを取得します。
ファームウェアファイルをホームフォルダーに配置して実行します
~/hex2hcd/hex2hcd ~/BCM43142A0_001.001.011.0122.0126.hex ~/BCM43142A0-0a5c-21d7.hcd
0a5c-21d7はlsusbからのアダプタの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
である必要があります。
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
を実行することにより、ファイル名が正しいかどうかをいつでも確認できます。ファイルが見つからない場合は、エラーメッセージが表示されます。
コンピューターの電源を入れ直します。 再起動するだけではありません!
アダプタはファームウェアを取得し、bluetoothが動作するはずです。
これはすべて複雑に見えますが、Broadcom弁護士が責任を負います。他のほとんどのベンダーは、ライセンスと一緒に行われるという条件の下でファームウェアを再配布することを許可しています。
これにより、Linuxメンテナーはディストリビューションにファームウェアを含めることができます。
しかし、Broadcomの場合はそうではありません。それが簡単な方法ではない理由です。
多くの人がすべてのHEXファイルをhcdに変換して利用可能にすることができます。または、Ubuntuのlinux-firmwareパッケージに追加するだけです。
しかし、それは違法です:-((
プロセスを少し自動化することを目的とするプロジェクトを次に示します。 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
私はそれが役立つことを願っています:)
必要なのはそれだけです: 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形式。
次のコマンドを入力して、起動中にドライブをロードするときにカーネルが検索するドライバー名を検出します。
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))をカーネルで必要な名前に変更する必要があります。
名前を変更したドライバー(BCM.hcd)をホームディレクトリ(/ home/YourUsername /)に移動し、次のコマンドを実行して、起動中にカーネルが探しているフォルダーに移動します。
Sudo mv ~/BCM.hcd /lib/firmware/brcm
デバイスに応じて対応するドライバを使用し、カーネルに要求された場合は名前を変更する必要があります。
コンピューターを再起動すると動作するはずです!*(もう一度[dmesg | grep -i 'bluetooth'
]と入力して、ドライバーがロードされているかどうかを確認できます)