Настройки ble что это
BLE под микроскопом
BLE под микроскопом. Часть 1
Зачем придумали BLE
Как только люди научились передавать информацию без помощи проводов, встала задача передачи данных, используя устройство с батарейным питанием. Проблема в том, что ему должно помогать другое устройство, которое будет постоянно либо прослушивать эфир, либо передавать данные. Проблема возникает в том случае, если и приемник и передатчик имеют батарейное питание. В этом случае приходит на помощь BlueTooth Low Energy (BLE). Он впервые вошел в протокол BlueTooth 4.0. На данный момент уже вышла спецификация BlueTooth 5.0, однако мы будем рассматривать в основном формат BlueTooth 4.0, иногда указывая нововведения для формата 5.0. В качестве одного из устройств обычно выступает смартфон, а второго — батарейный гаджет. Андроид поддерживает BLE с версии 4.3.
Для передачи и приема данных необходима энергия, поэтому поднимают скорость передачи данных, что бы в единицу времени успеть передать больше информации. Для этого в BLE принята скорость передачи информации в 1 Mbit/c. Однако не только скорость передачи данных важна. Самым важным в BLE является то, что устройства связи умеют переходить в синхронный режим работы. Другими словами, устройства спят 99% времени, потом просыпаются на очень короткое время, обмениваются информацией и опять засыпают. Однако перед тем как войти в этот режим, необходимо пройти процедуру синхронизации. Для этого существует режим «advertising». Его мы рассмотрим позднее. А перед тем как погрузится в описание протокола BLE, хотелось бы затронуть тему инструментальных средств, для работы с протоколом BLE.
Инструменты
Для того чтобы разобраться во всем многообразии посылок и запросов нам необходимы инструментальные средства. С их помощью мы смогли бы увидеть содержимое посылок и проконтролировать механизм взаимодействия между устройствами. Для этих целей мы будем использовать nRF51822 Development Dongle (PCA10000), программу сниффера и, для отображения результатов, хорошо известную всем сисадминам программу «Wireshark».
Программы бесплатные, но достать сам донгл может оказаться проблемой. Однако без инструментария, заниматься разработкой таких сложных устройств будет весьма проблематично. На первом этапе может помочь программа на андроиде «nRF Connect».
Она позволяет сканировать эфир, находить и разбирать посылки как присоединяемых, так и не присоединяемых устройств. У Nordic-a есть и ещё инструменты для разработки BLE устройств, но нам будет достаточно этих. На российском рынке присутствует представитель компании Nordic – фирма «Rutronik» (rutronik24.com, rutronik.com). Через её представителей можно приобрести необходимые микросхемы, отладочные платы и т.д. Кроме того, в интернете имеется форум, на котором представители фирмы отвечают на вопросы разработчиков.
Сначала вкратце поговорим о том, как пользоваться нашими инструментами. Вставим в разъем USB наш донгл и запустим программу ble_sniffer_win. Мы увидим следующее окно.
Если донгл увидит BLE устройства, то внизу появится информация о них. В данном случае, в эфире присутствует одно устройство с именем «TestBLE». Так же отображается его уровень сигнала, MAC адрес и то, что этот адрес является случайным (random). Забегая вперед, хочется заметить, что здесь кроется один из подводных камней для разработчиков. Некоторые телефоны (LG G3S, Samsung S6) работают только с устройствами, MAC адреса которых зарегистрированы (public).
У сниффера есть два режима работы. Если мы нажмем кнопку «w» на клавиатуре, то запустится программа «Wireshark». Сниффер будет сканировать три рекламных канала и выдавать информацию обо всех устройствах объявления. Если мы сначала нажмем цифру на клавиатуре, такую же, как напротив интересующего нас устройства, то включится другой режим работы. В нем сниффер будет отслеживать трафик только одного выбранного устройства, причем как на каналах объявления, так и на рабочих каналах
Используя «Wireshark», легко получить всю информацию о посылке. Программа состоит из трех окон. Сверху отображаются все принятые посылки, во втором окне – детальная информация о выбранном пакете, а в третьем окне отображается сам фрейм. В свою очередь, во втором окне имеется три блока информации. В самом верхнем – временные значения выбранного фрейма, во втором (Nordic BLE sniffer meta) – общая информация о фрейме, такие как уровень сигнала, частотный канал и некоторые другие. Самым интересным для нас является третий блок информации (Bluetooth Low Energy Link Layer). В нем можно посмотреть разбор самого фрейма. В дальнейшем мы будем говорить именно об этом блоке информации. Сначала мы разберем формирование рекламных пакетов.
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 – эти пакеты рассылает не присоединяемое устройство, которое может предоставить дополнительную информацию в ответ на запрос при сканировании.
Во второй части статьи мы рассмотрим различные режимы работы BLE устройств, а так же механизм «присоединения» устройства к телефону и переход на рабочие частоты.
Протокол Bluetooth Low Energy: поддержка устройствами и специфика работы
Способов трансляции данных «по воздуху» создано и используется довольно много. Популярностью обзавелся протокол BLE, который внедрен в электронику различного типа и успешно используется и по сей день. Что из себя представляет данный протокол и в каких сферах применим — рассмотрено в этой статье.
Зачем разработали BLE
После изучения и успешного применения передачи информации без проводов, появилась потребность передавать данные, используя устройства с автономными источниками питания. Проблема состоит в том, что с этим устройством должно работать еще одно, которое постоянно передает данные либо слушает эфир.
Если у приемника и передатчика имеется батарейное питание, то наблюдаются проблемы со связью при разрыве постоянной передачи связи для экономии энергии, которые решили с новым протоколом передачи данных BlueTooth Low Energy (BLE).
BLE – это режим низкого энергопотребления, способствующий экономии заряда аккумулятора у сопряженных устройств.
Протокол стал частью Bluetooth 4.0. Операционная система Android поддерживает BLE с версии 4.3. В качестве пары, работающей с BLE, берется телефон с современной ОС, совместно с батарейной малой техникой (например, гарнитура). Но не исключены и взаимодействия иных гаджетов.
Чтобы принимать и передавать данные в необходимом объеме беспроводным способом, в стандарт Bluetooth LE включена скорость передачи информации, равная 1 Мбит/сек. Постоянный обмен данными затрачивает энергию, тем самым расходуя ее запасы. Поэтому протокол подразумевает разрыв постоянного эфира для экономии. Поэтому в протоколе не только важна скорость, а и то, что гаджеты умеют синхронизироваться друг с другом тогда, когда это необходимо.
Около 99% всего времени гаджеты спят и экономят энергию. Потом просыпаются на короткий период для обмена данными и снова засыпают. Но чтобы пребывать в данном режиме, устройства сперва между собой необходимо синхронизировать. Этот режим и называется advertising.
В каких сферах применяется
Протокол BLE используется по сценарию: редко передавать данные и обрабатывать долгое время. В частности, возможно использование двухрежимных гаджетов BLE в смартфонах, планшетных ПК, ноутбуках. Однорежимные могут использоваться во множестве сфер деятельности. Под эти сферы попадают устройства из разделов здоровья, автоматизации, анализа, управления.
Множество задач могут решаться, когда в радиусе двухуровневого модуля определяются иные одноуровневые BLE-приборы. К этим приборам относятся приборы-сигнализаторы, что уведомляют владельца об удалении от сумки, барсетки, кошелька, переносной тары и иных персональных вещей, оснащенных BLE-модулем. Отличное применение данным брелкам с BLE находят в качестве маячков для ребенка, чтобы не потерять его в достаточно людных местах.
Устойчивая работа и низкое энергопотребление протокола BLE позволяют рассматривать его в качестве замены NFC, а именно RFID-меток. Но вариант совмещенной работы BLE + NFC выглядит более привлекательно. BLE дает большой радиус, сопряженный с устойчивой работой, второй отвечает за логическое сопряжение пары, плюс обеспечивает надежную защиту за счет малого радиуса действия.
Не обходят стороной данную спецификацию в системах умных домов. Работа приборов через блютуз с низким энергопотреблением позволяет открывать удаленно двери, ворота и приводить в действие прочие механизмы с большого расстояния, подолгу не меняя аккумулятор в беспроводном и компактном органе управления.
Кроме того, внедрение в смартфон, который всегда под рукой, BLE-модуля позволит на приличном удалении через сопряженные каналы управлять любыми приборами и аксессуарами умного дома. Или подключаться к сенсорной панели для удаленного управления с другой комнаты.
Поддерживаемые устройства
Определение поддержки
Множество таких «определителей» находится в Play Market и доступны для использования бесплатно. Модели телефонов, выпущенные до 2015 года включительно, могут не поддерживать данную опцию.
Вопросы безопасности BLE
Защита канала передачи данных между парой устройств в протоколе BLE обусловлена двумя режимами LE Секьюрити мод 1 и LE Секьюрити мод 2. Первый режим работает на Data Link layer (DLL), второй на AT&T.
На DLL в протоколе Bluetooth LE присутствует шифрование и аутентификация с помощью технологии построения аутентификационного кода сообщения из блочного алгоритма шифрования (CCM) и шифра AES-128. При работе CCM и AES-128, добавляется к ним Protocol Data Unit и дополнительное сообщение для идентификации целостности, размером 4-байта, после которого PDU и сообщение шифруются.
Режимы безопасности включают в себя несколько уровней, используемых в зависимости от типа соединения.
Различия протоколов Bluetooth
Так как Блютуз с низким энергопотреблением вошел в спецификацию Bluetooth 4.0, то технические сравнения проведены с классической версией.
Устаревший инструмент | Самая подходящая замена |
---|---|
gatttool | btgatt-client, D-Bus Gatt API |
hciattach | btattach |
hciconfig | btmgmt (и bluetoothctl?) |
hcidump | btmon (и btsnoop) |
hcitool | отсутствует, доступно в D-Bus Device API |
rfcomm | отсутствует, реализовано в D-Bus Profile1 API? |
ciptool | |
sdptool | отсутствует, кажется, что функциональность разбросана по разным объектам D-Bus: Profile, Advertising, и массивы UUIDs в device и adapter. |
Слова «отсутствует» не вселяют уверенности. По этой причине для Debian и производных этот пакет компилируется с ключом —enable-deprecated, а на Arch Linux в дополнении к пакету bluez-utils, доступному в стандартных репозиториях, в AUR имеется пакет bluez-utils-compat, в котором тоже включены устаревшие инструменты.
В относительно свежих инструкциях, для взаимодействия с Bluetooth Low Energy используются утилиты:
Поскольку они устарели и однажды всё-таки будут удалены окончательно, рассмотрим несколько простых вариантов использования их замен для поиска BLE устройств и получения с них данных.
Если запустить программу btmgmt:
И в ней выполнить команду:
То она выведет список обнаруженных устройств:
Будут выведены как BLE, так и обычные Bluetooth устройства.
Также умеет искать BLE устройства, если ввести:
С помощью команды connect можно подключиться к устройству, для этого нужно указать его MAC-адрес:
Информация по устройству:
Если перейти в меню GATT:
То можно получить список характеристик:
А также перезаписать характеристики устройства.
Для получения информации по отдельным характеристикам:
Ещё одна программа, которая выведет сразу все характеристики устройства — btgatt-client. Например, выполним подключение и посмотрим характеристики устройства с MAC C8:DF:84:1A:9F:26:
В дополнении к рассмотренным программам, в отдельной консоли можно запустить Bluetooth monitor:
Как и полагается программе-монитору, она будет выводить множество информации о происходящем с Bluetooth и об обнаруженных устройствах.
Заключение
Системные утилиты Linux для работы с Bluetooth заслуживают более внимательного изучения — с их помощью можно узнать более подробную информацию о своей системе и сделать тонкую настройку Bluetooth адаптера.
Также с помощью них можно реализовать сканеры BLE и Bluetooth устройств и/или написать или приспособить фаззеры для исследования назначения характеристик BLE устройств. Поэтому вполне возможно, что в одной из следующих статей будут более подробно рассмотрены программы для работы с BLE.
- Как вспомнить что приснилось ночью
- Моя жена ревнует что мне делать