You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python通过BLE连接Arduino报org.bluez.Error.Failed错误如何解决?

故障原因及解决方案

1. 蓝牙服务缓存/配置异常

这是最常见的诱因,BlueZ会缓存已配对设备的GATT服务信息,缓存损坏或与Arduino实际服务不匹配时,就会触发「服务已存在」「特征未找到」「连接中断」报错。
操作步骤:

  • 执行bluetoothctl进入蓝牙交互终端,执行remove <Arduino的MAC地址>删除已保存的配对信息,输入quit退出
  • 执行sudo rm -rf /var/lib/bluetooth/*清空所有蓝牙缓存(该操作会删除所有已配对设备信息,无重要配对记录可直接操作)
  • 执行sudo systemctl restart bluetooth重启蓝牙服务

2. 蓝牙版本/固件不匹配

因为另一台同配置树莓派运行正常,优先对比两台设备的BlueZ版本:

  • 执行bluetoothctl --version查看版本,若故障设备版本低于5.60,执行以下命令升级:
sudo apt update
sudo apt install --only-upgrade bluez
  • 关闭蓝牙适配器自动节能:
    执行echo "options btusb enable_autosuspend=0" | sudo tee /etc/modprobe.d/btusb.conf,重启树莓派生效,避免适配器休眠导致连接中断。

3. Python依赖版本差异

排除Python版本本身的问题,优先检查bleak库版本是否与正常设备一致:

  • 执行pip list | grep bleak对比两台设备的版本,若版本不同,安装与正常设备一致的版本即可,示例:pip install bleak==0.17.0
  • 若你使用pyenv管理Python版本,需确认编译Python前已安装蓝牙依赖:
    执行sudo apt install libbluetooth-dev libglib2.0-dev,之后重新编译安装对应版本Python,或直接使用系统自带Python3运行脚本测试。

4. 硬件/信号干扰

  • 执行hciconfig hci0确认蓝牙适配器正常识别,若返回Device does not exist说明适配器未正常加载,可重新插拔外接蓝牙适配器或重启树莓派
  • 排查故障树莓派周边是否有2.4G WiFi、无线鼠标/键盘、微波炉等干扰源,调整设备摆放位置后重试
  • 若使用外接蓝牙适配器,更换USB口或替换同款适配器测试,排除硬件损坏问题。

内容的提问来源于stack exchange,提问作者Milan Ferus-Comelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:09:03