web-dev-qa-db-ja.com

Lenovo Yoga 3でBluetoothを機能させるにはどうすればよいですか?

新しい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)
6
drs

バージョン3.19以降、このデバイスはLinuxカーネルでサポートされていますが、デバイスのファームウェアをカーネルに手動で提供する必要があります。

ファームウェアの検索:

ファームウェアは、Lenovo(またはコンピューターの製造元のWebサイト)からダウンロードできるデバイスのWindowsドライバーにあります。多くのドライバーは単に解凍できますが、この特定のコンピューターでは、ドライバーは.exeファイルであり、wineで抽出する必要があります。

wine 4ab802rf.exe

「インストール」の指示に従ってください。ウィザードは.exeファイルを抽出し、最後のステップでインストールを要求します。 [今すぐBroadcom Bluetoothドライバをインストールする]をオフにします。

enter image description here

ドライバファイルが~/.wine/driver_c/drivers/Broadcom Bluetooth Driver/に抽出されました

適切なファイルの特定

私の場合、解凍したパッケージには20〜30個のファームウェアファイルがあります。デバイスに対応するものは、ドライバーのinfファイルの1つで明らかにされます。 lsusbの出力からデバイスIDを見つけます。不明な場合は、usb-devicesを見つけます。この場合はe07aです。次に、infファイルをgrepして、そのデバイスについて話しているファイルを見つけます。

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のいずれかを調べることができます。ファイルを調べて、E07Aの近くに記載されているhexファイルを見つけます。

;;;;;;;;;;;;;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と一致する必要があります。

ファームウェアのロード

ファームウェアをロードする最も簡単な方法は、コンピューターの電源をオフにして、再度オンにすることです。コンピュータの電源を切る必要があることに注意してください。このファームウェアをリロードするには、単純な再起動では不十分な場合があります。

11
drs

Drsがショートカットを使用した後、私はなんとかファイルを取得し、肯定的な結果を得ました。私のBluetoothデバイスは近くにある目に見えるデバイスを検出できませんでしたが、現在は検出されています。

私が使用したショートカットは、私のコンピューターには光学ドライブがなく、Windowsがプリインストールされているため、ドライバーでいっぱいのパーティションが付属しているということです。 bluetoothドライバーのヒープがあるディレクトリを見つけましたが、INF drsが提案したファイルを調べたところ、E07AデバイスがドライバーファイルBCM20702A1_001.002.014.1483.1651.hexにリンクされていました。

その後、de hex2hcdプログラムをコンパイルして、ファイルをHCDに変換しました。 dmesgの「patch not found」メッセージに従って、BCM2070A0の代わりにBCM20702A1の名前部分を保持する必要がありました。

デバイスをペアリングできませんでしたが、スキャンできることは間違いなく一歩前進です。

HCDファイルが必要な場合は、メッセージを送ってください。できれば、すぐに送信します。また、linux bluetoothメーリングリストにも送信します。

編集。どうやら、Windows HEXドライバのファイル名の1651はビルド番号を指します。 dmesgを通して、1651がビルド番号であるというカーネルの状態を確認できます。

4
Severo Raz