本帖最后由 XCray 于 2023-7-15 07:42 编辑
2023年7月:很久没有根据ophub大佬的动态,突然发现最新的镜像有了非常大的改进,只需要在uEnv文件里指定正确的dtb就可以了,安装根据自己盒子的型号选305或306就行。
蓝牙还需要手动优化,看我另一个贴子吧。
以下是2022年夏天根据那时候的镜像写的:
~~~~~~~~~~~~~~~~~
完整的安装步骤见本贴49楼。
由于随着认识的深入,帖子内容也在不断的补充,不仔细阅读可能会摸不着头脑。
大致分为3个阶段:写入emmc并能成功启动且网卡内存正常但内核版本受限、网卡内存正常且内核版本不受限、增加蓝牙。
主贴为前两个阶段,蓝牙主要在另一个帖子里,49楼是重新整理的完整步骤。
CM311-1A YST YS(S)大同小异,不要主线不写bootloader + 不要overload(即不要u-boot.emmc/u-boot.ext) + 5.15内核 + 我上传的e900v22c或u200的dtb。一切正常。
关于cm311-1a(以及使用和它类似固件的其它盒子):
- 后来ophub大佬主导下解决了一个比较大的隐患,非常值得关注:CM311-1a-YST安卓分区不同,要修改armbian-install文件,不然写入emmc会BTRFS报错 · Issue #517 · ophub/amlogic-s9xxx-armbian (github.com)
再后来又解决了很多人头疼已久的开机网络不通需拔插网线才行的问题:有两个方法可以解决:
- 修改NetworkManager配置,关闭自动协商、设置为100m全双工(所有机型都可以)
[ethernet]
duplex=full
speed=100
复制代码
- 使用ophub新定制的dtb,注意这个dtb可能m401a用不成:
改进版dtb(CM311推荐),添加蓝牙支持、解决启动后网络不通(拿不到IP)必须插拔网线的问题
其实不仅cm311/m401a,其它存在开机网不通必须拔插网线问题的盒子应该都可以用这个思路解决(注意是思路!dtb文件不一定能直接用)。
我已经修改了49楼的教程。
~~~~~~~~~~~
基于反复测试的经验,突发奇想,有了一个更加完美的方案:任意内核都可以正常识别网卡内存并在启动后自动获得IP地址(之前的方案只有5.4内核没问题),并且存储空间多了483MB!
具体就是:u200的u-boot作主线写入bootloader + e900v22c的u-boot作过载 + u200的dtb。
(注:后来发现偶尔还会出现拿不到IP的情况,怀疑这两个u-boot还是不够完美,可惜自己不会编译,先这么着吧)
步骤:
1. 不变,写U盘,uEnv.txt里改成u200的dtb(必须)、把e900v22c的u-boot复制为u-boot.ext(建议,否则认不出网卡和全部内存),然后U盘开机。
2. 不管emmc里原来有啥固件,反正都是要覆盖掉的。
2.1 - 可以先编辑/etc/amlogic_model_database.conf文件,加一行:
305:M401A:s905l3a:meson-g12a-u200.dtb:u-boot-e900v22c.bin:/lib/u-boot/u200-u-boot.bin.sd.bin:NA
复制代码
2.2 cp /boot/u-boot-u200.bin /lib/u-boot/u200-u-boot.bin.sd.bin
其实文件名无所谓,和上面一致就行。
2.3 armbian-install,这回不加no了!选305,当然,选0手动输入也没问题,只是稍微麻烦些。
3. 和之前一样,装载emmc的boot分区,把e900v22c的u-boot复制为u-boot.emmc即可(否则可以启动但网卡识别不到、内存也只能识别一半)。
- 取决于所用的内核版本,可能这个文件已经复制好了(5.10+内核,5.15除外)
完工!
我测试了 5.4.208 和 5.18.15 内核,启动都很完美,其它内核需要的话自己测试吧。
~~~~~~~~~以下是原来的方案~~~~~~~~~~
试了不知道多少个镜像、不知道多少个u-boot+dtb组合,也不知道线刷了多少回,反正我电脑的一个USB口因这件事情已经献身了:被插得次数太多了
好在终于找到了一个堪称完美的组合,可以从emmc启动、可以正确识别出网卡、内存、声卡,还剩下蓝牙估计也不难解决了。
具体就是:e900v22c的u-boot + u200的dtb、不写bootloader。
我用的是Armbian_22.08.0_Aml_s905l3a_bullseye_5.4.207镜像,5.4.208也行。不过这个uboot搭配其它版本的内核会出现开机无法获得ip地址的问题。
步骤:
1. 写U盘,uEnv.txt里改成u200的dtb(必须)、把e900v22c的u-boot复制为u-boot.ext(建议,否则认不出网卡和全部内存),然后U盘开机。
2. emmc里是安卓固件的前提下,用armbian-install no写emmc,用e900v22c的u-boot+u200的dtb组合
- 可以先编辑/etc/amlogic_model_database.conf文件,加一行:
305:M401A:s905l3a:meson-g12a-u200.dtb:u-boot-e900v22c.bin:NA:NA
复制代码
然后armbian-install写emmc的时候选305,当然,选0手动输入也没问题,只是稍微麻烦些。
3. 然后装载emmc的boot分区,把e900v22c的u-boot复制为u-boot.emmc即可(否则可以启动但网卡识别不到、内存也只能识别一半)。
- 取决于所用的内核版本,可能这个文件已经复制好了(5.10+内核,5.15除外)
终于可以在emmc里愉快的玩耍了,省出来一个宝贵的USB口!
对了,armbian下安装hassio,也就是supervised,照着官方教程来就很好,完全没必要看那些乱七八糟的教程。
最后强调一下:盒子这东西太乱,同一个型号实际用的芯片也都可能不一样,相应的玩法也就不一样。所以这个思路仅供参考!
对了,拿到的这个盒子电路板长这样,如果你的也是这样、其它教程的方法行不通的话,不妨按我的方法试试:
~~~~~~~~~~
利用我上传的dtb(有u200的,也有e900v22c的,和原版的区别就是增加了连接蓝牙电路的串口uart_A)和rtk_hciattach就可以启用蓝牙啦;
这是我编译的dtb和rtk_hciattach(不放心的可以自行编译,dtb源码来自内核,rtk_hciattach源码来自radxa):
meson-g12a-u201.zip
(9.72 KB, 下载次数: 826)
rtk_hciattach.zip
(44.01 KB, 下载次数: 752)
蓝牙解决的过程,详见另一个帖子:
https://bbs.hassbian.com/thread-17392-1-1.html