前言:
BlueZ是Linux官方蓝牙协议栈。它是一个基于GNU General Public License (GPL)发布的开源项目,从Linux 2.4.6开始便成为Linux 内核的一部分。如果你是linux平台开发蓝牙的的工程师,肯定会接触过Bluez协议栈,hciconfig,hciattach,hciconfig等工具都是很好用的工具。
关于蓝牙Mesh的功能,Bluez协议栈从Release 5.47(14th September 2017)逐步开始支持,在Bluez官网可以看到目前最新的是2022年11月14日发布的Release 5.66(14th November 2022),但从该文件夹中的TODO文件中可以看到,截至到今天蓝牙Mesh的单元测试还没有全部实现。
Bluez协议栈的代码庞大,同时支持经典蓝牙和BLE,使用大量的linux系统的api,在linux系统上运行稳定,但不方便移植到其他RTOS平台,同时又对BLE Mesh的支持相对比较慢,所以导致了很多芯片原厂并没有使用Bluez的开源Mesh协议栈部分,而是自己开发或者移植的一套。但仍然有一些原厂使用了Bluez的mesh协议栈,并使用它通过了QDID认证,所以虽然Bluez的Mesh协议栈目前大厂使用的比较少,但是也是可以放心使用的。
另外一点需要注意的是Bluez的Mesh协议栈对运行的linux内核版本有要求,需要目标平台的内核版本在4.9及以上才行,原因是Bluez的Mesh代码为了执行效率,使用了内核的加解密实现,当然这部分完全可以不调用内核的接口