web-dev-qa-db-ja.com

Bluetoothドングルの問題

のように Bluetoothドングルの問題です(おそらくドライバに関して) Bluetoothデバイスが正しく初期化しないという同じ問題が発生します:

$ lsusb | grep Bluetooth
Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

$ usb-devices | awk '/0a12/' RS=
T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  6 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a12 ProdID=0001 Rev=88.91
S:  Product=USB1.1-A
C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

$ hciconfig -a hci0
hci0:   Type: Primary  Bus: USB
    BD Address: 00:1A:7D:DA:71:11  ACL MTU: 679:9  SCO MTU: 48:16
    DOWN 
    RX bytes:574 acl:0 sco:0 events:30 errors:0
    TX bytes:368 acl:0 sco:0 commands:30 errors:0
    Features: 0xff 0xff 0xc5 0xfa 0xdb 0xbf 0x7b 0x87
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
    Link policy: RSWITCH HOLD SNIFF PARK 
    Link mode: SLAVE ACCEPT

$ hcidump
...
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Version Information (0x04|0x0001) ncmd 1
    status 0x00
    HCI Version: 4.0 (0x6) HCI Revision: 0x810
    LMP Version: 4.0 (0x6) LMP Subversion: 0x1113
    Manufacturer: Cambridge Silicon Radio (10)
...
> HCI Event: Command Complete (0x0e) plen 6
Delete Stored Link Key (0x03|0x0012) ncmd 1
status 0x11 deleted 0
Error: Unsupported Feature or Parameter Value

パッチを適用していない限り、Error: Unsupported Feature or Parameter Valueの最後のHCIイベントのみが表示されます。パッチを適用すると、hcidumpの出力にイベント/コマンドが表示されなくなります。

Windows 10では正常に動作しますが、Ubuntu 18.04では動作しません(カーネル5.3では動作しません)。 BluemanがBluetoothデバイスを認識していません。

Bluetooth USBドングルを挿入すると、これが表示されます。

jan 26 21:10:38 some-computer kernel: usb 1-1.3: new full-speed USB device number 6 using ehci-pci
jan 26 21:10:38 some-computer kernel: usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
jan 26 21:10:38 some-computer kernel: usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
jan 26 21:10:38 some-computer kernel: usb 1-1.3: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
jan 26 21:10:38 some-computer kernel: usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
jan 26 21:10:38 some-computer kernel: usb 1-1.3: Product: USB1.1-A
jan 26 21:10:38 some-computer systemd[1]: Starting Load/Save RF Kill Switch Status...
jan 26 21:10:38 some-computer systemd[1]: Started Load/Save RF Kill Switch Status.
jan 26 21:10:38 some-computer systemd[1]: Reached target Bluetooth.
jan 26 21:10:38 some-computer upowerd[9037]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.1
jan 26 21:10:38 some-computer upowerd[9037]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.0
jan 26 21:10:38 some-computer upowerd[9037]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3
jan 26 21:10:38 some-computer kernel: [UFW BLOCK] IN=eno1 OUT= MAC= SRC=<REMOVED from output by me!> DST=ff02:0000:0000:0000:0000:0000:0000:0001 LEN=64 TC=0 HOPLIMIT=1 FLOWLBL=939113 PROTO=UDP SPT=8612 DPT=8612 LEN=24 

私は誰かが何をすべきかについてのヒントを持っていると思います。

補足情報があります。

それはこれについてです: https://launchstudio.bluetooth.com/listingdetails/7527 そしておそらく関連するチップは: http://en.barrot.com.cn /a/BR80XX-series/48.html および http://en.barrot.com.cn/a/BR200Xxilie/12.html

注:@ Pilot6から別の質問としてこれを作成するように依頼されました(以前に参照した質問の回答として追加された)以前のコメントが削除されないようにします。

インターネット上で特定の「BQB 75270」LMP Subversions(identified by user)と一致する画像:

LMP Subversion(a.l):0x1113

LMP Subversion([〜#〜] bxl [〜#〜]-product 3下の画像):0x1712

以下のproducts 1および2のLMP Subversionは現在不明です。

クリックして画像を拡大Other BQB75270 dongles

6
a.l

Linuxでドングルを動作させるパッチを作成することは可能でしたが、カーネルに組み込む前に行う必要のあるいくつかの作業があります。したがって、ドングルは前述のようにBarrotが作成した偽のCSRチップを使用しています。 BluetoothのサポートについてLinuxカーネルのメンテナに連絡する必要がありますが、その前に、私よりも多くの人が動作しているかどうか確認する必要があります。そして、私は調査結果をここに投稿します: https://bugzilla.kernel.org/show_bug.cgi?id=60824#c48 そして、最後にカーネルのメンテナに連絡します(そして 'パッチ提出者のためのヒント https://www.kernel.org/doc/linux/MAINTAINERS

テストしてください

カーネルのサポートを希望する人は、このパッチをテストして、コメントで結果を返信してください。カーネル5.3を使用しました。カーネルは、行番号などが異なる場合があります。これらを再確認することをお勧めします。 Ubuntuカーネルをチェックアウトする方法- https://www.kernel.org/ のカーネルを使用しない場合:

https://wiki.ubuntu.com/KernelTeam/GitKernelBuild および 特に/ Gitを使用して現在の18.04カーネル(5.0.0-37-generic)を複製する方法/場所 および https://unix.stackexchange.com/questions/46077/where-to-download-linux-kernel-source-code-of-a-specific-version/46088#46088 および https://stackoverflow.com/questions/8519880/git-checkout-exclude-tags-remotes-from-possibilities-list および https://stackoverflow.com/questions/3404936/show- which-git-tag-you-are-on/3405221#3405221 (使用したもの:git checkout Ubuntu-hwe-5.3.0-28.30_18.04.1):

diff -Nuar btusb.c_OLD btusb.c
--- btusb.c_OLD 2020-01-29 12:32:30.383536820 +0100
+++ btusb.c 2020-01-29 12:33:49.579840488 +0100
@@ -1599,7 +1599,8 @@

    /* Detect controllers which aren't real CSR ones. */
    if (le16_to_cpu(rp->manufacturer) != 10 ||
-       le16_to_cpu(rp->lmp_subver) == 0x0c5c) {
+       le16_to_cpu(rp->lmp_subver) == 0x0c5c ||
+            le16_to_cpu(rp->lmp_subver) == 0x1113) {
        /* Clear the reset quirk since this is not an actual
         * early Bluetooth 1.1 device from CSR.
         */
@@ -3851,7 +3852,7 @@
            set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);

        /* Fake CSR devices with broken commands */
-       if (bcdDevice <= 0x100 || bcdDevice == 0x134)
+       if (bcdDevice <= 0x100 || bcdDevice == 0x134 || bcdDevice == 0x8891)
            hdev->setup = btusb_setup_csr;

        set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);

、ファイルはカーネルソースにあります:drivers/bluetooth

同じドングルを持っているかどうかを確認する方法

  1. USB BluetoothドングルをコンピューターのUSBポートに挿入します。

  2. 2つのターミナルウィンドウを開きます。

  3. 最初のウィンドウで開始してください:

    hcidump
    

Ubuntu:「bluez-hcidump」パッケージを介してプログラムをインストールできます。

  1. 2番目のウィンドウで開始してください:

    Sudo hciconfig hci0 down
    
    Sudo hciconfig hci0 up
    

BluetoothマネージャーでBluetoothドングルを有効にしてください。そうしないと、次のようなエラーメッセージが表示されます。

Can't init device hci0: Operation not supported (95)

(パッチを適用していない場合(または正しくない/サポートされていないドングルの場合))

Can't init device hci0: Operation not possible due to RF-kill (132)

(ドングルがサポートされている場合/パッチが適用されている場合に表示される可能性があります)

あなたはhciconfigプログラムをインストールすることができ、明らかにBluetoothサポートUbuntu: 'bluez'パッケージにそれを必要とします。

  1. 最初のターミナルで次の行を見つけます。

    \> HCI Event: Command Complete (0x0e) plen 12
        Read Local Version Information (0x04|0x0001) ncmd 1
    

このイベント/コマンドの質問の上部に記載されているhciconfigの同じ出力があることを確認してください。

私たちLMP Subversionと製造元を知っている必要があります。これは、私が参照しているドングルと同じであることを確認するためです。

  1. このイベント/コマンドの質問の上部に記載されているhciconfigの同じ出力があることを確認してください:

    \> HCI Event: Command Complete (0x0e) plen 6
    Delete Stored Link Key (0x03|0x0012) ncmd 1
    

、再。ステータスを返し、「エラー:サポートされていない機能またはパラメーター値」を返します。上記のとおり、パッチを適用していない限り、このメッセージが表示されます。

  1. Usb-devices reの出力が同じであることを確認してください。このコマンドの質問の上部に記載されているUSB Bluetoothドングル:

    usb-devices | awk '/0a12/' RS=
    

Ubuntu:プログラムusb-devicesを取得するには、パッケージ 'usbutils'パッケージをインストールする必要があります。

5
a.l