红外遥控
如何找到瑞芯微电视盒子遥控器的硬件ID
步骤1:连接设备并进入ADB调试
确保电视盒子已开启USB调试(在“设置-开发者选项”中开启),然后通过ADB连接设备:
adb connect 盒子IP地址 # 如:adb connect 192.168.1.100
adb root # 获取root权限
步骤2:列出所有输入设备,定位遥控器
执行以下命令列出系统中所有输入设备及其硬件信息:
adb shell getevent -lp
在输出结果中,找到名称包含“remote”“IR”或“蓝牙”的设备(即遥控器对应的输入设备),记录其设备路径(如/dev/input/eventX)和硬件ID信息(Vendor和Product字段)。
步骤3:确认硬件ID(Vendor/Product)
若需更精确的硬件ID,可针对遥控器设备执行:
adb shell getevent -i /dev/input/eventX # 替换eventX为实际设备路径
输出中会明确显示vendor(厂商ID)和product(产品ID),例如:
add device 1: /dev/input/event0
name: "Rockchip IR Remote"
vendor: 0x0e6f # 瑞芯微常见厂商ID为0x0e6f
product: 0x0001
补充:红外遥控器用户码获取(可选)
若需红外遥控器的用户码(用于协议匹配),可通过内核调试节点查看:
adb shell "echo 1 > /sys/module/rockchip_pwm_remotectl/parameters/code_print"
adb shell cat /proc/kmsg | grep "usercode"
按下遥控器按键后,日志中会输出用户码(如usercode=0xf601)。
故障排查流程
以下是采用步骤式流程图形式的故障排查指南,按“问题→排查步骤→结果判断”线性展开,更直观易懂:
ADB按键配置故障排查步骤图
故障类型1:按键按下后 getevent -l 无任何输出
┌─────────────────┐
│ 开始排查 │
├─────────────────┤
│ 1. 检查硬件连接 │
│ - 蓝牙/红外遥控器重新配对 │
│ - 实体按键接线是否松动、供电是否正常 │
├─────────────────┤
│ 2. 确认设备是否被系统识别 │
│ 执行:adb shell dumpsys input │
│ → 查看输入设备列表中是否有目标设备(如“Bluetooth Remote”) │
├─────────────────┤
│ 3. 若设备未识别 → 检查驱动/设备树 │
│ - 确认设备驱动已加载(查看内核日志:dmesg | grep 设备名) │
│ - 检查设备树(DTS)中按键节点配置是否正确 │
├─────────────────┤
│ 4. 若设备已识别 → 排查系统拦截/硬件故障 │
│ - 执行:adb logcat | grep input(查看是否有“blocked”等拦截日志) │
│ - 用万用表测试按键引脚:按下时电平是否变化(判断硬件是否损坏) │
├─────────────────┤
│ 问题解决/更换硬件 │
└─────────────────┘
故障类型2:找不到按键对应的 kl 文件
┌─────────────────┐
│ 开始排查 │
├─────────────────┤
│ 1. 获取设备标识信息 │
│ - 从 `getevent -l` 中记录按键对应的 eventX(如event5) │
│ - 执行:adb shell ls /sys/class/input/event5/device/name → 获取设备名(如“IR Remote”) │
├─────────────────┤
│ 2. 提取厂商ID和产品ID │
│ 执行:adb shell dumpsys input → 搜索设备名,记录 vendor=0xXXXX、product=0xYYYY │
├─────────────────┤
│ 3. 查找对应 kl 文件 │
│ 执行:adb shell ls /system/usr/keylayout/ → 搜索 Vendor_XXXX_Product_YYYY.kl │
├─────────────────┤
│ 4. 若找到文件 → 核对命名格式 │
│ - 确认XXXX、YYYY与厂商ID/产品ID完全一致(十六进制,小写) │
├─────────────────┤
│ 5. 若未找到文件 → 使用通用文件 │
│ - 推荐:Generic.kl(通用设备)、rk29-keypad.kl(瑞芯微平台) │
│ - 确保系统分区可写(执行:adb remount) │
├─────────────────┤
│ 问题解决/使用通用文件配置 │
└─────────────────┘
故障类型3:kl 文件修改后功能仍无效
┌─────────────────┐
│ 开始排查 │
├─────────────────┤
│ 1. 校验 kl 文件内容 │
│ - 扫描码格式:必须为十六进制(如0x18,而非十进制24) │
│ - 功能名正确:如POWER(电源)、VOLUME_UP(音量+) │
├─────────────────┤
│ 2. 确认文件路径与权限 │
│ - 推送路径:必须是 /system/usr/keylayout/(不可错放) │
│ - 修复权限:执行 adb shell chmod 644 /system/usr/keylayout/目标文件 │
├─────────────────┤
│ 3. 重启设备并验证 │
│ - 执行:adb reboot → 重启后测试按键功能 │
│ - 重新执行:getevent -l → 确认按键事件是否被正确识别(code匹配) │
├─────────────────┤
│ 4. 若事件未识别 → 重新获取扫描码 │
│ - 可能原扫描码记录错误,重新执行 getevent -l 捕捉 │
├─────────────────┤
│ 5. 若事件已识别 → 排查文件加载失败 │
│ 执行:adb logcat | grep keylayout → 查看是否有“failed to load”等错误 │
├─────────────────┤
│ 问题解决/重新配置 kl 文件 │
└─────────────────┘
故障类型4:input keyevent 模拟按键无响应
┌─────────────────┐
│ 开始排查 │
├─────────────────┤
│ 1. 核对按键码与功能 │
│ - 确认按键码正确(如POWER=26、VOLUME_UP=24,参考Android官方按键码表) │
├─────────────────┤
│ 2. 检查设备权限 │
│ - 部分功能(如关机)需root权限:执行 adb root 后重试 │
├─────────────────┤
│ 3. 排查系统限制 │
│ - 执行:adb shell getprop → 查看是否有厂商定制限制(如“ro.secure=1”) │
│ - 关闭厂商按键管理应用(如“按键屏蔽”功能) │
├─────────────────┤
│ 4. 替换通用 kl 文件测试 │
│ - 用 Generic.kl 覆盖原文件,重启后重新配置并测试 │
├─────────────────┤
│ 问题解决/适配系统限制 │
└─────────────────┘
ADB 遥控器按键映射配置(成功版)
核心目标
将 XING WEI 2.4G USB 遥控器按键(扫描码 0x00070051)映射为 POWER(关机)功能
关键前提
- 设备:XING WEI 2.4G USB 复合设备(厂商ID
0x1915,产品ID0x1025) - 依赖文件:
/system/usr/keylayout/Generic.kl(无专属kl文件,用通用文件) - 扫描码类型:HID 消费类扫描码(需用
usage格式配置)
步骤(简洁版)
- 捕获扫描码:
adb shell getevent -l→ 记录目标按键扫描码0x00070051 - 拉取文件:
adb remount && adb pull /system/usr/keylayout/Generic.kl ./ - 编辑文件:删除无效配置,末尾添加
key usage 0x00070051 POWER - 推送生效:
adb push Generic.kl /system/usr/keylayout/ && adb chmod 644 目标路径 && adb reboot - 验证:重启后按目标按键,确认关机功能生效
关键坑点&解决方案
- 坑1:大数值扫描码用十进制配置 → 换
key usage 0x十六进制格式(适配HID设备) - 坑2:文件权限错误 → 强制设置
chmod 644 - 坑3:推送路径错误 → 确保目标路径为
/system/usr/keylayout/

浙公网安备 33010602011771号