我正在创建一个蓝牙脚本,用于控制耳机蓝牙体验的各个方面。
作为其中的一部分,我想重置蓝牙适配器。我在用着:
rfkill block bluetooth
rfkill unblock bluetooth
这应该会切换并且确实有效,只是不是每次都有效。当它不起作用时也没有模式。有时(通常大约 60% 的时间)会超时。
检查日志显示:
好案例:
Product: Bluetooth USB Host Controller
Manufacturer: Atheros Communications
SerialNumber: Alaska Day 2006
Adapter /org/bluez/4100/hci0 has been enabled
Endpoint registered: sender=:1.25 path=/MediaEndpoint/HFPAG
Endpoint registered: sender=:1.25 path=/MediaEndpoint/HFPHS
Endpoint registered: sender=:1.25 path=/MediaEndpoint/A2DPSource
Endpoint registered: sender=:1.25 path=/MediaEndpoint/A2DPSink
坏情况(超时时):
Product: Bluetooth USB Host Controller
Manufacturer: Atheros Communications
SerialNumber: Alaska Day 2006
Bluetooth: hci0 command 0x1003 tx timeout
Bluetooth: hci0 command 0x1001 tx timeout
有什么方法可以增加这个超时,使用 BASH 失败,检查超时,然后循环 - 只要继续重试直到它起作用 - 因为最终它会起作用,如果使用 rfkill 块再次完全重置适配器。
答案1
为什么不在这两个rfkill
命令之间添加一个 sleep 语句。
rfkill block bluetooth
sleep 5
rfkill unblock bluetooth
这只需几秒钟,调整一下看看是否有帮助。