红外遥控器键码识别原理
如果一个遥控器按键无法识别, 或者已有的遥控器想修改键功能, 但是不知道键码怎么办? 下面来具体看看用什么方法知道一个未知的遥控器的按键代码和设备代码的。
用到命令 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
正面:
putty登录
我这里串口是COM22(根据你自己的电脑端串口连接情况填写)Speed:115200
用putty登录成功后
使用dmesg命令和遥控器配合操作
可以通过dmesg. 因为其工作机制, 在键码能识别的时候, 是不会记录日志的, 然后试试按遥控器, 再执行 dmesg -s 5000
, 看看是不是会出现这样的日志记录
130|root@iptv:/ # dmesg -s 5000
<6>[ 5008.067387@0] remote: Wrong custom code is 0xed12bf40
记录键码的一些操作技巧:
- 首先四周不能有其他遥控器的干扰, 例如旁边有人在看电视按遥控器, 这样不行.
- 其次, 因为dmesg会不断产生新的系统消息, 对记录也产生干扰, 所以在操作的时候, 可以一次性连续多按几次按键,
这样把遥控器的键码都记下来, 然后编辑remote.conf, 让盒子能识别.
在编辑remote.conf时, 可以先将kl里的 key number - > function
先列出来, 前面打上#
, 这样方便对应
长虹智能遥控器(型号:RID810) 设备码 bf40
家里找出来一个长虹电视机的遥控器,感觉做工不错,用来遥控机顶盒非常合适,于是拆开机顶盒
连接上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 |
中国移动江苏移动机顶盒遥控器
设备码:ff00
0xe718ff00