树莓派使用irrecord录制LIRC遥控器配置时按键值全为0x0故障求助
故障原因
- 权限问题:运行irrecord时开头就报日志文件权限不足,临时缓存写入异常会导致编码识别错误。
- 协议不兼容:故障遥控器使用了irrecord无法自动识别的非常规红外协议(如定制家电协议、长编码变频设备协议),自动检测时无法正确解析脉冲间隔、编码位宽。
- 载波频率不匹配:普通红外接收器默认适配38kHz载波,若故障遥控器载波为36kHz/40kHz等非通用频率,接收器会出现信号解析失真。
- 自动检测参数错误:录制过程中irrecord未识别到有效gap,强制使用了50ms的默认gap值,与遥控器实际信号参数不匹配,最终导致所有按键值识别为0x0。
排查解决步骤
- 先修复权限问题:执行命令
sudo chown -R pi:pi /home/pi/.cache修复缓存目录权限,后续录制irrecord命令统一加sudo前缀运行,避免权限异常导致的识别错误。 - 先验证基础信号接收:运行命令
mode2 -d /dev/lirc0,按下故障遥控器按键,观察控制台是否有脉冲序列输出:- 若无输出:先更换遥控器电池,缩短遥控器与接收器的距离(建议小于30cm),避开强光干扰,若还是无输出则说明遥控器载波频率与接收器不匹配,更换对应频率的红外接收器即可。
- 若有输出:继续下一步操作。
- 强制指定已知参数录制:第一次录制时已经识别到初始gap为108172us,运行命令
sudo irrecord --gap=108172 notworking.lircd.conf重新录制,跳过自动gap检测步骤。 - 使用协议模板录制:先确认故障遥控器的品牌型号,从本地lirc模板目录
/usr/share/lirc/templates/选择对应协议模板,使用命令sudo irrecord --template=模板文件路径 notworking.lircd.conf录制,避免自动识别协议失败的问题。 - 手动编写配置文件:如果上述方式都无效,说明该遥控器为自定义长编码协议,可基于mode2输出的原始脉冲数据,手动编写lirc配置文件即可正常使用。
内容的提问来源于stack exchange,提问作者Coolroo
相关产品推荐
相关产品推荐

