斐讯 N1/遥控

斐讯 N1/遥控

N1 除了斐讯自己的 T1 遥控,用第三方遥控器都会有一些开关机问题,包括:

  1. 遥控器电源键关机后,盒子随机无缘无故自启动。(对于 Webpad 2.2固件,可能因为 webpad 自带的用户态 reboot.apk 这个 app,卸载其即可). Update: 推测原因,N1关机(非直接断电)后蓝牙模块应该仍然在待机, 任何连接的蓝牙设备发的消息都会自动唤醒N1. 一些蓝牙干扰可能导致N1关机后自己开机.
  2. 遥控器电源键无法关机、或关机变重启(原因推测:系统把一次按键操作识别成两次,所以关机然后重开)。
  3. 遥控器电源键关机后,按遥控器任意键(非电源键)盒子都启动。
  4. 遥控器电源键关机后无法开机。(需要彻底断电一次再加电开机)

2,3 可能于斐讯官方固件的 PhiTvSettings.apk 和 Provision.apk 有关

/system/priv-app/PhiTvSettings/PhiTvSettings.apk
/system/priv-app/Provision/Provision.apk

任意蓝牙遥控器控制

获取蓝牙遥控器硬件类型id

adb shell
su
cat /proc/bus/input/devices

输出:

I: Bus=0005 Vendor=2717 Product=3200 Version=0213

其中的 Vendor 和 Product 就是蓝牙遥控器设备类型 id。

获取蓝牙遥控器按键键值:

getevent -l

然后按遥控器按键,终端会输出按键的键名(EV_KEY, 可能空白)和键值编码(MSC_SCAN,)。

/dev/input/event4: EV_KEY KEY_ENTER UP // 按键名称 KEY_ENTER
/dev/input/event4: EV_SYN SYN_REPORT 00000000
/dev/input/event4: EV_MSC MSC_SCAN 00070051 // 键值,即 0x00070051

修改 Android系统按键配置文件, /system/usr/keylayout/Generic.kl 默认键盘键值文件
或创建一个专有键盘配置文件 Vendor_2717_Product_3200.kl (建议从 Generic.kl 复制过来开始改)。

方法: rush 或 yyf 固件连接盒子 2223 端口 ssh (用户名和密码默认为 root:rush)
挂载系统分区为可写: mount -o rw,remount /system
然后即可写入 /system 里文件或用 scp 写入系统分区。

在新创建的键盘配置文件末尾加上:

# comment
key usage 0x70066 F1 # 映射 0x70066 为 F1。

将遥控器电源键键值映射为其它(除 POWER 以外)按键。用 Xposed edge 将指定的按键按键功能设为“关机”(命令行 reboot -p)。(因为 Xposed edge 和其它工具都不能更改电源按键 POWER 功能)

比如如果将遥控器“电源”键配置为 “F1”,则在 xposed edge pro 里将按键 KEYCODE_F1 功能设为 shell 命令 "reboot -p" (以root执行)即可关机。

其它 workaround

安装 “一键关机 app”,点击一次即关机。

测试用 reboot -p 关机后遥控可以开机。

Bug (?)

reboot -p 关机后,任何蓝牙设备都可以唤醒N1,不仅仅是遥控器任意按键,比如移动下蓝牙鼠标也会使N1开机。

也可以使用 “Button Mapper pro.apk”(按键映射) 这个 app 将任意按键(除电源键)的 单击/长按/双击 映射为关机(调用一键关机 app),这个不需要安装 xposed,原理是使用 Android 的 accessibility service。

关机 shell 命令

# 需要 root 权限
reboot -p # 关机
reboot # 重启
reboot update # 重启到 usb 启动(刷机或U盘引导模式)

Last update: 2020-04-27 06:35:53 UTC