12

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

Есть ли что-то похожее для Bluetooth через IP? (НЕ: IP через Bluetooth).

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

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

5 ответов5

6

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

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

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

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

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

Физический уровень Parallel 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 и его архитектуры «ведущий-ведомый», делают создание такой общей реализации очень трудоемким упражнением, которое вряд ли произойдет, поскольку в настоящее время нет спроса на такое программное обеспечение.

3

Я не пробовал ничего подобного на практике, но я обнаружил, что это говорит о "Bluetooth через IP".

Книга Linux Kernel Networking очень техническая, но она описывает, как сделать "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 не был выпущен как бесплатное программное обеспечение.

0

Хорошо, я исследовал это еще немного. Это невозможно.

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

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

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

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

0

Harrymc правильно.

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

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

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

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

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

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

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

-1

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

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

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

(Машины под управлением Linux 4.9.80 + up-todate-usbip + Bluez 5.48; arm)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .