9.2 蓝牙

无线蓝牙鼠标的设置

本节使用罗技(Logitech)M337 蓝牙鼠标作为示例设备进行配置说明。

服务管理

蓝牙功能的实现依赖于多个系统服务的协同工作。hcsecd 服务用于管理蓝牙设备的链路密钥和 PIN 码,负责蓝牙设备的安全认证;bthidd 服务用于支持 Bluetooth HID(Human Interface Device)设备,如蓝牙鼠标、键盘等。首先需要启用并启动相关服务:

# service hcsecd enable  # 启用 hcsecd 服务,用于管理蓝牙设备的链路密钥和 PIN 码
# service bthidd enable  # 启用 bthidd 服务,用于支持 Bluetooth HID 设备
# service hcsecd start   # 立即启动 hcsecd 服务
# service bthidd start   # 立即启动 bthidd 服务

蓝牙鼠标配对

以罗技 M337 鼠标为例,需长按鼠标底部的配对按钮直至指示灯快速闪烁,使其进入可被发现的配对模式。

使用 root(超级用户)权限运行 bluetooth-config scan 命令,扫描附近可用的蓝牙设备,并按提示信息完成设备配对与添加:

# bluetooth-config scan
Scanning for new Bluetooth devices (Attempt 1 of 5) ... done.
Found 1 new bluetooth device (now scanning for names):
[ 1] 34:88:5d:12:34:56  "Bluetooth Mouse M336/M337/M535" (Logitech-M337)
Select device to pair with [1, or 0 to rescan]: 1

This device provides human interface device services.
Set it up? [yes]:

附录:英特尔蓝牙

由 iwm 驱动的 Intel 无线网卡可通过安装 comms/iwmbt-firmware 固件包来启用蓝牙功能,该固件为蓝牙硬件提供必要的微码支持。

  • 使用 pkg(二进制包管理器)安装:

  • 使用 Ports 安装:

蓝牙设备通过 USB 总线连接,可使用 usbconfig 工具查看所有 USB 设备(包括蓝牙设备)。若系统启动时固件未自动加载,可手动加载。例如,若蓝牙设备标识为 ugen1.5,则可执行:

故障排除与未竟事项

Logitech M337 配对连接后会自动断开

此问题可能是由于 bthidd 服务缓存的设备信息与实际设备状态不一致导致。解决方案:删除 /var/db/bthidd.hids 文件中对应鼠标的 bd_addr 行(该行包含设备的蓝牙地址,格式为 xx:xx:xx:xx:xx:xx),清除旧的配对信息。

完成上述操作后,重启蓝牙 HID 守护进程服务以使更改生效:

课后习题

  1. 查找蓝牙鼠标配对后自动断开问题的根源,阅读 bthidd 源代码,修改配对逻辑以避免频繁重连,验证修复效果并分析该机制如何管理蓝牙设备的连接状态。

  2. 选取蓝牙服务栈中的某组件(如 hcsecd),在 FreeBSD 中重构其最小实现,分析该组件如何在蓝牙协议栈中控制设备访问权限。

  3. 尝试使用蓝牙音频设备(如蓝牙耳机),查找并配置必要的服务和驱动,验证其能否正常工作。

最后更新于