Реклама Bluetooth LE
Пока Bluetooth-датчик ни с кем не соединён, он раз в несколько десятков или сотен миллисекунд выкрикивает в эфир короткий пакет «я здесь». Это реклама — механизм, через который BLE-устройства находят и маячки рассылают данные.
Обновлено Редакция GAW
Содержание
Реклама (advertising) в Bluetooth LE — рассылка коротких широковещательных пакетов, через которые устройство без соединения сообщает о себе: «я датчик такого-то типа, ко мне можно подключиться» или сразу передаёт данные, как маячок. Сканер — смартфон или шлюз — слушает эти пакеты и может запросить дополнительные данные или установить соединение. Подробный обзор стека — в статье «Bluetooth Low Energy».
Рекламные каналы
Из 40 каналов BLE по 2 МГц три — первичные рекламные с индексами 37, 38 и 39 на 2402, 2426 и 2480 МГц; остальные 37 — каналы общего назначения 0–36, на них идут соединения и вторичная реклама (Core 6.0, Vol 6, Part B, разд. 1.4). Рекламные каналы разнесены по краям и середине полосы 2,4 ГГц — по нашему пояснению, так выше шанс, что хотя бы один из них свободен от помех Wi-Fi. В каждом рекламном событии устройство отправляет один и тот же пакет по очереди на всех используемых рекламных каналах (разд. 4.4.2).
Интервал
Начала соседних событий разделены временем
advInterval кратен 0,625 мс и лежит от 20 мс до 10 485,76 с, а advDelay — случайная добавка от 0 до 10 мс, которую канальный уровень выбирает заново для каждого события, чтобы устройства с одинаковым интервалом не сталкивались постоянно (разд. 4.4.2.2.1). GAP рекомендует для LE 1M: 30–60 мс в течение не меньше 30 с при поиске по нажатию кнопки, 100–150 мс для неподключаемой рекламы по действию пользователя и 1–1,2 с для фоновой (Vol 3, Part C, разд. 9.3.11, табл. A.1).
Типы пакетов
| PDU | Подключаемый | Отвечает на сканирование | Применение |
|---|---|---|---|
| ADV_IND | да | да | обычная реклама устройства |
| ADV_DIRECT_IND | да, к одному адресу | нет | быстрое переподключение |
| ADV_SCAN_IND | нет | да | маячок с данными в ответе на сканирование |
| ADV_NONCONN_IND | нет | нет | маячок, датчик-вещатель |
Это устаревшие (legacy) рекламные PDU (Vol 6, Part B, разд. 2.3.1). В ADV_IND — адрес AdvA (6 байт) и данные AdvData от 0 до 31 байта; ещё до 31 байта — в ответе на запрос сканирования. Расширенная реклама Bluetooth 5.0 отправляет на рекламных каналах только короткий указатель, а сами данные — до 1650 байт цепочкой пакетов — на канале общего назначения (разд. 2.3.4.9); принимать её умеют не все сканеры.
Роли
Устройство, которое только рекламирует, в терминах GAP — Broadcaster, которое только слушает — Observer; подключаемое — Peripheral, подключающее — Central (Vol 3, Part C, разд. 2.2.2). Дальность связи зависит от PHY: самый дальнобойный — LE Coded. После соединения обмен идёт уже не рекламой, а событиями соединения с интервалом соединения, а данные устройства описывает GATT.
Частые вопросы
Сколько байт данных влезает в рекламу BLE?
В устаревшем рекламном пакете — 0–31 байт данных AdvData плюс 6 байт адреса AdvA. Ещё до 31 байта можно положить в ответ на запрос сканирования. Расширенная реклама Bluetooth 5 переносит данные на каналы общего назначения и позволяет передать до 1650 байт цепочкой пакетов, но её должен поддерживать и сканер.
Зачем к интервалу рекламы добавляется случайная задержка?
Чтобы два устройства с одинаковым интервалом не сталкивались в эфире постоянно. Спецификация добавляет к advInterval случайную задержку advDelay от 0 до 10 мс, которую канальный уровень выбирает заново для каждого рекламного события. Если пакеты двух устройств совпали один раз, в следующий раз они разойдутся.
Какой интервал рекламы выбрать?
По рекомендации GAP для LE 1M: 30–60 мс в течение не меньше 30 с, когда пользователь нажал кнопку и ищет устройство; 100–150 мс для неподключаемой рекламы по действию пользователя; 1–1,2 с для фоновой рекламы. Короткий интервал — быстрое обнаружение и больше потребление, длинный — экономия батареи.
Источники
- Bluetooth SIG. Bluetooth Core Specification, version 6.0 (HTML), Vol 6 Part B — Link Layer — разд. 1.4, табл. 1.3: первичные рекламные каналы 37, 38 и 39 на 2402, 2426 и 2480 МГц, каналы общего назначения 0–36; разд. 2.3: заголовок рекламного PDU 16 бит; разд. 2.3.1, рис. 2.6: ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND — устаревшие рекламные PDU; AdvA 6 байт, AdvData 0–31 байт; разд. 2.3.4.9: данные расширенной рекламы до 1650 байт, фрагменты в AUX_CHAIN_IND; разд. 4.4.2: рекламное событие — пакет на каждом используемом рекламном канале; разд. 4.4.2.2.1: T_advEvent = advInterval + advDelay, advInterval кратен 0,625 мс, от 20 мс до 10 485,759375 с, advDelay — случайный от 0 до 10 мс
- Bluetooth SIG. Bluetooth Core Specification 6.0, Vol 3 Part C — Generic Access Profile — разд. 2.2.2: роли Broadcaster, Observer, Peripheral, Central; разд. 9.3.11, табл. A.1: рекомендуемые интервалы для LE 1M — подключаемая реклама по действию пользователя 30–60 мс не меньше 30 с, неподключаемая 100–150 мс, фоновая 1–1,2 с
Нашли ошибку?
Смотрите также
- Bluetooth LE для разработчикаPHY 1M/2M/Coded, каналы 37–39, реклама, GAP и GATT, MTU, интервал соединения, скорость
- Интервал соединения BLEПериод событий соединения BLE и связанные с ним задержка и тайм-аут
- GATT (профиль атрибутов BLE)Структура данных Bluetooth LE: сервисы, характеристики, уведомления
- LE Coded PHYДальний режим Bluetooth LE с кодированием: 125 и 500 кбит/с
- FSK и GFSKЧастотная манипуляция: 0 и 1 — сдвиг на минус и плюс девиацию