Bluetooth через IP

Вопрос или проблема

Похоже, что возможно запустить USB по IP, например, с использованием usbip, который является частью некоторых дистрибутивов Linux, таких как https://www.archlinux.org/packages/?q=usbip

Существует ли что-то подобное для Bluetooth по IP? (НЕ: IP по Bluetooth).

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

Linux bnep может быть способен на это, но мне не удалось найти инструкции, как это сделать.

Хотя в нашем технологическом мире сегодня кажется, что всё возможно, насколько я знаю, настоящий Bluetooth-to-Bluetooth-over-IP никогда не был реализован. Я постараюсь объяснить трудности, которые, хотя и не непреодолимы, являются причиной этой ситуации.

Bluetooth сам по себе является стандартом беспроводной технологии для обмена данными на малых расстояниях. Обычно он используется для соединений «устройство-устройство» и включает в себя понятие спаривания, для целей безопасности. Протокол Bluetooth крайне универсален и может использоваться для множества целей. Его популярность объясняется тем, что он работает на частотах, которые являются глобально не лицензированными (но не нерегулируемыми).

Настоящий Bluetooth-to-Bluetooth-over-IP потребует от двух устройств Bluetooth спаривания через IP. Это не то же самое, что, например, два человека, использующие Skype для разговоров по Интернету через Bluetooth-гарнитуры, потому что гарнитуры спарены с компьютерами, а не друг с другом.

Вот некоторые выдержки из статьи Википедии Модель OSI:

Уровень 1: Физический уровень

Физический уровень параллельного SCSI работает на этом уровне, как и физические уровни Ethernet и других локальных сетей, таких как Token Ring, FDDI, ITU-T G.hn, и IEEE 802.11 (Wi-Fi), а также персональных сетей, таких как Bluetooth и IEEE 802.15.4.

Уровень 4: Транспортный уровень

Примером протокола транспортного уровня в стандартном интернет-стеке является Протокол управления передачей (TCP), который обычно строится поверх Протокола Интернета (IP).

TCP и UDP являются протоколами транспортного уровня 4, в то время как Bluetooth является протоколом более низкого физического уровня 1. Таким образом, вы можете использовать TCP или UDP поверх Bluetooth, так же как вы используете TCP и UDP поверх Ethernet, но наоборот сделать гораздо сложнее.

Стек протоколов Bluetooth включает в себя собственные транспортные протоколы: L2CAP и RFCOMM, при этом соединения RFCOMM используют уровень L2CAP. Вы можете работать с некоторым IP-туннелированием через Bluetooth, инкапсулируя UDP-пакеты в соединениях RFCOMM.

С точки зрения чистой терминологии OSI, невозможно, что даже является противоречием по терминам, использовать протокол уровня 1 поверх протокола уровня 4.

Практически мы могли бы представить программный виртуальный адаптер, который заявил бы о себе Linux на клиентской стороне как о физическом устройстве Bluetooth и общался бы по IP с другим таким виртуальным устройством Bluetooth на серверной стороне Linux. Но сложность, связанная с эмуляцией уровней OSI и программными затратами, необходимыми для реализации очень универсального протокола Bluetooth и его архитектуры мастер-слейв, делает создание такой общей реализации очень трудоемкой задачей, которая вряд ли осуществится, поскольку в настоящее время нет спроса на такое программное обеспечение.

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

Моя настройка выглядит следующим образом: компьютер с установленным bluez + клиент usbip <- LAN -> другой компьютер с физическим Bluetooth USB-ключом + сервер usbip.

Оказалось, что это работает вполне нормально. С точки зрения Bluez, он не может отличить локальные и удаленные USB-ключи.

(Машины на базе Linux 4.9.80 + up-to-date-usbip + Bluez 5.48; arm)

Я не пробовал это на практике, но это информация, которую я нашел о “Bluetooth по IP”.

Книга Сетевое взаимодействие в ядре Linux очень техническая, но она описывает, как сделать “Bluetooth по IP”:

На стороне сервера:

pand --listen --role=NAP

На стороне клиента:

pand --connect btAddressOfTheServer

Это создает виртуальный интерфейс bnep0.

Похоже, это просто дает вам L2CAP, который может отправлять пакеты только по “пиконету”. Но для L2CAP существуют размышления о том, как отправить их по IP в драфте IETF: Передача IP-пакетов по Bluetooth-сетям.

IETF может рассмотреть возможность запуска L2CAP по IP через контроллер хоста с помощью нового протокола:

                       +------------+
                       |    L2CAP   |
                       +------------+
                       |     IP     |
                       +------------+
                       | Foo2 Proto.|
                       +------------+
                       | Host Cont. |
                       +------------+

Рисунок 4.3.3 – 3-й. Возможный стек протоколов Bluetooth для IP-сетевого взаимодействия

И затем я также нашел UbiPAN: Расширенная персональная сеть Bluetooth, которая упоминает “Bluetooth по IP” – но, к сожалению, похоже, что UbiPAN не был выпущен как свободное программное обеспечение.

Хорошо, я немного больше изучил это. Это невозможно.

Вот почему: Для того чтобы это работало, вам потребуется, чтобы Bluetooth-чип в компьютере передавал информацию вместо того, чтобы отвечать самому.

Эта функциональность пока не существует.

Я не могу поделиться документацией в данный момент, так как она является собственностью и конфиденциальной.

Если вы являетесь членом BT SIG, вы можете просмотреть дорожную карту Bluetooth в разделе панорама на bluetooth.org

Harrymc прав.

Это невозможно или, по крайней мере, нецелесообразно.

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

Но на самом деле между двумя устройствами нет соединения Bluetooth.

Устройство A имеет соединение Bluetooth с компьютером.

Устройство B имеет соединение Bluetooth с другим компьютером.

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

Если кто-то действительно это сделал, я был бы очень впечатлён и очень хотел бы заглянуть под капот.

Смотрите https://esphome.io/components/bluetooth_proxy.html для Bluetooth-прокси, но с его ограничениями.

Ответ или решение

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

Проблематика

Bluetooth — это беспроводной стандарт, ориентированный на обмен данными на коротких расстояниях. Он использует различные протоколы и технологии, включая L2CAP и RFCOMM, для организации соединений между устройствами. Эти протоколы работают на низком уровне OSI, что делает их трудными для инкапсуляции в более высокие уровни протоколов, таких как IP.

Технические ограничения

  1. Параллельные подключения: В отличие от USB, который можно "разделить" по IP, Bluetooth требует установления соединений между устройствами, что влечет за собой процесс их сопряжения. Поиск для установления соединения и управление ключами аутентификации (link keys), а также частота переключения между каналами (frequency hopping), усложняют задачу.

  2. Протоколы передачи: Bluetooth использует свои собственные протоколы для передачи данных. В то время как UDP и TCP могут быть использованы поверх Bluetooth, попытка инкапсулировать Bluetooth-сообщения в пакетах IP является намного более сложной задачей, чем сделать это с USB.

Возможные обходные пути

Хотя полнофункциональный Bluetooth по IP не реализован, существуют некоторые способы взаимодействия между Bluetooth-устройствами через IP-протоколы:

  1. Промежуточные устройства: Можно использовать компьютеры или серверы в качестве промежуточных узлов, к которым будут подключены Bluetooth-устройства. Например, можно подключить смартфон к одному компьютеру и Bluetooth-наушники к другому. Затем эти компьютеры могут обмениваться данными через IP-инфраструктуру. Это создаст видимость работы Bluetooth по IP, но на самом деле устройства подключены к разным компьютерам.

  2. Использование виртуальных адаптеров: Возможно создание программных решений, которые эмулируют Bluetooth-устройства, отправляя и принимая данные через IP. Тем не менее, это потребует значительных усилий по программированию и поддержке всех аспектов Bluetooth.

  3. Экспериментальные разработки: Исследуются и предлагаются экспериментальные протоколы, такие как draft-akers-atwal-btooth, которые могут потенциально сделать передачу IP-пакетов по Bluetooth более целесообразной, но эти разработанные спецификации остаются на уровне исследований и не имеют внедрения в основную практику.

Заключение

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

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

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

Капча загружается...