Falsche Nutzlast bei Verwendung des BlueZ-Stacks als Peripheriegerät
Ich habe versucht, die von davidgyoung in @ bereitgestellten Schritte zu befolgediese Frag. Hier sind die Befehle, die ich benutze:
hciconfig hci0 up
hciconfig hci0 noleadv
hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44
hciconfig hci0 leadv
Was gibt mir diese Ausgabe:
LE set advertise enable on hci0 returned status 12
< HCI Command: ogf 0x08, ocf 0x0008, plen 10
48 45 4C 4C 4F 57 4F 52 4C 44
> HCI Event: 0x0e plen 4
01 08 20 12
Bitte beachten Sie, dass ich den empfohlenen Befehl nicht verwenden kannhciconfig hci0 leadv 0
weil es den Fehler auslöstWarning: unknown command - "0"
.
Allerdings, wenn ich versuche, auszulesen (z. B. mit einemhcidump --raw
) die Nutzlast im beworbenen Paket von einem anderen Gerät Ich erhalte eine Ausgabe wie diese:
hcitool lescan -- duplicates
Ausgabefragment (beide Einträge werden immer wieder wiederholt, auf dem MAC sollte es sich jedoch um dasselbe Gerät handeln):
00:1A:7D:DA:71:14 mint17-0
00:1A:7D:DA:71:14 (unknown)
matchinghcidump --raw
Ausgabefragment:
> 04 3E 16 02 01 04 00 14 71 DA 7D 1A 00 0A 09 09 6D 69 6E 74 31 37 2D 30 BE
> 04 3E 12 02 01 00 00 14 71 DA 7D 1A 00 06 02 01 02 02 0A 08 AD
Ich verwende die Dongles Bluez 5.26 und CSR4.0.
Dies ist dashciconfig
Ausgabe des Werbetreibenden:
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1A:7D:DA:71:14 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:1242 acl:0 sco:0 events:77 errors:0
TX bytes:2079 acl:0 sco:0 commands:77 errors:0
Und das ist dashciconfig
Ausgabe vom 'Scanner':
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1A:7D:DA:71:13 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:11753 acl:0 sco:0 events:552 errors:0
TX bytes:1842 acl:0 sco:0 commands:75 errors:0
Was habe ich verpasst, um es zum Laufen zu bringen?
Aktualisieren
Folgend Davids Rat habe ich die cmd-Werte in @ geände
hcitool -i hci0 cmd 0x08 0x0008 10 0,2 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44
diese Ausgabe erhalten
< HCI Command: ogf 0x08, ocf 0x0008, plen 18
10 02 01 1A 0C FF 18 01 48 45 4C 4C 4F 57 4F 52 4C 44
> HCI Event: 0x0e plen 4
01 08 20 12
, aber immer noch Kauderwelsch (Nutzlastanteil deshcidump --raw
Ausgabe
af:08:0a:02:02:01:02
b7:08:0a:02:02:01:02
be:08:0a:02:02:01:02
...
Update 2:
Folgend dem nächsten Hinweis habe ich versucht, der Nutzlast eine 00 hinzuzufügen:
< HCI Command: ogf 0x08, ocf 0x0008, plen 42
10 02 01 1A 0C FF 18 01 48 45 4C 4C 4F 57 4F 52 4C 44 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00
> HCI Event: 0x0e plen 4
01 08 20 12
nd hier dashcidump --raw output
> 04 3E 16 02 01 04 00 14 71 DA 7D 1A 00 0A 09 09 6D 69 6E 74
31 37 2D 30 BF
> 04 3E 12 02 01 00 00 14 71 DA 7D 1A 00 06 02 01 02 02 0A 08
AC
> 04 3E 12 02 01 00 00 14 71 DA 7D 1A 00 06 02 01 02 02 0A 08
BF
> 04 3E 16 02 01 04 00 14 71 DA 7D 1A 00 0A 09 09 6D 69 6E 74
31 37 2D 30 BF
> 04 3E 12 02 01 00 00 14 71 DA 7D 1A 00 06 02 01 02 02 0A 08
AD
So noch keine freude.
Wäre es sinnvoll, eine andere (möglicherweise ältere) Version von bluez zu verwenden? Oder kann es hardwarebezogen sein und ich sollte versuchen, verschiedene Bluetooth-Dongles zu bekommen?
Update 3:
Versuchte das gleiche mit bluez 5.21, das für David funktioniert.
Hier ist ein Ausschnitt aus demhcidump --raw
Ausgab
> 04 3E 0C 02 01 04 00 14 71 DA 7D 1A 00 00 D7
> 04 3E 22 02 01 00 00 14 71 DA 7D 1A 00 16 02 01 0A 02 0A 08
0F 09 72 73 73 6D 74 2D 63 6C 69 65 6E 74 2D 30 D4
> 04 3E 0C 02 01 04 00 14 71 DA 7D 1A 00 00 D4
> 04 3E 22 02 01 00 00 14 71 DA 7D 1A 00 16 02 01 0A 02 0A 08
0F 09 72 73 73 6D 74 2D 63 6C 69 65 6E 74 2D 30 D2
Der Hostname hat sich geändert (auf der dritten Maschine getestet), daher ist die Ausgabe etwas anders, aber ich sehe immer noch nirgendwo 'Hallo Welt'.
n dieser Stelle sind alle Ideen mehr als willkomme
Update 4:
Versuchte einen anderen Hardware-Dongle IOGEAR GBU521W6 wie von David @ vorgeschlag) und das sieht jetzt sehr vielversprechend aus!
Bei Verwendung dieser Werbekonfiguration:
hcitool -i hci0 cmd 0x08 0x0008 10 02 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44
Ich bekomme diesehcidump --raw
Ausgabe
> 04 3E 1C 02 01 00 00 BA D0 63 70 F3 5C 10 02 01 1A 0C FF 18 01 48 45 4C 4C 4F 57 4F 52 4C B5
Wie Sie sehen können, ist die Nutzlast fast vollständig, aber der letzte Buchstabe fehlt. Durch Ändern des Längenattributs auf 11 erhalte ich die volle Nutzlast:
hcitool -i hci0 cmd 0x08 0x0008 11 02 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44
----
> 04 3E 1D 02 01 00 00 BA D0 63 70 F3 5C 11 02 01 1A 0C FF 18 01 48 45 4C 4C 4F 57 4F 52 4C 44 AB
So für die Zukunft (und verschiedene Nutzdaten): Die erforderliche Länge scheint die Bytes der Nutzdaten zu sein (ohne das Längenattribut) - in diesem Fall 17.
Wichtig Es funktioniert nicht mitbluez 5.26
für mich benutze ichbluez 5.21
jetzt