LIRC/快速入门指南

出自 ArchWiki

此文章或章节可能需要与 LIRC 合并。

注意: 此内容没有理由放在子页面中。(在 Talk:LIRC/Quick start guide#Merge tag 中讨论)

USB (MCE [Media Center Edition]) IR 接收器与通用遥控器的逐步 LIRC 设置指南。

这只是一个快速入门指南。 有关深入的帮助,请参阅所用命令和文件的 man 页面以及在线文档。

准备条件

  • 获取一个 USB 红外接收器,最好是 MCE 型号,它几乎总是开箱即用就支持的。
  • 重新利用您家中闲置的旧通用遥控器。

设置

此文章或章节需要扩充。

原因: 步骤 5 不清楚。什么是通用遥控器设备模式?如何更改它们?(在 Talk:LIRC/Quick start guide 中讨论)
  1. 连接 USB 红外接收器。
  2. 确保您的遥控器中有充满电的电池。
  3. 使用 mode2 从遥控器获取某种输出/响应
    # mode2
    将遥控器指向红外接收器并按一些按钮。这将尝试使用默认的 “devinput” 驱动程序自动检测正确的输入设备。但是,如果不手动配置协议,这可能无法工作。
  4. 如果在大多数按键上都未检测到按钮按下,请更改红外协议。如果您对要使用的遥控器按钮没有收到任何响应,您可能需要启用不同的协议
    # ir-keytable -p <protocol> -p <protocol> ...
    查看 ir-keytable 的输出(以及 cat /sys/class/rc/rc0/protocols)。当您遇到问题时,以 root 身份运行 ir-keytable -p all
  5. 如果在大多数按键上都未检测到按钮按下,请尝试不同的通用遥控器设备模式。您可能还需要尝试不同的通用遥控器设备模式(TV、DVD、Audio 等按钮),以便在开始时检测到按钮按下。(您可能会重新编程通用遥控器的模式,但这可能是一个漫长的试错过程,才能找到一个有效设置。)
  6. 重新配置红外协议和遥控器设备模式后,重新测试
    # mode2
    将遥控器指向红外接收器并按一些按钮。如果大多数按键的按钮按下未被检测到,请重复前两个步骤,直到检测到(或者只需以 root 身份运行 ir-keytable -p all)。
  7. 如果您已经缩小了遥控器需要支持的协议范围,请设置它们
    # ir-keytable -p sony -p rc-5
    否则,您可以直接使用所有协议
    # ir-keytable -p all
  8. 确定红外接收器的正确设备。使用默认的 “devinput” 驱动程序或较旧的 “default” 驱动程序
    $ mode2 --driver devinput --list-devices
    $ mode2 --driver default --list-devices
    $ ir-keytable
    
  9. 使用为您的 USB 红外接收器找到的设备,例如 /dev/input/event11
    # mode2 --driver devinput --device /dev/input/event11
    或者只是尝试
    # mode2 --driver devinput --device auto
    查看是否检测到按钮按下。
  10. 如果需要,编辑 /etc/lirc/lirc_options.conf,例如,如果您使用的是 “default” 驱动程序而不是 “devinput”。
  11. 测试您的遥控器以查看是否打印了扫描码
    # ir-keytable -t
    查看是否检测到按钮按下。
  12. 使用 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)。
  13. 启动 lirc 守护进程 lircd.service,以便您可以记录按键,从而为您的遥控器编写 lircd 配置文件。
  14. 使用 irrecord 记录按键扫描码。运行
    # irrecord
    保存/记录将用于您的应用程序的击键。按照 irrecord 的说明进行操作。
  15. 安装记录的 lircd 配置文件
    # mv device_name.lircd.conf /etc/lirc/lircd.conf.d/
    # chown root:root /etc/lirc/lircd.conf.d/device_name.lircd.conf
  16. devinput.lircd.conf 移动到 devinput.lircd.dist 以禁用它,因为您没有使用红外键盘和/或鼠标,而只是红外接收器
    # mv /etc/lirc/lircd.conf.d/devinput.lircd.conf /etc/lirc/lircd.conf.d/devinput.lircd.dist
  17. 重启 lircd.service,以便您使用新创建的 lircd 配置文件。
  18. 测试以确保正确检测到您记录的按键,即,为您按下的每个按钮输出正确的按键符号
    $ 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

最终测试

最后,运行您的最终用户应用程序并测试遥控器按钮按下以控制它。如果它工作,您就完成了!如果不是,请查看并重复上述章节,根据需要使每个配置步骤都能工作,然后再继续下一步或章节。