BLE
该部分主要分享一下常用的蓝牙调试工具,方便后续蓝牙抓包及分析。
1 hciconfig
工具介绍:hciconfig
,HCI
设备配置工具
命令格式:hciconfig
、hciconfig [-a] hciX [command ...]
详细命令如下:
只介绍几种常用命令
- 帮助信息:
hciconfig -h
- 查看设备详细信息:
hciconfig -a hci0
或者hciconfig
- 打开/关闭/重置
hci
设备:hciconfig hci0 up/down/reset
- 认证打开/关闭:
hciconfig hci0 auth/noauth
,直接体现在进行蓝牙连接时,是否输入连接PIN密码,用于PIN配对 - 查看/改变蓝牙主从状态:
hciconfig hci0 lm
、hciconfig hci0 lm slave
- 查看/设置蓝牙名称:
hciconfig hci0 name
、hciconfig hci0 name Donge
- 开启/关闭广播:
hciconfig hci0 leadv/ noleadv
- 查看支持的链路层状态:
hciconfig hci0 lestates
hciconfig
详细介绍参考:https://blog.51cto.com/dongyulong/442289
2 hcitool
工具介绍:hcitool
,HCI 设备管理工具
命令格式:hcitool [options] <command> [command parameters]
详细命令如下:
只介绍几种常用命令
- 帮助信息:
hcitool --help
- 查看
HCI
设备信息:hcitool dev
- 发现周围蓝牙设备:
hcitool -i hci0 inq
- 蓝牙扫描:
hcitool -i hci0 inq
- 查看探查到的蓝牙信息:
hcitool -i hci0 name 88:A9:B7:E6:F1:8F
- 发送CMD蓝牙命令:
hcitool cmd --help
这个命令非常好用,它允许我们不用写代码就可以发送自己想发的任何HCI命令,我们先看下帮助信息
- 创建/删除蓝牙连接:
hcitool -i hci0 cc/dc --ptype=dm1,dh3,dh5 01:02:03:04:05:06
- 扫描附近BLE蓝牙设备:
hcitool -i hci0 lescan
- 连接/断开BLE设备:
hcitool -i hci0 lecc/ledc 12:34:56:C2:9C:C7
参考连接:https://blog.csdn.net/u010764600/article/details/119684001
3 hcidump
工具介绍:hcidump
,HCI sniffer
,蓝牙包的分析工具,hcidump
读取发送和接受蓝牙设备的原始hci
数据,并按照人可以识别的命令、事件、数据格式打印到屏幕上,转储信息还可以保存到一个当地文件中,从而保证转储文件在后续进行解析。
命令格式:hcidump [OPTION...] [filter]
详细命令如下:
只介绍几种常用命令
- 帮助信息:
hcidump -h
- 仿真设备选定:
hcidump -i hci0
- 导出文件:
hcidump -i hci0 -w bt_debug.cfa
- 选定格式:
hcidump -i hci0 -X
- 显示时间:
hcidump -i hci0 -t
- 常用命令:
hcidump -i hci0 -Xt -w bt_debug.cfa &
,以Asicc
、Hex
打印,并且添加时间戳,转存到bt_debug.cfa
文件中
该命令,可以将HCI传输的数据包记录到文件内,通过Windows
的ViewCfa
应用可以详细查看每个包的数据。
4 hciattach
工具介绍:hciattach
,该工具通过UART HCI
将串行设备连接到BlueZ
协议栈,作为HCI传数接口。
命令格式:hciattach [-n] [-p] [-t timeout] tty type| id speed flow bdaddr
详细命令如下:
只介绍几种常用命令
- 帮助信息:
hciattach
-
-n
:不脱离控制终端 -
-p
:当脱离控制终端时,打印PID信息 -
-t
:设置超时时间 -
tty
:指定绑定的串口设备,/dev
可以省略掉 -
type|id
:蓝牙设备的类型或id,例如vendor
或者设备指定的标识 -
any
:不指定HCI_UART
接口 -
ericsson
:爱立信基础模块 -
-s
:speed
串口波特率设置 -
flow
:表示硬件流控制;noflow
:表示不进行流控制 -
bdaddr
:蓝牙设备地址,如果指定了该参数,则地址将用于初始化设备。否则,将使用默认地址。
使用案例:rtk_hciattach -n -s 115200 ttyS0 rtk_h5 &
5 btmon
工具介绍:btmon
,该工具用于监控蓝牙数据
命令格式:btmon
,该工具用于监控蓝牙数据`
详细命令如下:
只介绍几种常用命令
- 帮助信息:
btmon -h
-
-w
:将数据写入文件xxx.log
中,==该文件最好为未存在的文件,否则可能会有问题== -
-T
:显示时间和日期 -
-s
:开始监控的socket -
-r
:-w
写入的文件,仅支持btmon -r xxx.log
读取 -
-i
:监控的控制设备,一般为hci0
- 常用命令:
btmon -i hci0 -w btmon_debug.log &
、btmon -r btmon_debug.log
上面的命令,通过-w
写入文件,-r
读出文件,只能该工具读出
扩展:
btmon -r btmon_debug.log > 1.txt
将读出的转为txt
文件,方便文本查看:)
6 bluetoothd
工具介绍:bluetoothd
,调试工具
命令格式:bluetoothd [OPTION?]
详细命令如下:
只介绍几种常用命令
- 帮助信息:
bluetoothd -h
-
-d
:使能DEBUG
调试 -
-C
:提供过时的命令 -
-n
:运行程序时,前台打印LOG
信息
示例:bluetoothd -C -n &
7 bluetoothctl
工具介绍:bluetoothctl
,调试工具
命令格式:bluetoothctl [command]
详细命令如下:
只介绍几种常用命令
- 帮助信息:
bluetoothd help
-
bluetoothctl
:进入命令行模式 -
list
:查看控制器信息 -
show
:查看详细控制器信息 -
paired-devices
:显示配对的设备 -
power on
:上电控制器 -
advertise on
:开启广播 -
scan on/off
:开启/关闭扫描 -
version
:版本信息 -
exit/quit
:退出
至此,上面是Bluetooth
调试所需要的一些工具的简单介绍,大家可以进行尝试!