openwrt下使用bluez扫描连接BLE蓝牙设备

最近项目上要用到蓝牙设备,主板是mt7688,跑的openwrt。

由于没搞过蓝牙,所以先从简单的开始弄,网上买了个CSR的USB蓝牙模块,支持4.0蓝牙。

make menuconfig,在内核中加上bluez库(先略过,以后有空详细介绍),并且在USB设备里加上UHCI功能,烧录板子,即可识别USB蓝牙设备。


使用hciconfig命令,可以查看到蓝牙设备。

openwrt下使用bluez扫描连接BLE蓝牙设备

可以看到设备编号是hci0,默认设备是关闭状态的,所以使用hcitool dev是看不到的,用hciconfig命令,即可开启设备,之后即可看到:

openwrt下使用bluez扫描连接BLE蓝牙设备


hcitool工具的功能还是很强大的,详细介绍可以看这里,这位兄弟写的很详细。

https://blog.csdn.net/talkxin/article/details/50610984


由于我这边需要连接的是LE设备,所以我用的是带le的命令。

首先是搜索设备:

openwrt下使用bluez扫描连接BLE蓝牙设备

我需要连接那个Nordic_UART设备,这里我使用gatttool工具,如图:

openwrt下使用bluez扫描连接BLE蓝牙设备

这时正常连接,并获取到服务端口。


这边我在测试过程中,发现直接用hcitool lecc F1:FD:0C:4A:BB:81会连接失败,这里有高手看看什么原因。

另外,开始测试的,使用gatttool工具也连接不上,最后发现蓝牙设备在使用lescan之后,再去连接就不行了,所以在连接之前,先hciconfig hci0 down;hciconfig hci0 up;这样就能连接上。