Bluetooth 面向linux的蓝牙低能耗协议栈

Bluetooth 面向linux的蓝牙低能耗协议栈,bluetooth,linux-device-driver,bluetooth-lowenergy,Bluetooth,Linux Device Driver,Bluetooth Lowenergy,在linux中,如何在设备驱动程序级别实现蓝牙低能耗 每个新的蓝牙版本都有新的蓝牙协议栈代码吗?因为您的问题并不完全清楚,这就是为什么我还尝试提供所有可能的协议来访问linux的蓝牙低功耗协议栈 在“HoG(GATT上的HID/蓝牙低能):GATT是在用户空间中实施的蓝牙协议。当用户空间打开与蓝牙设备的LE(低能)连接时,设备可以通过GATT公布HID功能。” As服务在此链接中已正确定义。 除关贸总协定外,还可以有其他协议访问该协定。GATT上的HID实现就是这样完成的。是Linux蓝牙的堆栈

在linux中,如何在设备驱动程序级别实现蓝牙低能耗


每个新的蓝牙版本都有新的蓝牙协议栈代码吗?

因为您的问题并不完全清楚,这就是为什么我还尝试提供所有可能的协议来访问linux的蓝牙低功耗协议栈

在“HoG(GATT上的HID/蓝牙低能):GATT是在用户空间中实施的蓝牙协议。当用户空间打开与蓝牙设备的LE(低能)连接时,设备可以通过GATT公布HID功能。”
As服务在此链接中已正确定义。 除关贸总协定外,还可以有其他协议访问该协定。GATT上的HID实现就是这样完成的。

是Linux蓝牙的堆栈。新版本的蓝牙导致了代码的变化,但它不是一个完全重写或任何类似的激烈。较新版本的蓝牙通常是现有协议的扩展,但能量较低的除外。Linux在内核级别完全支持低能耗,但是没有很多方便的库可以与LE进行更高级别的交互


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

Tim和jhonnash已经为您的问题提供了全面的信息。不过,我想从Android Mobile的角度补充一点信息

新版Android使用Bluedroid作为蓝牙协议栈。这与Bluez完全不同

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

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

此外,为了回答您的问题“每个新蓝牙版本是否都有新的蓝牙堆栈代码?”新版本的蓝牙不需要完全重写,因为蓝牙新版本是向后兼容的,因此只有这些代码部分被添加到已存在的新堆栈中

问候