在树莓派3上进行的以下操作。
- 常用工具安装
BlueZ是Linux中最常用的蓝牙协议栈。
先安装BlueZ常用工具:
可以直接通过apt安装:
sudo apt-get install pi-bluetooth
sudo apt-get install bluetooth bluez blueman
也可以通过源码安装
获取最新的Bluez源代码:
wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.18.tar.xz
注意:如果已经安装,请确保您卸载了Bluez。(apt-get没有非常新的版本)要检查它是否已经安装,请运行以下命令:
dpkg --get-selections | grep -v deinstall | grep bluez
提取源
tar xvf bluez-5.18.tar.xz
安装依赖关系
sudo apt-get install libglib2.0-dev libdbus-1-dev libusb-dev libudev-dev libical-dev systemd libreadline-dev
运行配置
.configure --enable-library
注意: -enable-library将启用库的使用,以便您可以使用Bluez堆栈创建自己的应用程序
编译并安装源代码
make -j8 && sudo make install
安装脚本不会复制gatttool到您的/usr/local/bin/目录。您必须手动执行此操作:
sudo cp attrib/gatttool /usr/local/bin/
hcitool dev
hcitool scan
扫描可用的蓝牙设备
返回的是扫描到的蓝牙设备物理地址和设备名。
hcitool lescan
扫描可用的低功耗蓝牙设备(BLE)
返回的同样是扫描到的蓝牙设备物理地址和设备名。
gatttool
链接到想要的BLE设备
打开gatttool
sudo gatttool -b <BLE ADDRESS> -I
是你想要连接的设备的物理地址
打开后输入connect连接
连接成功此时我的被连接设备连接指示灯亮表示连接成功
常用命令
primary
获得BLE设备提供的服务(server)信息
在我的设备中可以看到一共有4个服务,每个服务所包含的属性句柄值(handle)及其UUID
characteristics
查看设备服务的特性,其中handle是特性的句柄,char properties是特性的属性值,char value handle是特性值的句柄,uuid是特性的标识。
char-desc
配合查看服务特性使用,可以查看该设备所有服务特性的值,该值类型为键值对
char-write
更新特性的值,该更新类似于键值对,一个uuid匹配一个value
char-write-req
读取notifications里的内容,可以设置listen来开启监听否则每次只读一次,监听读取notifications时需要向该handle写入一个1,在命令行中16进制的表示为0100,若向该handle写入0200的话则改为读取indications的内容