Неправильная полезная нагрузка при использовании стека 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 Вывод рекламодателя:

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 0,2 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
...

Обновление 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?

Обновление 3:
Пробовал то же самое с bluez 5.21, который работает для David.

Вот фрагмент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

Имя хоста изменилось (до сих пор тестировалось на третьей машине), поэтому вывод немного отличается, но я до сих пор нигде не вижу «Hello World».

На данный момент любые идеи приветствуются!

Обновление 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 сейчас.

Ответы на вопрос(0)

Ваш ответ на вопрос