本帖最后由 1147557131 于 2026-9-17 14:10 编辑
设备:天邑 TY1208Z(CPU:S905M2,1GB RAM,8GB ROM)
系统:Armbian 25.5.0 (Ubuntu noble) / 内核 6.1.135-ophub
背景:盒子刷了纯命令行的Armbian(无桌面),不安装Xorg,直接跑Kodi,并用原装红外遥控器控制,实现手机B站投屏。废话不多说,直接上折腾过程,全网首发,踩坑无数,按我的步骤走保证成功! 第一步:安装所需软件在终端执行(注意带上 kodi-inputstream-adaptive,这是B站等流媒体播放的核心依赖): - sudo apt update
- sudo apt install kodi kodi-inputstream-adaptive kodi-standalone ir-keytable evtest -y
复制代码kodi-standalone 是专为无桌面环境设计的启动脚本,能自动处理虚拟终端切换,让 Kodi 直接在电视上全屏运行,无需额外安装 Xorg 或桌面环境。 第二步:检查红外功能是否启用不要急着抓码,先确认红外接收器是否被系统识别。 1. 检查内核日志: 如果有输出(例如 rc rc0: meson-ir 之类),说明红外驱动已加载。 2. 检查输入设备: - cat /proc/bus/input/devices
复制代码在输出中找 meson-ir 或类似的红外设备名称,记下它对应的 event 编号(通常是 event1)。 3. 确认设备节点存在: 应该能看到 /dev/input/event1(或你的实际编号)。 4. 快速测试: 选择你的红外设备(如 1),然后按遥控器任意键。如果终端有输出,说明红外功能正常。按 Ctrl+C 退出。
第三步:抓取遥控器按键码确认红外正常后,抓取按键码: - sudo ir-keytable -s rc1 -p all -t
复制代码 然后依次按下遥控器上的所有按键,记录下终端跑出的 scancode (长按会带有 repeat 提示,可忽略)。
我这边测试了这台天邑遥控器的完整键码(NEC协议),可直接参考: 电源:0xb3dc,菜单:0xb388,返回:0xb3c5 上:0xb3ca,下:0xb3d2,左:0xb399,右:0xb3c1,OK:0xb3ce 音量+:0xb380,音量-:0xb381 频道+:0xb385,频道-:0xb386 快进:0xb39e,后退:0xb39d 上页:0xb3dd,暂停:0xb395,静音:0xb39c,下页:0xb38c #键:0xb3d0,刷新:0xb3d6,0:0xb387,*键:0xb3da 1:0xb392,2:0xb393,3:0xb3cc,4:0xb38e,5:0xb38f 6:0xb3c8,7:0xb38a,8:0xb38b,9:0xb3c4 设置:0xb38d,声道:0xb398,定位:0xb39a,本地:0xb382 收藏:0xb39b,点:0xb383,信息:0xb3c3,直:0xb3cd
⚙️ 第四步:配置系统底层映射(防重启失效)新手建议:可以使用 1Panel 的图形化文件管理器来新建文件夹和文件,极其方便。
⚠️ 避坑警告:千万别用面板直接编辑文件内容! 网页编辑器会带入不可见的换行符,导致底层程序报错 F AIled to read 或 status=64。创建完空文件后,内容必须用终端 tee 命令写入!
1. 写入底层按键映射文件(返回键已改为退格键(0xb3c5 = "KEY_BACK" # 返回键),输入时删除字符): - sudo tee /etc/rc_keymaps/ty1208z_ir.toml << 'EOF'
- # 天邑 TY1208Z 遥控器底层映射模板
- [[protocols]]
- name = "ty1208z_ir"
- protocol = "nec"
- [protocols.scancodes]
- # ==================== 基础导航 ====================
- 0xb3dc = "KEY_POWER" # 电源键
- 0xb388 = "KEY_MENU" # 菜单键
- 0xb3c5 = "KEY_BACKSPACE" # 返回键0xb3c5 = "KEY_BACK" (已改为退格键,用于命令行删除)
- 0xb3ca = "KEY_UP" # 上键
- 0xb3d2 = "KEY_DOWN" # 下键
- 0xb399 = "KEY_LEFT" # 左键
- 0xb3c1 = "KEY_RIGHT" # 右键
- 0xb3ce = "KEY_ENTER" # 确定/OK键
- 0xb380 = "KEY_VOLUMEUP" # 音量 +
- 0xb381 = "KEY_VOLUMEDOWN" # 音量 -
- # ==================== 功能键区 ====================
- 0xb398 = "KEY_AUDIO" # 声道
- 0xb39c = "KEY_MUTE" # 静音
- 0xb38d = "KEY_SETUP" # 设置
- 0xb39a = "KEY_BOOKMARKS" # 定位
- 0xb39b = "KEY_FAVORITES" # 收藏
- 0xb39e = "KEY_FASTFORWARD" # 快进 >>
- 0xb39d = "KEY_REWIND" # 后退 <<
- 0xb391 = "KEY_DELETE" # 回看键(已改为删除键)
- 0xb383 = "KEY_VIDEO" #
- 0xb3c3 = "KEY_INFO" # 信息
- 0xb3cd = "KEY_TV" #
- 0xb382 = "KEY_FILE" # 本地
- # ==================== 导航与多媒体 ====================
- 0xb395 = "KEY_PLAYPAUSE" # 播放/暂停
- 0xb3dd = "KEY_PAGEUP" # 上页
- 0xb38c = "KEY_PAGEDOWN" # 下页
- 0xb385 = "KEY_CHANNELUP" # 频道 +
- 0xb386 = "KEY_CHANNELDOWN" # 频道 -
- 0xb3d6 = "KEY_REFRESH" # 刷新
- # ==================== 数字键区 ====================
- 0xb392 = "KEY_1" # 1
- 0xb393 = "KEY_2" # 2
- 0xb3cc = "KEY_3" # 3
- 0xb38e = "KEY_4" # 4
- 0xb38f = "KEY_5" # 5
- 0xb3c8 = "KEY_6" # 6
- 0xb38a = "KEY_7" # 7
- 0xb38b = "KEY_8" # 8
- 0xb3c4 = "KEY_9" # 9
- 0xb387 = "KEY_0" # 0
- 0xb3da = "KEY_STAR" # *(软键盘)
- 0xb3d0 = "KEY_POUND" # #(输入法)
- EOF
复制代码
2. 创建Systemd开机自启服务(加5秒延迟,防开机红外硬件未就绪): - sudo tee /etc/systemd/system/ir-keytable.service << 'EOF'
- [Unit]
- Description=IR Keytable Loader
- After=local-fs.target
- [Service]
- Type=oneshot
- RemainAfterExit=yes
- ExecStartPre=/bin/sleep 5
- ExecStart=/bin/bash -c '/usr/bin/ir-keytable -c -w /etc/rc_keymaps/ty1208z_ir.toml -s rc1'
- [Install]
- WantedBy=multi-user.target
- EOF
复制代码
rc1是我这机子的红外设备,请按你实际的,来选择你的红外设备。
3. 加载并启动服务: - sudo systemctl daemon-reload
- sudo systemctl enable --now ir-keytable.service
- sudo systemctl status ir-keytable.service
复制代码加载并启动服务enable 就是加入开机自启,--now 是立即生效。(这一步就是设置红外遥控器开机自启) 检查自启是否设置成功: - sudo systemctl is-enabled ir-keytable.service
复制代码
如果输出 enabled,说明开机自启已经配置好了。此时服务状态应该是绿色的Active: active (exited),说明系统底层彻底认下了这个遥控器!
第五步:让Kodi认识这套按键底层通了后,Kodi还需要一份映射文件。
新手继续用 1Panel 图形化工具,在 /home/用户名/.kodi/userdata/ 目录下新建 keymaps 文件夹。 必看:把路径中的 an 换成你的用户名,你在操作时请替换成你自己的。 你可以在终端输入 whoami 查看到自己的用户名。 建完文件夹后,终端执行权限修复(防止Kodi读不到): - # 以我的用户名 an 为例,记得把下面的 an 换成你的
- sudo chown -R an:an /home/an/.kodi
复制代码 然后用 tee 命令写入 Kodi 专属的 keyboard.xml :
第六步:配置 kodi-standalone 服务,实现 Kodi 开机自启。注意:下面的 User=an 和 Group=an 也要换成你的用户名
使用 Kodi 自带的 kodi-standalone 脚本,能自动处理虚拟终端(tty)切换,让 Kodi 直接在电视上全屏运行,无需安装桌面环境。 1. 创建 Kodi 服务文件: - sudo tee /etc/systemd/system/kodi.service << 'EOF'
- [Unit]
- Description=Kodi standalone
- After=remote-fs.target systemd-user-sessions.service network-online.target nss-lookup.target sound.target bluetooth.target
- Wants=network-online.target
- Conflicts=getty@tty1.service
- [Service]
- User=an
- Group=an
- PAMName=login
- TTYPath=/dev/tty1
- ExecStart=/usr/bin/kodi-standalone
- ExecStop=/usr/bin/killall --exact --wait kodi.bin
- Restart=on-abort
- StandardInput=tty
- StandardOutput=journal
- [Install]
- Alias=display-manager.service
- EOF
复制代码2. 设置系统默认启动到图形目标(配合 Kodi 自启): - sudo systemctl set-default graphical.target
复制代码 3. 设置 Kodi 开机自启,并立刻启动它:- sudo systemctl daemon-reload
- sudo systemctl enable kodi
- sudo systemctl start kodi
复制代码 4. 检查 Kodi 是否已设置开机自启:- sudo systemctl is-enabled kodi.service
复制代码输出 enabled 即代表自启设置成功。 5. 可选:配置免密 sudo(部分系统需要。楼主没用到)
如果你的系统提示 kodi-standalone 需要 sudo 权限,可以添加以下配置(记得替换 an 为你的用户名): - sudo tee /etc/sudoers.d/030-kodi-standalone << 'EOF'
- an ALL=(ALL) NOPASSWD:/usr/bin/kodi,/usr/lib/kodi,/usr/share/kodi,/usr/bin/kodi-standalone,/usr/lib/kodi/kodi.bin,/usr/bin/killall,/usr/sbin/service,/usr/bin/openvt
- EOF
复制代码 执行完 sudo systemctl start kodi 后,HDMI 输出应该就会出现 Kodi 界面。
未完
|