我们都知道OrangePI有红外接收,但是没有一个指导的文档来教我们怎么去使用它,这个帖子将教你怎么去使用它。首先你需要一个已经root了的安卓系统,我用的是这个:http://www.orangepi.cn/orangepibbscn/forum.php?mod=viewthread&tid=57&extra=page%3D1然后需要一个终端模拟器例如安卓终端、ssh客户端等,以及最好有一个支持挂载系统文件夹为读写的文件管理器例如MT管理器、RE管理器等,或者你使用如下的命令挂载文件系统。
mount -o remount,rw /system
复制代码
现在打开终端模拟器并输入以下代码:
su
复制代码
这个将使终端模拟器得到root。首先我们来修改遥控器的配置文件。打开你的文件管理器并进入/system/usr/keylayout挂载成读写,更改此目录下的sunxi-ir.kl成sunxi-ir.kl.bak以做备用及参照。你也可以在终端里执行如下命令实现上面的步骤:
mount -o remount,rw /system
mv /system/usr/keylayout/sunxi-ir.kl /system/usr/keylayout/sunxi-ir.kl.bak
复制代码
然后在文件管理器里创建一个新的配置文件并命名为sunxi-ir.kl或执行如下命令:
mount -o remount,rw /system
echo new > /system/usr/keylayout/sunxi-ir.kl
复制代码
接下来要重新加载红外驱动以便更改配置。终端下执行如下命令:
rmmod sunxi_ir_rx
insmod /vendor/modules/sunxi-ir-rx.ko
复制代码
然后需要为遥控器添加配置文件,现在配置文件是空的。先执行如下命令获取键代码:
getevent
复制代码
出现如下信息:
root@dolphin-fvd-p1:/ # getevent
add device 1: /dev/input/event6
name: "sunxi-ir"
add device 2: /dev/input/event7
name: "Virtual.Acc"
could not get driver version for /dev/input/js0, Invalid argument
add device 3: /dev/input/event5
name: "Logitech USB Optical Mouse"
could not get driver version for /dev/input/mouse1, Not a typewriter
add device 4: /dev/input/event4
name: "USB USB Keykoard"
add device 5: /dev/input/event3
name: "USB USB Keykoard"
add device 6: /dev/input/event2
name: "sunxi-ths"
add device 7: /dev/input/event1
name: "sunxi-gpiokey"
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 8: /dev/input/event0
name: "vmouse"
could not get driver version for /dev/input/mice, Not a typewriter
/dev/input/event3: 0004 0004 00070028
/dev/input/event3: 0001 001c 00000000
/dev/input/event3: 0000 0000 00000000
/dev/input/event6: 0001 0012 00000001
/dev/input/event6: 0000 0000 00000000
^@/dev/input/event6: 0001 0012 00000000
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0001 000b 00000001
复制代码
可以看到开始两行有“add device 1: /dev/input/event6”和名字“sunxi-ir”,这告诉我们红外接收是event6,接下来不要对鼠标键盘进行操作,否则会数次调试信息干扰获取红外的键代码。如果按下遥控器上某个按键就会有调试输出像如下代码那样:
/dev/input/event6: 0001 0012 00000001
/dev/input/event6: 0000 0000 00000000
复制代码
需要的键代码是第一行的第二组数字0012但是这组数字是十六进制的,要把它需要转换成十进制,我使用的是这个在线转换16进制到10进制的工具 0012转换成十进制就是18,然后你要把他们记下来继续调试,调试结束按Ctrl-C来停止getevent。调试完毕后在文件管理器里打开之前创建的 /system/usr/keylayout/sunxi-ir.kl (记得先确认是否挂载成读写再去编辑它)以及添加遥控器配置进去。配置文件格式是:key "键代码" “安卓命令” (可参照之前备份的sunxi-ir.kl.bak)。
key 18 POWER WAKE
key 19 MUTE
key 14 MEDIA_STOP
key 31 MEDIA_PLAY
key 30 MEDIA_PAUSE
key 15 MEDIA_PREVIOUS
key 26 MEDIA_NEXT
key 11 DPAD_UP
key 21 DPAD_DOWN
key 24 DPAD_LEFT
key 12 DPAD_RIGHT
key 22 ENTER
key 13 BACK
key 25 VOLUME_UP
key 29 VOLUME_DOWN
复制代码
上面列出的是我用的键代码。然后保存这个配置文件并重新加载驱动来应用新的配置文件即可。
rmmod sunxi_ir_rx
insmod /vendor/modules/sunxi-ir-rx.ko
复制代码
如果没什么错误你的遥控器已经开始工作了。下面说说我遇到的一个小问题:我在添加配置文件并修改好重新配置加载驱动后发现遥控器并未工作,研究一番后发现键代码格式不对,对比/system/usr/keylayout下其他配置文件发现key与键代码与安卓命令之间的空格数目不一样,结果把几个空格对应加上并重新加载驱动遥控器才正常工作。