LIRC/快速入门指南
< LIRC
USB (MCE [Media Center Edition]) IR 接收器与通用遥控器的逐步 LIRC 设置指南。
这只是一个快速入门指南。 有关深入的帮助,请参阅所用命令和文件的 man 页面以及在线文档。
准备条件
- 获取一个 USB 红外接收器,最好是 MCE 型号,它几乎总是开箱即用就支持的。
- 重新利用您家中闲置的旧通用遥控器。
设置
- 连接 USB 红外接收器。
- 确保您的遥控器中有充满电的电池。
- 使用
mode2
从遥控器获取某种输出/响应# mode2
将遥控器指向红外接收器并按一些按钮。这将尝试使用默认的 “devinput” 驱动程序自动检测正确的输入设备。但是,如果不手动配置协议,这可能无法工作。 - 如果在大多数按键上都未检测到按钮按下,请更改红外协议。如果您对要使用的遥控器按钮没有收到任何响应,您可能需要启用不同的协议
# ir-keytable -p <protocol> -p <protocol> ...
查看ir-keytable
的输出(以及cat /sys/class/rc/rc0/protocols
)。当您遇到问题时,以 root 身份运行ir-keytable -p all
。 - 如果在大多数按键上都未检测到按钮按下,请尝试不同的通用遥控器设备模式。您可能还需要尝试不同的通用遥控器设备模式(TV、DVD、Audio 等按钮),以便在开始时检测到按钮按下。(您可能会重新编程通用遥控器的模式,但这可能是一个漫长的试错过程,才能找到一个有效设置。)
- 重新配置红外协议和遥控器设备模式后,重新测试
# mode2
将遥控器指向红外接收器并按一些按钮。如果大多数按键的按钮按下未被检测到,请重复前两个步骤,直到检测到(或者只需以 root 身份运行ir-keytable -p all
)。 - 如果您已经缩小了遥控器需要支持的协议范围,请设置它们
# ir-keytable -p sony -p rc-5
否则,您可以直接使用所有协议# ir-keytable -p all
- 确定红外接收器的正确设备。使用默认的 “devinput” 驱动程序或较旧的 “default” 驱动程序
$ mode2 --driver devinput --list-devices $ mode2 --driver default --list-devices $ ir-keytable
- 使用为您的 USB 红外接收器找到的设备,例如
/dev/input/event11
# mode2 --driver devinput --device /dev/input/event11
或者只是尝试# mode2 --driver devinput --device auto
查看是否检测到按钮按下。 - 如果需要,编辑
/etc/lirc/lirc_options.conf
,例如,如果您使用的是 “default” 驱动程序而不是 “devinput”。 - 测试您的遥控器以查看是否打印了扫描码
# ir-keytable -t
查看是否检测到按钮按下。 - 使用 drop-in 文件:
/etc/systemd/system/lircd.service.d/override.conf
。在[Service]
部分添加以下行ExecStartPost=/usr/bin/ir-keytable -p protocol -p protocol
其中每个协议字符串都替换为您需要的协议(或者直接使用/usr/bin/ir-keytable -p all
)。 - 启动 lirc 守护进程
lircd.service
,以便您可以记录按键,从而为您的遥控器编写 lircd 配置文件。 - 使用 irrecord 记录按键扫描码。运行
# irrecord
保存/记录将用于您的应用程序的击键。按照irrecord
的说明进行操作。 - 安装记录的 lircd 配置文件
# mv device_name.lircd.conf /etc/lirc/lircd.conf.d/
# chown root:root /etc/lirc/lircd.conf.d/device_name.lircd.conf - 将
devinput.lircd.conf
移动到devinput.lircd.dist
以禁用它,因为您没有使用红外键盘和/或鼠标,而只是红外接收器# mv /etc/lirc/lircd.conf.d/devinput.lircd.conf /etc/lirc/lircd.conf.d/devinput.lircd.dist
- 重启
lircd.service
,以便您使用新创建的 lircd 配置文件。 - 测试以确保正确检测到您记录的按键,即,为您按下的每个按钮输出正确的按键符号
$ irw
查看是否报告了正确的按键符号,以及是否正确拒绝了重复信号。
故障排除
未检测到按键
按照 #设置 进行操作。
重复的按键事件
如果您遇到按键重复问题(每次按下按钮都会回显多次),请检查 irw
的输出。第二列值是重复计数。当检测到重复信号时,此值将递增。每个解码的按钮按下及其计数重置为 “00” 都被 lircd 报告为单独的按钮按下事件。
要解决此问题,通常应调整 device_name.lircd.conf
文件中 irrecord
采样的 “gap” 参数,通常调整为更大的值(例如,从 44968 增大到 113975)。
在编辑/调整任何 lircd 配置文件后,请务必重启 lircd(如上所示)。
最终配置
为您的最终用户应用程序编写 lircrc 文件。此文件供所有构建了 lirc 支持的客户端程序使用,这些程序连接到 lircd 以读取红外控制事件。编辑 ~/.lircrc
以向要控制的程序发出命令。通过运行以下命令测试此配置
$ ircat prog
查看当您按下所有想要使用的按钮时,是否输出了程序 prog
的正确 “config” 字符串。注意:如果您的应用程序未读取 ~/.lircrc
或根本不起作用,则备用默认位置是 ~/.config/lircrc
。
最终测试
最后,运行您的最终用户应用程序并测试遥控器按钮按下以控制它。如果它工作,您就完成了!如果不是,请查看并重复上述章节,根据需要使每个配置步骤都能工作,然后再继续下一步或章节。