OrangePi Lite使用onoff库遇GPIO edge文件缺失及权限问题求助
GPIO问题排查与解决(Orange Pi Lite + onoff库)
问题描述
- 仅能使用BCM命名方式操作GPIO,无法使用GPIO名称或wPi命名
- BCM引脚实现LED闪烁功能正常,但将BCM110引脚用作按键时,出现错误:
gpio: Warning: File not present: /sys/class/gpio/gpio110/edge
- 执行命令
echo "1" > /sys/class/gpio/gpio110/value时,报错:-bash: echo: write error: Operation not permitted
- 尝试从其他GPIO引脚复制edge文件,无法成功
解决方案
1. 确认引脚的硬件支持性
不是所有GPIO引脚都支持边缘触发(对应edge文件),先查阅Orange Pi Lite官方文档,确认BCM110引脚是否被复用为其他功能(如SPI、I2C),或本身不具备中断输入能力。若引脚被复用,需先通过设备树配置解除复用;若本身不支持中断,直接更换其他支持中断的引脚。
2. 解决权限问题
sysfs下的GPIO节点默认仅root用户有写入权限,可通过两种方式解决:
- 临时方式:使用sudo执行命令
sudo echo "1" > /sys/class/gpio/gpio110/value - 永久方式:将当前用户加入gpio组,重启后生效
sudo usermod -aG gpio $USER
3. 手动配置引脚的中断支持
若引脚本身支持中断但未生成edge文件,尝试手动导出并配置:
# 导出BCM110引脚到sysfs echo 110 > /sys/class/gpio/export # 设置引脚为输入模式 echo "in" > /sys/class/gpio/gpio110/direction # 检查是否生成edge文件 ls /sys/class/gpio/gpio110/
若仍无edge文件,说明该引脚的驱动未配置中断支持,需修改设备树或更换引脚。
4. 更换支持中断的引脚
参考Orange Pi Lite引脚图,选择明确标注支持GPIO输入且具备中断功能的引脚,替换BCM110后重新测试。
5. 解决命名方式限制
onoff库在Orange Pi上默认仅支持BCM命名,若需使用其他命名方式:
- 执行
gpio readall命令查看所有引脚的物理、wPi、BCM映射关系 - 在代码中手动完成命名转换,或修改onoff库的配置文件添加对应映射
内容的提问来源于stack exchange,提问作者owl magician
相关产品推荐
相关产品推荐

