Coral Dev Board Mini接环境传感器板GPIO调用报OSError 22问题求助
问题原因及修复方案
核心报错原因
你遇到的Errno 22导出GPIO失败报错,核心是使用了错误的GPIO编号规则:
- Google Coral Dev Board Mini的Mendel系统中,sysfs GPIO的起始编号不是0,MTK pinctrl控制器的GPIO base号默认是416,你用的138是引脚偏移值,不是实际调用时需要传入的完整GPIO编号。
- 谷歌官方的
enviro_demo.py默认适配的是原版Coral Dev Board,引脚配置和Mini不通用,所以也会触发相同报错。
具体修复步骤
- 确认你的设备GPIO base值
执行以下命令查看pinctrl控制器的base编号:
cat /sys/class/gpio/gpiochip*/label | paste - <(cat /sys/class/gpio/gpiochip*/base)
输出中匹配1000b000.pinctrl的对应数值就是base值,绝大多数Mini的默认base值为416。
计算实际调用的GPIO编号
实际编号 = base值 + 引脚偏移,你之前用的138偏移对应的完整编号为416 + 138 = 554。手动验证有效性
执行以下命令测试引脚是否可正常导出:
# 导出引脚 echo 554 > /sys/class/gpio/export # 测试无报错后取消导出 echo 554 > /sys/class/gpio/unexport
如果没有报错说明编号正确。
- 修正代码
将你的GPIO调用代码修改为正确的编号即可:
from periphery import GPIO gpio = GPIO(554, "low")
- 适配官方enviro_demo
找到EnviroBoard库的配置文件,将里面写死的GPIO编号全部替换为Mini对应的正确编号,再运行demo即可正常加载。
其他排查项
如果修改编号后还是报错,执行sudo usermod -aG gpio $USER将当前用户加入gpio组,注销后重新登录即可解决权限问题。
也可以通过gpiodetect和gpioinfo工具查看引脚状态,确认目标引脚没有被其他系统外设占用。
内容的提问来源于stack exchange,提问作者eigenraum
相关产品推荐
相关产品推荐

