Bluetooth serial port что это

Обновлено: 06.07.2024

Вполне возможно, что именно с этими словами средневекового датского короля Харальда II Синезубого (Harald II Bluetooth) связано его другое прозвище - "объединитель", через 1000 лет ставшее названием нового интерфейса беспроводной связи.

Что же такое Bluetooth? Это технология беспроводной связи, созданная в 1998 году группой компаний: Ericsson, IBM, Intel, Nokia, Toshiba. В настоящее время разработки в области Bluetooth ведутся Bluetooth SIG (Special Interest Group), в которую входят также Lucent, Microsoft и многие другие.

Основное назначение Bluetooth - обеспечение экономичной (с точки зрения потребляемого тока) и дешевой радиосвязи между различными типами электронных устройств, причем немалое значение придается компактности электронных компонентов, что дает возможность применять Bluetooth в малогабаритных устройствах размером с наручные часы.

Интерфейс Bluetooth позволяет передавать как голос (со скоростью 64 Кбит/сек), так и данные. Для передачи данных могут быть использованы асимметричный (721 Кбит/сек в одном направлении и 57,6 Кбит/сек в другом) и симметричный методы (432,6 Кбит/сек в обоих направлениях). Работающий на частоте 2.4 ГГц приемопередатчик, коим является Bluetooth-чип, позволяет в зависимости от степени мощности устанавливать связь в пределах 10 или 100 метров. Разница в расстоянии, безусловно, большая, однако соединение в пределах 10 м позволяет сохранить низкое энергопотребление, компактный размер и достаточно невысокую стоимость компонентов. Так, маломощный передатчик потребляет всего 0.3 мА в режиме standby и в среднем 30 мА при обмене информацией.

Bluetooth работает по принципу FHSS (Frequency-Hopping Spread Spectrum). Вкратце это можно объяснить так: передатчик разбивает данные на пакеты и передает их по псевдослучайному алгоритму скачкообразной перестройки частоты (1600 раз в секунду), или шаблону (pattern), составленному из 79 подчастот. "Понять" друг друга могут только те устройства, которые настроены на один и тот же шаблон передачи - для посторонних приборов переданная информация будет обычным шумом.

Основным структурным элементом сети Bluetooth является так называемая "пикосеть" (piconet) - совокупность от 2 до 8 устройств, работающих на одном и том же шаблоне. В каждой пикосети одно устройство работает как master, а остальные как slave. Master определяет шаблон, на котором будут работать все slave-устройства его пикосети, и синхронизирует ее работу. Стандарт Bluetooth предусматривает соединение независимых и даже не синхронизированных между собой пикосетей (до 10) в так называемую "scatternet" (я еще не встречал корректного русского перевода этого термина, но один из вариантов перевода глагола to scatter звучит как "рассеивать"). Для этого каждая пара пикосетей должна иметь как минимум одно общее устройство, которое будет master'ом в одной и slave'ом в другой. Таким образом, в пределах отдельной scatternet с интерфейсом Bluetooth может быть одновременно связано максимум 71 устройство, однако никто не ограничивает применение устройств-гейтов, использующих тот же Internet для более дальней связи.

Частотный диапазона Bluetooth в большинстве стран свободен от лицензирования, но во Франции, Испании и Японии из-за законодательных ограничений необходимо использовать отличные от указанных выше частоты.

Говоря о беспроводной связи, нельзя не затронуть вопрос безопасности такого соединения. Помимо фокуса с частотными шаблонами и необходимости синхронизации приемопередачи в стандарте Bluetooth предусмотрено шифрование передаваемых данных с ключом эффективной длины от 8 до 128 бит и возможностью выбора односторонней или двусторонней аутентификации (конечно, можно обойтись вообще без аутентификации), что позволяет устанавливать стойкость результирующего шифрования в соответствии с законодательством каждой отдельной страны (в некоторых странах запрещено использование сильной криптографии:). В дополнение к шифрованию на уровне протокола может быть применено шифрование на уровне приложений - здесь уже применение сколь угодно стойких алгоритмов никто не ограничивает.

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

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

Основным направлением использования Bluetooth должно стать создание так называемых персональных сетей (PAN, или private area networks), включающих такие разноплановые устройства, как мобильные телефоны, PDA, МР3-плееры, компьютеры и даже микроволновые печи с холодильниками (вот уж что давно не подключали в сеть ). Возможность передачи голоса позволяет встраивать интерфейс Bluetooth в беспроводные телефоны или, например, беспроводные гарнитуры для сотовых телефонов. Возможности применения Bluetooth на практике безграничны: помимо синхронизации PDA с настольным компьютером или подсоединения относительно низкоскоростной периферии вроде клавиатур или мышей интерфейс позволяет очень просто и с небольшими затратами организовать домашнюю сеть. Причем узлами этой сети могут быть любые устройства, имеющие потребность в информации либо обладающие необходимой информацией.

Давайте сравним Bluetooth с другим не менее известным интерфейсом беспроводной связи - IEEE 802.11, тем более что оба решения уже доступны на широком рынке. Основные различия между ними можно свести к следующему:

IEEE 802.11 Bluetooth
1. Назначение Беспроводные домашние/офисные сети Замена кабельных соединений для компактных коммуникационных средств
2. Рабочая частота 2.4 ГГц 2.4 ГГц
3. Максимальная скорость передачи данных 11 Мбит/сек (IEEE 802.11b), 2Мбит/сек (IEEE 802.11) 721 Кбит/сек
4. Дальность действия 100 м 10 м или 100 м
5. Максимальное количество узлов 128 устройств на сеть 8 устройств на одну пикосеть, макс. 10 пикосетей, т.е. до 71 устройства на один scatternet
6. Голосовые каналы Нет (опционально) 3 канала
7. Доступность Сейчас Сейчас
8. Цена $100-$400 за узел Около $5 за узел

Как легко заметить, интерфейс Bluetooth намного лучше приспособлен для использования в тех беспроводных устройствах связи, где требуется достаточно низкая цена, нет необходимости в высоких скоростях и желательно низкое энергопотребление. Однако, как уже отмечалось, возможно создание комбинированных сетей, тем более что IEEE 802.11 работает совершенно по другому принципу кодирования передаваемых данных, следовательно, находясь на одной и той же рабочей частоте, оба стандарта будут слышать друг друга физически, но чужие сигналы будут расценены каждым из них как посторонний шум.

Немаловажным аспектом в развитии Bluetooth является тот факт, что эта технология не подлежит лицензированию и ее использование не требует выплаты каких-либо лицензионных отчислений (хотя и требует подписания бесплатного соглашения). Такая политика позволила многим компаниям энергично включиться в процесс разработки устройств с интерфейсом Bluetooth, кои были в большом количестве продемонстрированы на выставке CeBIT 2001.

Наибольший интерес, естественно, вызывают устройства, обеспечивающие переход с уже существующих интерфейсов на Bluetooth. Одним из них стало Industrial Bluetooth Serial Port Adapter шведской компании connectBlue. Как видно из названия, это устройство предназначено для промышленного применения и позволяет подключать к Bluetooth любые приборы, оборудованные последовательным портом:


Типичным вариантом использования может стать, например, конфигурирование промышленных установок при помощи ноутбука.

  • дальность действия - до 10 м,
  • скорость передачи - 300-115200 Кбит,
  • напряжение питания - 9-30 Вольт.

Компания Belkin, знаменитая, в частности, своими продуктами для шины USB, представила целый набор устройств Bluetooth:


Эта карта формата PCMCIA Type II позволяет всем устройствам, имеющим подобный слот, получить Bluetooth интерфейс со скоростью до 721 Кбит/сек. Дальность действия - 10 м.


Здесь мы видим отличное USB решение для настольных (и не только) компьютеров: характеристики те же, что и в предыдущем случае, к тому же это устройство позволяет обмениваться данными по голосовым каналам.


Есть даже адаптер для Palm V: Palm просто кладется в него, как в стандартную кроватку, после чего можно синхронизироваться с настольным компьютером или выходить в Интернет при помощи мобильного телефона, также снабженного Bluetooth интерфейсом. Данный адаптер питается от батареи самого Palm'а.

На выставке можно было найти даже Bluetooth адаптер для Compact Flash:


Компания Troy XCD представила адаптер для подключения принтера с интерфейсом Centronics к Bluetooth:


Компания обещает выпустить его на рынок в начале лета, примерная стоимость - около 195$.

Не менее интересным вариантом применения технологии Bluetooth может стать организация беспроводного доступа в локальную сеть и/или Интернет для устройств в малом офисе или дома. Безусловным лидером в этой области стала компания Red-M , представившая свое решение - сервер Red-M 3000AS:


А вот фотография его прототипа в работе:


3000AS представляет собой Linux-сервер, который может также работать как шлюз в локальную сеть или Интернет. В отличие от большинства других Bluetooth-устройств 3000AS имеет мощный приемопередатчик, обеспечивающий связь в пределах 100 м, причем в комплект входит внешняя антенна, повышающая надежность связи при наличии внешних помех. Для подключения можно использовать ISDN (с выбором вариантов "постоянно онлайн" или "подключение по требованию"), 10/100 Мбит Ethernet, а также RS-232 для сервисного применения. Сервер может также быть запитан через UPS.

Для расширения доступа к серверу могут использоваться малогабаритные точки доступа Red-M 1000AP:


Сервер автоматически определяет и конфигурирует все точки доступа, находящиеся в пределах дальности его действия. Внешние устройства могут быть подсоединены к точке доступа через 10/100 Мбит Ethernet.

Схожую систему представил MiTAC: их Bluetooth Access Point несет на борту 750МГц процессор Transmeta Crusoe TM5400, встроенный NAT и DHCP сервер и, как и предыдущий образец, мощный приемопередатчик дальностью действия до 100 м:


Отличным дополнением к такой системе может стать устройство от Canon - Bluetooth модуль для цифрового фотоаппарата:


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

Распространенным вариантом является подключение стандартных устройств ввода через Bluetooth, например, вот так:


Sony представила на CeBIT специальный модуль в формате Memory Stick под названием InfoStick:


Очень неплохая идея, особенно учитывая наличие аналогичного устройства для Compact Flash.

Остается только заметить, что лицензирование поддержки Bluetooth бесплатно и необходимо только для заключения соглашения об использовании торговых марок. Так что в скором будущем мы вполне можем ожидать появление Bluetooth в лампочках и утюгах :). А если серьезно, то технология Bluetooth может совершить настоящую революцию в мире персональных коммуникаций и вообще в жизни человека. А вот насколько нам нужна еще одна революция - это еще предстоит решить.



В классической беспроводной технологии Bluetooth профиль последовательного порта (SPP) обеспечивает возможность замены проводного интерфейса RS-232 беспроводным соединением между двумя устройствами. В устройствах, работающих на новом Bluetooth-стандарте BLE, структура стека для соединения через последовательный порт – иная. Как же организовать на них замену проводного интерфейса беспроводным соединением?

Изначально созданная для высокоскоростной передачи данных в сетях малого радиуса действия беспроводная технология Bluetooth с течением времени развивалась и совершенствовалась. Последнее существенное изменение произошло с появлением версии 4.0, известной также как Bluetooth Low Energy (BLE). Новейшая принятая спецификация имеет версию 4.2. Для BLE используется также и другое название – Bluetooth Smart.

В Bluetooth при создании соединения между двумя устройствами одно из них, инициирующее соединение, выступает в роли ведущего (Master), а другое будет находиться в роли ведомого (Slave). При этом оба устройства могут действовать как индивидуально (топология Point to Point), так и находясь в составе сети со структурой типа «звезда» (топология Star) (рисунок 1). В этом случае один узел функционирует как центральный и действует в роли ведущего, в то время как все остальные узлы функционируют в роли ведомых.

Рис. 1. Две топологии соединений в Bluetooth

Рис. 1. Две топологии соединений в Bluetooth

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

BLE можно рассматривать как расширение базовой технологии Bluetooth Classic, ориентированное в основном на передачу небольших объемов данных, которое оптимально подходит для Интернета вещей. Сравнение основных характеристик BLE и обычного Bluetooth приведено в таблице 1.

Таблица 1. Сравнение Bluetooth с Bluetooth Low Energy

BLE, как и обычный Bluetooth, работает в нелицензируемом частотном диапазоне 2,4 ГГц, используя 40 каналов вместо 79 в классическом варианте и довольствуясь сокращенным по длительности до 3 мс сеансом связи. При этом максимальный размер передаваемого пакета составляет 27 байт.

BLE использует меньше каналов, но с расширенной полосой пропускания. Как показано на рисунке 2, ширина каждого из 40 каналов Bluetooth Smart составляет 2 МГц. Для передачи служебных сигналов (Advertising) выделены три канала, разнесенные в пределах частотного спектра, чтобы минимизировать влияние помех. В течение сеанса связи используется скачкообразный алгоритм выбора частоты канала.

Рис. 2. Частотные каналы Bluetooth Smart (BLE)

Рис. 2. Частотные каналы Bluetooth Smart (BLE)

Стек ПО Bluetooth Smart (BLE) для последовательного порта

Спецификация Bluetooth определяет структурные элементы, на базе которых разработчик создает совместимые друг с другом устройства. Архитектура программного обеспечения для устройств BLE имеет послойно упорядоченную структуру, обычно называемую стеком. Наборы протоколов и профили позволяют отдельным устройствам соединяться друг с другом и обмениваться данными определенного типа.

В новых версиях Bluetooth, начиная с 4.0, вводятся два типа устройств: однорежимные и двурежимные. Однорежимные устройства работают лишь с поддержкой спецификации BLE, тогда как двурежимные способны также работать и в режиме классического Bluetooth BR/EDR (с базовой/повышенной скоростью).

На рисунке 3 изображены варианты реализации коммуникационного стека Bluetooth. Имеющийся в обычном Bluetooth профиль последовательного порта (SPP) обеспечивает возможность замены проводного интерфейса RS-232 беспроводным соединением между двумя устройствами.

Рис. 3. Структура коммуникационного стека Bluetooth

Рис. 3. Структура коммуникационного стека Bluetooth

Профиль SPP включает протоколы RFCOMM, L2CAP, Link Manager и базовый протокол радиосвязи. RFCOMM (Radio Frequency Communications), создает виртуальный последовательный поток данных и эмулирует управляющие сигналы RS-232.

Далее в дело вступает пакетный протокол L2CAP (Logical Link Control and Adaptation Protocol). Он передает пакеты данных между хостом и подсистемой контроллера Bluetooth через интерфейс HCI (Host to Controller Interface) или напрямую в Link Layer, например, как в BlueNRG (рисунок 4).

Рис. 4. Структура стека BlueNRG

Рис. 4. Структура стека BlueNRG

В устройствах BLE используется несколько измененная структура стека для соединения через последовательный порт. Вместо SPP имеется профиль атрибутов, а вместо протоколов RFCOMM – протокол атрибутов, оптимизированный для используемых в BLE пакетов данных небольшого размера. Протокол L2CAP остается неизмененным, Link Manager заменен на Link Layer, который определяет для пакетов структуру/каналы, процедуры подключения и отправляемые/получаемые данные.

Последовательный канал связи для устройств BLE

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

В комплекте c оценочными платами производства компании STMicro­electronics имеется пакет ПО для разработки новых устройств, включающий в себя встроенное программное обеспечение, примеры реализации различных сценариев и документацию.

Рассмотрим пример создания канала связи между двумя компьютерами с использованием микросхем BlueNRG-MS или BlueNRG-1, которые являются однорежимными чипами с поддержкой требований BLE из спецификации Bluetooth v4.0. BlueNRG взаимодействуют с микроконтроллером внешнего хоста, используя линии SPI и набор API, состоящий из команд стандартного Application Command Interface (ACI) и определенных производителем команд Host Controller Interface (HCI) (рисунок 4).

Для решения поставленной задачи можно использовать, например, модуль SPBTLE-RF с сетевым процессором BlueNRG-MS (рисунок 5) или другие устройства на основе приемопередатчиков BlueNRG-1. В случае использования BlueNRG-1 расширенные возможности аппаратной платформы позволяют ему в отдельных случаях выполнять также функции приложения и полностью реализовать стек протоколов в одном чипе.

Рис. 5. Модуль ST SPBTLE-RF

Рис. 5. Модуль ST SPBTLE-RF

Образец программной реализации, которая демонстрирует простое двухполосное соединение между двумя устройствами BlueNRG-MS, доступен в комплекте для разработки ПО (SDK) BlueNRG-MS. Проект называется “BLE Chat”, он размещен в папке “Projects\Projects_STD_Library\BLE_Chat\EWARM_BlueNRG-MS” внутри ПО для оценочного комплекта STEVAL- IDB005V1 или STEVAL-IDB006V1 (рисунок 6).

Рис. 6. Модуль STEVAL-IDB006V1

Рис. 6. Модуль STEVAL-IDB006V1

Те, кто работает с оценочными платами NucleoL152RE и X-NUCLEO-IDB05A1, могут найти этот проект в папке “Projects\Projects_Cube\BLE_Chat\EWARM_BlueNRG-MS”.

Примечание: если работать с BlueNRG-1 в составе оценочной платы STEVAL-IDB007V1, проект можно найти в SDK BlueNRG-1, в папке “\BLE_Examples\BLE_Chat”. Имеется поддержка IAR Embedded Workbench, Keil Microcontroller Development Kit и Atollic TrueSTUDIO.

При работе с этим проектом доступны четыре конфигурации:

  • “Client” – роль клиента;
  • “Server” – роль сервера;
  • “Client throughput” – тестирование пропускной способности для режима клиент;
  • “Server throughput” – тестирование пропускной способности для режима сервер.

В процессе реализации чата BLE выполняются следующие действия:

Сервис Chat содержит две определенные производителем характеристики:

Максимальная длина значения характеристики – 20 байт.

Чтобы установить соединение между двумя устройствами BlueNRG-MS (двумя оценочными платами BlueNRG), необходимо на одном из них реализовать режим «ведущий», а на втором должен быть установлен режим «ведомый». Как только соединение установлено – две точки могут начать передачу данных по каналу связи, используя эти две характеристики.

При использовании оценочных плат участвующие в обмене данные посылаются и принимаются с использованием подключенного к плате через эмулятор терминала на ПК, например, TeraTerm. Каждая оценочная плата будет отображаться на ПК как виртуальный порт COM. Эмулятор терминала конфигурируется следующим образом:

  • скорость передачи: 115200;
  • стоповые биты: 1;
  • проверка на четность: нет;
  • количество бит данных на символ: 8;
  • контроль потока: нет.

Проектные конфигурации “Client throughput” и “Server throughput” позволяют пользователю тестировать пропускную способность (определенный идентификатор препроцессора “THROUGHPUT_TEST” будет представлен в обеих проектных конфигурациях).

Тест на пропускную способность включает следующие этапы:

  • Задать режим Client на одной из платформ BlueNRG-MS и сбросить ее. Платформа появится как виртуальный COM-порт на ПК. Открыть порт COM в терминальном эмуляторе. Клиент запустится через 4 секунды после сброса.
  • Задать режим Server на второй платформе BlueNRG-MS и сбросить ее. После этого две платформы попытаются установить соединение. Как только им удастся это сделать, ведомый будет постоянно отправлять клиенту уведомления, состоящие из 20 байт.
  • После каждых 500 пакетов, полученных от клиента, текущая пропускная способность приложения будет отображаться на эмуляторе клиентского терминала.

Примечание: при работе с BlueNRG-1 в составе оценочной платы STEVAL-IDB007V1 контроллер STM32L1 выполняет роль моста между USB и последовательным портом BlueNRG-1, что позволяет непосредственно проверить пропускную способность от ПК к BlueNRG-1. Прошивка представлена в двоичной форме в SDK BlueNRG-1. Приложение BLE Chat запускается на устройстве BlueNRG-1 и сохраняется во Flash-памяти.

Заключение

Производимые STMicroelectronics приемопередатчики BlueNRG стандарта Bluetooth Low Energy подходят для использования в самом широком спектре устройств персонального назначения, в системах сбора и учета данных, находят широкое применение в промышленной и домашней автоматике.

Встроенное ПО BlueNRG обеспечивает эффективное решение стоящих перед разработчиком задач и не требует от него углубленных познаний в радиочастотной технике и спецификации Bluetooth. Имеющийся в комплекте с SDK набор демонстрационных приложений позволяет использовать некоторые типичные рабочие сценарии BLE.

Постоянно расширяемый набор библиотек ПО, предоставляемые производителем оценочные платы и SDK обеспечивают быстрое начало работ и позволяют в кратчайшие сроки создать законченное устройство с поддержкой Bluetooth Low Energy.

Bluetooth является беспроводной технологией для создания персональных сетей на расстоянии не более 10 метров, работающей на частоте 2.4 ГГц, которая не подлежащит лицензированию. Обычно такие сети формируются из портативных устройств, таких, как сотовые телефоны, КПК и лаптопы. В отличие от Wi-Fi, другой популярной беспроводной технологии, Bluetooth предоставляет более высокий уровень сервиса, например, файловые серверы типа FTP, передачу файлов, голоса, эмуляцию последовательного порта и другие.

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

Если Bluetooth-устройство в момент запуска системы подключено, то загружайте модуль из файла /boot/loader.conf .

ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2 ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3, wMaxPacketSize=49, nframes=6, buffer size=294

Host Controller Interface (HCI) предоставляет интерфейс для управления контроллером передатчика и менеджером соединений, а также доступ к данным о состоянии оборудования и его управляющим регистрам. Этот интерфейс предоставляет унифицированный метод доступа к передающим возможностям Bluetooth. Уровень HCI на управляющей машине обменивается данными и командами с микрокодом HCI в оборудовании Bluetooth. Драйвер для Host Controller Transport Layer (то есть физической шины) предоставляет обоим слоям HCI возможность обмениваться данными друг с другом.

Для одного Bluetooth-устройства создаётся один узел Netgraph типа hci . HCI-узел обычно подключается к узлу драйвера устройства Bluetooth (входящий поток) и к узлу L2CAP (исходящий поток). Все операции с HCI должны выполняться на узле HCI, но не на узле драйвера устройства. В качестве имени по умолчанию для узла HCI используется ``devicehci''. Дополнительные подробности можно найти на справочной странице ng_hci (4) .

BD_ADDR является уникальным адресом устройства Bluetooth, вроде MAC-адресов сетевых адаптеров. Этот адрес необходим для дальнейшей работы с устройством. Адресу BD_ADDR можно присвоить удобное для чтения имя. Файл /etc/bluetooth/hosts содержит информацию об известных хостах Bluetooth. В следующем примере показано, как получить имя, назначенное удалённому устройству.

% hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4 BD_ADDR: 00:80:37:29:19:a4 Name: Pav's T39

Если вы выполните опрос на другом Bluetooth-устройстве, но ваш компьютер будет опознан как ``your.host.name (ubt0)''. Имя, назначаемое локальному устройству, может быть в любой момент изменено.

Система Bluetooth предоставляет услуги по соединениям типа точка-точка (при этом задействованы только два устройства Bluetooth) или точка-ко-многим-точкам. В последнем случае соединение используется совместно несколькими устройствам Bluetooth. В следующем примере показывается, как получить список активных для локального устройства соединений.

% hccontrol -n ubt0hci read_connection_list Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State 00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPEN

Идентификатор соединения ( connection handle ) полезен, когда необходимо прекратить соединение. Заметьте, что обычно нет нужды делать это вручную. Стек будет автоматически разрывать неактивные соединения.

Обратитесь к помощи посредством hccontrol help для получения полного списка доступных HCI-команд. Большинство команд HCI для выполнения не требуют прав администратора системы.

Протокол L2CAP (Logical Link Control and Adaptation Protocol) предоставляет услуги по работе с данными, как ориентированные на соединения, так и без ориентации на них, протоколам более высокого уровня с возможностями мультиплексирования и обеспечением операций по сегментации и обратной сборке. L2CAP позволяет протоколам более высокого уровня и приложениям передавать и получать пакеты данных L2CAP длиной до 64 Кбайт.

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

Для одного Bluetooth-устройства создается один узел Netgraph типа l2cap . Узел L2CAP обычно подключается к узлу Bluetooth HCI (нижестоящий) и узлам Bluetooth-сокетов (вышестоящие). По умолчанию для узла L2CAP используется имя ``devicel2cap''. Для получения дополнительной информации обратитесь к справочной странице по ng_l2cap (4) .

% l2control -a 00:02:72:00:d4:1a read_channel_list L2CAP channels: Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State 00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN % l2control -a 00:02:72:00:d4:1a read_connection_list L2CAP connections: Remote BD_ADDR Handle Flags Pending State 00:07:e0:00:0b:ca 41 O 0 OPEN

% btsockstat Active L2CAP sockets PCB Recv-Q Send-Q Local address/PSM Foreign address CID State c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN Active RFCOMM sessions L2PCB PCB Flag MTU Out-Q DLCs State c2afe900 c2b53380 1 127 0 Yes OPEN Active RFCOMM sockets PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN

Протокол RFCOMM эмулирует последовательные порты поверх протокола L2CAP. Он основан на ETSI-стандарте TS 07.10. RFCOMM представляет собой простой транспортный протокол, с дополнительными возможностями по эмуляции 9 цепей последовательных портов RS-232 (EIATIA-232-E). Протокол RFCOMM поддерживает одновременно до 60 соединений (каналов RFCOMM) между двумя устройствами Bluetooth.

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

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

Во FreeBSD протокол RFCOMM реализован на уровне сокетов Bluetooth.

По умолчанию связь Bluetooth не аутентифицируется, поэтому любое устройство может общаться с любым другим. Устройство Bluetooth (например, сотовый телефон) может задать обязательность аутентификации для предоставления определённого сервиса (в частности, услугу доступа по коммутируемой линии). Bluetooth-аутентификация обычно выполняется через PIN-коды . PIN-код представляет из себя ASCII-строку длиной до 16 символов. Пользователь обязан ввести один и тот же PIN-код на обоих устройствах. Как только он введёт PIN-код, оба устройства сгенерируют ключ связи . После этого ключ может быть сохранён либо в самом устройстве, либо на постоянном носителе. В следующий раз оба устройства будут использовать ранее сгенерированный ключ соединения. Процедура, описанная выше, носит название подгонки пары (pairing). Заметьте, что если ключ связи потерян любой из сторон, то подбор пары должен быть повторен.

hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4

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

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

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

Существующие на данный момент серверы и клиенты SDP реализованы в пакете стороннего разработчика sdp-1.5 , который можно сгрузить здесь . Утилита sdptool является SDP-клиентом, управляемым из командной строки. В следующем примере показано, как выполнять запрос на SDP-обзор.

. и так далее. Заметьте, что каждый сервис имеет перечень атрибутов (например, канал RFCOMM). В зависимости от сервиса вам может потребоваться где-то сохранить эти атрибуты. Некоторые реализации Bluetooth не поддерживают просмотр сервисов и могут возвращать пустой список. В этом случае возможен поиск конкретной услуги. В примере ниже показано, как выполнить поиск службы OBEX Object Push (OPUSH).

Во FreeBSD предоставление сервисов клиентам Bluetooth осуществляется сервером sdpd .

Для регистрации сервиса в локальном SDP-сервере также применяется утилита sdptool . В примере ниже показывается, как зарегистрировать Network Access с услугой PPP (LAN). Заметьте, что некоторые сервисы требуют указания их атрибутов (например, канала RFCOMM).

Модуль работы с коммутируемым доступом к сети (DUN - Dial-Up Networking) в большинстве случаев используется с модемами и сотовыми телефонами. Этот модуль покрывает следующие случаи:

сотовый телефон или модем используется вместе с компьютером в качестве беспроводного модема для подключения к серверу коммутируемого доступа в Интернет, или другой коммутируемой услуге;

сотовый телефон или модем используется компьютером для приёма входящих соединений.

Модуль доступа к сети по протоколу PPP (Network Access with PPP - LAN) может использоваться в следующих ситуациях:

доступ к ЛВС для одного Bluetooth-устройства;

доступ к ЛВС для нескольких Bluetooth-устройств;

связь между двумя ПК (при помощи протокола PPP поверх эмулируемого последовательного канала связи).

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

Клиент OBEX используется для посылки или приёма объектов с сервера OBEX. Объектом, к примеру, может быть визитная карточка или указание. Клиент OBEX может получить номер RFCOMM-канала, указав вместо него имя сервиса. Поддерживаются следующие имена сервиса: IrMC, FTRN и OPUSH. Канал RFCOMM можно задать его номером. Ниже даётся пример сеанса OBEX, где с сотового телефона забирается объект с информацией об устройстве, а новый объект (визитная карточка) передаётся в каталог сотового телефона.

% obexapp -a 00:80:37:29:19:a4 -C IrMC obex> get get: remote file> telecom/devinfo.txt get: local file> devinfo-t39.txt Success, response: OK, Success (0x20) obex> put put: local file> new.vcf put: remote file> new.vcf Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20)

Модуль последовательного порта (SP - Serial Port) позволяет Bluetooth-устройству осуществлять эмуляцию последовательного порта RS232 (или подобного). Этот модуль покрывает случаи, касающиеся работы унаследованных приложений с Bluetooth в качестве замены кабельному соединению, при это используется абстракция виртуального последовательного порта.

После подключения псевдотерминал можно использовать как последовательный порт.

Некоторые старые Bluetooth-устройства не поддерживают переключение ролей. По умолчанию, когда FreeBSD подтверждает новое соединение, она пытается выполнить переключение роли и стать ведущим устройством. Устройства, которые это не поддерживают, не смогут подключиться. Заметьте, что переключение ролей выполняется при установлении нового соединения, поэтому невозможно выяснить, поддерживает ли удалённое устройство переключение ролей. На локальной машине имеется возможность отключить переключение ролей при помощи HCI-параметра.

Профиль последовательного порта позволяет организовать "прозрачный" беспроводной канал между двумя устройствами, которые ранее были связаны проводным последовательным интерфейсом. Встраиваемый Bluetooth-модуль осуществляет преобразование потока данных, поступающих по проводному асинхронному последовательному каналу. [Источник 1]
Этот профиль является основой для DUN, FAX, HSP и AVRCP.
Максимальная полезная нагрузка профиля последовательного порта составляет 128 байт.

Содержание

Структура и зависимости

Структура профиля последовательного порта

Профиль последовательного порта включает в себя такие профили, как профиль удаленного доступа, fax-профиль, профиль гарнитуры, профиль доступа к локальной сети и др.
Профиль имеет зависимости от профиля, в котором он содержится - прямо и косвенно; он зависит от другого профиля, если он повторно использует части этого профиля, неявно или явно ссылаясь на него.

Стек протоколов профиля

Стек протоколов

На рисунке ниже показаны протоколы и сущности, используемые в этом профиле.

Baseband, LMP и L2CAP - это Bluetooth-протоколы 1 и 2 уровня модели OSI. RFCOMM - это Bluetooth-адаптация GSM TS 07.10, обеспечивающая протокол передачи для эмуляции последовательного порта. SDP - протокол обнаружения сервиса Bluetooth.
Уровень эмуляции порта, показанный на рисунке, представляет собой объект, имитирующий последовательный порт или предоставляющий API для приложений.

Конфигурации и роли

Конфигурация профиля последовательного порта

На рисунке ниже представлена одна из возможных конфигураций устройств профиля последовательного порта.
Для этого профиля определены следующие роли:
Устройство А(DevA) - устройство, которое берет инициативу на создание соединения с другим устройством (DevA называется инициатором).
Устройство В(DevB) - устройство, которое ожидает подключение другого устройства, чтобы взять инициативу на подключение (DevB называется акцептором).
Стоит отметить, что порядок подключения (от DevA к DevB) необязательно должен иметь какое-либо отношение к порядку запуска унаследованных приложений на каждом из устройств.
Для целей сопоставления профиля последовательного порта с традиционной архитектурой последовательного порта как устройство DevA, так и устройство DevB может выступать в качестве DCE, либо DTE. (RFCOMM-протокол не зависит от DTE-DCE или DTE-DTE).

Требования и сценарии использования

Сценарий, охватываемый этим профилем, выглядит следующим образом:
Настраивая виртуальные последовательные порты на двух устройствах и подключая их с помощью Bluetooth, производится эмуляциия последовательного кабеля между двумя устройствами. Любое унаследованное приложение может быть запущено на любом устройстве, используя виртуальный последовательный порт, как если бы существовал реальный последовательный кабель, соединяющий два устройства.
Этот профиль поддерживает только однослотовые пакеты. Это означает, что этот профиль обеспечивает скорость передачи данных до 128 Кбит / с.
В этом профиле поддерживается только одно соединение. Следовательно, рассматриваются только конфигурации типа «точка-точка». Однако это не означает, что возникают какие-то ограничения на согласованность различных подключений: несколько исполнений этого профиля должны иметь возможность запускаться одновременно на одном устройстве.

Процедуры

Установка соединения и настройка виртуального последовательного соединения

Эта процедура основана на выполнении шагов, необходимых для установления соединения с эмулированным последовательным портом на удаленном устройстве.

  1. Отправка запроса с помощью SDP, чтобы узнать номер канала сервера RFCOMM нужного приложения на удаленном устройстве. Это включает в себя возможность просмотра портов, которая позволяет пользователю производить выбор среди доступных портов (или служб) в одноранговом устройстве. В качестве альтернативы, если точно известно, какая служба должна контактировать, достаточно найти необходимые параметры, используя идентификатор класса обслуживания, связанный с необходимой службой.
  2. Аутентификация удаленного устройства (необязательный шаг).
  3. Запрос на новый канал L2CAP для удаленного RFCOMM.
  4. Инициирование RFCOMM-сессии на канале L2CAP.
  5. Запуск нового соединения передачи данных во время RFCOMM-сессии с использованием вышеупомянутого номера канала сервера.

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

Согласие на соединение и установку виртуального последовательного соединения

Эта процедура состоит из следующих этапов:

  1. По запросу удаленного устройства производится процедура аутентификации и производится запрос на включение шифрования.
  2. Согласие на новые указания создания канала из L2CAP.
  3. Согласие на создание RFCOMM-сессии на этом канале.
  4. Согласие на создание нового соединения для передачи данных во время RFCOMM-сессии.

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

Режим питания и обратная связь

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

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

Требования к совместимости c RFCOMM

Да* - одновременное использование нескольких RFCOMM-сессий необязательно в протоколе RFCOMM. Несмотря на то, что применение параллельности приветствуется там, где она имеет смысл, этот профиль не предусматривает поддержку параллельных сессий RFCOMM в DevA или DevB.

- опция выбирается по желанию.
Нет* - при исполнении ролей, определенных в этом профиле, эти способности не используются.
N/A - передача информации не подтверждена в RFCOMM протоколе.
? - какой из механизмов управления потоком будет использоваться, зависит от поставленной задачи. Однако, если реализация не гарантирует, что для получаемой информации всегда найдется буфер, то передача управления потоком DLC или общего управления потоком является обязательной.

Управляющие сигналы RS232

Все устройства должны отправлять информацию обо всех изменениях в управляющих сигналах RS232 с помощью команды Modem Status.
Поскольку RFCOMM может использоваться с адаптацией под любой тип API, необязательно использовать все управляющие сигналы RS232; единственный необходимый сигнал - сигнал управления потоком. Этот сигнал может отображаться в RTS / CTS или XON / XOFF или других механизмах API.

Индикация состояния удаленной линии

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

Согласование удаленных портов

DevA может сообщать DevB параметры порта RS232 с помощью команды управления удаленным портами непосредственно перед установкой DLC. DevA может сделать это, если механизм адаптации API под RFCOMM предоставляет эти параметры.
DevB разрешено отправлять команду «Переадресация удаленных портов».

Требования к совместимости c L2CAP

- опция выбирается по желанию.
Нет* - канал без организации соединения не используется при выполнении этого профиля, но возможно параллельное его использование другими профилями/приложениями.

Типы каналов

В этом профиле должны использоваться только каналы с организацией соединения.
Значение RFCOMM определено в документе Bluetooth-стандартов Assigned Numbers [1] в поле PSM раздела Connection Request packet.

Оповещения

Настройка конфигурации

В этом разделе описывается использование параметров конфигурации в профиле последовательного порта.

Размер максимального передаваемого блока

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

Время очистки буфера

Данные переносятся по надежному каналу L2CAP. Если режим усиленной ретрансляции не согласован для канала L2CAP, то значение времени очистки буфера должно быть установлено на значение по умолчанию 0xffff. Если согласован режим усиленной ретрансляции L2CAP, то значение может быть установлено в соответствии с другими профилями, работающими c одним и тем же логическим транспортным протоколом ACL.

Качество сервиса

Согласование качества сервиса выбирается по желанию в данном профиле.

Контроль потока и ошибок

Если устройство, которое будет передавать большие объемы данных, и принимающее устройство будут подвергнуты радиопомехам, которые могут привести к потерям пакетов, то рекомендуется использовать функцию управления ошибками в L2CAP, которая настраивает канал для использования режима усиленной ретрансляции
Данные по последовательному порту переносятся по надежному каналу L2CAP. Надежность этого канала может быть обеспечена использованием бесконечного времени сброса буфера. Однако, если профиль последовательного порта сосуществует одновременно с другими профилями на одной и той же физической линии, тогда эта конфигурация некорректна и может приводить к конфликтам. Поэтому для устройств, у которых профиль последовательного порта сосуществует с другими профилями, должен быть активирован режим усиленной ретрансляции. Таким образом, канал L2CAP позволяет логическому транспортному протоколу ACL иметь конечное время очистки буфера, подходящее для других профилей.

Требования к совместимости c SDP

Для устройства DevA в профиле последовательного порта не предусмотрено служебных записей SDP. Следующая таблица представляет собой описание формата служебных записей в базе данных SDP устройства DevB. В служебную запись разрешено добавлять дополнительные атрибуты. Версии профиля последовательного порта ниже, чем v1.2, не предоставляли атрибута BluetoothProfileDescriptorList. Новые устройства DevA предполагают, что DevB без этого атрибута не поддерживает данный профиль версии 1.2 или выше.

  1. Определено в документе Bluetooth-стандартов Assigned Numbers.
  2. Для поддержки определенного языка для всех «отображаемых» атрибутов необходимо добавить соответствующий оффсет к значению LanguageBaseAttributeIDList.
  3. Класс SerialPort - это самый общий тип сервиса, он позволяет добавлять другие, более конкретные классы услуг.
  4. Значение атрибута ServiceName, представленное в таблице, является просто примером.

Процедуры SDP

Чтобы получить служебные записи, клиентский объект SDP в устройстве DevA подключается и взаимодействует с объектом сервера SDP в устройстве DevB через процедуры SDP и L2CAP.

Читайте также: