Вы можете сделать это по крайней мере с необработанными командами HCI, которые вы можете ввести с помощью hcitool.Ключевая команда HCI, которая вам нужна, это «Команда установки рекламных параметров LE» (ogf = 0x08, ocf = 0x0006).Ниже приведен пример установки объявления типа 2 для адреса равноправного узла 66: 55: 44: 33: 22: 11.
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 02 01 00 11 22 33 44 55 66 07 00
Первый A0 00 - это минимальный интервал объявления (0x00A0 x 0,625 мс = 100 мс) ивторое - это максимальный рекламный интервал (вы, возможно, захотите немного их разделить).Затем следуют тип (02), собственный тип адреса (01 для случайного), тип удаленного адреса (00 для публичного), адрес партнера, карта канала (07 означает рекламу на каналах 37, 38 и 39) и политика фильтрации (00 означает разрешениевсе).Более подробную информацию можно прочитать, например, в спецификации Bluetooth, версия 5.0, том 2, часть E, глава 7.8 (можно загрузить с https://www.bluetooth.com/specifications/bluetooth-core-specification).
). Обратите внимание, что реклама не должна быть активной при использовании этой команды, иначе она не будет выполнена.
Также обратите внимание, что некоторые из инструментов, которые вы упомянули в своем вопросе, могут устанавливать свои значения по умолчанию для этих параметров, например, изменить интервал объявления на что-то большее. По этой причине безопаснее всего включить рекламу с помощью команды raw HCI.а также, что просто:
sudo hcitool -i hci0 cmd 0x08 0x000a 01
Ради полноты, вот набор команд для запуска направленной рекламы с определенной полезной нагрузкой поставщика (в данном случае Apple, которую вы, очевидно, не должны использовать без разрешения)Полезная нагрузка на рекламу устанавливается с 0x08 0x0008.
sudo hciconfig hci0 up
sudo hcitool -i hci0 cmd 0x08 0x0008 0b 09 ff 4c 00 30 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 02 00 01 11 22 33 44 55 66 07 00
sudo hcitool -i hci0 cmd 0x08 0x000a 01
Вы можете контролировать интерфейс HCI с помощью btmon (поставляется с BlueZ), выполняя эти или любые другие команды. Он хорошо анализирует пакеты, так что вы можете легко увидетькак редактирование вашей необработанной команды меняет смыслнг.Он также выделяет любые неисправные команды HCI, которые он замечает.