蓝牙工具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。
相关文章推荐
- 蓝牙调试工具hcitool的使用实例
- 蓝牙调试工具hcitool的使用实例
- 蓝牙调试工具hcitool的使用实例【转】
- 内存分析工具MAT(Memory Analyzer Tool)从安装到使用
- 使用Intel编译器(5)PGO(7)PGO工具之tselect(test prioritization Tool)
- Hoyi ER TOOL 工具的使用
- -------------【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用
- Ceph高级工具介绍之ceph-kvstore-tool的使用
- Bluez调试工具hcitool与gattool的使用实例
- Eclipse Memory Analyzer tool 工具的使用
- 据说它是微软公司给Windows XP测试者使用的内部工具--虚拟光驱——VCDControltool
- gatttool的使用
- MultiChannelPackageTool(安卓多渠道打包工具) 工具使用笔记
- mybatis-generator-tool工具的使用
- TraceTool 跟踪工具的瑞士军刀(C++版使用)
- MyBatis Generator Tool工具使用方法
- 使用Beyond Compare作为git mergetool的默认对比工具
- TraceTool 跟踪工具的瑞士军刀(C++版使用)
- openwrt编译bluez工具gatttool
- [tool] apk反编译工具 jadx 使用