私は新しいBroadcom Bluetoothデバイスを搭載したLenovo Yoga 3を持っています。
起動時にBluetoothが検出され、gnomeでペアリングしようとするとデバイスのリストが表示されますが、ペアリングされたデバイスはありません。
このデバイスを操作するにはどうすればよいですか?
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 048d:8386 Integrated Technology Express, Inc.
Bus 001 Device 003: ID 5986:0535 Acer, Inc
Bus 001 Device 002: ID 0489:e07a Foxconn / Hon Hai
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
usb-devices
T: Bus=01 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0489 ProdID=e07a Rev=01.12
S: Manufacturer=Broadcom Corp
S: Product=BCM20702A0
S: SerialNumber=38B1DBE337E4
C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
答え1
バージョン3.19以降、Linuxカーネルはこのデバイスをサポートしていますが、デバイスのファームウェアをカーネルに手動で提供する必要があります。
ファームウェアを探す:
Lenovo(またはコンピュータ製造元のWebサイト)からダウンロードできるデバイスのWindowsドライバでファームウェアを見つけることができます。ほとんどのドライバは直接解凍できますが、この特定のコンピュータではドライバはファイルなので.exe
使用する必要がありますwine
。
wine 4ab802rf.exe
「インストール」の指示に従ってください。ウィザードは.exe
ファイルを抽出し、最後のステップでインストールを要求します。 「今すぐ Broadcom Bluetooth ドライバをインストールする」を選択解除します。
ドライバファイルが次の場所に抽出されました。~/.wine/driver_c/drivers/Broadcom Bluetooth Driver/
正しいファイル識別
私の場合、解凍したパッケージに20〜30個のファームウェアファイルが含まれていました。お使いのデバイスに対応するものがドライバファイルの1つに表示されますinf
。の出力でデバイスIDを見つけます。lsusb
不明な場合。usb-devices
この場合、ファイルをe07a
grepして、inf
そのデバイスについて説明するファイルを見つけます。
grep -c E07A -r --include \*.inf
Win32/LD/bcbtumsLD-win7x86.inf:0
Win32/bcmhidnossr.inf:0
Win32/btwl2cap.inf:0
Win32/btwavdt.inf:0
Win32/btwrchid.inf:0
Win32/bcbtums-win8x86-brcm.inf:17
Win32/btwaudio.inf:0
Win64/LD/bcbtumsLD-win7x64.inf:0
Win64/bcmhidnossr.inf:0
Win64/btwl2cap.inf:0
Win64/btwavdt.inf:0
Win64/btwrchid.inf:0
Win64/bcbtums-win8x64-brcm.inf:17
Win64/btwaudio.inf:0
Autorun.inf:0
したがって、このドライバでは、Win32/bcbtums-win8x86-brcm.inf
またはWin64/bcbtums-win8x64-brcm.inf
。ファイルを見て、近くに記載されている16進ファイルを見つけますE07A
。
;;;;;;;;;;;;;RAMUSBE07A;;;;;;;;;;;;;;;;;
[RAMUSBE07A.CopyList]
bcbtums.sys
btwampfl.sys
BCM20702A1_001.002.014.1443.1496.hex
したがって、ファームウェアは同じディレクトリにあり、名前はBCM20702A1_001.002.014.1443.1496.hex
。
ファームウェアの変換と配置
ダウンロードとコンパイルhex2hcd
ツール。
git clone https://github.com/jessesung/hex2hcd.git
cd hex2hcd
make
ファームウェアを次に変換するhcd
:
hex2hcd BCM20702A1_001.002.014.1443.1496.hex firmware.hcd
ファームウェアの名前を変更し、システムのファームウェアサブディレクトリに移動します。
su -c 'mv firmware.hcd /lib/firmware/brcm/BCM20702A0-0489-e07a.hcd'
このファイルの名前は非常に重要です。この例では、4文字の2セットが0489-e07a
デバイスのベンダーIDと製品IDと一致する必要があります。
ファームウェアのロード
ファームウェアをロードする最も簡単な方法は、コンピュータの電源を切ってから再びオンにすることです。コンピュータをシャットダウンする必要があります。単に再起動するだけでは、このファームウェアを再ロードすることはできません。
答え2
drs 'のショートカットを使用してファイルを取得し、肯定的な結果を得ました。私のBluetoothデバイスは周囲に見えるデバイスを検出できませんでしたが、今は検出されています。
私が使用するショートカットは、私のコンピュータに光学ドライブがなく、Windowsがプリインストールされているため、ドライバでいっぱいのパーティションが付属していることです。 Bluetoothドライバがたくさんあるディレクトリを見つけましたが、drsが提案したINFファイルを見ると、E07Aデバイスがドライバファイルに接続されていることがわかりました。BCM20702A1_001.002.014.1483.1651.hex
その後、私はdehex2hcd
プログラムをコンパイルし、ファイルをHCDに変換しました。 dmesg「パッチが見つかりません」というメッセージによれば、BCM20702A1の名前部分をBCM2070A0に置き換える代わりに保持する必要があります。
デバイスをペアリングすることはできませんでしたが、スキャンできるようになったのは確かに一歩進んだことです。
HCDファイルが必要な場合は、メッセージを残してください。できるだけ早くお送りします。私もそれをLinuxのBluetoothメーリングリストに送りました。
編集する。明らかに、Windows HEXドライバファイル名の1651はビルド番号を表します。 dmesg では、カーネルでビルド番号が 1651 であることがわかります。