S905L3A(M401A)拆解, 运行EmuELEC和Armbian
关于S905L3A / S905L3AB
S905Lx系列没有公开资料, 猜测是Amlogic用于2B的芯片型号, 最早的 S905LB 是 S905X 的马甲, 而这个 S905L3A/S905L3AB 则是 S905X2 的马甲, 因为在性能评测里这两个U的得分几乎一样.
S905L3A/S905L3AB 和 S905X2, S905X3 一样 GPU 是 G31, 相比前一代的 MALI450 性能提升明显.
同型号的电视盒子中出现的CPU型号还有 S905L3, S905L3B, 这两个和 S905L3A/S905L3AB 是不一样的. S905L3A安兔兔跑分正常在4.5W分以上, 而905L3, 905L3B只能跑2.5w左右.
如果为了玩 EmuELEC 买电视盒子, 建议买商品介绍里明确写了 S905L3A/S905L3AB 的, 因为即使是同一个型号也分多个版本, CPU是不一定的, 现在没有哪个型号的盒子, 用的CPU一定是S905L3A/S905L3AB.
如果是用于运行Armbian, 则哪个型号都可以.
M401A
我买的是一个M401A的盒子, 带蓝牙不带WIFI, 没有TF卡槽. 市面上S905L3A的盒子没有带卡槽的, E900V22C和E900V22D这两个型号虽然没卡槽, 但是PCB带了TF卡槽焊盘, 可以自己加焊.
实物图
底部标识
顶部的配重+散热
PCB正面
CPU S905L 3A
内存
NAND
蓝牙
安卓和相关工具下载
ophub 提供了非常实用的工具合集, 包含刷机工具和各个型号盒子的安卓包, GitHub下载速度也很快
https://github.com/ophub/kernel/releases/tag/tools
运行EmuELEC
盒子安装的安卓9, 已经Root过的, 所以不需要再刷机了. 从GitHub下载了最新的 EmuElEC 4.9, 在 Ubuntu 里用 Disk Image Writer 写入到一个 64G 的U盘. 这里不一定要用U盘, 用移动硬盘也可以.
将EMUELEC分区中 device_trees 目录下的 g12a_s905x2_2g.dtb 复制到根目录下, 改名为 dtb.img
插上U盘, 在安卓中运行 Reboot To LibreElEC 后, 盒子重启就会自动从U盘启动.
第一次启动时, U盘中的系统在初始化时有一些问题, 文件没有释放全, 扩容倒是扩成功了, 重启后也能进EmuELEC界面, 功能都是好的, 但是没法运行游戏. 在系统启动阶段会报一些这样的错
Failed to mount: tmp-cores.mount
Failed to mount: tmp-database.mount
...
图是从网上借的, 就是这个错误界面
这个错误不是因为 EMMC 慢, 是因为文件不全. U盘本身没问题, 猜测原因是供电不足, 因为另一个USB口同时插了键盘.
改dtb文件是没用的, 解决办法就是... 重做一个U盘, 重新再启动初始化一遍. 建议在初始化时最好只插U盘, 另一个USB口不要插东西.
在启动阶段会报一个 tmp-shell 错误, 但是似乎对运行没影响.
运行游戏
游戏基本上都能直接运行, 不需要单独设置引擎.
性能提升比较明显的有以下游戏:
- FBNeo
- ESP Ra.De 长空超少年, 纵版射击游戏, 在 R3300L 上有明显失帧破音, 在 M401A 上运行流畅
- Gunlock/Layer Section 在 R3300L 上有明显的失帧破音, 在 M401A 上运行90%流畅, 除了个别场景还会有一些卡顿
- Dreamcast
- Soulcalibur刀魂在 R3300L 上能凑合玩, 卡顿明显, 在 M401A 上除了开场卡顿, 游戏过程中还是很流畅的
而对于 Dreamcast 的另一些游戏, 例如 Dead or Alive 2, 斑鸠, 依然是很卡.
存在的问题
盒子自带的蓝牙是 RTL8761, 在EmuELEC里无法识别(看dmesg没有输出). EmuELEC 是基于 CoreELEC 的, 所以这两个系统的 dtb 是通用的, 如果在 CoreELEC 下能启用, 在 EmuELEC 中也能启用.
运行 Armbian
从 ophub 的 GitHub 仓库下载 Armbian 镜像 https://github.com/ophub/amlogic-s9xxx-armbian/releases
我选择的是 Armbian_23.08.0_amlogic_s905l3a_jammy_5.15.127_server_2023.08.19, 解压后用 Disk Image Writer 直接写入移动硬盘.
接上硬盘, 在盒子安卓系统中运行 Reboot_to_libreelec 就会重启到 Armbian 了.
这个镜像的网络正常, 但是默认没有加载蓝牙.
解决运行 EmuELEC 后, 无法进入 Armbian 的问题.
运行过EmuELEC的盒子, 无法从 USB 启动 Armbian, 需要在 EmuELEC 的 ssh 里面, 通过 fw_setenv 命令删除变量 bootfromsd
fw_setenv bootfromsd
# 再运行 fw_printenv 确认 bootfromsd 变量已经删除
fw_printenv
# 关机
关机后插上Armbian的U盘或移动硬盘, 重启进入安卓中运行reboot_to_libreelec, 就能进入Armbian了.
U盘,移动硬盘的兼容性
不单单是 M401A, 其它型号的盒子也是, 都会挑硬盘, 挑U盘, 挑TF卡. 在PC上明明工作正常的移动硬盘, 在盒子上就会反复断开连接, 或者初始化失败.
大半的原因是供电, 因为盒子的供电都会差一些, 另外的原因是盒子 UBOOT 内置的驱动, 可能对部分硬件兼容性不够好.
总之要多备一些, 如果一个启动出现问题, 换另一个试试, 排除因为存储不兼容导致系统启动失败的问题.
参考
- M401A/311-1a Armbian下RTL8721蓝牙使用 https://bbs.hassbian.com/thread-18366-1-1.html
- M401A/311-1a Armbian 蓝牙, reboot/音乐问题https://bbs.hassbian.com/thread-17392-1-1.html
- 【23年7月更】M401A/CM311等盒子Armbian 系统 RTL8761BTV 蓝牙的正确方式https://github.com/ophub/amlogic-s9xxx-armbian/discussions/1546
- E900V22C运行EmuELEC https://post.smzdm.com/p/a5olm8vl/
- 创维E900V22c刷EmuELEC开启蓝牙及Wifi https://zhuanlan.zhihu.com/p/598094381