題 藍牙IP?


似乎可以通過IP運行USB,例如運用 usbip 這是一些Linux發行版的一部分,例如 https://www.archlinux.org/packages/?q=usbip

是否有類似的藍牙IP? (不是:通過藍牙IP)。

這將允許通過互聯網將具有BT功能的智能手機與支持BT的耳機物理分離。

Linux的 bnep 也許能夠做到這一點,但我無法找到如何做的說明。


11
2018-06-30 00:04


起源


我懷疑你能否通過互聯網使用USB,主要是因為延遲問題。 - Daniel B
真的是USB嗎? USB規範要求提供不能提供IP的東西,如物理連接器規格,電源等。 - Ron Maupin
@RonMaupin當然,它只是關於USB控制器和CPU之間發生的事情。即便如此,如果延遲足夠低(LAN),使用這些設備的軟件將無法看到差異。 - Daniel B
我實際上只是對usbip有了一個想法。是否可以使用usbip和USB藍牙適配器? (這是一個瘋狂的想法,我知道) - Léo Lam
@Leo Lam。好吧,從技術上來說,它會'超過ip'偽裝成'usb over ip'。 ;) - rinfinity


答案:


雖然在我們的技術世界中,今天似乎有可能, 據我所知,從未實現過真正的藍牙到藍牙的IP。 我將嘗試解釋困難,雖然不是不可克服的, 是造成這種情況的原因。

藍牙 本身就是一種用於交換數據的無線技術標準 短距離。它通常用於設備到設備的連接並涉及 出於安全目的,配對的概念。藍牙協議是非常的 用途廣泛,可用於多種用途。它的受歡迎程度源於事實 它以全球未經許可(但不是不受管制)的頻率運行。

真正的藍牙到藍牙IP需要兩個藍牙設備配對 通過IP。這與使用Skype進行通話的兩個人不同 通過藍牙耳機在互聯網上,因為耳機是配對的 與他們的計算機,而不是彼此。

以下是維基百科文章的一些摘錄 OSI模型 :

第1層:物理層

並行SCSI的物理層在此層中運行,同樣如此   以太網和其他局域網的物理層,如   令牌環,FDDI,ITU-T G.hn和IEEE 802.11(Wi-Fi),以及   個人區域網絡如 藍牙 和IEEE 802.15.4。

第4層:傳輸層

標準Internet中傳輸層協議的示例   堆棧是傳輸控制協議(TCP),通常建立在   互聯網協議(IP)。

TCP和UDP是傳輸級別4協議,而藍牙則較低 物理級別1協議。因此,您可以在藍牙之上使用TCP或UDP,就像在以太網上使用TCP和UDP一樣,但相反的情況要困難得多。

藍牙協議棧包括其自己的傳輸協議:L2CAP和RFCOMM,其中RFCOMM鏈路使用L2CAP層。您可以通過藍牙封裝UDP數據包通過RFCOMM鏈路進行一些IP隧道。

使用純OSI術語,這是不可能的,甚至是術語的矛盾, 在第4層上使用第1層協議。

實際上,我們可以想像一個軟件編寫的虛擬適配器 在客戶端將Linux聲明為物理藍牙設備 並通過IP與服務器端Linux上的另一個這樣的虛擬藍牙設備進行通信。但是模擬OSI層和編程所涉及的複雜性 實現非常通用的藍牙協議所需的努力 及其主從架構, 使創建這樣一個普遍的實現是一項非常艱鉅的練習 不太可能發生,因為目前沒有這種軟件的需求。


4
2017-11-08 18:04



就像OSI堆棧本身一樣,嚴格的分層只存在於幻想中。廣泛使用的VPN軟件 做 通過L4 UDP傳輸L3 IP數據包甚至L2以太網幀... - grawity
@grawity:我同意一個數據包是一個數據包,無論包裹多深。但是,VPN最終只支持IP over IP,即使打包在較低/較高層,而藍牙則是完全不同的物理協議。我的回答說這是可能的,但由於協議的不同,可能太複雜而無法理解。你不同意嗎? - harrymc


我在實踐中沒有嘗試過任何這種方法,但我可以找到關於“基於IP的藍牙”的內容。

這本書 Linux內核網絡 是非常技術性的,但它描述瞭如何做“藍牙IP”:

在服務器端:

pand --listen --role=NAP

在客戶端:

pand --connect btAddressOfTheServer

這將創建一個虛擬接口 bnep0

顯然這只是給你L2CAP,它只能通過“微微網”發送數據包。但對於L2CAP,有關於如何通過IP發送它們的想法 IETF草案: 通過藍牙網絡傳輸IP數據包

IETF可以考慮通過主機控制器在IP上運行L2CAP   使用新協議:

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

圖4.3.3 - 第3節。可用於IP網絡的藍牙協議棧

然後我也找到了 UbiPAN:藍牙擴展個人區域網絡 提到“基於IP的藍牙” - 但不幸的是,它看起來並不像UbiPAN已經作為免費軟件發布。


3
2017-11-11 01:33



BNEP用於在現有微微網中通過L2CAP直接發送網絡數據包,它不允許用戶通過IP橋接藍牙。此外,您鏈接的規範是舊的,而不是來自原始來源(BT SIG),這是採用的規範: bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=6552 - Jon Carlstedt
對不起,我的回答是一項正在進行的工作,您可能對此不滿意,但它目前包含的有關可能的解決方案的有用信息比任何其他答案都要多。 - guaka


哈利姆是對的。

這是不可能的,或者至少是不可行的。

您可以將手機與計算機配對,將耳機與另一台計算機配對,從而實現兩個藍牙連接。計算機之間的連接可以通過任何您喜歡的方式進行橋接,從而中繼所有藍牙通信。 這將使你看起來像是通過IP橋接藍牙,你可能會讓他們互相交談並做一些你想要做的事情。

但實際上兩個設備之間沒有藍牙連接。

設備A具有與計算機的藍牙連接。

設備B具有與另一台計算機的藍牙連接。

這兩個設備將無法直接配對和連接。理論上可以建立一個允許建立直接藍牙鏈接的東西,但遍歷層和鏈接密鑰管理將是一個噩夢,這只是一個開始,我不知道如何解決包管理和頻率對於單個時隙分組,跳頻,藍牙跳頻率為1600跳/秒。

如果有人真的這麼做了,我會非常感動,非常想看看引擎蓋下。


0
2017-11-09 13:23





好的,我已經對此進行了一些調查。 這不可能。

原因如下: 為此,您需要計算機中的藍牙芯片來傳遞信息而不是回答自己。

這種功能尚不存在。

我目前無法共享任何文檔,因為它是專有的和保密的。

如果您是BT SIG的會員,您可以在bluetooth.org上的全景部分查看藍牙路線圖


0
2017-11-11 08:42





我最近對同樣(或類似)的想法進行了抨擊。我想要做的是使用一個家庭自動化中心,遺憾的是無法通過單一位置的無線電到達整個房子。

我的設置如下:計算機運行bluez + usbip客戶端< - 局域網 - >其他計算機與物理藍牙USB加密狗+ usbip服務器。

原來這個工作得很好。從Bluez的角度來看,它無法在本地和遠程USB加密狗之間進行分配。

(機器運行Linux 4.9.80 + up-todate-usbip + Bluez 5.48; arm)


-1
2017-10-14 08:24