| 
 hcitool命令及参数 在打开蓝牙设备以后,就可以使用hcitool工具集对蓝牙进行控制,工具集参数 分为两部分,一为正常的蓝牙设备调试,二为低功耗即BLE设备, 工具参数如下: 命令说明 调用方式  
参数 
–help进入帮助 hcitool –help  
-i在host插有多个蓝牙适配器的情况下,可以通过该参数来指定某控制某一适配器 hcitool -i [dbaddr] [command]  
命令下面的命令是普通蓝牙设备,不需要sudo  
dev
 同hciconfig一样,显示当前适配器设备,输出格式为[hciid MAC] hcitool dev  
inq查询可发现的远程设备,与scan不同的是,除了能查询出MAC以外,还可以查出远程设备的时钟偏移值“clock offset”与设备类型“class”,scan是不会输出相关设备的类型,这可以让我们区分设备是蓝牙耳机,或蓝牙鼠标 hcitool inq  
hcitool inq [–length=N]设置最大查询时间  
hcitool inq [–numrsp=N]设置最大查询数量  
hcitool inq [–iac=lap]指定查询的lac码  
hcitool inq [–flush]清除缓存  
scan查询可发现的远程设备,与inq不同的是,除了能查询出MAC以外,还可以输出设备的名字【名字写在标准的module中,若查询不到该key对应的values则会输出N/A】,可以通过设置参数来获取设备的类型,信息等 hcitool scan  
hcitool scan[–length=N]设置最大查询时间  
hcitool scan[–numrsp=N]设置最大查询数量  
hcitool scan[–iac=lap]指定查询的lac码  
hcitool scan[–class]查询设备类型  
hcitool scan[–info]查询设备信息  
hcitool scan[–oui]查询设备唯一标识  
hcitool scan[–flush]清除缓存  
name通过指定MAC地址来获取设备的名称,该命令可以补全inq查询时无法输出设备名称的问题. hcitool name [dbaddr]  
info通过指定MAC地址来获取设备的相关信息。 hcitool info [dbaddr]  
spinq开启定期查询,使设备被发现,没有则无输出 hcitool spinq  
epinq关闭定期查询,没有则无输出 hcitool epinq  
cmd向远程设备发送命令 hcitool cmd < ogf > < ocf > [parameters]  
con显示当前连接信息 hcitool con  
cc连接设备,可以设置数据类型,与主从关系 hcitool cc < bdaddr >  
hcitool cc [–ptype=pkt_types] < bdaddr > 可以设置接收数据的类型,数据类型包括[DM1, DM3, DM5,DH1,DH3,DH5, HV1, HV2, HV3],可以设置多个类型,类型中间以逗号分隔,默认接收所有类型数据  
hcitool cc [–role=m/s] < bdaddr >可以设置设备的主从关系,M为master,S为slave,默认为s  
Example: hcitool cc –ptype=dm1,dh3,dh5 01:02:03:04:05:06  
cc –role=m 01:02:03:04:05:06  
dc断开远程设备连接 hcitool dc < bdaddr > [reason]  
sr设置设备的主从关系 hcitool sr < bdaddr > < role >  
cpt设置远程设备数据类型 hcitool cpt < bdaddr > < packet_types >可以设置接收数据的类型,数据类型包括[DM1, DM3, DM5,DH1,DH3,DH5, HV1, HV2, HV3],可以设置多个类型,类型中间以逗号分隔  
rssi显示设备的信号强度 hcitool rssi < bdaddr>  
lq显示设备的链路质量 hcitool lq < bdaddr>  
tpl显示设备的发射功率级别 hcitool tpl < bdaddr> [type]  
afh显示设备的AFH(适应性跳频)的信道地图 hcitool afh < bdaddr>  
lp设置或显示设备的链路 hcitool lp < bdaddr> [link policy]  
lst设置或显示连接超时时间,默认情况下连接超时断开连接为20s可以设置超时时间来缩短超时断开连接的时间 hcitool lst < bdaddr> [new value in slots]  
auth请求设备配对认证 hcitool auth < bdaddr>  
enc设置连接加密,同样可以关闭连接加密 hcitool enc < bdaddr> [encrypt enable]  
key更新与远程设备的link key hcitool key < bdaddr>  
clkoff读取远程设备的时钟偏移量,不过这个变量不太靠谱 hcitool clkoff < bdaddr>  
clock读取本地时钟或远程设备的时钟 hcitool clock [bdaddr] [which clock]  
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]  
Options:  
 -H, –handle < 0xXXXX>指定更新状态的BLE设备Handle,在通过lecc链接后,hci工具会随机分配给该设备一个handle名  
-m, –min < interval> 设置设备蓝牙的休眠时间与–max联合使用,设置的区间为: 0x0006~0x0C80  
-M, –max < interval> 设置实例【hcitool lecup –handle 71 –min 6 –max 100】  
-l, –latency < range> 设置BLE数据传输速率,区间为: 0x0000~0x03E8  
-t, –timeout < time> N * 10ms 设置设备超时等待时间,区间为 0x000A~0x0C80  
备注: min/max参数区间为7.5ms到4s,误差在1.25ms,timeout的区间为100ms到32s  
gattool命令及其参数 使用hcitool是为了对设备的连接进行管理,那么对BLE数据进行精细化管理的话,就需要用到gattool,使用gattool对蓝牙设备发送指令的操作上要比hcitool的cmd齐全很多,关于gattool的使用分为两种,一种直接使用参数对蓝牙设备进行控制,二就是使用-I参数进入gattool的interactive模式对蓝牙设备进行控制。 参数说明 调用方式  
-i指定适配器 gatttool -i < hciX> -b < MAC Address>  
-b指定远程设备,在连接多个设备的情况下需要指定控制某一设备 gatttool -b < bdaddr>  
-t指定设备的类型,是开放设备还是私密设备 gatttool -b < MAC Address> -t [public/random]  
-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-desc配合查看服务特性使用,可以查看该设备所有服务特性的值,该值类型为键值对 gatttool –b < MAC Address> –char-desc [–uuid 0x000]可以通过设置UUID来查看某一特性的值  
–char-write更新特性的值,该更新类似于键值对,一个uuid匹配一个value gatttool -b –char-write –uuid [0x000] –value [0]  
–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  
完整示例: gatttool -i hci0 -b aa:bb:cc:dd -t random –char-write-req -a 0x0039 -n 0100 –listen  
 
 
 |