红外遥控器键码识别原理

如果一个遥控器按键无法识别, 或者已有的遥控器想修改键功能, 但是不知道键码怎么办? 下面来具体看看用什么方法知道一个未知的遥控器的按键代码和设备代码的。

用到命令 dmesg

Linux dmesg(英文全称:display message)命令用于显示开机信息。

kernel 会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用 dmesg 来查看。

开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里。

记录从开机到运行的所有日志信息,利用这个命令可以查看。

关键原理

如果遥控器的代码无法识别,就会把不能识别的代码写进日志文件,这个时候,可以用上面的dmesg命令进行日志查看,从而知道了遥控器的代码。

具体操作

相关的配置文件有

/system/usr/keylayout/Generic.kl

/system/usr/keylayout/Vendor_0001_Product_0001.kl

/system/etc/remote.conf 或 /system/etc/remote1.conf

进入系统

准备材料

  • USB转TTL的串口线 PL2303
  • 螺丝刀

打开机顶盒,连接上GND TX RX线,然后用putty通过串口登录到系统, 这样才能通过命令行与盒子交互, 理论上在安卓的Terminal APP中应该也可以的

打开盒子,接线

背面:连接上GND TX RX线 电脑端的GND—>盒子GND 电脑端的RX—>盒子TX 电脑端的TX—>盒子RX

长虹智能遥控器(型号:RID810)

正面:

长虹智能遥控器(型号:RID810)

putty登录

我这里串口是COM22(根据你自己的电脑端串口连接情况填写)Speed:115200

长虹智能遥控器(型号:RID810)

用putty登录成功后

长虹智能遥控器(型号:RID810)

使用dmesg命令和遥控器配合操作

可以通过dmesg. 因为其工作机制, 在键码能识别的时候, 是不会记录日志的, 然后试试按遥控器, 再执行 dmesg -s 5000, 看看是不是会出现这样的日志记录

130|root@iptv:/ # dmesg -s 5000
<6>[ 5008.067387@0] remote: Wrong custom code is 0xed12bf40

长虹智能遥控器(型号:RID810)

记录键码的一些操作技巧:

  • 首先四周不能有其他遥控器的干扰, 例如旁边有人在看电视按遥控器, 这样不行.
  • 其次, 因为dmesg会不断产生新的系统消息, 对记录也产生干扰, 所以在操作的时候, 可以一次性连续多按几次按键,

这样把遥控器的键码都记下来, 然后编辑remote.conf, 让盒子能识别.

在编辑remote.conf时, 可以先将kl里的 key number - > function 先列出来, 前面打上#, 这样方便对应

长虹智能遥控器(型号:RID810) 设备码 bf40

长虹智能遥控器(型号:RID810)

长虹智能遥控器(型号:RID810)

家里找出来一个长虹电视机的遥控器,感觉做工不错,用来遥控机顶盒非常合适,于是拆开机顶盒

连接上TTL线进入系统进行调试:

先指令以下指令,清空日志信息:

注意:要执行两次才能完全清空

dmesg -c
dmesg -c

然后遥控器对着设备按键操作,比如按下一个电源按键, 然后,在终端上执行以下命令:

dmesg -s 5000

可以看到,输出了以下内容:

130|root@iptv:/ # dmesg -s 5000
<6>[ 5008.067387@0] remote: Wrong custom code is 0xed12bf40
<6>[ 5013.486265@0] remote: Wrong custom code is 0xed12bf40

可以看到遥控服务输出了8位的错误的自定义代码0xed12bf40 其中:0x是表示16进制的标记,前面两位ed是检验码,12是键码,bf40 是设备码,对应remote.conf里面factory_code的前4位 `0xed12bf40

长虹智能遥控器(型号:RID810) 按键名称与按键码对应表

按键名称 8位键码 键码
电源按键 0xed12bf40 12
电视按键 0xa05fbf40 05
主页按键 0xae51bf40 e5
确认按键 0xf50abf40 0a
返回按键 0xbf40bf40 40
0-9按键 0xa35cbf40 5c
信源按键 0xeb14bf40 14
音量-按键 0xe11ebf40 1e
音量+按键 0xe51abf40 1a
左方向键 0xb946bf40 46
右方向键 0xb847bf40 47
上方向键 0xe619bf40 19
下方向键 0xe21dbf40 1d

中国移动江苏移动机顶盒遥控器

长虹智能遥控器(型号:RID810)

长虹智能遥控器(型号:RID810)

设备码:ff00

0xe718ff00