通过IP的蓝牙?


13

似乎可以通过IP运行USB,例如使用USB usbip是某些Linux发行版的一部分,例如https://www.archlinux.org/packages/?q=usbip

IP蓝牙是否有类似的东西?(否:蓝牙IP)。

这将允许通过互联网将支持BT的智能手机与支持BT的耳机进行物理隔离。

Linux bnep也许可以做到这一点,但是我还没有找到有关如何操作的说明。


3
我怀疑您是否能够通过Internet使用USB,主要是由于延迟问题。
Daniel B

真的是USB吗?该USB规范要求东西就不能IP来提供,如物理连接器规格,功率等
罗恩·莫平

@RonMaupin当然,这与USB控制器和CPU之间发生的事情有关。即使这样,只要延迟足够低(LAN),使用这些设备的软件也看不到差异。
Daniel B

2
我实际上只是对usbip有一个想法。可以将usbip与USB蓝牙加密狗一起使用吗?(我知道这是个疯狂的主意)
Lao Lam 2015年

@Leo Lam 好吧,从技术上讲,这将是“ bt over ip”伪装成“ usb over ip”。;)
rinfinity

Answers:


7

尽管在我们的技术世界中,今天似乎一切皆有可能,但据我所知,从未实现过真正的基于IP的蓝牙到蓝牙。我将尽力解释造成这种情况的困难,尽管这些困难并非无法克服,但仍然是不可克服的。

蓝牙本身是用于短距离交换数据的无线技术标准。为了安全起见,它通常用于设备到设备的连接,并且涉及配对的概念。蓝牙协议非常通用,可以用于许多目的。它的流行是由于它在全球范围内未经许可(但不受监管)的频率下运行。

真正的IP蓝牙到蓝牙将需要两个蓝牙设备通过IP配对。例如,这与两个人使用Skype通过蓝牙耳机通过Internet进行通话不同,这是因为耳机与他们的计算机而不是彼此配对。

以下是Wikipedia文章OSI模型的摘录:

第1层:物理层

并行SCSI的物理层在此层中运行,以太网和其他本地网络的物理层也是如此,例如令牌环,FDDI,ITU-T G.hn和IEEE 802.11(Wi-Fi)作为个人区域网络,例如蓝牙和IEEE 802.15.4。

第四层:传输层

标准Internet堆栈中的传输层协议的一个示例是通常在Internet协议(IP)之上构建的传输控制协议(TCP)。

TCP和UDP是传输级别4协议,而蓝牙是较低的物理级别1协议。因此,您可以在蓝牙之上使用TCP或UDP,就像在以太网之上使用TCP和UDP一样,但是反之则困难得多。

蓝牙协议栈包括其自己的传输协议:L2CAP和RFCOMM,其中RFCOMM链接使用L2CAP层。您可以通过蓝牙工作一些IP隧道,从而通过RFCOMM链接封装UDP数据包。

使用纯OSI术语,不可能在第4层上使用第1层协议,甚至是术语上的矛盾。

实际上,我们可以想象一个软件编写的虚拟适配器,该适配器将在客户端将Linux声明为物理蓝牙设备,并通过IP与服务器端Linux上的另一虚拟蓝牙设备进行对话。但是,仿真OSI层所涉及的复杂性以及实现非常通用的蓝牙协议及其主从体系结构所需的编程工作,使得创建这样的通用实现成为一项非常艰巨的尝试,因为目前不太可能发生不需要此类软件。


4
就像OSI堆栈本身一样,严格的分层仅存在于幻想中。广泛使用的VPN软件可以通过L4 UDP传输L3 IP数据包甚至L2以太网帧…
user1686

@grawity:我同意这样一个观点,即无论包装的深度如何,包装都是包装。但是,VPN最终只能通过IP进行IP传输,即使打包在较低/较高的层中,而蓝牙是完全不同的物理协议。我的回答说这是可能的,但是由于协议差异,可能太麻烦了。你不同意吗?
harrymc

3

我没有在实践中尝试过任何方法,但是我可以找到有关“基于IP的蓝牙”的内容。

Linux内核网络》一书非常技术性,但它描述了如何执行“基于IP的蓝牙”:

在服务器端:

pand --listen --role=NAP

在客户端:

pand --connect btAddressOfTheServer

这将创建一个虚拟接口bnep0

显然,这给了您L2CAP,它只能通过“微微网”发送数据包。但是对于L2CAP,在IETF草案中有关于如何通过IP发送它们的想法通过蓝牙网络传输IP数据包

IETF可以考虑使用新协议通过主机控制器在IP上运行L2CAP:

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

图4.3.3-3rd。用于IP网络的可能的蓝牙协议栈

然后,我还发现了UbiPAN:蓝牙扩展个人区域网络,其中提到了“ IP上的蓝牙”-但不幸的是,它看起来并不像UbiPAN那样是作为免费软件发布的。


1
BNEP用于直接通过现有微微网中的L2CAP发送网络数据包,它不允许用户通过IP桥接蓝牙。另外,您链接到的规范很旧,并且不是原始来源(BT SIG),而是采用的规范:bluetooth.org/docman/handlers/DownloadDoc.ashx?
doc_id=6552

2
抱歉,我的答案是一个正在进行的工作,您可能对此不满意,但是与其他答案相比,它当前包含有关可能解决方案的更多有用信息。
kqw

您的答案没有说明是否可以使用基于IP的蓝牙。
Winny

1

我最近一直在考虑相同(或相似)的想法。我想要做的是使用一个家庭自动化集线器,不幸的是,该中心无法通过单位置无线电到达整个房子。

我的设置如下:运行bluez + usbip客户端<-LAN->具有物理蓝牙USB dongle + usbip服务器的其他计算机。

事实证明,这很好。从Bluez的角度来看,它无法区分本地和远程USB软件狗。

(运行Linux 4.9.80 + up-todate-usbip + Bluez 5.48的机器;手臂)


0

哈里克是正确的。

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

您可以将手机与计算机配对,将耳机与另一台计算机配对,从而实现两个蓝牙连接。计算机之间的连接可以以您喜欢的任何方式桥接,进而中继所有蓝牙通信。这将使您看起来好像您已经在IP上架起了蓝牙,您可能可以让他们互相交谈并做您想做的一些事情。

但实际上,两个设备之间没有蓝牙连接。

设备A与计算机具有蓝牙连接。

设备B与另一台计算机建立了蓝牙连接。

这两个设备将无法配对并直接相互连接。从理论上讲,可以构建一些东西来建立直接的蓝牙链接,但是遍历各个层和链接密钥管理将是一场噩梦,而这仅仅是个开始,我不知道如何解决程序包管理和频率问题跳频,单个时隙数据包的蓝牙跳频率为1600 hops / s。

如果有人真的这样做了,我会留下深刻的印象,非常想了解一下。


0

好的,我对此进行了更多调查。这不可能。

原因如下:为使此方法有效,您将需要计算机中的蓝牙芯片来中继信息而不是自行回答。

这种功能尚不存在。

我目前无法共享任何文档,因为它是专有的和机密的。

如果您是BT SIG的成员,则可以在bluetooth.org的“全景图”部分查看蓝牙路线图。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.