2017-01-30 15 views
7

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.

Antwort

1

Okay, heute fanden wir die Lösung aus:

# hciattach -r /dev/ttyS0 bcsp 115200 

Vielleicht hilft es jemand

Hilfreiche Tipps: Kann dieses link werden Ihnen hilft sein.

Ich gebe zwei Links für weitere Details und für Bluetooth click here und für die Kernel-Konfiguration click here

+1

Und für die Bluetooth-und Kernel-i zwei Links, um weitere Informationen zu bekommen, –

+0

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

Verwandte Themen