Carga útil incorreta ao usar a pilha BlueZ como periférico

Tentei seguir os passos fornecidos por davidgyoung emessa questão. Aqui estão os comandos que eu uso:

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

O que me dá essa saída:

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 

Observe que não posso usar o comando recomendadohciconfig hci0 leadv 0 porque vai lançar o erroWarning: unknown command - "0".

No entanto, quando tento ler (por exemplo, com umhcidump --raw) a carga útil no pacote anunciado de outro dispositivo, estou obtendo uma saída como esta:

hcitool lescan -- duplicates snippet de saída (ambas as entradas são repetidas várias vezes, olhando para o MAC, porém, deve ser o mesmo dispositivo):

00:1A:7D:DA:71:14 mint17-0
00:1A:7D:DA:71:14 (unknown)

Coincidindohcidump --raw snippet de saída:

> 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     

Estou usando os dongles Bluez 5.26 e CSR4.0.
Isto é ohciconfig saída do anunciante:

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

E este é ohciconfig saída do '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

O que eu senti falta de fazê-lo funcionar?

Atualizar:
Seguindo o conselho de David, alterei os valores de cmd para

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

recebendo esta saída

< 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 

, mas ainda cargas úteis sem sentido (parte da carga útil dohcidump --raw resultado)

af:08:0a:02:02:01:02
b7:08:0a:02:02:01:02
be:08:0a:02:02:01:02
...

Atualização 2:
Seguindo o próximo conselho, tentei adicionar alguns 00 à carga útil:

< 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

E aqui ohcidump --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 

Então ainda não há alegria.
Faria sentido tentar uma versão diferente (talvez mais antiga) do bluez? Ou pode estar relacionado ao hardware e devo tentar obter diferentes dongles Bluetooth?

Atualização 3:
Tentei o mesmo com o bluez 5.21, que funciona para David.

Aqui está um trecho dohcidump --raw resultado

> 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

O nome do host mudou (testado na terceira máquina até agora), portanto a saída é um pouco diferente, mas ainda não vejo 'olá mundo' em qualquer lugar.

Neste ponto, quaisquer idéias são mais que bem-vindas!

Atualização 4:
Tentei um dongle de hardware diferente (IOGEAR GBU521W6 como sugerido por David) e isso parece muito promissor agora!

Ao usar esta configuração de publicidade:

hcitool -i hci0 cmd 0x08 0x0008 10 02 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44

Eu entendi issohcidump --raw resultado:

> 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

Como você pode ver, a carga útil está quase completa, mas o último caractere está ausente. Alterando o atributo length para 11, recebo a carga útil completa:

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

Portanto, para o futuro (e diferentes cargas úteis): o comprimento requerido parece ser os bytes da carga útil (sem o atributo length) - 17 neste caso.

Importante: Não funciona combluez 5.26 para mim eu estou usandobluez 5.21 agora.

questionAnswers(1)

yourAnswerToTheQuestion