R3300M中国移动版本刷入openwrt到emmc存储
简述:
① 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是众多电视盒子里比较好的一款,可能因为古老(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
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看