Ответ 1
Я думаю, что понял.
Вместо:
sudo hciconfig hci0 up
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
sudo hciconfig hci0 leadv 3
Сделайте это:
sudo hciconfig hci0 up
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 03 00 00 00 00 00 00 00 00 07 00
sudo hcitool -i hci0 cmd 0x08 0x000a 01
Вторая команда hcitool (0x08 0x0006) - это "LE Set Advertising Parameters". Первые два байта A0 00 являются "минимальным интервалом". Вторые два байта A0 00 являются "максимальным интервалом". В этом примере он устанавливает время между рекламными объявлениями до 100 мс. Гранулярность этого параметра составляет 0,625 мс, поэтому установка интервала до 01 00 устанавливает рекламу на каждые 0,625 мс. Установка на A0 00 устанавливает рекламу для каждого 0xA0 * 0,625 мс = 100 мс. Установив его на 40 06, вы начинаете рекламировать каждые 0x0640 * 0.625ms = 1000 мс. Пятый байт 03 устанавливает режим рекламы в несъемный. С рекламой, недоступной для подключения, самым быстрым вы можете рекламировать 100 мс, с подключаемая реклама (0x00), вы можете рекламировать гораздо быстрее.
Третьей командой hcitool (0x08 0x000a) является "LE Set Advertising Enable". Необходимо выполнить эту команду с помощью hcitool вместо hciconfig, потому что "hciconfig hci0 leadv 3" автоматически установит скорость рекламы на более медленное значение по умолчанию 1280 мс.
Я понял это, запустив hcidump одновременно с запуском исходных команд, которые вы отправили в вопросе. Это показывает вам набор сырых команд hcitool (красиво аннотированных для того, что они делают), которые выполняются bluez. Я только что заметил из вывода hcidump, что "hciconfig hci0 leadv 3" выдает свою команду медленного набора рекламных интервалов.
Обратите внимание, что все это основано на IOGear GBU521, поэтому это может не работать с другими чипсетами Bluetooth LE.