Linux的蓝牙低功耗协议栈

4

在Linux设备驱动程序级别上如何实现低功耗蓝牙?

每个新的蓝牙版本都有一个新的蓝牙堆栈代码吗?

3个回答

3

Bluez是Linux蓝牙协议栈。新版本的蓝牙导致了代码的变化,但它并不是完全重写或者像那样彻底的改变。新版本的蓝牙通常是现有协议的扩展,除了低功耗蓝牙。在Linux内核级别完全支持低功耗蓝牙,但是没有太多方便的库来与LE进行更高层次的交互。

由于Bluez与LE的不完整性,我不得不直接与内核代码交互,以实现与LE的功能。此外,我不得不使用不受Bluez 5.x支持的旧内核,并且必须使用Bluez 4.x。


1

Tim和Jhonnash已经为你的问题提供了详细的信息。然而,我想从Android手机的角度再添加一些信息。

新版本的Android使用Bluedroid作为蓝牙协议栈,这与Bluez有很大不同。

Bluez的功能分布在用户空间和内核空间。所有的协议如RFCOMM、HCI和L2CAP都在内核级别实现,而配置文件则在用户空间实现。正如Tim所提到的,为了支持低功耗,Bluez必须在内核级别和用户空间提供支持。这有时会很难跟踪和理解。任何新的更改可能需要修改内核和用户空间代码。

另一方面,Bluedroid比Bluez具有一些优势。Bluedroid在用户空间实现了其完整的功能。因此,任何新的功能只需要在用户级别代码中添加即可,不依赖于内核代码。

此外,回答你的问题“每个新的蓝牙版本都需要新的蓝牙协议栈代码吗?”不需要对新版本的蓝牙进行完全重写,因为新版本的蓝牙是向后兼容的,所以只需将新功能添加到已有的协议栈中。

祝好


0

由于您的问题不是很清楚,因此我尝试提供所有可能用于访问Linux蓝牙低功耗堆栈的协议。

UHID Driver中,“HoG(HID over GATT / Bluetooth-Low-Energy):GATT是在用户空间实现的蓝牙协议。当用户空间打开与蓝牙设备的LE(低功耗)连接时,设备可以通过GATT广告HID功能。”
如此链接中适当定义了GATT服务。 除了GATT之外,还可以使用其他协议来访问低功耗设备。 HID Over GATT的实现方式如下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接