如何扫描BLE设备

来自百问网嵌入式Linux wiki


如何扫描 BLE 设备

本页列出了扫描、连接和显示 BLE 设备信息的操作示例。 BLE代表低功耗蓝牙

需要的软件包

  • bluez5

配置

修改配置文件 /etc/udev/rules.d/10-local.rules 让蓝牙自动启动:
	# Set bluetooth power up
	ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up

一些实用命令

Bluez 默认提供一些工具来分析蓝牙网络。
hciconfig 配置hci连接
hcitool 进行扫描、查找设备、连接到设备、管理设备列表。设备可能是正常或低能耗模式。
gatttool 用于BLE设备管理

连接BLE设备的步骤

扫描附近所有可见的低功耗蓝牙设备的命令:
	Board $> hciconfig hci0 up
	Board $> hcitool lescan
扫描可用的BLE设备:
	Board $> hcitool lewladd <BLE_MAC_ADDRRESS>
将 BLE 设备添加到白名单中(可选):
	Board $> hcitool lecc <BLE_MAC_ADDRESS>
连接 BLE 设备:
一旦识别出BLE设备,就可以使用 GATTTOOL 发现,读取和修改其特性(见附件)。
GATTTOOL 提供两种工作模式:交互式和非交互式

GATTTOOL 交互模式

	Board $> gatttool -b <MAC Address> --interactive
在交互模式下,可以使用下面的命令:
connect:连接到指定的设备
primary:禁用所有主要属性
char-read-hnd <handle> 读取指定的句柄/属性值
char-write-cmd <handle> <value>修改句柄值

GATTTOOL 非交互模式:

在非交互模式下,命令是一一发出的。在每个命令中,GATTTOOL 都会尝试连接设备、操作和断开与设备的连接。
以下是几个示例:
	Board $> gatttool -b <Mac Address> --primary 
	Board $> gatttool -b <MAC Address> --characteristics 
	Board $> gatttool -b <MAC Address> --char-read 
	Board $> gatttool -b <MAC Address> --char-desc