R3300M中国移动版本刷入openwrt到emmc存储

2022-07-04
0评论
/
2240阅读
爱搜啊

简述:

① USB线刷一个安卓5、安卓6的盒子ROM到R3300M;

② 使用甜唐编译的一个armbian(20.05)刻录U盘,主要为它的u-boot,记得修改dtb配置;

③ 用该U盘启动R3330M(adb进入安卓,reboot update后插入)就能修改emmc里的u-boot;

④ 刻录openwrt.img 到另一个U盘/tf卡,修改其中/boot下的s905_autoscrip和emmc_autoscript,以及uEnv.txt;

⑤ 用该U盘/tf卡 启动R3300M到openwrt系统,修改 install_to_emmc.sh,不要用N1的u-boot恢复到emmc,而是使用备份出来的u-boot;

⑥ 运行该sh,将openwrt系统写入emmc后,关机,拔U盘,再加电即可进入emmc上的openwrt。

R3300M中国移动版本刷入openwrt到emmc存储

R3300M刷入openwrt到emmc存储

下面详细讲讲整个历程:

R3300M是众多电视盒子里比较好的一款,可能因为古老(s905M-B)一些,高安加密的不多,用来刷个armbian/openwrt比较容易。去年底偶然50元买到一个,就想试试看。

事实上,我刷了很多个armbian,都不能刷入emmc里,后来找到上古的 5.44版本的armbian 才能刷入emmc。

该系统的Linux内核是3.14的,有些问题:

1、它只能安装到emmc被安卓分的/dev/data分区,浪费emmc的很多空间,

2、它这个3.14内核的Linux,很多新一点的内核模块都不能使用(例如BBR加速等)

看很多文章,都说,

R3300M这种gxbb类型的板子无法刷更高版本的armbian,所以几乎放弃了,参见:

https://tccmu.com/2021/03/24/R3300-M/

https://www.bilibili.com/read/cv13943723

https://www.bilibili.com/read/cv13944863

然后就是过年了,一忙就忘记它了,,,

直到有一次看见这篇文章的介绍,使用甜唐的系统,能刷R3300L盒子:

https://www.right.com.cn/forum/thread-5003397-1-1.html

当然,@tingge 用的是s905L的盒子,和s905M不大一样,

不过思路来了,就是这种商业化倾向的系统,可能做的比较好,适用性比较强。

当即去 https://www.right.com.cn/forum/thread-4053033-1-1.html看看,

下载了 @dlsys 制作的甜唐armbian(20.05)来试验。

首先,要给R3300M用usb线刷入一个普通的安卓5或者6之类的,我用的:

MXQ_PRO_4K_p201_android_TV_by_cOOLio_V2.5_MEE.img

去年我曾尝试刷入

        【】中兴B860AV2.1-A-M-T-S905L-qlzy-root-201904.img

        【】20191219-R3300L-6.0-root-twrp-Milton-B860Av2.1.img

        【】百视通R3300L-S905L、B-安卓4.4.2-线刷固件.img

都有问题,无法刷入,大多是 RAM或者USB等等参数不匹配,无法DL到盒子里。

然后展开下载的甜唐系统的文件,刻录U盘,

(发个牢骚,展开后的img文件巨达5.3GB,实际上有用的文件只有1.3GB,后面全是0,img没正确截断)

修改/boo分区里uEnv.txt里的 dtb文件名,改成那个 gxbb_xxxxxxxx_p201.dtb

启动3300M,没反应?其实是后台在自动往emmc上安装,反应慢。

现在,R3300M现在可从emmc启动armbian了。

我的目标是openwrt,手头只有F大 49+ 的openwrt.img,就用它刻录了U盘,

修改uEnv.txt里的dtb配置之后,插入盒子加电,但是无法启动盒子 !?

接上TTL看了看,uboot执行完 usb start,usb_autoscript之后不成功,没有反应,

竟然跳到了下一个cmd命令,就是 emmc_autoscript   为哈?

看了一下openwrt里的s905_autoscipt.cmd

它为了考虑全面,枚举了mmc、usb等等多种devtype参数,

但是在甜唐版本的armbian刷入的u-boot里,并不支持此参数,

导致该 s905_autoscipt 无法与u-boot配合正确运行,从而退出,

继续执行了下面的 emmc_autoscript。


因为自己确定使用U盘启动openwrt,不用考虑过多的设备判断的问题,

所以根据自己的u-boot参数,重写一下 s905_autoscipt.cmd 如下:

setenv kernel_addr_r 0x11000000
setenv ramdisk_addr_r 0x13000000
setenv fdt_addr_r 0x1000000
fatload usb 0 0x1080000 uEnv.txt
env import -t ${loadaddr} ${filesize}
setenv bootargs ${APPEND}
fatload usb 0  ${kernel_addr_r} ${LINUX}
fatload usb 0  ${ramdisk_addr_r} ${INITRD}
fatload usb 0  ${fdt_addr_r} ${FDT}
fdt addr ${fdt_addr_r}
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

在armbian环境下编一下

mkimage -C none -A arm -T script -d s905_autoscript.cmd s905_autoscript

然后复制、替换到 U盘 /boot 目录里。

再用U盘启动盒子,成功进入openwrt,漂亮!

再用 /root下的install_to_emmc.sh 写入 emmc后重启动,失败!

仔细看 该sh,它是为N1准备的,里面有个将 新的N1-u-boot.bin 复制到emmc的动作,

它破坏了原本emmc上已经被甜唐armBian修改了的u-boot..

所以修改 install_to_emmc.sh 里的 LD_ORIG这个参数,

原先是 BLDR_ORIG=u-boot-2015-phicomm-n1.bin

改为 BLDR_ORG=bootloader-backup.bin

即,使用原来emmc里备份出来的(由甜唐系统安装的)u-boot来恢复到emmc里。

修改后重新执行一次,把openwrt写入emmc,然后重启,还是失败!!

继续TTL里观察,从emmc启动时,emmc_autoscript 执行的是:

if fatload mmc 1 ${env_addr} uEnv.txt && env import -t ${env_addr} ${filesize}; setenv bootargs ${APPEND};

then if fatload mmc 1 ${kernel_addr} ${LINUX};

then if fatload mmc 1 ${initrd_addr} ${INITRD};

then if fatload mmc 1 ${dtb_addr} ${FDT};

then run addmac;

run boot_start 。。。。。。

注意,都是从 mmc 1 上装载文件,

然鹅,在当前emmc的u-boot环境执行 mmcinfo 可见,emmc设备是 mmc 0

这,F大的openwrt里,对emmc的设置和甜唐的u-boot对emmc的设置是不一样的。

前者认为它是 mmc 1 而甜唐认为它是 mmc 0

遂修改一下 /boot 目录下的 emmc_autoscript.cmd 将其中的 mmc 1 都 改为 0

再编一下:

mkimage -C none -A arm -T script -d emmc_autoscript.cmd emmc_autoscript

复制,替换到 emmc 的  /boot 下面,,,,

加电重启,成功从R3300M的emmc里启动了openwrt!!!

整个过程抽丝剥茧,发现了几处小坑坑导致大家能启动U盘上的openwrt,却无法写入emmc里启动。

就此结案,,,哈哈哈。

R3300M 成功刷入openwrt到emmc里

https://www.right.com.cn/forum/thread-8242410-1-1.html


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


于2022-07-04发布
相关文章