您的位置:首页 > 其它

蓝牙工具hcitool和gatttool的使用

2017-12-19 19:19 330 查看

.1 hcitool命令及其参数

在打开蓝牙设备以后,就可以使用hcitool工具集对蓝牙进行控制,工具集参数 分为两部分,一为正常的蓝牙设备调试,二为低功耗即BLE设备,工具参数如下表1所示:
表1 hcitool常用命令
常用命令
说明
调用方式
参数

 
 
dev
同hciconfig一样,显示当前适配器设备,输出格式为[hciid MAC]
hcitool dev
scan
查询可发现的远程设备,与inq不同的是,除了能查询出MAC以外,还可以输出设备的名字【名字写在标准的module中,若查询不到该key对应的values则会输出N/A】,可以通过设置参数来获取设备的类型,信息等
hcitool scan
name
通过指定MAC地址来获取设备的名称,该命令可以补全inq查询时无法输出设备名称的问题.
hcitool name [dbaddr]
cmd
向远程设备发送命令
hcitool cmd < ogf > < ocf > [parameters]
con
显示当前连接信息
hcitool con
cc
连接设备,可以设置数据类型,与主从关系
hcitool cc < bdaddr >
auth
请求设备配对认证
hcit
f82a
ool auth < bdaddr>
BLE设备命令
以下命令需要root权限才能执行
 
lescan
搜索BLE设备
hcitool lescan
 
 
hcitool lescan[–privacy]启用隐私搜索
 
 
hcitool lescan [–passive]默认参数,设置被动扫描
 
 
hcitool lescan [–discovery=g/l]
设置搜索条件为综合设备或限制设备
 
 
hcitool lescan [–duplicates]过滤重复的设备
lewladd
将设备加入BLE白名单
hcitool lewladd [–random] < bdaddr>可声明该设备的MAC地址为随机地址,有的BLE设备可以被设置为随机MAC地址以增加私密性,为以后也能连接到该MAC地址,需要声明MAC地址是随机,这样才能用旧的MAC地址连接到设备
lewlrm
将设备移除BLE白名单
hcitool lewlrm < bdaddr>
lewlsz
输出白名单设备列表
hcitool lewlsz
lewlclr
清空白名单列表
hcitool lewlclr
lecc
连接BLE设备
hcitool lecc < bdaddr>
 
 
hcitool lecc [–random] < bdaddr>随机MAC地址连接
 
 
hcitool lecc
–whitelist 连接所有白名单设备
ledc
断开BLE设备的连接。在通过lecc链接后,hci工具会随机分配给该设备一个handle名,断开连接时需要使用该handle,因为在蓝牙4.0以后,一个蓝牙适配器可以连接7个BLE设备
hcitool ledc < handle> [reason]
lecup
更新BLE设备的连接及状态
hcitool lecup [Options]
 

2.2 gattool命令及其参数

如果说使用hcitool是为了对设备的连接进行管理,那么对BLE数据进行精细化管理的话,就需要用到gattool。此外,使用gattool对蓝牙设备发送指令的操作上要比hcitool的cmd齐全很多。
关于gattool的使用分为两种,一种直接使用参数对蓝牙设备进行控制;二就是使用-I参数进入gattool的interactive模式对蓝牙设备进行控制。该工具的参数如图2-1所示。
 
图2-1 gatttool工具参数
 
表2 gatttool常用命令集
参数
说明
调用方式
-i

指定适配器
gatttool -i < hciX> -b < MAC Address>
-b

指定远程设备,在连接多个设备的情况下需要指定控制某一设备
gatttool -b < bdaddr>
-m

设置数据包长度
-m MTU
–sec-leve

设置数据发送级别,默认情况下是low,需要高频发射数据的情况下需要将级别设置为high,但相应的耗电会上升
gatttool -b < MAC Address> -l [low/medium/high]
-I

进入interactive模式
gatttool -b < MAC Address> -I
 

以下参数可以直接在interactive模式下使用,也可以在命令行直接使用
 
–primary

寻找BLE中可用的服务
gatttool -b < MAC Address> –primary
–characteristics

查看设备服务的特性,其中handle是特性的句柄,char properties是特性的属性值,char value
handle是特性值的句柄,uuid是特性的标识。
gatttool -b < MAC Address> –characteristics
–char-write-cmd

往某个handle写入指定的数值
char-write-cmd –handle=0xXXXX
-value=0100 –listen
–char-write-req

读取notifications里的内容,可以设置listen来开启监听否则每次只读一次,监听读取notifications时需要向该handle写入一个1,在命令行中16进制的表示为0100,若向该handle写入0200的话则改为读取indications的内容
gatttool -b < MAC Address> –char-write-req –handle=0xXXXX –value=0100 –listen


 
 

2.3 手机BLE蓝牙工具介绍

ios系统的手机可以下载APP:BLE Utility;lightBlue。
android手机可以下载APP:BLE Device Monitor。
这三种工具可以让手机通过蓝牙与BLE设备进行通信,例如读取BLE设备某些特征值的值;往特征值写入指定命令控制BLE设备等等。
下面BLE Utility为例,图2-2为BLE Utility扫描到的低功耗设备;图2-3为小米手环1某个服务下的所有特征值及该特征值的属性(读,写,通知);图2-4为小米手环的某项服务下的特征值,BLE
Utility可直接往该特征值写入数据来控制小米手环的震动,震动分为4级,可通过发送命令参数(0-4)来控制小米手环1震动。
 

     图2-2低功耗设备        图2-3MI特征值          图2-4写入数据

3.使用方法

3.1 扫描周围低功耗设备(BLE)

命令:hcitool lescan

解释:扫描周围的低功耗蓝牙设备。

扫描结果如图2-1所示,其中mac地址以C8:开头的设备是本次设备实验的对象——小米手环。(由于版本原因:使用hcitool
lescan不能很好的识别设备名字)

 
图3-1 BLE设备扫描示意图

3.2 使用gatttool与BLE设备通讯

3.2.1 与BLE设备交互式通讯

命令:                        作用

gatttool -b C8:0F:10:1B:CE:5E -I 进入interactive模式与指定蓝牙设备通讯

>connect                      与BLE设备连接。

>primary                      寻找BLE中可用的服务。(如图2-2所示)

>characteristics                查看设备服务的特征值。(如图2-3所示)

>char-read-hnd 0x0009         读取特征值对应句柄的数值。(如图2-4所示)

>char-write-cmd 0x0053 03      发送03命令到句柄0x0023(控制手环震动)

>sec-level high                 设置安全等级为高,可以让手环长时间与 Ubuntu保持连接。

 
图3-2 BLE设备可用服务
 

 
图3-3 BLE设备服务对应的特征值
 
图3-4
与BLE设备通信截图

3.2.2 与BLE设备非交互式通讯

命令:gatttool --help-gatt

解释:展示gatttool命令,具体参数如图3-5所示,我们主要使用--char-write向BLE设备的特征值写入数据;使用--char-read读取BLE设备上的数据;可使用参数--characteristics和--primary
来查看BLE设备的相关服务和对应的特征值。

 
图3-5 GATT 命令
命令:gatttool -b C8:0F:10:1B:CE:5E --char-read -a 0x0003
解释:读取小米手环的名字。如图3-6所示,读取句柄0x0003
返回4d 49(MI),查询ASCII得4D对应的是M。49对应的是I。
 
图3-6 读取命令操作示意图
命令:gatttool -b C8:0F:10:1B:CE:5E --char-write -a 0x0053 -n 04

解释:向小米手环的句柄0x0053发送参数04,该句柄用于控制小米手环的震动等级,发送给命令设置小米手环的震动等级(4级),同时手环会震动。

命令:gatttool -b C8:0F:10:1B:CE:5E --characteristics

解释:读取小米手环的特征值。

命令:gatttool -b C8:0F:10:1B:CE:5E ----primary

解释:查看小米手环的主要服务。

命令:gatttool -b C8:0F:10:1B:CE:5E --char-write-req -a 0x0009 -n 02

解释:往句柄为0x0009写入值02。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: