S905X 刷机

S905X刷Android

闲鱼上买了2+16G的Android盒了,S905X芯片,回来只能从TF卡启动armbian和CoreELEC,也可以从U盘启动,但必须是TF旁边的USB口才可以。盒子自带root,备份了一下各分区。开始尝试各种刷机。

1. 备份原厂固件。

自带root,“应用” 中找 “设置” 打开 把USB调试打开。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
hx_s905x:/ # df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 980M 496K 979M 1% /dev
tmpfs 980M 0 980M 0% /mnt
/dev/fuse 12G 1.5G 10G 14% /mnt/runtime/default/emulated
/dev/fuse 12G 1.5G 10G 14% /mnt/runtime/read/emulated
/dev/fuse 12G 1.5G 10G 14% /mnt/runtime/write/emulated
/dev/block/system 1.9G 804M 1.1G 41% /system
/dev/block/data 12G 1.5G 10G 14% /data
/dev/block/tee 4.9M 35K 4.9M 1% /tee
tmpfs 980M 0 980M 0% /storage
/dev/fuse 12G 1.5G 10G 14% /storage/emulated

hx_s905x:/ # mount
rootfs on / type rootfs (ro,seclabel)
tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,mode=755)
devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600)
none on /dev/cpuctl type cgroup (rw,relatime,cpu)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
proc on /proc type proc (rw,relatime,gid=3009,hidepid=2)
sysfs on /sys type sysfs (rw,seclabel,relatime)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,seclabel,relatime,mode=755)
configfs on /sys/kernel/config type configfs (rw,relatime)
pstore on /sys/fs/pstore type pstore (rw,seclabel,relatime)
none on /acct type cgroup (rw,relatime,cpuacct)
tmpfs on /mnt type tmpfs (rw,seclabel,relatime,mode=755,gid=1000)
/dev/fuse on /mnt/runtime/default/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /mnt/runtime/read/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /mnt/runtime/write/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
none on /config type configfs (rw,relatime)
/dev/block/system on /system type ext4 (ro,seclabel,relatime,data=ordered)
/dev/block/data on /data type ext4 (rw,seclabel,nosuid,nodev,noatime,nodelalloc,errors=panic,data=ordered)
/dev/block/tee on /tee type ext4 (rw,seclabel,nosuid,nodev,noatime,nodelalloc,errors=panic,data=ordered)
tmpfs on /storage type tmpfs (rw,seclabel,relatime,mode=755,gid=1000)
/dev/fuse on /storage/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)


127|hx_s905x:/ # cat /proc/partitions
major minor #blocks name

253 0 512000 zram0
179 0 15392768 mmcblk0
179 1 4096 mmcblk0p1
179 2 65536 mmcblk0p2
179 3 524288 mmcblk0p3
179 4 8192 mmcblk0p4
179 5 32768 mmcblk0p5
179 6 32768 mmcblk0p6
179 7 8192 mmcblk0p7
179 8 8192 mmcblk0p8
179 9 32768 mmcblk0p9
179 10 32768 mmcblk0p10
179 11 32768 mmcblk0p11
179 12 2097152 mmcblk0p12
179 13 12390400 mmcblk0p13
179 96 4096 mmcblk0rpmb
179 64 4096 mmcblk0boot1
179 32 4096 mmcblk0boot0

130|hx_s905x:/ # cat /proc/cpuinfo
Processor : AArch64 Processor rev 4 (aarch64)
processor : 0
processor : 1
processor : 2
processor : 3
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 wp half thumb fastmult vfp edsp neon vfpv3 tlsi vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4

Hardware : Amlogic
Serial : 210be200f9e4f8d90f1521dbc4f901ca

检查分区:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
130|hx_s905x:/ $ ls /dev/block/platform/d0074000.emmc -l
total 0
lrwxrwxrwx 1 root root 15 2022-03-04 21:30 boot -> /dev/block/boot
lrwxrwxrwx 1 root root 21 2022-03-04 21:30 bootloader -> /dev/block/bootloader
drwxr-xr-x 2 root root 300 2022-03-04 21:30 by-num
lrwxrwxrwx 1 root root 16 2022-03-04 21:30 cache -> /dev/block/cache
lrwxrwxrwx 1 root root 16 2022-03-04 21:30 crypt -> /dev/block/crypt
lrwxrwxrwx 1 root root 15 2022-03-04 21:30 data -> /dev/block/data
lrwxrwxrwx 1 root root 14 2022-03-04 21:30 env -> /dev/block/env
lrwxrwxrwx 1 root root 15 2022-03-04 21:30 logo -> /dev/block/logo
lrwxrwxrwx 1 root root 15 2022-03-04 21:30 misc -> /dev/block/misc
lrwxrwxrwx 1 root root 18 2022-03-04 21:30 mmcblk0 -> /dev/block/mmcblk0
lrwxrwxrwx 1 root root 23 2022-03-04 21:30 mmcblk0boot0 -> /dev/block/mmcblk0boot0
lrwxrwxrwx 1 root root 23 2022-03-04 21:30 mmcblk0boot1 -> /dev/block/mmcblk0boot1
lrwxrwxrwx 1 root root 22 2022-03-04 21:30 mmcblk0rpmb -> /dev/block/mmcblk0rpmb
lrwxrwxrwx 1 root root 19 2022-03-04 21:30 recovery -> /dev/block/recovery
lrwxrwxrwx 1 root root 19 2022-03-04 21:30 reserved -> /dev/block/reserved
lrwxrwxrwx 1 root root 14 2022-03-04 21:30 rsv -> /dev/block/rsv
lrwxrwxrwx 1 root root 17 2022-03-04 21:30 system -> /dev/block/system
lrwxrwxrwx 1 root root 14 2022-03-04 21:30 tee -> /dev/block/tee


hx_s905x:/ $ ls /dev/block/platform/c9000000.dwc3/xhci-hcd.0.auto -l
total 0
drwxr-xr-x 2 root root 80 2022-03-04 21:30 by-num
lrwxrwxrwx 1 root root 14 2022-03-04 21:30 sda -> /dev/block/sda
lrwxrwxrwx 1 root root 15 2022-03-04 21:30 sda1 -> /dev/block/sda1
lrwxrwxrwx 1 root root 15 2022-03-04 21:30 sda2 -> /dev/block/sda2
  • 备份
1
2
3
4
5
6
7
8
dd if=/dev/block/recovery of=/sdcard/bak/recovery.img
dd if=/dev/block/boot of=/sdcard/bak/boot.img
dd if=/dev/block/bootloader of=/sdcard/bak/bootloader.img
dd if=/dev/block/system of=/sdcard/bak/system.img
dd if=/dev/block/reserved of=/sdcard/bak/reserved.img
dd if=/dev/block/misc of=/sdcard/bak/misc.img
dd if=/dev/block/env of=/sdcard/bak/env.img
dd if=/dev/block/logo of=/sdcard/bak/logo.img

备份完记录把sdcard/bak目录保存到电脑。
网盘有我自己备份的:
链接: https://pan.baidu.com/s/1BSzcuKiHaxYjHB2KNGmBdA 提取码: sh4q

原厂不能进入recovery,进入后自己刷会恢复官方系统

2. 替换Recovery

使用fastboot刷入网盘中的twrp.s905x-3.0.2-0.img,这个也是网上找的。
链接: https://pan.baidu.com/s/1BSzcuKiHaxYjHB2KNGmBdA 提取码: sh4q`

1
2
3
adb reboot fastboot
fastboot devices
fastboot flash recovery twrp.s905x-3.0.2-0.img

刷完系统正常启动进入原厂系统,有戏。

1
adb reboot recovery

检查是否刷入成功,正常进入TWRP。用鼠标操作。

3. 刷Armbian

网盘中:Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img.xz
镜像工作直接写TF卡或者U盘。

1
adb reboot update

正常引导进入,但修改密码一直卡在那些过不去。网上搜索,需要修改/etc/passwd文件第一行,删除x

  • Authentication token manipulation error
1
2
3
4
sudo mount -rw /dev/sdc2 /media/wv/ROOTFS

cd ROOTFS/etc
nano passwd

我这是把TF挂到Linux虚拟机上操作的。删掉第一行的x 注意删除一个字母。
ctrl+x,Y保存

再用TF启动正常登录系统。

问题:看不到Android分区,无法安装到emmc

如果需要备份原系统可以ddbr备份。

4. 刷CoreELEC

https://discourse.coreelec.org/t/how-to-install-coreelec/677

网盘中:CoreELEC-Amlogic-ng.arm-19.4-Matrix_rc3-Generic.img.gz
跟上面一样写入TF卡或者U盘。

写完按官方文档:https://coreelec.org/dtb/

把:device_trees/gxl_p212_2g 复制到根目录改名为dtb.img.
就可以正常启动CoreELEC,同样也是看不到android分区。

密码用户名密码,可以ssh连接
root : coreelec

安装包管理工具,装完可以玩python3了。

1
2
3
installentware
opkg update
opkg install python3 python3-pip

问题:看不到Android分区,无法安装到emmc

5. 刷Andorid

网盘: Aidan’s ROM [S905X] 1GB 2GB+.img 从XDA下载的。
耳机插孔中有复位按钮,捅个10秒左右,进线刷模式

Windows线刷试了多次,卡7%。

线刷报错:UBOOT/获取返回/DiskInitial命令出错
[2022-03-05 15:14:16 886][HUB2-5][0x32030201]UBOOT/获取返回/DiskInitial命令出错
按这个方法不能解决:https://www.znds.com/tv-1207043-1-1.html

于放弃windows,转向linux。

6. Linux下刷Android镜像

参考:https://github.com/natinusala/linux-amlogic-toolkit
这个工作好处是可以指定分区刷:

问题:WIFI用不了,没事不要刷,用来救砖的

1
aml-flash --img=/path/to/aml_upgrade_package.img> --parts=<all|none|bootloader|dtb|logo|recovery|boot|system|..> [--wipe] [--reset=<y|n>] [--soc=<m8|axg|gxl|txlx>] [efuse-file=/path/to/file/location] [bootloader|dtb|logo|boot|...-file=/path/to/file/partition] [--password=/path/to/password.bin]

Aidan那个镜像改个名字Aidan.img

1
2
3
4
5
6
7
8
9
./bin/unpack Aidan.img

echo "替换开启Logo很成功,可以放开刷了"
aml-flash --img=Aidan.img --soc=gxl --wipe --reset=n --parts=logo

echo "替换boot和system"
aml-flash --img=Aidan.img --soc=gxl --wipe --reset=n --parts=boot
aml-flash --img=Aidan.img --soc=gxl --wipe --reset=n --parts=system
aml-flash --img=Aidan.img --soc=gxl --wipe --reset=n --parts=recovery

bootloader我没有刷。

目前不清楚,如何把分区备份做成线刷包,还刷不回原厂android系统。刷入Aidan后进入fastboot可以刷成功boot和system,但重启进入recovery。很奇怪。

测试另一个固件,正常启动。不好用,界面还不如Aidan.img,三个固件原厂相对来说最好用,装沙发桌面。

1
2
3
4
./bin/unpack hx_s905x_Nougat_256x4_528m_20171030_1134_ZNT_2017110107.img
aml-flash --img=hx_s905x_Nougat_256x4_528m_20171030_1134_ZNT_2017110107.img --soc=gxl --wipe --reset=n --parts=boot
aml-flash --img=hx_s905x_Nougat_256x4_528m_20171030_1134_ZNT_2017110107.img --soc=gxl --wipe --reset=n --parts=system
# wifi 不能用,垃圾。

7. Fastboot刷原厂备份

刷完上面android可以进fastboot,恢复原厂system后重启一直返复进recovery。不能正常引导系统。

问题:恢复原厂system后进recovery

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fastboot flash boot hx_boot.img
fastboot flash system hx_system.img
fastboot reboot recovery

# 刷system时间比较长啊.
fastboot flash system system.img
target reported max download size of 1524629504 bytes
Invalid sparse file format at header magic
sending sparse 'system' 1/1 (838342 KB)...
OKAY [ 50.356s]
writing 'system' 1/1...

OKAY [2164.884s]
finished. total time: 2215.242s

8. TWRP卡刷

卡刷完直接黑屏,还以为硬件坏了,经过反复折腾,发现硬件没问题。下面救砖。

9. 救砖

找个相同的盒子,armbian从U盘或者SD卡启动,然后ddbr备份,得到备份文件:BACKUP-arm-64-emmc.img.gz。

解压后直接写入TF卡,注意这个文件解压后比较大。跟EMMC一样大。TF卡必须略大于EMMC。

TF卡插入后接通电源,再armbian的U盘也接入盒子,此时盒子还是不会亮灯,短接EMMC,这里就从TF卡启动了。并会加载U盘中的armbian,如果是emmc,直接ddbr恢复就行。

经过几次折腾,USB_Borning_Tools卡在4%或者%7都跟固件包有问题,可以使用Customization Tool 解包后 Packaing 把Full勾去掉,在下面只勾选boot, system这两个重新制线刷包就行可以正常刷入。不过不一定能启动。

EMMC短接点:

经过几天折腾发现这盒子真是刷不挂啊,最后总能能通TF卡启动Bootloader给救回来。