作为后续行动 这个问题我试着检查我发现的QtBluetooth的错误是否与bluetoothctl有关。为此,我运行了这个shell脚本(使用 期待)的循环。
#!/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 安装了QtBluetooth。
将此作为一个答案留给那些可能遇到同样问题并(错误地)认为是编程问题的人。
这个问题与以下两个问题没有直接关系 expect
或 bluetoothctl
. 通过浏览事件日志 (dmesg --ctime),我发现,每当这种行为表现出来的时候,就会弹出这一行。Bluetooth: hci0: command <number> tx timeout
命令编号不同的情况下,会弹出这样一行: 通过上网查询这个具体的错误,发现可能与Linux内核本身、蓝牙设备的驱动程序或我的Linux机器的省电选项有关。