uart経由でBluetoothにhciattachを使用しますか?

uart経由でBluetoothにhciattachを使用しますか?

QN9021 SoCを使用し、コントローラモード(BLE Bluetooth Core Spec v4.0)で動作します。一部の標準HCIコマンドと一部のベンダー固有のコマンドをサポートしています。 Ubuntuノートパソコンに接続しようとしています。

私が使用するコマンドはですhciattach

hciattach -s 9600 /dev/ttyUSBx any 9600 noflow nosleep 

sudo hciconfig hci1 up が実行されると、hcidump が表示されます。

HCI sniffer - Bluetooth packet analyzer ver 5.37
device: hci1 snap_len: 1500 filter: 0xffffffffffffffff
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Supported Features (0x04|0x0003) ncmd 11
    status 0x00
    Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Version Information (0x04|0x0001) ncmd 11
    status 0x00
    HCI Version: 4.0 (0x6) HCI Revision: 0x400
    LMP Version: 4.0 (0x6) LMP Subversion: 0x400
    Manufacturer: Quintic Corp. (142)
> HCI Event: Command Complete (0x0e) plen 10
    Read BD ADDR (0x04|0x0009) ncmd 11
    status 0x00 bdaddr 08:7C:BE:3E:34:BB
> HCI Event: Command Complete (0x0e) plen 11
    Read Buffer Size (0x04|0x0005) ncmd 11
    status 0x00
    ACL MTU 0:0 SCO MTU 0:0
> HCI Event: Command Complete (0x0e) plen 4
    Read Class of Device (0x03|0x0023) ncmd 11
    status 0x01 class 0x000000
    Error: Unknown HCI Command

hciconfig コマンドは次のようになります。

hci1:   Type: BR/EDR  Bus: UART
    BD Address: 08:7C:BE:3E:34:BB  ACL MTU: 0:0  SCO MTU: 0:0
    DOWN 
    RX bytes:192 acl:0 sco:0 events:15 errors:0
    TX bytes:60 acl:0 sco:0 commands:15 errors:0

hci0:   Type: BR/EDR  Bus: USB
    BD Address: C4:8E:8F:66:3B:0E  ACL MTU: 820:8  SCO MTU: 255:16
    UP RUNNING PSCAN 
    RX bytes:2457 acl:0 sco:0 events:196 errors:0
    TX bytes:24646 acl:0 sco:0 commands:196 errors:0

カーネルまたは一部のBluetoothカーネルモジュールがサポートされていないHCIコマンドを送信するのを防ぐ方法を知りたいです。 Linuxカーネルソースコードにパッチを適用するか、SoC用のモジュールを作成する必要がありますか?

注: - このプロジェクトでは、必要なすべてのコマンドをサポートするためにSoCを変更したりファームウェアを作成したりすることはできません。


編集する:

私はSoCでサポートされているHCIコマンドのリストを知っています。実行中のカーネルとデーモンにサポートされているコマンドのみをSoCに送信するように指示するモジュールを作成しようとしています。私はLinuxカーネルのソースコード(特にhci_core.c)を見ました。このリンクを編集すると問題が解決する可能性があります。このリンクでは、一部の開発者はBluetoothアダプタをサポートするパッチを提供しました。このパッチは、hci_core.cファイルが特定のHCIコマンドを特定の製造元のドングルに送信するのを防ぎます。

私が望むのは、この問題を解決する方法についてのアドバイスだけです。 Linuxカーネルを変更するか、SoC用のモジュールを作成する必要がありますか?

注:- このアプリケーションは openwrt Linux で実行されます。

ベストアンサー1

おすすめ記事