amlogic-s9xxx-armbian红外遥控配置:支持电视遥控器控制系统

amlogic-s9xxx-armbian红外遥控配置:支持电视遥控器控制系统

【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统更换为功能强大的Armbian服务器系统。 【免费下载链接】amlogic-s9xxx-armbian 项目地址: https://gitcode.com/GitHub_Trending/am/amlogic-s9xxx-armbian

引言:告别冗余遥控器,实现一体化控制

你是否还在为电视盒子同时连接多个遥控器而烦恼?当你将Amlogic电视盒子刷入amlogic-s9xxx-armbian系统后,是否希望用原有的电视遥控器直接控制系统?本文将详细介绍如何在armbian系统中配置红外遥控功能,实现用普通电视遥控器控制你的armbian服务器,无需额外购买专用遥控器。

读完本文后,你将掌握:

  • 红外遥控(IR Remote)的工作原理及在armbian中的实现方式
  • 检查设备红外硬件支持状态的方法
  • 安装并配置lirc与ir-keytable工具
  • 捕获电视遥控器按键并映射到系统功能
  • 实现常用操作(如开关机、音量调节、导航控制)的自定义配置
  • 解决红外遥控常见问题的调试技巧

红外遥控工作原理与系统架构

红外遥控技术基础

红外遥控(Infrared Remote Control)是一种利用红外线进行数据传输的短距离无线通信技术,广泛应用于消费电子设备。其工作原理是通过红外发射器(遥控器)将电信号转换为红外光信号,由红外接收器(设备端)接收并转换回电信号,再通过解码得到具体的控制指令。

在Linux系统中,红外遥控功能主要通过以下组件实现:

  • 内核驱动:rc-core模块提供基础红外支持,具体设备驱动(如gpio-ir-recv)负责硬件交互
  • 工具链:ir-keytable用于管理按键映射,lirc提供更高级的遥控功能支持
  • 应用层:通过udev规则和systemd服务实现自动加载配置

armbian红外控制架构

amlogic-s9xxx-armbian系统采用主流Linux红外控制架构,其层次结构如下:

mermaid

硬件兼容性与支持状态检查

支持的Amlogic设备列表

amlogic-s9xxx-armbian项目支持多种Amlogic芯片的电视盒子,大部分设备内置红外接收器。以下是部分已验证支持红外遥控的设备型号:

芯片型号代表设备红外硬件推荐内核版本
s905x3X96-Max+, HK1-Box内置5.15.y/6.1.y
s922xBeelink-GT-King内置5.15.y/6.1.y
s905dPhicomm-N1内置5.10.y/5.15.y
s912Tanix-TX9-Pro内置5.4.y/5.10.y
s905l3CM311-1内置5.15.y/6.1.y

检查红外硬件状态

登录armbian系统后,首先检查红外接收器是否被内核识别:

# 检查红外相关内核模块是否加载
lsmod | grep -E 'rc-core|ir-'

# 查看红外接收器设备节点
ls -l /dev/input/by-path/*ir*

# 查看内核日志中的红外设备信息
dmesg | grep -iE 'ir|remote|infrared'

如果输出类似以下内容,说明红外硬件已被识别:

rc-core 24576 10 ir_lirc_codec,ir_sony_decoder,ir_jvc_decoder,ir_rc5_decoder,ir_rc6_decoder,ir_rc5_sz_decoder,ir_nec_decoder,gpio_ir_recv
/dev/input/by-path/platform-ff800000.cbus-platform-ir-receiver-event -> ../event3
[    3.456789] meson-ir ff800000.cbus:ir-receiver: hardware reset
[    3.567890] meson-ir ff800000.cbus:ir-receiver: using hardware decoders

安装红外控制工具链

安装必要软件包

amlogic-s9xxx-armbian系统默认未安装红外控制工具,需要手动安装:

# 更新软件源
apt update

# 安装lirc和ir-keytable工具
apt install -y lirc ir-keytable

# 安装图形化配置工具(可选)
apt install -y lirc-compat-remotes

配置内核模块加载

确保红外相关内核模块在系统启动时自动加载:

# 创建模块加载配置文件
cat > /etc/modules-load.d/ir.conf << EOF
rc-core
gpio-ir-recv
ir-lirc-codec
ir-nec-decoder
ir-rc5-decoder
ir-rc6-decoder
EOF

# 立即加载模块
modprobe rc-core
modprobe gpio-ir-recv

配置红外接收器

修改lirc配置文件

# 备份原始配置
cp /etc/lirc/lirc_options.conf /etc/lirc/lirc_options.conf.bak

# 配置lirc使用devinput驱动
cat > /etc/lirc/lirc_options.conf << EOF
[lircd]
nodaemon        = False
driver          = devinput
device          = auto
output          = /var/run/lirc/lircd
pidfile         = /var/run/lirc/lircd.pid
plugindir       = /usr/lib/x86_64-linux-gnu/lirc/plugins
permission      = 666
allow-simulate  = No
repeat-max      = 600

[lircmd]
uinput          = False
nodaemon        = False
EOF

配置udev规则

创建udev规则,确保红外设备具有正确的权限:

cat > /etc/udev/rules.d/99-ir.rules << EOF
KERNEL=="event*", SUBSYSTEM=="input", ATTRS{name}=="*红外*", MODE="0666"
KERNEL=="event*", SUBSYSTEM=="input", ATTRS{name}=="*IR*", MODE="0666"
KERNEL=="lirc*", MODE="0666"
EOF

# 重新加载udev规则
udevadm control --reload-rules && udevadm trigger

重启lirc服务

# 重启lirc服务使配置生效
systemctl restart lircd
systemctl enable lircd

# 检查服务状态
systemctl status lircd

捕获与映射遥控器按键

识别红外接收器设备

首先确定红外接收器对应的输入设备:

ir-keytable

输出示例:

Found /sys/class/rc/rc0/ with:
        Name: meson-ir
        Driver: meson-ir
        Default keymap: rc-empty
        Input device: /dev/input/event3
        LIRC device: /dev/lirc0
        Supported protocols: unknown other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp
        Enabled protocols: lirc nec
        bus: 25, vendor/product: 0000:0000, version: 0x0000
        Repeat delay = 500 ms, repeat period = 125 ms

记录下Input device路径(如/dev/input/event3)和LIRC device路径(如/dev/lirc0)。

捕获原始按键码

使用ir-keytable捕获遥控器按键的原始扫描码:

# 清除现有按键映射
ir-keytable -c -d /dev/input/event3

# 进入捕获模式
ir-keytable -t -d /dev/input/event3

此时,对准红外接收器按下遥控器上的按键,将看到类似以下输出:

1620000000.123456: event type EV_MSC(0x04): scancode = 0x12345678
1620000000.123456: event type EV_KEY(0x01) key_down: KEY_POWER(0x0074)
1620000000.123456: event type EV_SYN(0x00).
1620000000.234567: event type EV_KEY(0x01) key_up: KEY_POWER(0x0074)
1620000000.234567: event type EV_SYN(0x00).

记录下每个按键对应的scancode和keycode,例如上面的POWER按键scancode为0x12345678,对应的keycode是KEY_POWER(0x0074)。

创建自定义按键映射文件

创建设备特定的按键映射文件:

# 创建按键映射目录
mkdir -p /etc/rc_keymaps

# 创建自定义映射文件
cat > /etc/rc_keymaps/amlogic-ir << EOF
# table amlogic-ir, type: NEC
0x12345678 KEY_POWER
0x23456789 KEY_VOLUMEUP
0x34567890 KEY_VOLUMEDOWN
0x45678901 KEY_CHANNELUP
0x56789012 KEY_CHANNELDOWN
0x67890123 KEY_UP
0x78901234 KEY_DOWN
0x89012345 KEY_LEFT
0x90123456 KEY_RIGHT
0x01234567 KEY_ENTER
0xa1b2c3d4 KEY_BACK
0xb2c3d4e5 KEY_MENU
0xc3d4e5f6 KEY_HOME
EOF

上述示例定义了电视遥控器常见按键的映射关系,你需要根据实际捕获的scancode替换对应的十六进制数值。

应用按键映射

# 应用自定义映射
ir-keytable -w /etc/rc_keymaps/amlogic-ir -d /dev/input/event3

# 验证映射是否生效
ir-keytable -r -d /dev/input/event3

实现系统功能控制

配置lirc按键动作

创建lirc配置文件,定义按键对应的系统动作:

cat > /etc/lirc/lircd.conf.d/custom.conf << EOF
begin remote

  name  amlogic-remote
  bits           32
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       9000  4500
  one           560  1690
  zero          560   560
  ptrail        560
  repeat       9000  2250
  pre_data_bits   16
  pre_data       0x1234
  gap          108000
  toggle_bit_mask 0x0

      begin codes
          KEY_POWER                0x12345678
          KEY_VOLUMEUP             0x23456789
          KEY_VOLUMEDOWN           0x34567890
          KEY_CHANNELUP            0x45678901
          KEY_CHANNELDOWN          0x56789012
          KEY_UP                   0x67890123
          KEY_DOWN                 0x78901234
          KEY_LEFT                 0x89012345
          KEY_RIGHT                0x90123456
          KEY_ENTER                0x01234567
          KEY_BACK                 0xa1b2c3d4
          KEY_MENU                 0xb2c3d4e5
          KEY_HOME                 0xc3d4e5f6
      end codes

end remote
EOF

配置音量控制

创建udev规则使红外音量控制生效:

cat > /etc/udev/rules.d/99-input.rules << EOF
ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="meson-ir", ENV{ID_INPUT_KEYBOARD}="1"
EOF

实现电源控制功能

创建电源控制脚本:

cat > /usr/local/bin/ir-power-control << 'EOF'
#!/bin/bash
case "$1" in
  KEY_POWER)
    # 检查系统负载情况
    load=$(uptime | awk '{print $10}' | sed 's/,//')
    if (( $(echo "$load < 1.0" | bc -l) )); then
      # 负载低,执行关机
      systemctl poweroff
    else
      # 负载高,仅显示警告
      echo "System load is high ($load), canceling poweroff" | wall
    fi
    ;;
  *)
    echo "Unknown key: $1"
    ;;
esac
EOF

# 添加执行权限
chmod +x /usr/local/bin/ir-power-control

配置lirc执行电源控制脚本:

cat > /etc/lirc/lircrc << EOF
begin
  prog = irexec
  button = KEY_POWER
  config = /usr/local/bin/ir-power-control KEY_POWER
end
begin
  prog = irexec
  button = KEY_VOLUMEUP
  config = amixer set Master 5%+
end
begin
  prog = irexec
  button = KEY_VOLUMEDOWN
  config = amixer set Master 5%-
end
EOF

启动irexec服务:

systemctl start irexec
systemctl enable irexec

高级配置与自定义功能

创建自定义快捷键

可以将遥控器按键映射到任意系统命令,例如:

# 编辑lircrc文件
nano /etc/lirc/lircrc

# 添加自定义快捷键配置
begin
  prog = irexec
  button = KEY_HOME
  config = xdg-open https://github.com/ophub/amlogic-s9xxx-armbian
end
begin
  prog = irexec
  button = KEY_MENU
  config = tmux attach -t main || tmux new -s main
end

配置应用程序控制

以控制mpv媒体播放器为例:

begin
  prog = irexec
  button = KEY_PLAY
  config = echo "cycle pause" | socat - /tmp/mpv-socket
end
begin
  prog = irexec
  button = KEY_STOP
  config = echo "quit" | socat - /tmp/mpv-socket
end
begin
  prog = irexec
  button = KEY_FASTFORWARD
  config = echo "seek 60" | socat - /tmp/mpv-socket
end
begin
  prog = irexec
  button = KEY_REWIND
  config = echo "seek -60" | socat - /tmp/mpv-socket
end

配置桌面环境控制

对于安装了桌面环境的系统,可以配置窗口管理器快捷键:

# 对于Openbox
cat >> ~/.config/openbox/lirc-rc.xml << EOF
<keyboard>
  <key key="KEY_UP">
    <action name="MoveFocusUp"/>
  </key>
  <key key="KEY_DOWN">
    <action name="MoveFocusDown"/>
  </key>
  <key key="KEY_LEFT">
    <action name="MoveFocusLeft"/>
  </key>
  <key key="KEY_RIGHT">
    <action name="MoveFocusRight"/>
  </key>
  <key key="KEY_ENTER">
    <action name="Select"/>
  </key>
  <key key="KEY_BACK">
    <action name="Close"/>
  </key>
</keyboard>
EOF

调试与故障排除

常见问题及解决方法

问题现象可能原因解决方法
完全无法接收信号红外接收器硬件未识别1. 检查dmesggrep IR输出
2. 确认rc-core模块已加载
3. 尝试更换内核版本
部分按键无响应按键码未正确映射1. 重新捕获按键码
2. 检查映射文件格式
3. 尝试不同的协议
按键重复触发重复延迟设置不当1. 调整ir-keytable的repeat delay
2. 修改lirc配置中的repeat参数
系统休眠后失效电源管理关闭了红外设备1. 禁用红外设备的电源管理
2. 添加wakeup配置

详细调试命令

# 查看lirc服务日志
journalctl -u lircd -f

# 测试lirc接收
irw

# 查看当前按键映射
ir-keytable -r

# 测试特定按键
irsend SEND_ONCE amlogic-remote KEY_POWER

# 查看输入设备事件
evtest /dev/input/event3

收集红外调试信息

当遇到问题需要寻求社区帮助时,可以收集以下信息:

# 创建调试信息文件
mkdir -p ~/ir-debug
dmesg > ~/ir-debug/dmesg.txt
lsmod > ~/ir-debug/lsmod.txt
ir-keytable > ~/ir-debug/ir-keytable.txt
ir-keytable -t -d /dev/input/event3 > ~/ir-debug/ir-capture.txt 2>&1
systemctl status lircd > ~/ir-debug/lircd-status.txt
cat /etc/lirc/lirc_options.conf > ~/ir-debug/lirc-options.txt
cat /etc/rc_keymaps/amlogic-ir > ~/ir-debug/keymap.txt

# 压缩调试信息
tar czf ~/ir-debug.tar.gz ~/ir-debug

总结与展望

通过本文介绍的方法,你已经成功配置了amlogic-s9xxx-armbian系统的红外遥控功能,实现了用普通电视遥控器控制系统的基本操作。我们从红外遥控的工作原理出发,详细讲解了硬件检查、软件安装、按键捕获、映射配置和功能实现的全过程,并提供了丰富的调试技巧和解决方案。

红外遥控只是armbian系统丰富功能的冰山一角,结合本文学到的知识,你还可以进一步探索:

  • 配置蓝牙遥控器实现更远距离的控制
  • 通过Home Assistant等智能家居平台实现红外遥控的自动化
  • 开发自定义应用程序响应遥控器事件
  • 贡献你的设备红外配置到项目社区

希望本文能帮助你更好地利用amlogic-s9xxx-armbian系统,打造属于自己的全能家庭服务器。如有任何问题或建议,欢迎在项目GitHub仓库提交issue或PR,与社区共同完善这一强大的开源项目。

如果你觉得本文对你有帮助,请点赞、收藏并关注项目更新,以便获取更多实用教程和技巧!

附录:参考资源

  1. 项目官方仓库:https://gitcode.com/GitHub_Trending/am/amlogic-s9xxx-armbian
  2. Armbian官方文档:https://docs.armbian.com
  3. Linux红外遥控文档:https://www.kernel.org/doc/html/latest/media/rc/index.html
  4. LIRC官方文档:https://www.lirc.org/html/index.html
  5. Amlogic芯片数据手册:https://www.amlogic.com

【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系统更换为功能强大的Armbian服务器系统。 【免费下载链接】amlogic-s9xxx-armbian 项目地址: https://gitcode.com/GitHub_Trending/am/amlogic-s9xxx-armbian

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值