Кажется, возможно запустить USB через IP, например, используя usbip
который является частью некоторых дистрибутивов Linux, например https://www.archlinux.org/packages/?q=usbip
Есть ли что-то подобное для Bluetooth через IP? (НЕ: IP через Bluetooth).
Это позволило бы физически отделить, скажем, смартфон с поддержкой BT от гарнитуры с поддержкой BT через Интернет.
Linux bnep
может сделать это, но я не смог найти инструкции, как это сделать.
linux
networking
bluetooth
tunnel
Йоханнес Эрнст
источник
источник
Ответы:
Хотя в нашем технологическом мире сегодня все кажется возможным, насколько я знаю, настоящий Bluetooth-to-Bluetooth-over-IP никогда не был реализован. Я попытаюсь объяснить трудности, которые, хотя и не являются непреодолимыми, являются причиной этой ситуации.
Bluetooth сам по себе является стандартом беспроводной технологии для обмена данными на короткие расстояния. Обычно он используется для соединений между устройствами и включает в себя понятие сопряжения в целях безопасности. Протокол Bluetooth чрезвычайно универсален и может использоваться для многих целей. Его популярность проистекает из того факта, что он работает на частотах, которые нелицензированы на глобальном уровне (но не являются нерегулируемыми).
Для настоящего Bluetooth-to-Bluetooth-over-IP потребуется два устройства Bluetooth для сопряжения по IP. Это не то же самое, что, например, два человека, использующие Skype для общения через Интернет через гарнитуру Bluetooth, потому что гарнитуры связаны с их компьютерами, а не друг с другом.
Вот некоторые выдержки из модели OSI статьи Wikipedia :
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 и его архитектуры главный-подчиненный, делают создание такой общей реализации очень трудоемким упражнением, которое вряд ли произойдет, поскольку в настоящее время нет спроса на такое программное обеспечение.
источник
Я не пробовал ничего подобного на практике, но я обнаружил, что это говорит о «Bluetooth через IP».
Книга Linux Kernel Networking очень техническая, но она описывает, как сделать «Bluetooth через IP»:
Это создает виртуальный интерфейс
bnep0
.По-видимому, это просто дает вам L2CAP, который может отправлять пакеты только через «пикосеть». Но для L2CAP есть мысли о том, как отправить их по IP в черновике IETF: Передача IP-пакетов по сетям Bluetooth .
А потом я также обнаружил UbiPAN: расширенную персональную сеть Bluetooth, в которой упоминается «Bluetooth через IP», но, к сожалению, похоже, что UbiPAN не был выпущен как бесплатное программное обеспечение.
источник
Я придерживался той же (или похожей) мысли недавно. Что я хочу сделать, так это использовать центр домашней автоматизации, который, к сожалению, не может достичь всего дома с помощью радиоприемника в одном месте.
Моя настройка следующая: компьютер под управлением bluez + клиент usbip <- LAN -> другой компьютер с физическим Bluetooth-ключом USB + сервер usbip.
Оказывается, это работает просто отлично. С точки зрения Bluez, он не способен различать локальные и удаленные USB-ключи.
(Машины под управлением Linux 4.9.80 + up-todate-usbip + Bluez 5.48; arm)
источник
Harrymc правильно.
Это невозможно или, по крайней мере, невозможно.
Вы можете связать свой телефон с компьютером и гарнитуру с другим компьютером и, таким образом, иметь два соединения Bluetooth. Соединение между компьютерами может быть преодолено любым удобным для вас способом, и, в свою очередь, ретранслирует всю связь по Bluetooth. Это создаст впечатление, что вы подключили Bluetooth через IP, и вы, вероятно, могли бы заставить их общаться друг с другом и делать то, что вы пытаетесь сделать.
Но на самом деле нет Bluetooth-соединения между двумя устройствами.
Устройство A имеет Bluetooth-соединение с компьютером.
Устройство B имеет соединение Bluetooth с другим компьютером.
Два устройства не смогут подключаться и соединяться напрямую друг с другом. Теоретически можно создать что-то, что позволило бы установить прямую связь по Bluetooth, но обход уровней и управление ключами ссылок было бы кошмаром, и это только начало, я не знаю, как решить управление пакетами и частоту Прыжок, скорость скачкообразного изменения частоты Bluetooth составляет 1600 прыжков / с для пакета с одним слотом.
Если бы кто-то действительно сделал это, я был бы очень впечатлен и очень хотел бы заглянуть под капот.
источник
Хорошо, я исследовал это еще немного. Это невозможно.
И вот почему: чтобы это работало, вам понадобится чип Bluetooth в компьютере, чтобы передавать информацию, а не отвечать самому.
Эта функциональность еще не существует.
Я не могу поделиться какой-либо документацией в данный момент, так как она является частной и конфиденциальной.
Если вы являетесь участником BT SIG, вы можете просмотреть дорожную карту bluetooth в разделе панорамы на bluetooth.org
источник