linux下蓝牙调试工具hcitool的使用
hcitool
是一个用于蓝牙设备管理的命令行工具,主要用于查看和管理蓝牙设备。以下是一些常见的用法和示例:
1. 查看本地蓝牙适配器信息
使用 hcitool dev
命令可以查看本地蓝牙适配器的信息。
hcitool dev
示例输出:
Devices:
hci0 00:11:22:33:44:55
2. 查看远程蓝牙设备
使用 hcitool scan
命令可以扫描附近的蓝牙设备。
hcitool scan
示例输出:
Scanning ...
00:1A:7D:DA:71:13 Bluetooth Device
00:1B:1E:03:11:22 Another Bluetooth Device
3. 查看远程设备的 L2CAP 通道
使用 hcitool chan <bdaddr>
命令可以查看指定远程设备的 L2CAP 通道。
hcitool chan 00:1A:7D:DA:71:13
示例输出:
Channel list for 00:1A:7D:DA:71:13:
PSM 0x0003 - RFCOMM/1
PSM 0x0015 - SDP
PSM 0x0001 - L2CAP
4. 查看远程设备的页面扫描重复模式
使用 hcitool inq
命令可以查看可发现的远程设备。
hcitool inq
示例输出:
Inquiring ...
00:1A:7D:DA:71:13 class 0x100104
5. 连接到远程设备
使用 hcitool cc <bdaddr>
命令可以尝试连接到指定的远程设备。
hcitool cc 00:1A:7D:DA:71:13
示例输出:
Connection succeeded
6. 断开与远程设备的连接
使用 hcitool dc <bdaddr>
命令可以断开与指定远程设备的连接。
hcitool dc 00:1A:7D:DA:71:13
示例输出:
Disconnection succeeded
7. 查看连接状态
使用 hcitool con
命令可以查看当前的连接状态。
hcitool con
示例输出:
Connections:
hci0 00:1A:7D:DA:71:13 handle 11 flags 0x03
8. 发送和接收数据
虽然 hcitool
主要用于设备管理和连接管理,但也可以用于发送和接收数据。使用 hcitool send(addr psmandata)
和 hcitool recv
命令。
发送数据:
hcitool send 00:1A:7D:DA:71:13 0300010000
接收数据:
hcitool recv
9. 其他命令
hcitool auth <bdaddr>
:尝试认证远程设备。hcitool encrypt <bdaddr>
:尝试加密与远程设备的连接。hcitool name <bdaddr>
:获取远程设备的名称。
注意事项
- 确保你有权限访问蓝牙设备。可能需要以 root 用户运行某些命令。
- 蓝牙设备的地址(BD ADDR)是唯一的,类似于 MAC 地址。
通过这些命令,你可以管理和监控蓝牙设备,进行设备发现、连接和数据传输等操作。
二、主从模式
hcitool
工具本身并不直接支持配置蓝牙设备的 “主从机模式”,因为设备的角色是由蓝牙协议栈在连接时动态分配的。一般情况下,蓝牙设备的初始模式是可变的,即它可以作为主设备或从设备。
不过,你可以通过以下步骤来控制蓝牙设备的角色:
1. 使用 hciconfig
配置本地蓝牙适配器
首先,使用 hciconfig
工具来配置本地蓝牙适配器的角色。你可以将本地蓝牙适配器设置为强制为主设备或从设备模式。
设置为从设备模式
hciconfig hci0 class 0x1F00
这里的 0x1F00
是设备类(Class of Device),表示该设备是一个从设备。
设置为主设备模式
hciconfig hci0 class 0x1000
这里的 0x1000
是设备类(Class of Device),表示该设备是一个主设备。
三、设置为设备可见:
设置可发现性
要使适配器可发现,可以设置页面扫描模式(PSCAN):
hciconfig hci0 piscan
这将使适配器进入可发现模式。
4. 使用 rfkill
解除禁用
有时,Bluetooth 适配器可能被软件禁用。你可以使用 rfkill
工具来检查和解除禁用。
查看 Bluetooth 设备状态
rfkill list bluetooth
解除禁用 Bluetooth 设备
如果设备被禁用,可以使用以下命令解除禁用:
sudo rfkill unblock bluetooth
5. 配置 Bluetooth 设备类
设备类(Class of Device, CoD)可以影响设备的可见性和功能。你可以使用 hciconfig
设置设备类。
例如,设置设备类为计算机:
hciconfig hci0 class 0x100104