Bluetooth Low Energy: подробный гайд для начинающих / Хабр

Bluetooth Low Energy: подробный гайд для начинающих / Хабр Гаджет

Что такое Bluetooth Low Energy?

Bluetooth был задуман как технология связи ближнего диапазона, призванная заменить провода в таких устройствах, как компьютерные мыши, клавиатуры или персональные компьютеры. Если у вас есть современный автомобиль или смартфон, то скорее всего вы использовали Bluetooth хотя бы раз в своей жизни. Он повсюду: в громкоговорителях и колонках, беспроводных наушниках, автомобилях, носимых устройствах и даже в шлёпанцах!

Первая официальная версия стандарта была выпущена компанией Ericsson в 1994 году. Разработчики назвали свое изобретение в честь короля Дании Харальда Гормссона по прозвищу «Синезубый», объединившего в 10 веке враждовавшие датские племена в единое королевство.

В настоящее время существует два типа устройств с поддержкой Bluetooth:

Эти два типа устройств несовместимы друг с другом, даже если они выпущены под одним брендом или спецификацией. Устройства с поддержкой Bluetooth Classic не могут напрямую связываться с устройствами, использующими BLE. Это причина, по которой некоторые устройства, такие как смартфоны, выполняются с поддержкой обоих типов соединения (так называемые Dual mode Bluetooth devices), что позволяет им обмениваться информацией с обоими типами устройств.

Рис.1: Типы Bluetooth-устройств
Рис.1: Типы Bluetooth-устройств

Несколько важных замечаний о BLE:

Поскольку во многих устройствах Интернета Вещей (IoT) используются небольшие устройства и датчики, BLE стал наиболее часто используемым протоколом связи (в сравнении с Bluetooth Classic) в приложениях Интернета Вещей. В декабре 2021 года группа компаний Bluetooth Special Interest Group (SIG), регулирующая развитие стандарта, выпустила Bluetooth версии 5.

Вы также могли слышать о другом термине, связанном с Bluetooth − Bluetooth Mesh. Bluetooth Mesh был выпущен в июле 2021 года и основан на BLE. Для работы ему требуется полный стек BLE (ПО, которое действует как интерфейс для другого программного или аппаратного обеспечения), но он не является частью основной спецификации Bluetooth. Мы рассмотрим более подробно эту технологию в отдельной главе.

Подводя итог, посмотрим на диаграмму, показывающую прогресс BLE за прошедшие годы с начала его появления:

Рис.2: История BLE
Рис.2: История BLE

3 Наиболее подходящие области применения BLE

Исходя из ограничений и преимуществ, указанных выше, существуют варианты использования, где BLE раскрывается наиболее полно:

BLE подходит для случаев, когда устройство передает небольшие объемы данных, например, данные датчиков или команды исполнительных устройств.

В случаях, когда BLE не удовлетворяет основным требованиям системы, он может использоваться для настройки устройства до того, как оно окажется подключенным к основной сети передачи данных.

Например, некоторые устройства с поддержкой WiFi добавляют BLE как вспомогательный протокол вместо использования таких технологий как WiFi Direct. Это технология, которая позволяет двум устройствам с поддержкой WiFi соединяться напрямую, минуя роутер. Вы можете узнать подробнее о ней на Википедии или здесь.

Компактные малопотребляющие устройства обычно не имеют больших экранов и зачастую отображают ограниченное количество данных конечному пользователю,например, путем светодиодной индикации. В настоящее время, благодаря широкому распространению смартфонов, BLE может предложить альтернативный, гораздо более информативный и удобный интерфейс для этих устройств. Еще одним преимуществом смартфона является возможность загрузки данных в облако.

Для случаев, когда устройство является носимым и находится вне зоны покрытия беспроводных сетей (таких как WiFi или сотовая связь), BLE может оказаться единственным доступным способом подключения.

Вероятно вы слышали или видели ранее такие устройства как маячки. У этих устройств одна простая задача – выдавать через определенные промежутки времени в эфир данные так, чтобы другие устройства могли их обнаружить и принять передаваемые данные.

Все вышеперечисленные сценарии только выигрывают от использования BLE. С другой стороны, есть условия, при которых, как правило, использование BLE невозможно или не дает ощутимых преимуществ, такие как:

3.4. Шаг 4: Присвоение UUID нашим сервисам и характеристикам

Для каждого нестандартного сервиса и характеристики мы можем использовать онлайн-инструмент для генерации UUID, например этот.

Распространенной практикой является выбор базового UUID для сервиса и увеличение значения третьего и четвертого старшего байта UUID для каждой последующей характеристики.

Для примера, возьмем следующий UUID для какого-либо сервиса:

00000001-1000-2000-3000-111122223333

И затем заменим выделенные байты на

0000000[N]-1000-2000-3000-111122223333, где N>1 — порядковый номер характеристики.

Единственное условие, которое накладывает ограничение на выбор UUID для наших сервисов и характеристик это условие несовпадения нашего UUID с базовым UUID Bluetooth SIG: XXXXXXXX-0000-1000-8000-00805F9B34FB.

Следование вышепредставленной методике выбора UUID немного упрощает понимание связей между сервисами и их характеристиками.

На таблицах ниже представлены наши сервисы, характеристики и их UUID для шлюза и пульта управления.

Таблица 3: GATT шлюза
Таблица 3: GATT шлюза

1 Удвоение скорости, увеличение дальности в 4 раза

Напомним, что PHY относится к физической части радио. Предыдущие спецификации Bluetooth (до Bluetooth 5) допускали использование только одного PHY, со скоростью передачи 1Мсим/с.Как мы упоминали ранее, Bluetooth 5 привнес два новых (опциональных) PHY:

  1. 2M PHY:
    Используется для удвоения скорости передачи (по сравнению с предыдущими версиями Bluetooth). Также добавляет несколько новых возможностей:
    Уменьшение энергопотребления за счет того, что тот же объем данных передается за меньшее время, уменьшая время нахождения передатчика в активном состоянии.
    Уменьшение уровня взаимных помех за счет меньшего времени нахождения передатчика в активном состоянии.

    Также существуют и недостатки: возможное уменьшение радиуса действия, так как увеличенная скорость передачи требует увеличенной чувствительности приемника. Кроме того, использование этого PHY запрещено для первичного адвертайзинга. Важно отметить, что появление этого PHY повлекло за собой изменения в оборудовании, так что старые микроконтроллеры и модули могут не поддерживать работу с ним.

  2. Кодированный PHY:
    Используется для четырехкратного увеличения радиуса действия приемников и передатчиков по сравнению с предыдущими версиями BLE. Очевидное преимущество в увеличенной дальности передачи имеет два недостатка:
    Увеличенное энергопотребление: так как для передачи одного бита используется несколько символов, нам требуется увеличить время активности передатчика.
    Уменьшенная скорость: по той же причине, нам остаются доступны скорости 125 кбит/с или 500 кбит/с, в зависимости от используемой схемы кодирования.

    Были достигнуты расстояния передачи до 800 метров (в пределах прямой видимости) во время тестирования. Это делает возможным использование BLE в устройствах, отдаленных на сотни метров друг от друга.

Гаджет:  Топ-5 мифов о наших гаджетах, которые в XXI веке пора забыть -

Скорости передачи, рассмотренные нами, определяют скорости, с которыми “сырые” данные передаются по радиоканалу. С учетом обязательных временных задержек между пакетами (150 микросекунд, согласно спецификации), а также служебной информации и с учетом прочих требований, накладываемых спецификацией (например ответы и пакеты подтверждения), реальная скорость передачи полезной информации будет ниже. Например, для 2M PHY максимальная скорость передачи полезных данных будет составлять порядка 1.4 Мбит/с.

2 Безопасность в BLE

Безопасность в BLE обеспечивается слоем менеджера безопасности (SM).

Рис. 22: Место менеджера безопасности в архитектуре BLE
Рис. 22: Место менеджера безопасности в архитектуре BLE

Менеджер безопасности определяет протоколы и алгоритмы для генерации и обмена ключами между двумя устройствами. Он включает в себя пять функций безопасности:

Спецификация Bluetooth постоянно развивалась, чтобы обеспечить наиболее сильные меры защиты. Особенно характерно это для BLE, который привнес концепцию безопасных соединений (LESC) в версии 4.2. LESC использует протокол Диффи-Хеллмана на эллиптических кривых (ECDH) во время процесса сопряжения, что делает соединение гораздо более безопасным в сравнении с методами, используемыми в предыдущих версиях Bluetooth.

Bluetooth 4.2 также привнес термин “устаревшее соединение”, который в совокупности относится к методам сопряжения, используемым в ранних версиях протокола. Важно отметить, что устаревшие соединения по прежнему поддерживаются в Bluetooth 4.2 и более новых.

Менеджер безопасности решает различные проблемы обеспечения безопасности следующим образом:

В BLE ведущее устройство является инициатором проведения мероприятий безопасности. Ведомое устройство может запросить о старте процедуры безопасности путем отправки запроса ведомому, однако принятие решения о начале процедуры всегда остается за ведущим.

Для лучшего понимания механизма обеспечения безопасности в BLE нам необходимо разобраться с двумя важными концепциями: сопряжением и связыванием. Но сперва давайте посмотрим на диаграмму, отображающую процесс обеспечения безопасности:

Рис. 23: Различные фазы процесса обеспечения безопасности в BLE
Рис. 23: Различные фазы процесса обеспечения безопасности в BLE

Сопряжение это комбинация фаз 1 и 2. Связывание представлено в третьей фазе процесса. Отметим, что разница между LE Legacy Connections и LE Secure Connections заключается только в реализации фазы 2.

2 Архитектура Bluetooth Mesh

Bluetooth Mesh является надстройкой над BLE. Он особым образом использует состояние адвертайзинга устройств с BLE. Устройства в сети Bluetooth Mesh не соединяются с другими так, как это делают классические устройства с BLE. Вместо этого они используют состояния адвертайзинга и сканирования для ретрансляции сообщений от одного устройства к другому.

Рис.26: Архитектура Bluetooth Mesh
Рис.26: Архитектура Bluetooth Mesh

Ниже представлено описание каждого из уровней архитектуры Bluetooth Mesh, в порядке возрастания:

  1. Уровень Bluetooth Low Energy

    Как мы упоминали ранее, Bluetooth Mesh является надстройкой над BLE, и таким образом, он требует полного стека BLE, работающего на устройстве. Он использует состояния сканирования и адвертайзинга для отправки и получения сообщений между устройствами в mesh-сети. Также он поддерживает подключенное состояние и GATT для специальных устройств, называемых прокси-устройствами.

  2. Несущий уровень

    Несущий уровень определяет то, как различные mesh-пакеты обрабатываются. Существует два вида передающих сред в Bluetooth Mesh:

    1. Передача через адвертайзинг: используются состояния сканирования и адвертайзинга.

    2. Передача через GATT: используется подключенное состояние устройств. Оно позволяет устройствам, не поддерживающим работу в mesh-сети, взаимодействовать с составляющими этой сети. Этот режим используется в прокси-устройствах.

  3. Нижний транспортный уровень

    Этот уровень решает две основные задачи: сегментация пакетов, пришедших с верхнего транспортного уровня и восстановление пакетов, пришедших с несущего уровня.

  4. Верхний транспортный уровень

    Этот уровень отвечает за шифрование и расшифровку данных, аутентификацию устройств и передачу управляющих сообщений (пульс сети, сообщения между дружественными устройствами и прочие).

  5. Уровень доступа

    Этот уровень определяет, как приложение использует верхний транспортный уровень и решает задачи форматирования данных приложения, шифрование и расшифровку а также проверку данных.

  6. Уровень фундаментальных моделей

    Этот уровень решает задачу конфигурации сети и модели управления сетью.

  7. Уровень моделей сети

    Этот уровень занимается реализацией моделей, включая их поведение, сообщения, состояния и привязки состояний.

3.7 “Издатель-подписчик”

Передача сообщений в Bluetooth Mesh сети ведется в соответствии с шаблоном проектирования “издатель-подписчик”. Суть шаблона хорошо описана в Википедии:

“Издатель-подписчик (англ.publisher-subscriber или англ.pub/sub) — поведенческийшаблон проектирования передачи сообщений, в котором отправители сообщений, именуемые издателями (англ.publishers), напрямую не привязаны программным кодом отправки сообщений к подписчикам (англ.subscribers). Вместо этого сообщения делятся на классы и не содержат сведений о своих подписчиках, если таковые есть. Аналогичным образом подписчики имеют дело с одним или несколькими классами сообщений, абстрагируясь от конкретных издателей.”

Публикация здесь – это акт отправки сообщения. Подписка –это конфигурация, используемая для того, чтобы разрешить некоторым сообщениям быть отправленными на определенные адреса для обработки. Обычно сообщения адресуются группам или виртуальным адресам.

На рисунке ниже представлен пример домашней mesh-сети, состоящей из 6 выключателей и 9 светильников. Сеть использует шаблон “издатель-подписчик” для того, чтобы позволить узлам посылать сообщения друг другу.

4.3 Дружественные и малопотребляющие узлы

Дружественные и малопотребляющие узлы тесно связаны друг с другом. Необходимым условием участия малопотребляющего узла в mesh-сети является наличие дружественных отношений с другим узлом, называемым дружественным.

Ниже представлен принцип их взаимодействия:

  • Малопотребляющий узел обычно использует ограниченный источник питания, такой как батарейки, то есть ему требуется сберегать энергию, включая радио как можно реже.

  • Малопотребляющие узлы чаще отправляют сообщения, нежели принимают их. Возьмем для примера температурный датчик, питающийся от компактной батарейки. Ему может потребоваться отправлять показания температуры раз в минуту тогда, когда они находятся выше или ниже установленных пределов. Если пользователь решает изменить установленные пределы,то он отправляет сообщение на температурный сенсор. Для того, чтобы сенсор не потерял это сообщение, он должен быть постоянно включен, тем самым потребляя большое количество энергии.

  • Для того, чтобы решить обозначенную выше проблему, вводится концепция дружественного узла, позволяющего малопотребляющему узлу дольше находиться в выключенном состоянии.

  • Дружественный узел кеширует сообщения, предназначающиеся малопотребляющему узлу. В свою очередь, малопотребляющий узел пробуждается и опрашивает дружественный узел на предмет наличия предназначенных ему сообщений. Во время опроса он также передает свои сообщения, предназначенные другим элементам сети, на дружественный узел для последующей ретрансляции.

  • Взаимоотношения между дружественным и малопотребляющим узлом называются “дружбой”.

  • Дружба это ключевая возможность, позволяющая ограниченным в запасе энергии устройствам взаимодействовать с mesh-сетью и при этом сохранять низкое энергопотребление.

Гаджет:  Обзор сушилки для обуви Xiaomi Sothing Zero Shoes Dryer: полезный гаджет по доступной цене | Mishka-Shop
Рис. 30: Дружественный и малопотребляющий узел
Рис. 30: Дружественный и малопотребляющий узел

Advertising

Посмотрим на рисунок ниже. На нем показаны распределения каналов по частотам для BLE. Рекламные каналы — это 37 (2402Мгц), 38 (2426Мгц) и 39 (2480Мгц) каналы. Такое распределение рекламных каналов выбрано не случайно. Во-первых, рекламные каналы попадают между каналами Wi-Fi (1, 6, 11 каналы), что позволяет даже при малом уровне мощности, быть услышанными другими устройствами.

Во-вторых, когда мы разносим рекламные каналы далеко друг от друга, мы получаем гарантированную доставку сообщения. Это связано с интерференцией сигнала в помещениях. Известно, что в результате отражения радиосигналов от стен, может получиться ситуация, когда приемник и передатчик не слышат друг друга.

Рассмотрим теперь формат самого пакета advertising. В спецификации длина данных измеряется в октетах. Для нас это байты. Самым первым байтом идет преамбула. Она состоит из чередующихся нулей и единиц. Это нужно для синхронизации передатчика и приемника.

Следом за преамбулой передаются четыре байта адреса доступа(Access Address). После него идет пакет данных (PDU). В спецификции 4.0 максимальная длина PDU составляет 39 байт, а в версии 5.0 длина пакета данных увеличена до 257 байт. В конце каждого рекламного пакета идут три байта контрольной суммы (CRC).

Здесь надо заметить, что Access Address служит для того, что бы устройства понимали, для кого предназначен BLE пакет. Это своеобразный код доступа. Если этот код доступа не знаком устройству, то пакет игнорируется. На всех рекламных каналах, в отличии от рабочих, он одинаков (0x8E89BED6), поэтому все устройства на каналах объявления видят друг друга.

Рассмотрим теперь формат блока данных PDU. В самом начале пакета PDU идет заголовок длинной 16 бит. В нем содержится тип пакета, флаги TxAdd, RxAdd, а так же длина всего поля PDU в байтах. RFU – это зарезервированные поля. Для спецификации 4.0 это выглядит так:


Заголовок:

Для спецификации 5.0 увеличена длина поля Payload до 255 байт, а так же добавлены новые поля в заголовок:

Заголовок:

Поле TxAdd как раз и отвечает за то, как будет видеться MAC адрес устройства. Если это поле равно единице, то МАС устройства будет виден как random. Рассмотрим теперь какие бывают типы advertising пакетов. На рисунке приведен их список для спецификации 4.0. В формате 5.0 их число увеличено, но мы будем рассматривать то, что есть в обоих форматах.


ADV_IND – это ненаправленные пакеты, которые рассылают устройства, готовые к присоединению. Большинство гаджетов при рассылке рекламных пакетов используют именно их.

ADV_DIRECT_IND — направленные рекламные пакеты присоединяемых устройств. Присоединять и обмениваться данными с ними может только конкретное устройство с заранее известным МАС адресом.

ADV_NONCONN_IND – рекламные пакеты, которые рассылают не присоединяемые устройства. Это маяки (beacon). Обычно они служат для получения какой-либо справочной информации. Например, при входе в магазин могут информировать об акциях. Кроме того, измеряя уровень сигналов от маяков и зная карту их расположения, можно осуществить автоматическое позиционирование внутри помещений. Это актуально для автоматизированных складов.

SCAN_REQ, SCAN_RSP, CONNECT_REQ – пакеты, которыми обмениваются присоединяемое устройство и телефон в процессе установления синхронного соединения. Эти пакеты и сам процесс присоединения мы рассмотрим во второй части статьи.

ADV_SCAN_IND – эти пакеты рассылает не присоединяемое устройство, которое может предоставить дополнительную информацию в ответ на запрос при сканировании.

Bluetooth sig: новый стандарт беспроводной связи блютуз

Bluetooth SIG представили новый стандарт беспроводной передачи данных, что стало большим скачком в технологии Блютуз. Вышла новинка под названием Bluetooth LE Audio, в которой реализованы фишки от Apple и Qualcomm.

В чем же преимущества обновленной технологии? Новый стандарт направлен на улучшенную работу с аудио. Многие знают, что Bluetooth сталкивается с проблемой передачи качественного звука, так как не хватает ширины канала. С Bluetooth LE Audio такая проблема сводится к минимуму, так как в нем реализован кодек с названием LC3. Он нацелен на большее качество звука, при этом потребляет меньше энергии. По данным разработчиков кодек может сжимать поток 1,5 Мбит/с 48 кГц до 192 кБит/с.

Bluetooth Low Energy: подробный гайд для начинающих / Хабр

LC3 оказался более эффективным, за счет меньшего использовании битрета. Кроме того, новый стандарт делает по умолчанию функцию, доступную только на AirPods — одновременное прямое подключение обоих наушников.

На данный момент принцип подключения работает так: подключается один наушник, который в свою очередь передает данные другому. Это провоцирует задержку и ухудшение качество звука.

Еще одна функция, которая включена в LE Audio — аудиовещание. Она дает возможность устройству передавать поток на неограниченное число аудиоприемников.

Bluetooth Low Energy: подробный гайд для начинающих / Хабр

Первые устройства с поддержкой нового стандарта выйдут в конце 2020 года или начале 2021 года. Следите за новинками в мире технологий вместе с нами!

Как взломать bluetooth low energy

Суть процесса взлома Bluetooth Low Energy можно описать следующими стадиями:

  1.  Обнаружение устройства
  2.  Считывание его сервисов и характеристик
  3.  Обнаружение среди характеристик те, которые можно перезаписать
  4.  Определение, за что отвечают характеристики
  5. Изменить значения характеристик

Четвёртый этап является творческим и самым сложным. Иногда роль характеристик можно найти в документации разработчиков для данного устройства. Иногда приходится перебирать значения и смотреть, что поменялось в устройстве. Самый сложный вариант — это обратная инженерия перехваченного Bluetooth трафика или приложения для управление устройством.


Я покажу пример изменения BLE параметров на устройстве с помощью bettercap.

Запускаем bettercap:

sudo bettercap

Вводим команду для включения модуля по обнаружению BLE устройств:

ble.recon on

При обнаружении новых устройств и при потере видимости устройств будут выводиться примерно следующие сообщения:

192.168.1.0/24 > 192.168.1.53  » [06:46:17] [ble.device.lost] BLE device Oral-B Toothbrush C8:DF:84:1A:9F:26 (Texas Instruments) lost.
192.168.1.0/24 > 192.168.1.53  » [06:49:29] [ble.device.new] new BLE device JBL Flip 3 detected as B8:D5:0B:E2:21:88 (Sunitec Enterprise Co.,Ltd) -77 dBm.
192.168.1.0/24 > 192.168.1.53  » [06:50:02] [ble.device.lost] BLE device JBL Flip 3 B8:D5:0B:E2:21:88 (Sunitec Enterprise Co.,Ltd) lost.
192.168.1.0/24 > 192.168.1.53  » [06:50:35] [ble.device.new] new BLE device detected as 7C:F1:1F:E7:B1:C1 (Apple, Inc.) -82 dBm.
192.168.1.0/24 > 192.168.1.53  » [06:51:07] [ble.device.lost] BLE device 7C:F1:1F:E7:B1:C1 (Apple, Inc.) lost.
192.168.1.0/24 > 192.168.1.53  » [06:57:55] [ble.device.new] new BLE device Oral-B Toothbrush detected as C8:DF:84:1A:9F:26 (Texas Instruments) -64 dBm.


Чтобы вывести устройства, которые в данный момент в пределах досягаемости, выполните команду:

ble.show

Для показа характеристик конкретного устройства, запустите команду следующего вида, где вместо MAC укажите MAC-адрес устройства:

Гаджет:  Подкручиваем FPS в D&D Dark Alliance без ущерба качеству

ble.enum MAC

К примеру, меня интересует устройство C8:DF:84:1A:9F:26:

ble.enum C8:DF:84:1A:9F:26

В столбце Properties вы увидите свойства данной характеристики, они могут быть:

  • READ (чтение)
  • WRITE (запись) — то есть возможно изменение данной характеристики
  • NOTIFY (уведомление)
  • INDICATE (индикатор)


В колонке Data присутствует текущее значение характеристики, либо дополнительная информация, например:

insufficient authentication (недостаточная аутентификация)

Для записи данных HEX_DATA в BLE устройство с указанным MAC адресом, в характеристику с идентификатором UUID:

ble.write MAC UUID HEX_DATA

Пример команды:

ble.write C8:DF:84:1A:9F:26 a0f0ff2350474d5382084f72616c2d42 11

Чтобы знать, что именно записывать, нужно понимать, за что отвечают характеристики. Вот пример значений для моего устройства — это электрическая зубная щётка Oral-B Genius 9000Bluetooth Low Energy: подробный гайд для начинающих / Хабр

Протокол общих атрибутов (gatt)

Используя общий протокол данных, известный как протокол атрибутов, GATT определяет, как два устройства BLE обмениваются данными друг с другом, используя понятия — сервис (service) и характеристика (characteristic). Этот протокол сохраняет все сервисы и характеристики в справочной таблице с использованием 16-битных идентификаторов, как указано в Bluetooth SIG. Важно отметить, что GATT инициируется только после того, как Advertising процесс, регулируемый GAP, завершён.

Две основные концепции, которые образуют GATT

  • Сервисы (service)
  • Характеристики (characteristic)

Сервисы

Сервисы можно представить просто как шкаф, в котором может быть много ящиков, которые в свою очередь называются характеристиками. Сервис может иметь много характеристик. Каждый сервис уникален сам по себе с универсально уникальным идентификатором (UUID), который может быть размером 16 бит для официальных адаптированных сервисов или 128 бит для пользовательских сервисов.

Характеристики

Характеристики являются наиболее фундаментальным понятием в рамках транзакции GATT. Характеристики содержат одну точку данных и схожи с сервисами, каждая характеристика имеет уникальный идентификатор или UUID, который отличается от другой характеристики.

Вот спецификации SIG для характеристик и сервисов для устройств BLE. Любое устройство BLE, которое официально приняло UUID от SIG, должно использовать идентификатор, указанный ими в своих приложениях.


Например, официальный UUID мощности передачи (TX power) в соответствии с мандатом SIG равен 0x1804.

Чтобы было наглядно, посмотрите на этот пример сервисов и характеристик конкретного устройства:

В нём «Generic Access (1800)» — это 16-битный сервис. Внутри этого сервиса, следующие 16-битные характеристики:

     Device Name (2a00)
     Appearance (2a01)
     Peripheral Privacy Flag (2a02)
     Reconnection Address (2a03)
     Peripheral Preferred Connection Parameters (2a04)

Ещё один 16-битный сервис это «Generic Attribute (1801)», он содержит только одну 16-битную характеристику: Service Changed (2a05).


Далее идут три 128-битные сервиса, первый из них «a0f0fff050474d5382084f72616c2d42», содержит четыре 128-битных характеристики:

     a0f0fff150474d5382084f72616c2d42
     a0f0fff250474d5382084f72616c2d42
     a0f0fff350474d5382084f72616c2d42
     a0f0fff450474d5382084f72616c2d42

Имеется проблема в идентификации сервисов и характеристик. Для 16-битных сервисов и характеристик всё просто, ссылки на их значения даны выше. Что касается 128-битных сервисов и характеристик, то они у каждого производителя могут быть свои. То есть нужно приложит некоторые усилия, чтобы, к примеру, сопоставить что-то вроде d0611e78-bbb4-4591-a5f8-487910ae4366 с чем-то вроде Apple Continuity Service. Для сопоставления можно использовать как минимум два подхода:

  • анализ приложения для управления устройством (многие устройства имеют программы под Android)
  • фаззинг — ввод различных данных и наблюдение за устройством, что в нём поменялось

Работа с bluetooth low energy (ble) в linux

Конечно, в Linux можно работать с устройствами, поддерживающими BLE, напрямую, без таких программ как Bettercap.

К сожалению, этот аспект довольно запутанный. В Debian и производных программы для работы с Bluetooth Low Energy собраны в пакете bluez. В Arch Linux и производных, пакет bluez также имеется, но утилиты, которые нас интересуют, помещены в пакет bluez-utils. Но не это самая большая проблема.

После очередного обновления утилит bluez, авторы вдруг признали многие важные программы «устаревшими», а именно устаревшими объявлены:

  • gatttool
  • hciattach
  • hciconfig
  • hcidump
  • hcitool
  • rfcomm
  • ciptool
  • sdptool

Поразительно, но для них не было представлено полноценных замен. Путаницу добавляет отсутствие нормальной документации и даже справки по программам.


Была составлена такая таблица замены:

Слова «отсутствует» не вселяют уверенности. По этой причине для Debian и производных этот пакет компилируется с ключом —enable-deprecated, а на Arch Linux в дополнении к пакету bluez-utils, доступному в стандартных репозиториях, в AUR имеется пакет bluez-utils-compat, в котором тоже включены устаревшие инструменты.

В относительно свежих инструкциях, для взаимодействия с Bluetooth Low Energy используются утилиты:


Поскольку они устарели и однажды всё-таки будут удалены окончательно, рассмотрим несколько простых вариантов использования их замен для поиска BLE устройств и получения с них данных.

Если запустить программу btmgmt:

sudo btmgmt

И в ней выполнить команду:

find

То она выведет список обнаруженных устройств:


Будут выведены как BLE, так и обычные Bluetooth устройства.

Другая программа:

sudo bluetoothctl

Также умеет искать BLE устройства, если ввести:

scan on

Уровень интерфейса хост-контроллера (hci)

Интерфейс хост-контроллера – это стандартный протокол, определенный спецификацией Bluetooth, который позволяет уровню хоста коммуницировать с уровнем контроллера. Эти уровни могут быть реализованы на двух раздельных микросхемах или существовать на одной.

В этом смысле он также обеспечивает взаимодействие между микросхемами, поэтому разработчик устройства может выбрать два сертифицированных Bluetooth-устройства, контроллер и хост, и быть на 100% уверенным в том, что они совместимы друг с другом в плане связи между уровнями хоста и контроллера.

В случае, когда хост и контроллер находятся на разных микросхемах, связь между ними может быть реализована посредством трех официально поддерживаемых физических интерфейсов: UART, USB или SDIO (Secure Digital Input Output). В случае, когда хост и контроллер находятся на одной и той же микросхеме, интерфейс хост-контроллера будет логическим интерфейсом.

Задача интерфейса хост-контроллера состоит в передаче команд от хоста контроллеру и передаче информации и событий от контроллера к хосту. На рисунке ниже приведен пример обмена командами и событиями между уровнями хоста и контроллера.

Рис.6: Пример пакетов интерфейса хост-контроллера
Рис.6: Пример пакетов интерфейса хост-контроллера

Примеры сообщений включают в себя: пакеты команд, настройку контроллера, запрос действий, управление параметрами соединения, пакеты событий, завершение команд и события состояния.

Оцените статью
GadgetManiac
Добавить комментарий