前几天给盒子清数据,连上网就被自动装了 CIBN聚精彩 、CIBN聚体育。加上之前这系统用着各种不爽,像是没有多任务界面、UI 太丑、Android 版本太低、Kodi 花屏之类的,所以干脆刷成别的好了。找找发现 S912 有好多包,还有 LibreELEC、Lakka 之类的。
  后来我发现这玩意儿还能装 Linux ,真是神奇,不过 Linux 的话还是等盒子退休再说吧。

备份

  刷什么之前都应该先做好备份,因为官方根本就没提供固件,只有卡刷包。
  为了保险起见,推荐备份之前刷入这个下面的 TWRP 。(因为官方的 rec 进去就是格式化 data 并重启,如果恢复失败有可能会出现问题。

备份到 SD 卡或 U 盘

  • 盒子执行(需要root)
    busybox dd if=/dev/block/mmcblk0 of=/storage/SD卡UUID/mmcblk0nodata bs=4M count=643
    SD卡UUID可以在/storage里面看,是一串字母和数字。

或者备份到电脑

  1. 盒子执行(需要root)
    busybox nc -l -p 5000 -e busybox dd if=/dev/block/mmcblk0nodata bs=4M count=643
  2. 电脑执行
    nc -v 盒子IP 5000 > mmcblk0nodata

PS. 上面两种方法都没有备份盒子 data 分区,如果要全部备份需要重启到第三方 Recovery 或像 LibreELEC 之类的在 U盘 中运行的系统并执行
dd if=/dev/block/mmcblk0 of=/storage/SD卡UUID/mmcblk0 ,这样备份的时间会非常长,而且要求 U盘 剩余空间大于 16G 。

备份这段时间我们可以去下载刷机包。

Android

刷机会清除全部数据,记得备份原系统和数据。
另外再备份下这两个文件,刷完再恢复。
1
2
3
4
## 蓝牙遥控器键值
/system/usr/keylayout/HIMEDIA.kl
## 红外遥控器键值
/system/etc/remote.conf

如果备份的 remote.conf 不能用,也可以试试这个

刷机方法

  • 线刷:打开 USB Burning Tool 导入固件,导入后点开始,用双公头 USB 线连接电脑和盒子靠后面的 USB 口,然后插上盒子的电源。
  • U盘:用 BootcardMaker 制作刷机 U 盘。然后插进盒子靠后面的 USB 口,adb 执行reboot update,盒子会重启升级。

Android 9

  目前在用,这个其实就是之前很流行的 slimbox,但是一直没有合适的包,就没有尝试。有次逛 4pda 的时候偶然看到有个人的 GT1 AP6255 刷了 Mecool BB2 and Pro 的 slimboxtv 用起来很好,H7四代和 GT1 配置相似,就刷了看看。

  这个固件有提供 AOSP 和 ATV 界面的包,自带 root、samba、AFR、色彩调节balabala一大堆东西。感觉就像是 Android 9 版的 superceleron 固件,但是功能还要多一些。比 Aidan 的包差的就是安全补丁旧一点,play 认证没了,不过也不太重要了。对了,他的 ATV launcher 是魔改版,没有广告。

  这个包的 kernel 也是 32 位的。有线网卡也要修改 dtb 才能用,我这有个改好的,刷好 slimboxtv 后再用 USB_Burning_Tool 刷 sbx_dtbonly_100M.img 就好,刷这个的时候所有擦除选项都不勾选

修改的部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ethernet@0xc9410000 {
compatible = "amlogic, gxbb-eth-dwmac";
reg = <0x0 0xc9410000 0x0 0x10000 0x0 0xc8834540 0x0 0x8 0x0 0xc8834558 0x0 0xc 0x0 0xc1104408 0x0 0x4>;
interrupts = <0x0 0x8 0x1>;
pinctrl-names = "external_eth_pins";
pinctrl-0 = <0x50>;
rst_pin-gpios = <0x40 0xe 0x0>;
GPIOZ4_pin-gpios = <0x40 0x4 0x0>;
GPIOZ5_pin-gpios = <0x40 0x5 0x0>;
mc_val_internal_phy = <0x1800>;
mc_val_external_phy = <0x1621>;
cali_val = <0x20000>;
interrupt-names = "macirq";
clocks = <0x8 0x34>;
clock-names = "ethclk81";
internal_phy = <0x1>;
phandle = <0xca>;
};

  感觉刷了这个包之后就可以养老了,现在 S912 也没有新的 Android 包了,LibreELEC 新版各种问题,CoreELEC 也不给更新了,装 Linux 又只能当服务器用。这个盒子从16年10月上市到现在(2024年5月),已经用了八年了,emmc 掉速装软件会很慢,但看电视插硬盘挂BT追剧看动画片还是够用的。其中不满意的也就是网口是百兆,卖的还很贵,当时的价格买外贸盒子都可以买3G内存+千兆网口的了。这个盒子可能还能再用一两年吧,到时候又要选新的盒子了。

Android TV 9

Android9
  有线网卡可以用,可以用 afrd 设置自动帧率。但因为这个 ROM 的 /system/build.propro.product.modelro.product.name 的值含有'号,会导致 afrd 启动失败,所以要修改成没有特殊字符的值后才能使用。

  root 的话要提取出 Recovery 并在盒子上用 Magisk 修补后再用AMLogicTools_V7.1.0_Donate打包刷入,开机后 adb 执行 reboot recovery 。他的 kernel 也是 32 位的,所以装 entware 的话也要装 32 位的。

  不过最近 Google 更新启动器后广告变太多了,而且盒子没流媒体认证,他推的那些片子就算花钱也看不了。广告的话可以卸载新版本启动器然后关闭 Play 的自动更新,还可以屏蔽 androidtvwatsonfe-pa.googleapis.com androidtvchannels-pa.googleapis.com 这两个域名;或者就干脆换第三方 Launcher 。

Android TV 7.1.2

Android7
  有自动帧率模式。预装只有 Play 服务、商店和 YouTube 。不过精简的有点多,DocumentsUI 都没,我放到网盘里了,可以自己添加。

  有线网卡要修改 dtb 中的 ethernet@0xc9410000eth_pins 才能用。可以用 AMLogicTools_V7.1.0_Donate 解包系统固件,Unpack level 2 ,之后可以在 AMLogicTools_V7.1.0_Donate\tmp\level2\dtb 找到 dtb 文件并修改,修改后打包刷入就好了。

  我这里有一个改好的,红外和蓝牙遥控应该也可以直接用。

修改的部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
ethernet@0xc9410000 {
compatible = "amlogic, gxbb-rmii-dwmac";
reg = <0x0 0xc9410000 0x0 0x10000 0x0 0xc8834540 0x0 0x8 0x0 0xc8834558 0x0 0xc>;
interrupts = <0x0 0x8 0x1>;
phy-mode = "rmii";
mc_val = <0x1800>;
resets = <0x6 0x23>;
reset-names = "ethpower";
interrupt-names = "macirq";
clocks = <0x6 0xa>;
clock-names = "ethclk81";
internal_phy = <0x1>;
};

Android 6.1

Android6
  有线网卡可以用。自带 Samba ,启动器带通知显示。不知道为什么 superceleron 的原帖消失了,我把固件上传到了网盘。先刷 SCV10A-GT1.img ,再进 Recovery 刷 OTA-SCV11-GT1.zip 和 SCV11-A912-AP6255-Support.zip 。

还可以自己 Google 搜索或是去 freaktab、xda、4pda 这类的地方找。
不要刷斐讯 T1 及其他需要 License 的高安盒子的固件,会导致盒子上锁刷不了任何其他固件。

一些问题和解决办法

  • 蓝牙遥控器开关机:按钮改成休眠后可休眠唤醒。不过盒子24小时挂着 BT 下动画片,用不着关机功能问题也不大。
  • 红蓝按钮:修改HIMEDIA.kl,把红蓝键改成别的功能(按键参考)。我这有一个改好的,红色是静音,蓝色是截图。
  • 最近任务界面:安装 tvQuickActions Pro,把遥控的按钮映射成 Recent Apps
  • 鼠标模式:安装 tvQuickActions ProMouse Toggle for Android TV ,在无障碍中启用。
  • 语音:换个支持 Android TV 语音的遥控器。或者在手机上装个 Android TV Remote Control
  • 刷了第三方固件后盒子后面的 reset 键会失效,这个没有办法。

LibreELEC

LibreELEC
  LibreELEC 其实就是个 Linux + kodi ,扩展比 kodi 多点。跟 Android 版的 kodi 比起来就是多了些程序,放 H265 不会花屏了。可以在这里下载,安装说明可以看这个
  CoreELEC 新版已经不支持 S912 了,可以用旧版。用 rufus 写入优盘,把 device_trees/gxm_q201_2g.dtb 复制为 dtb.img 到优盘根目录,然后插进盒子,执行 reboot update
  EmuELEC 模拟器系统,新版不支持 S912 了,可以用旧版。也可以试试国内一些论坛魔改的镜像。
  LibreELEC 系的大多都不支持 S912 了,新版 LibreELEC 也是有各种问题,比如 WiFi 网线连不上网,界面卡顿之类的。如果非要用的话推荐旧版的 CoreELEC ,可以装 64 位的 entware 和 32 位的 docker ,能用的软件会多一点。甚至可以把 Android 的 system 和 data 挂载上去跑 Termux 。
  另外这些用蓝牙遥控器也是只能关机不能开机,按钮改成休眠后可休眠唤醒。

Linux

Armbian
  镜像可以用这个,安装说明可以看这个。也可以用这个装其他发行版,不过驱动可能不全,可以从前面的镜像里面提取。
  用 ddrufus 把镜像写到优盘,修改 uEnv.txt 第三行为 FDT=/dtb/amlogic/meson-gxm-q201.dtb。将 u-boot-s905x-s912.bin 复制为 u-boot.ext。然后插上盒子上执行 reboot update
  如果重启后进入了 recovery,可能是因为之前启动过 类LibreELEC 系统,修改了 uboot 的启动参数,需要修改优盘中的启动脚本。
  在 aml_autoscript.cmd 最上添加 setenv bootfromsd,然后用 uboot-tools 生成启动文件。
mkimage -A arm -O linux -T script -C none -d aml_autoscript.cmd aml_autoscript
  再将生成好的 aml_autoscript 复制到启动优盘覆盖原文件,我这有一个改好的

刷回官方(恢复备份)

  1. 把备份的文件放到 SD 卡 或 U 盘,重启到 TWRP 或像 LibreELEC 之类的在 U盘 中运行的系统。

    重启到 TWRP : reboot recovery

    重启到 U盘系统 : reboot update

  2. 如果 SD 卡 或 U 盘 没有自动挂载的话,需要手动挂载。

    mount /dev/block/mmcblk1 /usb-otg/

    上面是 SD 卡 的路径,U 盘 的话可能是/dev/block/sda1,具体可以在/dev/block/下面看。

  3. 恢复备份。

    dd if=/usb-otg/mmcblk0nodata of=/dev/block/mmcblk0

  4. 恢复完成后重启到 Recovery。
    reboot recovery

  如果之前的系统是原厂 Recovery 的话会自动格式化 data 分区并重启。
  如果是 TWRP 的话要手动格式化一下。

官方固件一些问题的解决方法

  • 没有通知栏:装 Snowball Smart Notifications 显示通知。
  • 没有最近任务界面:插个飞鼠或者键盘 Alt + Tab 。
  • 官方固件偷偷给用户安装软件:
    • 后台偷偷安装软件的是系统自带的启动器,可以换用第三方启动器然后直接删掉或禁用自带的启动器。
    • 后来通过抓包找到推送列表地址,也可以在 hosts 里面加上一句127.0.0.1 apkhome.hinavi.cp81.ott.cibntv.net屏蔽。
      抓包

还有一些有的没的