Bluetooth через uart с помощью hciattach?

Он использует QN9021 SoC, работающий в режиме контроллера (спецификация ядра BLE Bluetooth v4.0). Он поддерживает некоторые стандартные команды HCI, а также некоторые специальные команды поставщика. Я пытаюсь прикрепить его в своем ноутбуке ubuntu.

Команда, которую я использовал, – hciattach .

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

Показывается hcidump при выполнении sudo hciconfig hci1.

 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 или записи прошивки для поддержки всех необходимых команд для этого проекта невозможно.


РЕДАКТИРОВАТЬ:

Я знаю список HCIcommand, поддерживаемый моим SoC. Я думаю о создании модуля, чтобы сообщить ядру и демонам, запущенным для отправки только поддерживаемых команд в SoC. Я смотрю на источник ядра linux (особенно на этом hci_core.c). Я думаю, что его изменение может решить проблему после прохождения этой ссылки. В этой ссылке некоторые разработчики предоставили патч для поддержки Bluetooth-ключа. Патч предотвращает файл hci_core.c для отправки определенной команды HCI на ключ определенного производителя.

Все, что я хочу, это предложение решить эту проблему. Нужно ли мне модифицировать ядро ​​Linux или написать модуль для моего SoC?

ПРИМЕЧАНИЕ. – Приложение будет запускаться в openwrt linux.