Einrichten einer Bluetooth-PAN

4332
Jon H

Ich versuche, eine Bluetooth-PAN zwischen zwei Geräten zu erstellen, über die ich über die Bluetooth-Verbindung auf REST-basierte Webdienste zugreifen kann. Ich hatte einige Erfolge mit verschiedenen Proof-of-Konzepten (sowohl bei Bluetooth als auch bei Bluetooth Smart), aber ich habe Probleme beim Versuch, ein Gruppennetzwerk oder ein PANU <-> PANU-Netzwerk zu erstellen. Ich kann ein Netzwerk mit dem Netzwerkzugriffspunktszenario zum Laufen bringen. Unser Anwendungsfall muss jedoch ein einzelnes Gerät sein, das mit einem anderen einzelnen Gerät kommuniziert, ohne dass ein Routing zu anderen Geräten oder Netzwerken erfolgt.

Zu Beginn habe ich einen Raspberry Pi mit dem neuesten Raspbian-Betriebssystem. Dies kommt mit Bluez 5.23. Damit der Netzwerkzugriffspunkt funktioniert, verwende ich den folgenden Code:

brctl addbr pan0 brctl setfd pan0 0 brctl stp pan0 off  ifconfig pan0 inet6 add fd00::5ef3:70ff:xxxx:xxxx iplink set pan0 up  bt-network –d –s nap pan0 

Das funktioniert super und ich kann sowohl Linux- als auch Windows-Geräte verbinden. Ich kann auch auf einen Apache-Webserver zugreifen, der auf dem Raspberry Pi ausgeführt wird, von dem Gerät, mit dem ich mich verbunden habe.

Auf dem Linux-Gerät verwende ich Blueman, um eine Verbindung herzustellen. Ich habe auch das BT-Netzwerk mit der Option –c verwendet, um auch eine Verbindung herzustellen. Bei einem Windows-Gerät (Windows 10-Tablet) kopple ich das Gerät und stelle dann über den Bildschirm Bluetooth-Geräte für persönliche Netzwerkgeräte eine Verbindung zum Netzwerk her. Ich musste bluetoothctl verwenden, um beiden Geräten vor dem Verbinden zu vertrauen.

Mit dem NAP-Funktionieren wollte ich versuchen, das Gruppennetzwerk oder das panu-panu-Netzwerk wie in diesem Dokument beschrieben zum Funktionieren zu bringen: http://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=6554 Diese Szenarien würden dies tun am besten für uns arbeiten, da wir keine weiteren Netzwerke oder Geräte routen möchten (das Panu-Panu-Szenario wäre ideal)

Mein erster Gedanke ist alles, was ich tun muss, um den Befehl bt-network in einen der folgenden Befehle zu ändern:

bt-network –d –s gn pan0  bt-network –d –s panu pan0 

Beide Befehle werden mit Fehlern gestartet, es kann jedoch keine Netzwerkverbindung zwischen meinen Linux- oder Windows-Geräten hergestellt werden. Ich kann die Geräte erfolgreich koppeln (ich verwende den Befehl „hciconfig hci0 piscan“, um zu werben), aber ich kann das Netzwerk nicht aufrufen.

Wenn ich hcidump starte, erhalte ich die folgende Ausgabe. Hinweis: Ich habe den gesamten hcidump aus dem Verbindungsversuch eingefügt, also ist er ziemlich lang, aber ich dachte, er könnte helfen, das Problem zu identifizieren. Dies ist für ein Gruppennetzwerk, aber ich bekomme den gleichen Fehler mit dem panu-panu-Szenario:

HCI sniffer - Bluetooth packet analyzer ver 5.23 device: hci0 snap_len: 1500 filter: 0xffffffff > HCI Event: Connect Request (0x04) plen 10 bdaddr 5C:F3:70:66:XX:XX class 0x000000 type ACL < HCI Command: Accept Connection Request (0x01|0x0009) plen 7 bdaddr 5C:F3:70:66:XX:XX role 0x00 Role: Master > HCI Event: Command Status (0x0f) plen 4 Accept Connection Request (0x01|0x0009) status 0x00 ncmd 1 > HCI Event: Role Change (0x12) plen 8 status 0x00 bdaddr 5C:F3:70:66:XX:XX role 0x00 Role: Master > HCI Event: Connect Complete (0x03) plen 11 status 0x00 handle 11 bdaddr 5C:F3:70:66:XX:XX type ACL encrypt 0x00 < HCI Command: Read Remote Supported Features (0x01|0x001b) plen 2 handle 11 > HCI Event: Command Status (0x0f) plen 4 Read Remote Supported Features (0x01|0x001b) status 0x00 ncmd 1 > HCI Event: Max Slots Change (0x1b) plen 3 handle 11 slots 5 > HCI Event: Read Remote Supported Features (0x0b) plen 11 status 0x00 handle 11 Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87 < HCI Command: Read Remote Extended Features (0x01|0x001c) plen 3 handle 11 page 1 > HCI Event: Command Status (0x0f) plen 4 Read Remote Extended Features (0x01|0x001c) status 0x00 ncmd 1 > HCI Event: Read Remote Extended Features (0x23) plen 13 status 0x00 handle 11 page 1 max 1 Features: 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 < HCI Command: Remote Name Request (0x01|0x0019) plen 10 bdaddr 5C:F3:70:66:XX:XX mode 2 clkoffset 0x0000 < ACL data: handle 11 flags 0x00 dlen 10 L2CAP(s): Info req: type 2 > HCI Event: Command Status (0x0f) plen 4 Remote Name Request (0x01|0x0019) status 0x00 ncmd 1 > HCI Event: Remote Name Req Complete (0x07) plen 255 status 0x00 bdaddr 5C:F3:70:66:XX:XX name 'raspberrypi' > HCI Event: IO Capability Response (0x32) plen 9 bdaddr 5C:F3:70:66:XX:XX capability 0x01 oob 0x00 auth 0x03 Capability: DisplayYesNo (OOB data not present) Authentication: Dedicated Bonding (MITM Protection) > HCI Event: IO Capability Request (0x31) plen 6 bdaddr 5C:F3:70:66:XX:XX < HCI Command: IO Capability Request Reply (0x01|0x002b) plen 9 bdaddr 5C:F3:70:66:XX:XX capability 0x03 oob 0x00 auth 0x02 Capability: NoInputNoOutput (OOB data not present) Authentication: Dedicated Bonding (No MITM Protection) > HCI Event: Command Complete (0x0e) plen 10 IO Capability Request Reply (0x01|0x002b) ncmd 1 status 0x00 bdaddr 5C:F3:70:66:XX:XX > HCI Event: Number of Completed Packets (0x13) plen 5 handle 11 packets 1 > HCI Event: User Confirmation Request (0x33) plen 10 bdaddr 5C:F3:70:66:XX:XX passkey 774674 < HCI Command: User Confirmation Request Reply (0x01|0x002c) plen 6 bdaddr 5C:F3:70:66:XX:XX > HCI Event: Command Complete (0x0e) plen 10 User Confirmation Request Reply (0x01|0x002c) ncmd 1 status 0x00 bdaddr 5C:F3:70:66:XX:XX > HCI Event: Simple Pairing Complete (0x36) plen 7 status 0x00 bdaddr 5C:F3:70:66:XX:XX > HCI Event: Link Key Notification (0x18) plen 23 bdaddr 5C:F3:70:66:XX:XX key 839802CBF65CA6D1D864F91831A288B0 type 4 Type: Unauthenticated Combination Key > HCI Event: Encrypt Change (0x08) plen 4 status 0x00 handle 11 encrypt 0x01 > ACL data: handle 11 flags 0x02 dlen 10 L2CAP(s): Info req: type 2 > ACL data: handle 11 flags 0x02 dlen 16 L2CAP(s): Info rsp: type 2 result 0 Extended feature mask 0x02b8 Enhanced Retransmission mode Streaming mode FCS Option Fixed Channels Unicast Connectless Data Reception < ACL data: handle 11 flags 0x00 dlen 16 L2CAP(s): Info rsp: type 2 result 0 Extended feature mask 0x02b8 Enhanced Retransmission mode Streaming mode FCS Option Fixed Channels Unicast Connectless Data Reception < ACL data: handle 11 flags 0x00 dlen 10 L2CAP(s): Info req: type 3 > ACL data: handle 11 flags 0x02 dlen 10 L2CAP(s): Info req: type 3 < ACL data: handle 11 flags 0x00 dlen 20 L2CAP(s): Info rsp: type 3 result 0 Fixed channel list 0x00000006 L2CAP Signalling Channel L2CAP Connless > HCI Event: Number of Completed Packets (0x13) plen 5 handle 11 packets 2 > ACL data: handle 11 flags 0x02 dlen 20 L2CAP(s): Info rsp: type 3 result 0 Fixed channel list 0x00000006 L2CAP Signalling Channel L2CAP Connless > ACL data: handle 11 flags 0x02 dlen 12 L2CAP(s): Connect req: psm 1 scid 0x0040 < ACL data: handle 11 flags 0x00 dlen 16 L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0040 result 0 status 0 Connection successful < ACL data: handle 11 flags 0x00 dlen 23 L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 11 RFC 0x00 (Basic)  > HCI Event: Number of Completed Packets (0x13) plen 5 handle 11 packets 2 > ACL data: handle 11 flags 0x02 dlen 23 L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 11 RFC 0x00 (Basic)  < ACL data: handle 11 flags 0x00 dlen 18 L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 4 MTU 672  > ACL data: handle 11 flags 0x02 dlen 18 L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 4 MTU 672  > HCI Event: Number of Completed Packets (0x13) plen 5 handle 11 packets 2 > ACL data: handle 11 flags 0x02 dlen 24 L2CAP(d): cid 0x0040 len 20 [psm 1] SDP SSA Req: tid 0x0 len 0xf pat uuid-16 0x0100 (L2CAP) max 65535 aid(s) 0x0000 - 0xffff cont 00 < ACL data: handle 11 flags 0x00 dlen 606 L2CAP(d): cid 0x0040 len 602 [psm 1] SDP SSA Rsp: tid 0x0 len 0x255 count 594 record #0 aid 0x0000 (SrvRecHndl) uint 0x10001 aid 0x0001 (SrvClassIDList) < uuid-16 0x1800 > aid 0x0004 (ProtocolDescList) < < uuid-16 0x0100 (L2CAP) uint 0x1f > < uuid-16 0x0007 uint 0x1 uint 0x8 > > aid 0x0005 (BrwGrpList) < uuid-16 0x1002 (PubBrwsGrp) > aid 0x000a (DocURL) url "http://www.bluez.org/" aid 0x000b (ClientExeURL) url "http://www.bluez.org/" aid 0x000c (IconURL) url "http://www.bluez.org/" aid 0x0100 (SrvName) str "Generic Access Profile" aid 0x0102 (ProviderName) str "BlueZ" record #1 aid 0x0000 (SrvRecHndl) uint 0x10002 aid 0x0001 (SrvClassIDList) < uuid-16 0x1801 > aid 0x0004 (ProtocolDescList) < < uuid-16 0x0100 (L2CAP) uint 0x1f > < uuid-16 0x0007 uint 0x10 uint 0x10 > > aid 0x0005 (BrwGrpList) < uuid-16 0x1002 (PubBrwsGrp) > aid 0x0100 (SrvName) str "Generic Attribute Profile" aid 0x0102 (ProviderName) str "BlueZ" record #2 aid 0x0000 (SrvRecHndl) uint 0x10003 aid 0x0001 (SrvClassIDList) < uuid-16 0x110e (AVRemote) uuid-16 0x110f (AVRemCt) > aid 0x0004 (ProtocolDescList) < < uuid-16 0x0100 (L2CAP) uint 0x17 > < uuid-16 0x0017 (AVCTP) uint 0x103 > > aid 0x0005 (BrwGrpList) < uuid-16 0x1002 (PubBrwsGrp) > aid 0x0009 (BTProfileDescList) < < uuid-16 0x110e (AVRemote) uint 0x105 > > aid 0x000d (AdditionalProtocolDescLists) < < < uuid-16 0x0100 (L2CAP) uint 0x1b > < uuid-16 0x0017 (AVCTP) uint 0x103 > > > aid 0x0100 (SrvName) str "AVRCP CT" aid 0x0311 (SuppFeatures) uint 0x4f record #3 aid 0x0000 (SrvRecHndl) uint 0x10004 aid 0x0001 (SrvClassIDList) < uuid-16 0x110c (AVRemTarget) > aid 0x0004 (ProtocolDescList) < < uuid-16 0x0100 (L2CAP) uint 0x17 > < uuid-16 0x0017 (AVCTP) uint 0x103 > > aid 0x0005 (BrwGrpList) < uuid-16 0x1002 (PubBrwsGrp) > aid 0x0009 (BTProfileDescList) < < uuid-16 0x110e (AVRemote) uint 0x104 > > aid 0x000d (AdditionalProtocolDescLists) < < < uuid-16 0x0100 (L2CAP) uint 0x1b > < uuid-16 0x0017 (AVCTP) uint 0x103 > > > aid 0x0100 (SrvName) str "AVRCP TG" aid 0x0311 (SuppFeatures) uint 0x5f record #4 aid 0x0000 (SrvRecHndl) uint 0x10005 aid 0x0001 (SrvClassIDList) < uuid-16 0x1117 (GN) > aid 0x0004 (ProtocolDescList) < < uuid-16 0x0100 (L2CAP) uint 0xf > < uuid-16 0x000f (BNEP) uint 0x100 < uint 0x800 uint 0x806 > > > aid 0x0005 (BrwGrpList) < uuid-16 0x1002 (PubBrwsGrp) > aid 0x0006 (LangBaseAttrIDList) < uint 0x656e uint 0x6a uint 0x100 > aid 0x0009 (BTProfileDescList) < < uuid-16 0x1117 (GN) uint 0x100 > > aid 0x0100 (SrvName) str "Network service" aid 0x0101 (SrvDesc) str "Network service" aid 0x030a (SecurityDescription) uint 0x1 cont 00 > ACL data: handle 11 flags 0x02 dlen 24 L2CAP(d): cid 0x0040 len 20 [psm 1] SDP SSA Req: tid 0x1 len 0xf pat uuid-16 0x1200 (PNPInfo) max 65535 aid(s) 0x0000 - 0xffff cont 00 < ACL data: handle 11 flags 0x00 dlen 88 L2CAP(d): cid 0x0040 len 84 [psm 1] SDP SSA Rsp: tid 0x1 len 0x4f count 76 record #0 aid 0x0000 (SrvRecHndl) uint 0x10000 aid 0x0001 (SrvClassIDList) < uuid-16 0x1200 (PNPInfo) > aid 0x0005 (BrwGrpList) < uuid-16 0x1002 (PubBrwsGrp) > aid 0x0009 (BTProfileDescList) < < uuid-16 0x1200 (PNPInfo) uint 0x103 > > aid 0x0200 (VersionNumList) uint 0x103 aid 0x0201 (SrvDBState) uint 0x1d6b aid 0x0202 (unknown) uint 0x246 aid 0x0203 (unknown) uint 0x517 aid 0x0204 (unknown) bool 0x1 aid 0x0205 (unknown) uint 0x2 cont 00 > HCI Event: Number of Completed Packets (0x13) plen 5 handle 11 packets 2 > ACL data: handle 11 flags 0x02 dlen 12 L2CAP(s): Disconn req: dcid 0x0040 scid 0x0040 < ACL data: handle 11 flags 0x00 dlen 12 L2CAP(s): Disconn rsp: dcid 0x0040 scid 0x0040 > HCI Event: Number of Completed Packets (0x13) plen 5 handle 11 packets 1 > HCI Event: Disconn Complete (0x05) plen 4 status 0x00 handle 11 reason 0x13 Reason: Remote User Terminated Connection > HCI Event: Connect Request (0x04) plen 10 bdaddr 5C:F3:70:66:XX:XX class 0x000000 type ACL < HCI Command: Accept Connection Request (0x01|0x0009) plen 7 bdaddr 5C:F3:70:66:XX:XX role 0x00 Role: Master > HCI Event: Command Status (0x0f) plen 4 Accept Connection Request (0x01|0x0009) status 0x00 ncmd 1 > HCI Event: Role Change (0x12) plen 8 status 0x00 bdaddr 5C:F3:70:66:XX:XX role 0x00 Role: Master > HCI Event: Connect Complete (0x03) plen 11 status 0x00 handle 12 bdaddr 5C:F3:70:66:XX:XX type ACL encrypt 0x00 < HCI Command: Read Remote Supported Features (0x01|0x001b) plen 2 handle 12 > HCI Event: Command Status (0x0f) plen 4 Read Remote Supported Features (0x01|0x001b) status 0x00 ncmd 1 > HCI Event: Max Slots Change (0x1b) plen 3 handle 12 slots 5 > HCI Event: Read Remote Supported Features (0x0b) plen 11 status 0x00 handle 12 Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87 < HCI Command: Read Remote Extended Features (0x01|0x001c) plen 3 handle 12 page 1 > HCI Event: Command Status (0x0f) plen 4 Read Remote Extended Features (0x01|0x001c) status 0x00 ncmd 1 > HCI Event: Read Remote Extended Features (0x23) plen 13 status 0x00 handle 12 page 1 max 1 Features: 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 < HCI Command: Remote Name Request (0x01|0x0019) plen 10 bdaddr 5C:F3:70:66:XX:XX mode 2 clkoffset 0x0000 < ACL data: handle 12 flags 0x00 dlen 10 L2CAP(s): Info req: type 2 > HCI Event: Command Status (0x0f) plen 4 Remote Name Request (0x01|0x0019) status 0x00 ncmd 1 > HCI Event: Remote Name Req Complete (0x07) plen 255 status 0x00 bdaddr 5C:F3:70:66:XX:XX name 'raspberrypi' > HCI Event: Link Key Request (0x17) plen 6 bdaddr 5C:F3:70:66:XX:XX < HCI Command: Link Key Request Reply (0x01|0x000b) plen 22 bdaddr 5C:F3:70:66:XX:XX key 839802CBF65CA6D1D864F91831A288B0 > HCI Event: Command Complete (0x0e) plen 10 Link Key Request Reply (0x01|0x000b) ncmd 1 status 0x00 bdaddr 5C:F3:70:66:XX:XX > HCI Event: Encrypt Change (0x08) plen 4 status 0x00 handle 12 encrypt 0x01 > ACL data: handle 12 flags 0x02 dlen 10 L2CAP(s): Info req: type 2 < ACL data: handle 12 flags 0x00 dlen 16 L2CAP(s): Info rsp: type 2 result 0 Extended feature mask 0x02b8 Enhanced Retransmission mode Streaming mode FCS Option Fixed Channels Unicast Connectless Data Reception > ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Info rsp: type 2 result 0 Extended feature mask 0x02b8 Enhanced Retransmission mode Streaming mode FCS Option Fixed Channels Unicast Connectless Data Reception < ACL data: handle 12 flags 0x00 dlen 10 L2CAP(s): Info req: type 3 > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 2 > ACL data: handle 12 flags 0x02 dlen 10 L2CAP(s): Info req: type 3 < ACL data: handle 12 flags 0x00 dlen 20 L2CAP(s): Info rsp: type 3 result 0 Fixed channel list 0x00000006 L2CAP Signalling Channel L2CAP Connless > ACL data: handle 12 flags 0x02 dlen 20 L2CAP(s): Info rsp: type 3 result 0 Fixed channel list 0x00000006 L2CAP Signalling Channel L2CAP Connless > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 2 > ACL data: handle 12 flags 0x02 dlen 12 L2CAP(s): Connect req: psm 15 scid 0x0040 < ACL data: handle 12 flags 0x00 dlen 16 L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0040 result 1 status 2 Connection pending - Authorization pending < ACL data: handle 12 flags 0x00 dlen 16 L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0040 result 3 status 0 Connection refused - security block > HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 2 > HCI Event: Disconn Complete (0x05) plen 4 status 0x00 handle 12 reason 0x13 Reason: Remote User Terminated Connection 

Am Ende dieses Dumps bekomme ich den Fehler: "Verbindung abgelehnt - Sicherheitsblockierung". Ich glaube, das ist das Problem, aber ich habe die Geräte an beiden Enden als vertrauenswürdig eingestuft. Ich erhalte dieselbe Fehlermeldung, unabhängig davon, ob ich versuche, einen gn oder panu als Servertyp zu verwenden und entweder eine Verbindung von Linux- oder Windows-Geräten herzustellen.

Ich sehe viele Beispiele für den Network Access Point (NAP), aber ich finde es schwer, Beispiele für das Gruppen- oder Panu-Netzwerk zu finden. Hat jemand Erfolg gehabt, ein Gruppen- oder Panu-Netzwerk mit BT-Network (BlueZ 5.23) zum Laufen zu bringen? Fehlt mir einfach etwas? Jede Hilfe wäre dankbar.

Vielen Dank

Jon

11

0 Antworten auf die Frage