适用对象:拿到一台晶晨 S905L3(GXL 家族,Mali-450)的安卓机顶盒,想刷成怀旧游戏机的你。
底层系统推荐 Batocera(本文主线路);EmuELEC 作为备选参考。
难度:★★★☆☆(需要抠原机 dtb,但全程可逆、不碰 eMMC 就基本砖不了)
〇、先看这三句话(避免白干活)
- S905L3 ≠ S905L3A。你这台是 GXL 老芯片(Mali-450),网上 90% 教程是 L3A(G12A / Mali-G31)。别直接抄 L3A 的
g12a_s905x2_2g.dtb,会黑屏。 - 原机是安卓完全没问题——安卓就是”原机 dtb”的母体,我们正是从安卓里把 dtb 抠出来借给游戏系统用。dtb 只描述硬件,跟跑什么系统无关。
- S905L3 社区现成 dtb 少,大概率要走”抠原机 dtb”这条路(本文路线 C)。别慌,工具已经备好。
一、需要的设备与软件(调试设备清单)
硬件(按”先试 SD 启动”准备,基本就够了)
| 物品 | 用途 | 备注 |
|---|---|---|
| 机顶盒 + 原装电源 | 主角 | 别用杂牌电源,电压不稳易变砖 |
| HDMI 线 + 电视/显示器 | 看画面 | 必须能显示,否则没法判断卡在哪 |
| TF/SD 卡 ≥16GB(建议 32G+,Class10) | 装游戏系统 | SD 启动最安全,不碰盒子内部存储 |
| 读卡器 | 写卡 | — |
| 网线 + 路由器 | 联网 | S905L3 绝大多数是百兆口,WiFi 很多批次压根没硬件,直接用网线 |
| 盒子原装遥控器 / USB 键盘 + 手柄 | 操作 | 遥控器可能要 dtb 配对,先备个 USB 键鼠更稳 |
调试兜底硬件(SD 启动不行、要线刷或排错时再用)
| 物品 | 用途 | 备注 |
|---|---|---|
| 双公头 USB 线(A-A 公对公) | 线刷 eMMC | 带磁环抗干扰更好 |
| Amlogic USB Burning Tool v2.2.x | 线刷 | 装时勾”安装驱动” |
| 短接镊子 / 晶晨短接神器 / 万用表 | 触发 MaskROM | 找 eMMC CLK 短接点用 |
| CH340/CP2102 TTL 串口 + 杜邦线 + 串口助手 | 看启动日志排错 | 强烈建议有,黑屏时它是唯一眼睛 |
| HDMI 采集卡(可选) | 录启动画面 | 没有就用眼睛看 |
软件(电脑端)
- BalenaEtcher(写卡,免费)或 Win32DiskImager
- ADB 工具(抠原机 dtb 用)
- 7-Zip(拆官方固件包)
- Amlogic Customization Tool(拆/改官方 img,可选)
- 本工作区已有的
minidtc.py+dtbtool.sh(dtb 反编译/核对/精修,已就绪)
二、第一步:确认你的盒子(5 分钟,必做)
开机进安卓,按顺序确认:
1)开 USB 调试
设置 → 关于 → 连点”版本号”7 下 → 返回 → 开发者选项 → 打开”USB 调试”。
(部分运营商盒子藏得深或没这选项 → 直接跳到第 2 步用命令,或走”拆官方固件”拿 dtb)
2)连电脑,敲命令确认身份
adb devices # 先看到设备序列号才算连上
adb shell cat /proc/device-tree/amlogic-dt-id
# 例:gxlx2_p291_2g / gxl_p211_1g → 带 gxl* 就是真 S905L3(GXL)
# 若显示 g12a* → 其实是 L3A,别看本文,去套 L3A 教程
adb shell cat /proc/cpuinfo | grep -i hardware
adb shell free -m # 看内存是 1G 还是 2G(决定选哪个 dtb)
3)(可选但最准)拆机看丝印
撬开底盖,看主芯片表面印字:S905L3 / S905L3B / S905L3A,一眼定代。
三、选哪条路线?
| 你的盒子情况 | 走哪条 | 风险 |
|---|---|---|
| 已刷破解安卓 / 能 SD 启动 | 路线 A(SD 卡) | 极低,不碰 eMMC |
| SD 启动试了不行,但能进安卓抠 dtb | 路线 A + 路线 C | 低 |
| bootloader 锁死,只能线刷 | 路线 B(线刷) | 中,可能变砖 |
怎么判断能不能 SD 启动:关机插好写好的卡,按住盒子 reset 小孔 上电,或进安卓终端 su 后 reboot update。能出 Batocera 开机画面 = 成功。
四、路线 A:SD 卡启动(最安全,首选)
步骤 1 · 下镜像
- Batocera:选 GXL / S905 那代的镜像(下载页标
S905/s905gen2,别选 s905gen3——那是 G12A/L3A 的) - EmuELEC(备选):选文件名带 S905(非 Amlogic-ng) 的版本;ng 版是给 G12A/L3A 的
步骤 2 · 写卡
BalenaEtcher 把 .img.gz 直接写进 TF 卡(自动解压)。写完弹”格式化”→ 取消,千万别格式化。
步骤 3 · 选 dtb(关键)
拔卡重插,进 boot/ 分区,把对应 dtb 改名为 dtb.img:
- 2G 内存先试:
gxl_p212_2g.dtb - 1G 内存 / 慢 eMMC:
gxl_p212_1g_slowemmc.dtb或gxl_p281_1g.dtb - 百兆网卡优先带
_100M后缀的;螃蟹 WiFi 选带RealtekWiFi的
通用 dtb 不一定 100% 匹配你这块板子(网卡/LED/IR 可能不对),所以下一步验证后大概率要换成”原机 dtb”(路线 C)。
步骤 4 · 启动
- 方法一:安卓里「Update & Backup → Local → 选卡里
aml_autoscript.zip→ Update」 - 方法二:终端
su→reboot update - 方法三:关机,按住 reset 小孔再上电,出画面后松手
步骤 5 · 验证
能看到 Batocera 界面 = 成功。插手柄、插网线看能不能拿到 IP。
步骤 6 · 不对就走路线 C
网卡不亮 / LED 乱闪 / 遥控没反应 → 直接抠原机 dtb 替换(见下),比一个个试通用 dtb 快得多。
五、路线 C:抠原机 dtb(S905L3 大概率要这步,用我们工具)
原机 dtb 是厂商为这块板子定制的”黄金硬件说明书”,拿来用最稳。
1)从运行中的安卓抠(最方便)
# 有 root 时,直接 dd 出 dtb 分区再拉到电脑
adb shell su -c "dd if=/dev/block/by-name/dtb of=/sdcard/dtb.img"
adb pull /sdcard/dtb.img .
# 或者安卓 /boot 下本来就有:
adb pull /boot/dtb.img .
不确定分区名?
adb shell su -c "ls -l /dev/block/by-name/"找带dtb的。
2)没 root / ADB 关了 → 拆官方固件
下到这台盒子的原厂 .img,用 7-Zip 或 Amlogic Customization Tool 解包,里面直接有 dtb.img 或 dtb-<板型>.img。
3)核对它确实是这块板子的
./dtbtool.sh inspect dtb.img
# 看 model / compatible / 网卡 / LED 节点,确认对得上
4)用起来
把 dtb.img 改名覆盖进 SD 卡 boot/ 分区的 dtb.img,重启。
5)还要微调(网卡 PHY / LED / IR 脚位)就反编译改
python minidtc.py -d out.dts dtb.img # 反编译 dtb -> out.dts
# 用编辑器改 out.dts(ethernet@ 的 phy-mode、补 leds、ir 节点等)
python minidtc.py out.dts -o dtb.img # 回编 dts -> dtb,再覆盖进卡
六、路线 B:线刷 eMMC(兜底,bootloader 锁死才用)
⚠️ 风险提醒:线刷会动盒子内部存储,操作不当可能变砖。优先路线 A;只有 SD 启动彻底走不通才考虑。
- 拆机找短接点:eMMC CLK 测试点 / 主板上的 MaskROM 触点(型号不同位置不同,先搜”你的盒子型号 + 短接点”)。
- 双公头 USB 连电脑(插靠近网口的 USB 口),开 USB Burning Tool。
- 短接 → 上电 → 进 MaskROM(进度条到 5% 松开短接),导入镜像,勾”擦除 flash / 擦除 bootloader”,开始烧录。
- 卡 2% 报 Uboot 错 → 换低版本 Burning Tool(如 2.1.6)或换无加密签名固件;烧到 100% 但黑屏 → dtb 不对。
- Batocera 一般没有 eMMC 直刷包,这种盒子更建议坚持路线 A 的 SD 启动,或自己改造镜像。
七、排错速查表
| 现象 | 原因 | 解决 |
|---|---|---|
| 完全黑屏无输出 | dtb 不对 / 镜像代不对(选成 L3A 的) | 换回 GXL 代镜像 + 正确 dtb |
| 出 Batocera logo 后卡死/重启 | dtb 部分不匹配 | 抠原机 dtb(路线 C) |
| 进系统但网口不亮 | 网卡 PHY 不匹配 | 抠原机 dtb,或换带 _100M 的 dtb |
| LED 乱闪 / 不亮 | LED 脚位不对 | 路线 C 第 5 步改 dts |
| 遥控器没反应 | IR 协议/dt b 不对 | 先用 USB 键鼠,再去配对 IR |
| 线刷卡 2% | 固件加密 / 驱动 | 换 Burning Tool 版本,重装驱动 |
| 1G 内存跑得卡 | 内存太小 | 只跑 NES/SFC/MD/街机,别硬上 PSP/N64 |
八、安全与预期
- 先备份:能
adb pull出原厂分区就先备份一份,变砖了还能线刷救回。 - 优先 SD 卡:不改 eMMC,拔卡就回安卓,零风险。
- 性能预期:S905L3 是老四核 A53,1G 机型跑 Batocera 偏紧——NES/SFC/MD/GBA/街机流畅;PSP/N64/DC 以上会吃力,当”客厅轻量怀旧机”定位最现实。
- 百兆网口 + 大概率无 WiFi:老实用网线,别跟无线较劲。
附:命令速查
# 确认身份
adb shell cat /proc/device-tree/amlogic-dt-id
# 抠原机 dtb
adb shell su -c "dd if=/dev/block/by-name/dtb of=/sdcard/dtb.img"
adb pull /sdcard/dtb.img .
# 核对 / 精修(本工作区工具)
./dtbtool.sh inspect dtb.img
python minidtc.py -d out.dts dtb.img # 反编译
python minidtc.py out.dts -o dtb.img # 回编












暂无评论内容