运行Python控制树莓派风扇HAT脚本报I/O errno 121错误如何解决
风扇HAT报错OSError 121排查与解决方法
OSError 121属于I2C总线通信失败类错误,可按以下步骤依次排查:
1 基础配置与硬件校验
- 确认树莓派I2C接口已开启:运行
sudo raspi-config,进入「Interface Options」选项找到I2C,选择开启后重启树莓派。 - 检查风扇HAT物理连接:确认GPIO排针没有插反、没有虚接,可尝试重新拔插HAT后再测试。
- 核对I2C总线编号:部分早期树莓派型号使用的是I2C总线0,你当前代码中使用的是
smbus.SMBus(1),如果是老型号设备可尝试将参数改为0。 - 修正文件名错误:你当前的脚本文件后缀为
.pi属于格式错误,需要将后缀改为.py,否则会出现解析异常。
2 验证I2C设备地址是否匹配
- 先安装I2C扫描工具:运行
sudo apt update && sudo apt install -y i2c-tools - 扫描当前总线挂载的所有I2C设备:如果你用的是总线1,执行
i2cdetect -y 1,如果用总线0则将命令中的1改为0。 - 核对扫描出来的设备地址与代码中定义的
addr = 0x0d是否一致,如果不一致,将代码中的addr值修改为实际扫描到的风扇HAT地址即可。
如果扫描结果中没有任何设备,说明HAT硬件损坏、I2C未正常开启或硬件连接异常,回到第一步重新排查。
3 代码问题修复
你提供的代码中缺少smbus库的导入语句,在代码开头新增一行import smbus即可。
4 权限问题排查
- 普通用户运行I2C相关代码需要先将用户加入i2c用户组:执行
sudo usermod -aG i2c $USER,执行完成后注销当前用户重新登录再运行脚本测试。 - 也可以临时用管理员权限运行脚本验证:
sudo python3 /home/pi/fam_tempf.py
内容的提问来源于stack exchange,提问作者Tubz
相关产品推荐
相关产品推荐

