Я попытался выполнить шаги, предоставленные davidgyoung в this question. Вот команды, которые я использую:Неправильная полезная нагрузка при использовании блока BlueZ как периферийного устройства
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
Который дает мне этот выход:
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
Заметьте, что я не могу использовать рекомендуемую команду hciconfig hci0 leadv 0
, потому что он будет бросать ошибку Warning: unknown command - "0"
.
Однако, когда я пытаюсь читать из (например, с hcidump --raw
) полезной нагрузкой в рекламируемом пакете с другого устройства, я получаю выход так:
hcitool lescan -- duplicates
вывода сниппеты (оба записей повторяются снова и снова, глядя на MAC он должен быть таким же устройством, хотя):
00:1A:7D:DA:71:14 mint17-0
00:1A:7D:DA:71:14 (unknown)
соответствие hcidump --raw
выходного сниппет:
> 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
Я использую ключи Bluez 5.26 и CSR4.0.
Это hciconfig
выход advertisier:
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
И это hciconfig
выход из «сканера»:
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
Что я пропустил, чтобы заставить его работать?
Обновление:
Следуя совету Давида я изменил CMD значения
hcitool -i hci0 cmd 0x08 0x0008 10 02 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44
получает этот выход
< 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
, но до сих пор тарабарщину полезных нагрузок (полезная нагрузка часть hcidump --raw
выход)
af:08:0a:02:02:01:02
b7:08:0a:02:02:01:02
be:08:0a:02:02:01:02
...
Update 2:
После следующей совет я попытался добавить немного 00 к полезной нагрузке:
< 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
И здесь hcidump --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
Так до сих пор нет радости.
Было бы целесообразно попробовать другую (возможно, более старую) версию bluez? Или это может быть связано с оборудованием, и я должен попытаться получить разные Bluetooth-ключи?
Update 3:
Пробовал то же самое с Bluez 5.21, которая работает для Давида.
Вот отрывок из hcidump --raw
выхода
> 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
Имя хоста изменилось (проверено на третьей машине до сих пор), поэтому выход немного отличается, но я до сих пор не вижу «привет мир» в любом месте.
В этот момент любые идеи более чем приветствуются!
Update 4:
Пробовал другой аппаратный ключ (IOGEAR GBU521W6 как предложил Давиду), и теперь это выглядит очень многообещающе!
При использовании рекламы конфигурации:
hcitool -i hci0 cmd 0x08 0x0008 10 02 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44
Я получаю hcidump --raw
выход:
> 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
Как вы можете видеть, полезная нагрузка почти завершена, но последний символ отсутствует. Изменяя атрибут длины до 11, я получаю полную полезную нагрузку:
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
Так что для будущего (и различных полезных нагрузок): требуемая длина, кажется, байты полезной нагрузки (без признака длины) - 17 в Это дело.
Важно: Это не работает с bluez 5.26
для меня, сейчас я использую bluez 5.21
.
спасибо, имеет смысл, но все еще не получает то, что я хочу отправить (см. Обновленный вопрос). – marce
См. Мой обновленный ответ с инструкциями о том, как видеть необработанные байты при сканировании. – davidgyoung
Я уже использую 'hcidump -raw' (просто лишенный информации о не-полезной нагрузке в обновлении OP, должен был уточнить, что лучше). Я проверил связанный с вами вопрос, но кроме фильтрации, которую я считаю вторым шагом, когда я могу получить полезную нагрузку в любом месте, я не вижу другого шага, который я пропустил? – marce