蓝牙操作手册
本页目录
先分清控制器、配对关系、连接和应用 profile。配对成功不代表已经连接,连接成功也不代表音频流已路由到耳机。本篇使用 BlueZ bluetoothctl;MAC 地址为占位示例。
| 当前任务 | 入口 |
|---|---|
| 找不到设备 | 控制器与扫描 |
| 配对后仍不可用 | 配对、信任、连接 |
| 断连或耳机无声 | 按层排查 |
控制器先可用,设备再进入发现模式
服务、无线开关、控制器分别确认
# 确认 BlueZ 守护进程的状态
# 查看蓝牙的软硬件阻止状态
Hard blocked 要处理物理开关/固件策略;Soft blocked 才可能由软件解除。
# 列出本机控制器及其地址
不要把控制器地址当成耳机地址;没有控制器时先看驱动、USB、固件日志。
# 查看默认控制器的电源与能力
# 列出已知或已发现的远端设备
列表不是实时在线列表,也不是单纯配对列表;用 info 查看单个状态。
# 读取控制器初始化与连接错误
# 只有软阻止且需要启用蓝牙时解除
这是条件操作,不是每次检查都执行;之后重新查询 rfkill,硬阻止仍需外部处理。
list 是控制器,devices 是已发现/已知设备,不等同“已配对”。show 中 Powered 与 rfkill 的 Soft/Hard blocked 分开看;软件 unblock 不能解除硬件开关。多适配器在 bluetoothctl 中 select 对应地址。扫描前让目标设备进入厂商规定的配对模式,且确认未被另一台主机占用。
三个状态分别确认
| 状态 | 含义 | 不能证明 |
|---|---|---|
| Paired | 双方保存了配对凭据 | 当前在线或音频可用 |
| Trusted | 本机允许该设备按策略使用服务 | 永远自动重连 |
| Connected | 当前连接已建立 | 所有 profile 或应用路由都正常 |
下面输入到交互式 bluetoothctl,不是 shell 脚本。agent 处理确认/PIN;核对两端显示的数字。pair 在某些版本中也会尝试 trust/connect,仍以 info 的实际状态为准。
进入一个会话,选择控制器
# 从 shell 打开 BlueZ 交互会话
以下 text 代码块输入到 bluetoothctl 提示符;不要再加 bluetoothctl 前缀。多控制器时先执行下面的 select,替换为 list 得到的控制器地址,单控制器可跳过。选择保留在该进程内,不能在多个独立 shell 命令之间假设继承。
select 11:22:33:44:55:66
先打开控制器电源,再用 show 确认 Powered: yes;失败先回到 rfkill 和控制器日志。
power on
show
注册确认代理并扫描
在这个有人值守的会话注册 agent,随后保持会话打开以回答配对确认。
agent on
default-agent
让目标设备进入配对模式后开始扫描;等待出现与目标名称、地址相符的记录,再继续。
scan on
配对后检查,再决定信任与连接
AA:BB:CC:DD:EE:FF 从扫描结果取得,不能使用上面的控制器地址。输入 pair 后按提示核对两端数字,等待成功或明确失败,不提前粘贴后续操作。
pair AA:BB:CC:DD:EE:FF
读取实际状态。若已 Trusted/Connected,就不必机械重复后面的相应操作。
info AA:BB:CC:DD:EE:FF
只有希望本机信任该设备用于后续服务时执行 trust;它不等于建立当前连接。
trust AA:BB:CC:DD:EE:FF
设备在线且需要立即使用时再 connect。失败时根据错误与 profile 排查,不通过反复 pair 重建凭据来碰运气。
connect AA:BB:CC:DD:EE:FF
重新 info 确认 Connected: yes,再验证实际输入或音频路径;需要撤销信任时在此会话使用 untrust 加真实设备地址,是否断开另行决定。
info AA:BB:CC:DD:EE:FF
结束扫描并退出
无论成功还是暂时失败,不再需要扫描时都结束扫描,再返回 shell。quit 不等于解除设备配对。
scan off
quit
按失败位置处理,不先删除配对
| 现象 | 检查与动作 |
|---|---|
| 扫描为空 | Powered、rfkill、设备发现窗口和距离;journal 中查固件/USB 错误 |
| AuthenticationFailed | 确认码、旧配对、设备是否已被另一主机接管;只有需重配时两端忘记旧关系 |
| Connected 但耳机无声 | 查 wpctl status、profile 与实际流路由,转 音视频 |
| 反复断连 | 记录断连时间、原因码、电量与 2.4 GHz 干扰;必要时 btmon 抓一次受控复现 |
只查询状态,或主动断开
# 在 shell 中查看目标设备的当前状态
替换为设备真实地址,核对 Paired/Trusted/Connected 以及服务 UUID;多控制器环境在下面同一交互会话选择后检查。
# 需要断开该设备时保留配对关系
不是修复前必做操作;断开后再 info 应显示 Connected: no,配对记录仍保留。
受控复现并采集 HCI 证据
# 在一个终端开始实时监听蓝牙事件
另一终端复现一次连接/断开并记录时间,再回到这里 Ctrl-C 停止。对齐原因码与服务日志,避免只凭某个数字下结论;输出先审阅再分享。
disconnect 保留配对,remove 删除本机配对信息并需要重新配对;两者不是同义命令。重启 bluetooth.service 会影响其他已连接设备。btmon 输出可能包含设备标识和通信数据,分享前审阅。