bluetoothctl 扫描在几个小时后停止工作

bluetoothctl scans stop working after some hours

作为循环中 this question, I have tried to check if the bug I found with QtBluetooth was connected to bluetoothctl. To do this, I have run this shell script (using expect) 的后续行动:

#!/usr/bin/expect -f
set prompt "#"

spawn /usr/bin/bluetoothctl
expect $prompt
send "scan on\r\n"
sleep 10
send "scan off\r\n"
send "quit\r"
expect eof

最终目标是在未指定的时间内连续记录传感器周围的所有设备(为了做出合理的估计,考虑至少连续运行 24 小时,每 10 秒执行一次蓝牙扫描)。

在大约三个小时的成功扫描后,bluetoothctl 显示出与链接问题中相同的行为(扫描开始、结束、没有发现任何设备,尽管它们存在且可发现)。

是否有任何东西阻止 bluetoothctl 设计为执行此特定任务?如果没有,是否有解决此问题的解决方法?我在 Linux 机器上 运行 以上代码,安装了 Ubuntu 18.10

将此作为答案留给那些可能偶然发现相同问题并(错误地)认为这是编程问题的人。

此问题与 expectbluetoothctl 均无直接关系。通过浏览事件日志 (dmesg --ctime),我发现,每次出现这种行为时,都会弹出此行:Bluetooth: hci0: command <number> tx timeout,命令编号不同。通过谷歌搜索这个特定错误,结果发现它可能与 Linux 内核本身、蓝牙设备的驱动程序或我的 Linux 机器的节能选项有关。