Ich verwende QN9021
SoC arbeitet in controller mode
(BLE Bluetooth Kernspezifikation v4.0). Es unterstützt einige Standard HCI
Befehle sowie einige herstellerspezifische Befehle. Ich versuche, es in meinem ubuntu
Laptop zu befestigen.Bluetooth über uart mit hciattach?
Der Befehl, den ich verwendet habe, ist hciattach
.
hciattach -s 9600 /dev/ttyUSBx any 9600 noflow nosleep
Die hcidump
zeigt, während sudo hciconfig hci1 up
ausführt.
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
Der hciconfig
Befehl zeigt:
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
Ich mag würde wissen, wie der Kernel oder ein Bluetooth-Kernel-Modul zu verhindern, nicht unterstützte HCI-Befehle zu senden. Muss ich den Linux Kernel Quellcode patchen oder ein Modul für meinen SoC schreiben?
Hinweis: - Das Ändern des SoC oder das Schreiben von Firmware für die Unterstützung aller erforderlichen Befehle ist für dieses Projekt nicht möglich.
EDIT:
Ich weiß, dass die Liste der HCI
Befehl von meinem SoC unterstützt. Ich denke daran, eine module
zu erstellen, um dem Kernel und den Daemons mitzuteilen, dass sie nur unterstützte Befehle an den SoC senden. Ich betrachte die Linux-Kernel-Quelle (speziell unter hci_core.c). Ich denke, es zu ändern, kann das Problem lösen, nachdem Sie diese link durchlaufen haben. In diesem Link hat ein Entwickler einen Patch zur Unterstützung einer bluetooth dongle
bereitgestellt. Der Patch verhindert, dass die Datei hci_core.c einen bestimmten HCI-Befehl an einen Dongle eines bestimmten Herstellers sendet.
Alles, was ich will, ist Vorschlag, dieses Problem zu lösen. Muss ich den Linux Kernel ändern oder ein Modul für mein SoC schreiben?
HINWEIS: - Die Anwendung wird auf openwrt
Linux ausgeführt.
Und für die Bluetooth-und Kernel-i zwei Links, um weitere Informationen zu bekommen, –
habe ich versucht, RAW-Modus aber es hat nicht geholfen. Ich habe einen Patch im Kernel installiert und mein Gerät funktioniert jetzt. Ich werde bald meinen Patch und andere Details veröffentlichen – abhiarora