Bluetooth przez IP?

13

Wydaje się, że możliwe jest uruchomienie USB przez IP, np. Za pomocą, usbipktóra jest częścią niektórych dystrybucji Linuksa, np. Https://www.archlinux.org/packages/?q=usbip

Czy istnieje coś podobnego dla Bluetooth przez IP? (NIE: IP przez Bluetooth).

Umożliwiłoby to fizyczne oddzielenie, powiedzmy, smartfona z obsługą BT od zestawu słuchawkowego z obsługą BT za pośrednictwem Internetu.

Linux bnepmoże to zrobić, ale nie byłem w stanie znaleźć instrukcji, jak to zrobić.

Johannes Ernst
źródło
3
Wątpię, czy będziesz w stanie korzystać z USB przez Internet, głównie z powodu problemów z opóźnieniami.
Daniel B,
Czy to naprawdę USB? Specyfikacje USB wymagają rzeczy, których po prostu nie można podać z adresu IP, takich jak specyfikacje fizycznych złączy, moc itp.
Ron Maupin
@RonMaupin Oczywiście chodzi tylko o to, co dzieje się między kontrolerem USB a procesorem. Mimo to, pod warunkiem, że opóźnienie jest wystarczająco małe (LAN), oprogramowanie korzystające z tych urządzeń nie będzie w stanie dostrzec różnicy.
Daniel B
2
Właśnie miałem pomysł z usbip. Czy można używać usbip z kluczem USB Bluetooth? (to szalony pomysł, wiem)
Léo Lam
@Leo Lam. Technicznie byłoby to „bt over ip” podszywające się pod „usb over ip”. ;)
rinfinity

Odpowiedzi:

7

Chociaż w naszym świecie technologicznym wszystko dzisiaj wydaje się możliwe, o ile wiem, prawdziwa łączność Bluetooth do Bluetooth nigdy nie została wdrożona. Spróbuję wyjaśnić trudności, które choć nie są nie do pokonania, są przyczyną tej sytuacji.

Sam Bluetooth jest standardem technologii bezprzewodowej do wymiany danych na krótkie odległości. Zwykle jest używany do połączeń między urządzeniami i ze względów bezpieczeństwa wymaga parowania. Protokół Bluetooth jest niezwykle wszechstronny i może być wykorzystywany do wielu celów. Jego popularność wynika z faktu, że działa na częstotliwościach, które są globalnie nielicencjonowane (ale nie są nieuregulowane).

Prawdziwe połączenie Bluetooth przez Bluetooth wymagałoby połączenia dwóch urządzeń Bluetooth przez IP. Nie jest to to samo, co na przykład dwie osoby używające Skype do rozmowy przez Internet za pomocą zestawów słuchawkowych Bluetooth, ponieważ zestawy słuchawkowe są sparowane z komputerami, a nie ze sobą.

Oto kilka fragmentów modelu OSI z artykułu w Wikipedii :

Warstwa 1: Warstwa fizyczna

Fizyczna warstwa Parallel SCSI działa w tej warstwie, podobnie jak fizyczne warstwy Ethernet i innych sieci lokalnych, takich jak Token Ring, FDDI, ITU-T G.hn i IEEE 802.11 (Wi-Fi), a także jako sieci osobiste, takie jak Bluetooth i IEEE 802.15.4.

Warstwa 4: Warstwa transportowa

Przykładem protokołu warstwy transportowej w standardowym stosie internetowym jest protokół kontroli transmisji (TCP), zwykle zbudowany na protokole internetowym (IP).

TCP i UDP są protokołami na poziomie transportu 4, podczas gdy Bluetooth jest protokołem niższego poziomu fizycznego 1. Tak więc możesz używać TCP lub UDP na Bluetooth, tak samo jak TCP i UDP na Ethernet, ale odwrotnie jest znacznie trudniej.

Stos protokołów Bluetooth zawiera własne protokoły transportowe: L2CAP i RFCOMM, w których łącza RFCOMM wykorzystują warstwę L2CAP. Możesz pracować z tunelowaniem IP przez pakiety UDP hermetyzujące Bluetooth przez łącza RFCOMM.

Korzystanie z czystej terminologii OSI jest niemożliwe, a nawet sprzeczność pojęć, stosowanie protokołu warstwy 1 w stosunku do warstwy 4.

Praktycznie rzecz biorąc, możemy sobie wyobrazić napisany programowo wirtualny adapter, który zadeklaruje się w systemie Linux po stronie klienta jako fizyczne urządzenie Bluetooth i będzie rozmawiać przez IP z innym takim wirtualnym urządzeniem Bluetooth po stronie serwera Linux. Ale złożoność związana z emulowaniem warstw OSI oraz wysiłek programistyczny wymagany do wdrożenia bardzo wszechstronnego protokołu Bluetooth i jego architektury master-slave sprawiają, że tworzenie tak ogólnej implementacji jest bardzo wymagającym ćwiczeniem, które jest mało prawdopodobne, ponieważ obecnie brak zapotrzebowania na takie oprogramowanie.

harrymc
źródło
4
Podobnie jak sam stos OSI, ścisłe nakładanie warstw istnieje tylko w fantazjach. Szeroko wykorzystywane oprogramowanie VPN zrobić przesyłania pakietów IP, a nawet L3 L2 ramek Ethernet over UDP ... L4
user1686
@grawity: Zgadzam się do tego stopnia, że ​​pakiet jest pakietem bez względu na to, jak głęboko jest zawinięty. Jednak VPN w końcu robi tylko IP przez IP, nawet jeśli jest spakowany w niższych / wyższych warstwach, podczas gdy Bluetooth jest zupełnie innym protokołem fizycznym. Moja odpowiedź mówi, że jest to możliwe, ale prawdopodobnie zbyt skomplikowane, aby przeszkadzać, z powodu różnic protokołów. Czy nie zgodziłbyś się z tym?
harrymc
3

Nie próbowałem tego w praktyce, ale mogę znaleźć coś, co mówi o „Bluetooth przez IP”.

Książka Linux Kernel Networking jest bardzo techniczna, ale opisuje, jak wykonać „Bluetooth przez IP”:

Po stronie serwera:

pand --listen --role=NAP

Po stronie klienta:

pand --connect btAddressOfTheServer

To tworzy wirtualny interfejs bnep0.

Najwyraźniej daje to po prostu L2CAP, który może wysyłać pakiety tylko przez „piconet”. Ale w przypadku L2CAP zastanawia się, jak wysłać je przez IP w wersji roboczej IETF: Transmisja pakietów IP przez sieci Bluetooth .

IETF może rozważyć uruchomienie L2CAP przez IP przez kontroler hosta z nowym protokołem:

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

Rysunek 4.3.3 - 3. Możliwy stos protokołów Bluetooth dla sieci IP

A potem znalazłem także UbiPAN: rozszerzoną osobistą sieć Bluetooth, która wspomina o „Bluetooth przez IP” - ale niestety nie wygląda na to, że UbiPAN został wydany jako darmowe oprogramowanie.

kqw
źródło
1
BNEP służy do wysyłania pakietów sieciowych bezpośrednio przez L2CAP w istniejącym piconecie, nie pozwala użytkownikowi na mostkowanie bluetooth przez IP. Ponadto specyfikacja, z którą się łączysz, jest stara i nie pochodzi z oryginalnego źródła (BT SIG), oto przyjęta specyfikacja: bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=6552
Jon Carlstedt
2
Niestety, moja odpowiedź jest w toku i możesz nie być z niej zadowolony, ale obecnie zawiera ona bardziej przydatne informacje na temat możliwego rozwiązania niż jakakolwiek inna odpowiedź.
kqw
Twoja odpowiedź nie określa, czy możliwe jest korzystanie z Bluetooth przez IP.
Winny
1

Miałem ostatnio taką samą (lub podobną) myśl. Chcę skorzystać z centrali automatyki domowej, która niestety nie może dotrzeć do całego domu za pomocą radia z jedną lokalizacją.

Moja konfiguracja jest następująca: komputer z uruchomionym klientem bluez + usbip <- LAN -> inny komputer z fizycznym kluczem USB Bluetooth + serwer usbip.

Okazuje się, że działa dobrze. Z punktu widzenia Bluez nie jest w stanie odróżnić lokalnego i zdalnego klucza USB.

(Maszyny z systemem Linux 4.9.80 + up-todate-usbip + Bluez 5.48; arm)

Lukas
źródło
0

Harrymc ma rację.

Nie jest to możliwe, a przynajmniej niewykonalne.

Możesz sparować telefon z komputerem i zestaw słuchawkowy z innym komputerem, a tym samym mieć dwa połączenia Bluetooth. Połączenie między komputerami można mostkować w dowolny sposób, a to z kolei przekazuje całą komunikację Bluetooth. To sprawi, że będzie wyglądać, jakbyś zmostkował bluetooth przez IP i prawdopodobnie możesz zmusić ich do rozmowy ze sobą i robienia niektórych rzeczy, które próbujesz zrobić.

Ale w rzeczywistości nie ma połączenia Bluetooth między dwoma urządzeniami.

Urządzenie A ma połączenie Bluetooth z komputerem.

Urządzenie B ma połączenie Bluetooth z innym komputerem.

Oba urządzenia nie będą mogły się sparować i połączyć bezpośrednio ze sobą. Można teoretycznie zbudować coś, co pozwoliłoby na skonfigurowanie bezpośredniego łącza bluetooth, ale przejście przez warstwy i zarządzanie kluczami byłoby koszmarem do uporządkowania, a to dopiero początek, nie mam pojęcia, jak rozwiązać zarządzanie pakietami i częstotliwość przeskakiwanie, częstotliwość przeskakiwania częstotliwości Bluetooth wynosi 1600 przeskoków / s dla pojedynczego pakietu gniazd.

Gdyby ktoś to zrobił, byłbym pod wielkim wrażeniem i bardzo chciałbym rzucić okiem pod maską.

Jon Carlstedt
źródło
0

Ok, zbadałem to jeszcze trochę. To niemożliwe.

Oto dlaczego: Aby to zadziałało, będziesz potrzebować układu Bluetooth w komputerze, aby przekazywać informacje zamiast odpowiadać samemu sobie.

Ta funkcja jeszcze nie istnieje.

Nie mogę obecnie udostępniać żadnej dokumentacji, ponieważ jest ona zastrzeżona i poufna.

Jeśli jesteś członkiem BT SIG, możesz wyświetlić mapę drogową Bluetooth w sekcji panoramy na bluetooth.org

Jon Carlstedt
źródło