解决红外遥控器不被机器识别与按键不对应的最简便办法

不同厂商制作者,制作的遥控器配置文件、文件名、文件位置会不一样,但都是安卓,修改思路就大同小异.

像海思芯片的遥控码文件是 key.xml     晶晨的是remont.conf

也有些系统则是写在remote.cfg里

还有的写在/system/vendor/bin下的remotecfg这个文件里

情况很多种,最好找到原机的刷机包,直接替换进去

下面作为样例的,是 /vendor/etc/文件夹下有remote.tab1 ~ remote.tab5这些文件的情况(应该是晶辰的情况之一)

一,修改遥控器识别码

解决红外遥控器不被机器识别、与按键不对应的最简便办法(前提是你的机器里有remote.tab1 - remote.tab5这些文件)

刚知道有的固件包里,在系统里放上了五个文件:

remote.tab1 - remote.tab5

(都在vendor/etc/ 文件夹下)

用文本编辑软件可以看见,这五个文件的开头是5个不同的遥控器类型数字代码

好比custom_code = 0xc43b

custom_code = 0xff00

x后面的这四位代码(遥控器识别码)是否对应你的红外遥控器硬件,决定遥控器发射的信号能不能被接收信号的机器识别.

代码不对应你的遥控器,就会导致,遥控器按下时机器能正常闪灯,但却没有任何动作

找到你的遥控器识别码,替换这四位代码,保存进去,机器就能对遥控器按键有反应.

怎么用adb找你的遥控器识别码,怎么保存?或者看一楼感谢的原帖网址,或者看二搂,会简化总结一下

二,修改遥控器按键码,让某些不管用的按钮变管用

修改遥控器识别码,让按键能起作用后,大概率会发现,遥控器按键的作用是乱的,跟原来不一样,甚至只有某几个按键有作用

所以三个办法,

办法一是找你的同型号盒子(很可能是相同遥控器)的用户,传你一个能用的remote.tab1,替换掉现在刷机之后的遥控器文件

(tab1到tab5里,说不定就能碰上是完全符合你遥控器的文件,只改开头的遥控器识别码,改好就能正常对应按键.需要注意tab1到tab5的机器识别码不能重复,否则重复的话遥控只会按照序号在前的文件.)

办法二是用之前备份的文件,试试直接替换刷机后的遥控器文件

办法三是参照备份的文件,手动修改刷机后的遥控器文件

办法三具体怎么修改,

举例现在的remote.tab1(或2345)中显示

        0x9c    113 ;MUTE

        0x82    176 ;SE**NGS

        0x98    102 ;HOME

这种remote.tab1里每行的三部分是:

遥控器按键码 + 安卓功能数字代码(推荐修改这个)+数字代码对应的说明(这部分应该是修改或删掉也不产生影响效果)

就是说现在用113在对应静音功能,176在对应系统设置功能,

对照你的[遥控器原装系统]备份的文件,把数字修改变成相符的对应关系之后,遥控器按键就都能正常用了

[遥控器按键码]对应什么[安卓功能数字],在每个原系统对应的都不一样,没有统一的可改,

所以若没有原装系统的遥控器文件备份,就需要自己对照,按下了什么遥控器按纽、产生什么遥控器按键码(查看方法见二搂),然后填写你想设定的安卓功能数字

想知道数字码是什么安卓功能效果,在remote.tab1里已经列出了一些,或者可以查网上更全的说明,或者更复杂的是参考kl文件(在二楼说),网上说明的不一定符合你的系统,kl文件也不一定准确(除了不带型号的通用模板generic.kl,还有针对遥控器型号调整后的类似Vendor_0001_Product_0001.kl这种文件)

刷的新系统中,若是不带remote.tab1 ~ remote.tab5,也没有remote.conf,也没有key.xml,就需要去搜索一下自己盒子品牌的遥控器文件是哪个,还可以改成去找kl文件(好比名为Vendor_0001_Product_0001.kl)

kl文件一般放在/system/usr/keylayout/文件夹下,进去之后会看见已装上的不同遥控识别码,里面有可能没有一个符合手中遥控器,但都是从generic.kl作的模板上修改调整出来的,所以也可以直接复制出来一份generic.kl自己修改

通过adb获得遥控器识别码、遥控器按键码,具体操作

首先需要你的电视盒能从另一台设备上(手机或pc)用adb连接上,可以是wifi连接,也可以是usb线连接(一般是用双公头线)

1,

wifi连接电视盒,需要知道电视盒的ip地址,并且电视盒在系统中打开了"允许adb调试"的选项

好比我的路由器管理ip是192.168.31.1,电视盒是192.168.31.44

连接电视盒的adb命令就是

adb connect 192.168.31.44

(只有返回英文的成功连接提示,才算有效连接,不然需要检查adb工具与防火墙等等是否有问题,电视盒是否不许adb连接,以及路由是否不允许局域网内互通,等等各种问题.)

2,

adb成功连接后,

输入adb remount

(这一步会临时把电视盒内所有文件从只读变成可修改,有些机器需要root权限才可以办到,没有root权限,输入后则会提示remount的各种错误.开root权限的办法放在后面的楼层里交流.

adb remount 是把机器上所有部分都临时变成可修改,也可以换成adb shell mount -o remount,rw /system 是只改system文件夹下的全部.两种输入方式,一种提示错误,另一种一般也会提示错误,而不是换一种写法就成功)

输入adb shell

(adb成功连接的电视盒,在这一步输入后,会从用其他机器操控电视盒命令,转入以电视盒本机的身份来操控命令;若adb没连接上电视盒就会提示错误.

转入电视盒本机身份后,若新一行结尾显示的是#,说明具有某程度的root权限(即管理员superuser权限),不一定是完整的root权限;若新一行结尾显示的是$,说明完全没获得root权限(只是普通用户身份)

输入su

(这一行的意思是,使用本机已有的superuser权限.若你电视盒本来已有root权限,但是前面提示的是$,在输入这一行后,提示就会变成#.若是电视盒还没开权限,$的提示就不会变.)

3,

输入dmesg -c

(dmesg命令,是获得电视盒这次开机后的所有操作日志,-c是最后再显示一次的同时把之前的所有日志清除,开始新起头日志,以免大量无关的日志不方便翻找需要看的部分.再次输入dmesg -c就会发现,返回的提示没那么多行了.)

把遥控器上的按键挨个按几个,然后

输入dmesg | grep framecode=

//这一行等效于输入dmesg | grep "code is",两种命令之中一个管用就用不着另一个

(输入这行,会把之前按下遥控器按钮发送的信号都显示出来,样图见1楼感谢的原帖网址

0x的后八位之中,5-8位是固定的,不换其他遥控器就不会变,是遥控器识别码;3-4位是遥控器按键码,对应你刚才按下的不同按键)

最简单的情况,光是知道5-8位的遥控器识别码,照着修改系统里的remote.tab1里的开头部分就够了,不用手动调整按键码.需要调整按键码的话,办法在后文讲.

3附.

网上有很多绕远的命令行其实没必要,又需要把dmesg输出的日志转换成文本文件,又需要输入更复杂的dmesg命令.好比dmesg | grep "code is 0x" | rev |cut -c 5-6 -c 9-10| rev |uniq >> /sdcard/IRdump.log

不过复杂命令的好处是,可以把按下遥控器时发送的按键码(前面说的5-6位的数字)单独列出来,在按键全按了一遍后,看起来不那么乱;而且转换成文本,就可以按照生成的内容顺序粘贴到遥控器文件内,让遥控器文件内每行的顺序符合自己的遥控器.

4,

怎么修改系统文件的remote.tab1

--------------

办法一,有root权限的话,用文本工具直接打开/vendor/etc/remote.tab1来在原地修改

办法二,用pull / push传出传入命令

输入exit

(作用是,从在电视盒中以电视盒身份操作命令,推回在电视盒中以连接设备的身份操作命令)

输入adb pull /vendor/etc/remote.tab1 1.tab1

(作用是,把电视盒中放在/vendor/etc文件夹的remote.tab1传输到连接设备,重命名为1.tab1并保存在adb工具的文件夹下.也可以传输到其他文件夹,好比改成adb pull /vendor/etc/remote.tab1 d:/1.tab1 就会保存到D盘下)

然后在其他设备上用文本编辑工具修改1.tab1

修改好后的1.tab1传回电视盒:

输入adb push 1.tab1 /vendor/etc/remote.tab1

办法三,用cp复制粘贴命令

之前不输入exit,改为

输入cp /vendor/etc/remote.tab1 /sdcard/1.tab1

存在sd卡中,把sd卡拿出来,放到pc上用文本编辑工具修改1.tab1

修改好后的1.tab1传回电视盒:

输入cp /sdcard/1.tab1 /vendor/etc/remote.tab1

办法四,用安卓带的vi命令行修改

输入vi /vendor/etc/remote.tab1

--------------

5,重新启动电视盒,在有些电视盒直接就好了

6,

电视盒上没有remote.tab1 ~ remote.tab5 就需要去搜索一下自己盒子品牌的遥控器文件是哪个

具体操作与第4步相近,具体差异,参考二楼感谢的原帖网址

像海思芯片的遥控码文件是 key.xml     晶晨的是remont.conf

也有些系统则是写在remote.cfg里

还有的写在/system/vendor/bin下的remotecfg这个文件里

情况很多种,最好找到原机的刷机包,直接替换进去

没地方去找,还可以改成去找kl文件(好比名为Vendor_0001_Product_0001.kl)

kl文件一般放在/system/usr/keylayout/文件夹下,进去之后会看见已装上的不同遥控识别码,里面有可能没有一个符合手中遥控器,但都是从generic.kl作的模板上修改调整出来的,所以也可以直接复制出来一份generic.kl自己修改

目前收集到的,不同文件各自所放的位置,在这里列出

/vendor/etc/remote.tab1

/system/etc/remote.conf

/device/hisilicon/bigfish/system/ir_user/key_pars/key.xml

/system/vendor/bin/remotecfg

/system/usr/keylayout/Vendor_0001_Product_0001.kl

似乎有人在海思中修改了key.xml但没起作用,不知是不是还需要修改其他文件.

开root权限的办法放在后面的楼层里交流.

一,

有些电视盒,想让按下遥控器按钮在dmesg中有反应,似乎需要先打开/vendor/etc/remote.cfg 文件中的debug功能,把debug_enable 从0改成1

若有改动,保存后别忘了还原权限变回改动前的644:

输入chmod 644 /vendor/etc/remote.cfg

二,

有些电视盒,修改remote.cfg之后需要手动重新加载:

输入remotecfg -c /vendor/etc/remote.cfg -d

(我没查-c -d都是干什么用的)

以及在修改remote.conf之后需要手动重新加载

remotecfg /system/etc/remote.conf

三,

有时不能确定电视盒是不是能对遥控器有反应

就需要先用getevent -l 或者getevent -v 确定是否能收到遥控器信号,若是在getevent中,鼠标键盘等等其他信号都能收到,唯独遥控器不能,但是在dmesg又能看见检测到遥控器信号,这就是目前找不到办法解决的.很可能是系统制作修改者乱删改东西把基本功能破坏了,需要修复的地方太多.

若是能收到信号,但是因为遥控器识别码或遥控器按键码错误,而导致的按键不管用,简单修改后就能正常用,这种情况下,按遥控器后,会看见dmesg中显示的遥控器代码结尾显示wrong code,是表示能接收但不能正确识别信号,只是时别的问题所以容易修改.


举例一个tab1

custom_name = amlogic-remote-1

custom_code = 0xc43b

release_delay = 80

key_begin

    0xdc 116            ;116 POWER    WAKE

    0xcb 605            ;TV_SOUND_CHANNEL

    0x9c 113            ;MUTE

    0x82 176            ;SE**NGS

    0x98 102            ;HOME

    0xce 97                ; DPAD_CENTER

    0xca 103            ; DPAD_UP

    0xd2 108            ; DPAD_DOWN

    0x99 105            ; DPAD_LEFT

    0xc1 106            ; DPAD_RIGHT

    0x8d 119            ;MEDIA_PLAY_PAUSE

    0xc5 158            ;BACK

    0x85 115            ;VOLUME_UP

    0xdd 607             ;PAGE_UP

    0x80 402            ;CHANNEL_UP

    0x86 114            ;VOLUME_DOWN

    0x8c 608            ;PAGE_DOWN

    0x81 403            ;CHANNEL_DOWN

    0x87 11             ; num 0

    0x92 2                ; num 1

    0x93 3                ; num 2

    0xcc 4                ; num 3

    0x8e 5                ; num 4

    0x8f 6                ; num 5

    0xc8 7                ; num 6

    0x8a 8                ; num 7

    0x8b 9                ; num 8

    0xc4 10                ; num 9

    0x9a 609             ; num *

    0x9b 610            ; num #

    0x95 125            ;MENU

    0x9d 121            ;MEDIA_REWIND

    0x9e 120            ;MEDIA_FAST_FORWARD

    0x84 128            ;MEDIA_STOP

    0xc9 135            ;TV_SUBTITLE

    0xc7 603            ;PROG_BLUE

    0xd8 603            ;PROG_BLUE

    0xda 600            ;PROG_RED

    0x83 602            ;PROG_YELLOW

    0xc6 601            ;PROG_GREEN   

key_end

甚至有些时候需要修改的是 /system/bin/set_display_mode.s(H),因为有些设计者把开机后是否自动加载remote.conf写在s(H)文件里

居然网站在这种地方设置成"不良信息"过滤...真是猜不不到

附,

查看所有输入设备的命令:cat /proc/bus/input/devices

或者getevent 与 getevent -v

dumpsys input | more查询目前输入设备对应的kl文件:keylayoutflie行,若是使用generic.kl说明是没有专门kl文件而调用的默认kl文件

感谢原帖

https://www.znds.com/tv-505563-1-1.html

https://www.cnblogs.com/milton/p/12355976.html

https://www.codenong.com/cs107103047/

https://blog.csdn.net/yao108yao/article/details/109010811

https://blog.csdn.net/yun382657988/article/details/51517741

原帖中所说的"盒子终端"指找个"终端软件程序app"安装在盒子上,想用终端修改的办法的话,可以下载"终端模拟器",可以相当于直接在pc上用adb连接操控的同样作用,

在电视盒上安装好终端软件,打开就相当于在pc上连接好电视盒后,用命令行进入了adb shell中的效果

remotecfg.s(H)的内容是:几个remote*.tab文件合并成remote.cfg

有人推荐程序Button Mapper Pro,连唤醒、休眠、关机都能弄弄出来

感谢https://www.right.com.cn/forum/thread-2724956-1-1.html

remote.conf与remote.tab1 对应安卓功能数字的列表(不一定符合你的系统)

参考原帖https://www.cnblogs.com/milton/p/12355976.html

遥控器代码调试,有些机器上可以使用adb的ir_user命令,或者getevent命令,捕捉电视盒接收到的信号

参考原帖https://www.znds.com/forum.php?mod=viewthread&tid=1179117

------------------

总结

从以上成功修改可以看出,有时候红外遥控器不通用,并不是红外线遥控器的发射接收频率不一致,电视盒能好好收到不同遥控器的红外信号时,还会因为厂商与系统制作者的改动,使系统中接收遥控器信号后的反应代码不一样,代码不一样而导致对反应无法翻译成有效的遥控信号.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容