TinyB: org.bluez.Error.NotReady问题修复
环境
硬件: 树莓派4B
系统: Arch Linux
在上述环境下,使用TinyB(依赖Bluez)进行蓝牙相关功能的调用,报错如下
1 | tinyb.BluetoothException: GDBus.Error:org.bluez.Error.NotReady: Resource Not Ready |
问题原因
此问题可能有两种原因:
- Bluetooth软件被禁用
- 蓝牙服务虽已启动,但是开关未打开(power off状态)
修复方式包括:
- 立即打开蓝牙开关
- 设置蓝牙服务启动后,自动打开开关
修复
1. Blocked
使用rfkill list
命令查看当前无线设备状态
1 | rfkill list |
若蓝牙为block状态,可以使用rfkill unblock all
调整为unblock状态,若状态是非block状态,可以继续尝试下述操作
2. Power
2.1 调整power状态
调用bluetoothctl power on
命令启动,或者可以先使用bluetoothctl
命令进入蓝牙控制台,然后再使用power on
命令打开开关
此时蓝牙功能已均可正常使用了。
2.2 设置自启动
编辑/etc/bluetooth/bluetooth.conf
文件中的AutoEnable=false
部分,调整为true
1 | vim /etc/bluetooth/bluetooth.conf |
此时在设备重启后,蓝牙服务会自动启动并处理打开状态。
Reference
bluetooth.service running, but bluetoothctl says “org.bluez.Error.NotReady”