Bluetooth по IP?

13

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

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

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

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

Йоханнес Эрнст
источник
3
Я сомневаюсь, что вы сможете использовать USB через Интернет, в основном из-за проблем с задержкой.
Даниэль Б
Это действительно USB? Спецификации USB требуют вещей, которые просто не могут быть предоставлены IP, таких как спецификации физического разъема, питания и т. Д.
Рон Мопин
@RonMaupin Конечно, речь идет о том, что происходит между контроллером USB и процессором. Тем не менее, при условии достаточно низкой задержки (LAN), программное обеспечение, использующее эти устройства, не сможет увидеть разницу.
Даниэль Б
2
У меня на самом деле была идея с usbip. Можно ли использовать usbip с USB-ключом Bluetooth? (это безумная идея, я знаю)
Лео Лам
@ Лео Лэм. Ну, технически это будет «bt over ip», маскируясь под «usb over ip». ;)
rinfinity

Ответы:

7

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

harrymc
источник
4
Подобно самому стеку OSI, строгая иерархия существует только в фантазиях. Широко используемое программное обеспечение VPN делать передающую L3 IP - пакеты и даже L2 Ethernet кадры через L4 UDP ...
user1686
@ Grawity: Я согласен до такой степени, что пакет является пакетом, независимо от того, насколько глубоко завернутый. Однако, в конце концов, VPN делает только IP поверх IP, даже если он упакован в нижний / верхний уровни, а Bluetooth - это совершенно другой физический протокол. Мой ответ говорит, что это возможно, но, вероятно, слишком сложно, чтобы беспокоиться из-за различий в протоколах. Вы не согласны с этим?
harrymc
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 не был выпущен как бесплатное программное обеспечение.

kqw
источник
1
BNEP используется для отправки сетевых пакетов напрямую через L2CAP в существующей пикосети, он не позволяет пользователю соединять Bluetooth через IP. Кроме того, спецификация, на которую вы ссылаетесь, устарела, а не из исходного источника (BT SIG), здесь принятая спецификация: bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=6552
Джон Карлстедт,
2
Извините, мой ответ находится в стадии разработки, и вы, возможно, не будете им довольны, но в настоящее время он содержит больше полезной информации о возможном решении, чем любой другой ответ.
Квт
В вашем ответе не указано, возможно или нет использовать Bluetooth через IP.
Винни
1

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

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

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

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

Lukas
источник
0

Harrymc правильно.

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

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

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

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

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

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

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

Джон Карлштедт
источник
0

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

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

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

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

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

Джон Карлштедт
источник