蓝牙工具hcitool和gatttool的使用

.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

请求设备配对认证

hcitool 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以后,一个蓝牙适配器可以连接7BLE设备

hcitool ledc < handle> [reason]

lecup

更新BLE设备的连接及状态

hcitool lecup [Options]

 

2.2 gattool命令及其参数

如果说使用hcitool是为了对设备的连接进行管理,那么对BLE数据进行精细化管理的话,就需要用到gattool此外,使用gattool对蓝牙设备发送指令的操作上要比hcitoolcmd齐全很多

关于gattool的使用分为两种,一种直接使用参数对蓝牙设备进行控制二就是使用-I参数进入gattoolinteractive模式对蓝牙设备进行控制。该工具的参数如图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系统的手机可以下载APPBLE UtilitylightBlue

android手机可以下载APPBLE Device Monitor

这三种工具可以让手机通过蓝牙与BLE设备进行通信,例如读取BLE设备某些特征值的值;往特征值写入指定命令控制BLE设备等等。

下面BLE Utility为例,图2-2BLE 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 使用gatttoolBLE设备通讯

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-writeBLE设备的特征值写入数据;使用--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 49MI),查询ASCII4D对应的是M49对应的是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

你可能感兴趣的:(bluez)