Bluez协议栈在安装完以后,会提供两个命令行调试工具,hcitool与gattool,我们可以根据提供的工具来轻松的调试我们的蓝牙设备,调试BLE设备时,需要获取root权限。
蓝牙设备的开启与关闭
首先,查看在使用hci工具时,我们需要查看当前能够识别的蓝牙设备,这里我们需要使用的工具是hciconfig命令,该命令如ifconfig一样,可以控制蓝牙设备的开启与关闭,在默认情况下,蓝牙设备在插入host时是不会自动开启的,所以我们在调试之前要先开启设备。
如果我们需要查看蓝牙设备的话:
hci0:Type: Primary Bus: UART
BD Address: 54:C9:DF:B1:CD:8C ACL MTU: 1024:7 SCO MTU: 60:8
UP RUNNING PSCAN
RX bytes:85137 acl:851 sco:0 events:4646 errors:0
TX bytes:44582 acl:847 sco:0 commands:2426 errors:0
会输出以上内容,我们可以看到蓝牙设备的编号为hci0,这是host分配给设备的ID,我们用来启动或关闭设备也是需要该ID来控制。
开启与关闭设备:
#设备打开
sudo hciconfig hci0 up
#设备关闭
sudo hciconfig hci0 down
hcitool命令及参数
在打开蓝牙设备以后,就可以使用hcitool工具集对蓝牙进行控制,工具集参数 分为两部分,一为正常的蓝牙设备调试,二为低功耗即BLE设备, 工具参数如下:
$ hcitool
hcitool - HCI Tool ver 4.93
Usage:
hcitool [options] [command parameters]
Options:
--help Display help
-i dev HCI device
Commands:
dev Display local devices
inq Inquire remote devices
scan Scan for remote devices
name Get name from remote device
info Get information from remote device
spinq Start periodic inquiry
epinq Exit periodic inquiry
cmd Submit arbitrary HCI commands
con Display active connections
cc Create connection to remote device
dc Disconnect from remote device
sr Switch master/slave role
cpt Change connection packet type
rssi Display connection RSSI
lq Display link quality
tpl Display transmit power level
afh Display AFH channel map
lp Set/display link policy settings
lst Set/display link supervision timeout
auth Request authentication
enc Set connection encryption
key Change connection link key
clkoff Read clock offset
clock Read local or remote clock
lescan Start LE scan
lewladd Add device to LE White List
lewlrm Remove device from LE White List
lewlsz Read size of LE White List
lewlclr Clear LE White list
lecc Create a LE Connection
ledc Disconnect a LE Connection
lecup LE Connection Update
For more information on the usage of each command use:
hcitool --help
命令说明调用方式
参数
–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]设置最大查询数量