Linux 蓝牙多控制器切换与手写板自动断开调试笔记
在 Linux 系统上,如果同时存在内置蓝牙控制器和 USB 蓝牙控制器,蓝牙设备管理会变得复杂,尤其在涉及自动断开设备、切换控制器等需求时,常会遇到意想不到的情况。此文记录一次针对蓝牙手写板的调试过程,作为参考。 背景 需要使用脚本自动断开蓝牙设备(例如手写板),脚本中使用 bluetoothctl info 命令配合 expect 自动化交互流程。然而,在接入 USB 蓝牙控制器后,系统默认仍然使用内置控制器,导致脚本无法正常识别目标设备。 初步现象 执行 bluetoothctl info 时,输出的设备信息中,Device 行并不包含 (random) 或 (public) 标记。例如: Device AA:BB:CC:DD:EE:FF Generic Pen TabletName: Generic Pen TabletConnected: yes 脚本中原本使用的正则表达式如下: regexp {Device ([A-F0-9:]+) \(random\)} $output match mac 由于缺少括号标记,这条正则无法成功提取 MAC 地址。 修改正则 修订后的正则表达式改为不依赖括号标记,仅提取 MAC 地址: regexp {Device …