『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 64259|回复: 431

[修仙教程] 【大功告成】23年7月更:M401A/CM311-1a盒子Armbian安装极其简单

  [复制链接]

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11435
金钱
8504
HASS币
460

教程狂人突出贡献

发表于 2022-8-2 09:34:59 | 显示全部楼层 |阅读模式
本帖最后由 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,照着官方教程来就很好,完全没必要看那些乱七八糟的教程。
最后强调一下:盒子这东西太乱,同一个型号实际用的芯片也都可能不一样,相应的玩法也就不一样。所以这个思路仅供参考!
armbian.png
对了,拿到的这个盒子电路板长这样,如果你的也是这样、其它教程的方法行不通的话,不妨按我的方法试试:
A.png B.png
~~~~~~~~~~

利用我上传的dtb(有u200的,也有e900v22c的,和原版的区别就是增加了连接蓝牙电路的串口uart_A)和rtk_hciattach就可以启用蓝牙啦;
这是我编译的dtb和rtk_hciattach(不放心的可以自行编译,dtb源码来自内核,rtk_hciattach源码来自radxa):
meson-g12a-u201.zip (9.72 KB, 下载次数: 816) rtk_hciattach.zip (44.01 KB, 下载次数: 725)

蓝牙解决的过程,详见另一个帖子:
https://bbs.hassbian.com/thread-17392-1-1.html







评分

参与人数 12金钱 +93 HASS币 +20 收起 理由
qhdyanjie + 2 高手,这是高手!
lqf1206 + 5 在下对你的景仰犹如滔滔长江之水,连绵不绝.
zheng1112 + 5 膜拜大神!
xizaole + 2 论坛有你更精彩!
sxrcm + 5 论坛有你更精彩!
噶老汉 + 2 我来瀚思就为看你!
Roger + 20 + 20 在下对你的景仰犹如滔滔长江之水,连绵不绝.
+ 20 虽然看不懂,但感觉很厉害的样子。.
kkkkllll08 + 5 高手,这是高手!
zxyny1989 + 12 膜拜大神!
ciasdmxhxjjpd@c + 5
jjcs + 10 高手,这是高手!

查看全部评分

回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11435
金钱
8504
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-8-8 10:48:46 | 显示全部楼层

不定期补充更新

本帖最后由 XCray 于 2022-10-29 11:39 编辑

关于蓝牙,这是之前的玩法,这种方式(在用户空间运行rtk_hciattach)据说比较陈旧。现代化的方法是内核直接驱动(serdev),详见:https://bbs.hassbian.com/thread-18366-1-1.html
---------------------
重新整理安装步骤(该款盒子Armbian安装终极教程?你的盒子不一定直接就能用,一定要先自行用U盘测试dtb和uboot好不好使!):

0、ophub那里下载任意一个镜像,以及我提供的dtb和rtk_hciattach文件(或者自行编译);
  事实上同一版本针对不同soc的镜像绝大部分内容都是一样的,真正不一样的内容可能连1M都不到。

1、烧写U盘,把我上传的meson-g12a-u201.dtb(m401a用)或者e900v22c的修改版dtb(cm311用更合适)拷贝到BOOT分区的/dtb/amlogic/目录;

2、编辑uEnv.txt,指定上述dtb文件;
  如果是5.4或5.15内核,将u-boot-e900v22c.bin复制改名为u-boot.ext;(M401A可选&建议,不做这个操作的话可能启动后认不出网卡、内存只能认到一半;CM311 + 5.15内核不要这个u-boot.ext)

3、U盘启动、登录,建议将个人公钥存放至/root/.ssh/authorized_keys,以后登录免输密码;
  若习惯用另外的用户名登录(更稳妥),参照办理;

4、查看/lib/firmware/rtlbt目录,确保其中有rtl8761b_fw文件(到../rtl_bt/下面找那个带.bin后缀的,拷过来改名,或者链接也行)、有正确的经测试可用的rtl8761b_config文件;   将rtk_hciattach文件(我上传的)拷贝至/usr/bin目录,别忘了增加可执行权限;

5、编辑/etc/rc.local文件,加入一行:
  /usr/bin/rtk_hciattach -n -s 115200 ttyAML1 rtk_h5 &

6、cp /boot/u-boot-u200.bin /lib/u-boot/u200-u-boot.bin.sd.bin  然后编辑/etc/amlogic_model_database.conf,在304那一行后面增加一行:
     305:M401A:s905l3a:meson-g12a-u201.dtb:u-boot-e900v22c.bin:/lib/u-boot/u200-u-boot.bin.sd.bin:NA
  解释一下:把/boot目录下的u200的uboot用作主线uboot。
  - CM311-1a使用5.15内核,不要主线uboot、也不要过载uboot,可以这样写:   
306:CM311-1a:s905l3a:meson-g12a-s905l3a-e900v22c.dtb:NA:NA:NA
7、强烈建议:编辑/usr/sbin/armbian-update脚本,275行左右(注意版本不同行号有变化),就是“# Write bootloader”到“# Update ophub_release_file”之间全部注释掉,禁止升级内核时重新写u-boot和bootloader,这个写入毫无意义,并且有很大风险(uboot不对写入就变砖);或者用ophub推荐的方法:编辑/etc/ophub-release,把MAINLINE_UBOOT这一行改成:
MAINLINE_UBOOT=''
8、执行armbian-config安装蓝牙(Network下面)和Avahi(System下面);
建议:编辑/etc/apt/sourcelist,改用国内源;
       执行 apt update/upgrade/dist-upgrade/full-upgrade/autoremove升级清理;
       执行 armbian-tf;

9、可选但不建议:armbian-update x.x.x升级至自己喜欢的内核版本;如果没做第7步,强烈建议不要升级内核,这个脚本会直接覆盖emmc的bootloader区域,很容易变砖。
   cm311-1a更不要乱升级内核;

10、U盘重启后执行 systemctl status bluetooth,确认蓝牙工作正常、确认网络内存正常;一切正常后再尝试写入emmc。(注:U盘启动一切正常写入emmc也不见得正常,有的u-boot在U盘上没有任何问题但写入emmc就不行,只能测试确认,不行的话再次用U盘启动后删除emmc中的u-boot.emmc即可)。

11、写入emmc:armbian-install(最好先编辑一下),选305(第6步编辑的);如果是5.4或5.15内核,将u-boot-e900v22c.bin复制到emmc第一个分区并改名为u-boot.emmc
(M401A可选&建议,不做这个操作的话可能启动后认不出网卡、内存只能认到一半;CM311-1a 不要这个u-boot.emmc);
另外,cm311-1a强烈建议分区格式用btrfs。这款盒子比较邪性,选ext4的话长时间(>半个小时)关机断电后很可能无法启动,原因未知。——原因很可能是分区布局与原安卓不匹配。
不管选ext4还是btrfs,如果之前的安卓用的是“CM311-1a_安卓9-S905L3A没无线版沙发桌面线刷包”,都需要修改armbian-install脚本:找到s905l3a,把下面3行的数字改为100、1040、250(第一个100只能再大不能再小,第二个是boot分区大小,256-1040都可以,但三个数之和必须不能小于1390)。我测试了100/1040/250,没有问题。再保守的设置除了可利用空间更少一点,没有其它的坏处或好处。)

12、有人建议此时不要直接poweroff关机拔U盘,而是要先插着U盘reboot一次再poweroff关机拔U盘;怀疑是分区布局没弄对想出来的瞎招。
   系统就绪后,/分区可用空间13,407,224KiB(还没装HA);

13、安装hassio(或者docker+HA容器)以及其它所需软件
   选hassio的话,建议参考官方教程:https://github.com/home-assistant/supervised-installer/
   比各种乱七八糟的教程靠谱多了,并且官方会及时更新;只需要在第一步apt安装软件包时增加apparmor(armbian默认没装);

14、以后每次需要重启的话,先poweroff,然后必须断电重开。直接reboot的话蓝牙起不来。
后来找到解决方案了,安装gpiod,在rc.local里开头加上两行,作用是系统启动之后先复位一下蓝牙芯片:
  gpioset -s 1 -m time 0 82=0
  gpioset 0 82=1

15、如果偶尔出现重启后网不通(拿不到IP、静态IP也不行),插拔网线可临时解决。
    彻底解决的方法就是禁用自动协商、强制网卡工作中100M全双工模式。
    - 删除/etc/network/interfaces中关于eth0的所有设置
    - 修改/etc/NetworkManager/system-connections/下eth0对应的那个文件(具体名称不固定自己看):
[ethernet]
  duplex=full
  speed=100
如果有 auto-negotiate=true 的话删掉,其它内容不变,这个方法可以彻底解决所有机型开机网不通需拔插网线的问题。

部分机型不改NetworkManager设置也可以彻底解决,就是用ophub新定制的cm311.dtb(不一定适用于个别盒子,我手上的cm311测试没问题但m401a就用不成)

附:hassio安装步骤(根据官方教程整理):
- 安装基础包:
   apt-get install udisks2 libglib2.0-bin apparmor libmicrohttpd12 systemd-journal-remote -y (其它包已经有了,后面如提示缺少啥依赖用apt安装就行)
- 安装docker:
   curl -fsSL get.docker.com | sh
- 下载os-agent,看一下最新版:  Releases · home-assistant/os-agent (github.com)
  wget xxxxxxxxx(把最新版下载链接复制过来)
- 安装os-agent:
   dpkg -i os-agent_x.x.x_linux_aarch64.deb
- 可选:确认os-agent安装成功(极少有问题):
gdbus introspect --system --dest io.hass.os --object-path /io/hass/os
- 下载最新版hassio包并安装:
wget https://github.com/home-assistan ... tant-supervised.deb (这个链接直接就是最新版)
dpkg -i homeassistant-supervised.deb,选qemuarm-64

- 然后耐心等待,该干嘛干嘛去!大国域网内,有时候一晚上都不见得能装好。
实在着急的话,运行docker images看看都有啥镜像下载好了;或者docker ps看看哪些容器起来了;
直到那个ghcr.io/home-assistant/qemuarm-64-homeassistant:2022.xx.xx起来才算安装完成,landingpage那个都不算。
很多人不懂,以为自己很厉害、发现了一个天大的bug,到处发帖,真的很可笑。

- 添加蓝牙集成、小米系的一些蓝牙设备会自动发现;如果同一型号你有多个的话,需要自行区分,需要密钥的话就挨个试着输入自己已知的密钥吧。顺便提一句:ha 2022.8.1~4蓝牙组件有吊死的问题,导致传感器状态停止更新,8.5修复了。


supervised方式(旧称hassio)安装后,配置文件的本地路径为/usr/share/hassio,不过既然采用这种方式了,用samba share加载项提供远程访问更简单方便。

回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11435
金钱
8504
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-8-2 09:35:29 | 显示全部楼层

哪位有货源的话可以开个车了

本帖最后由 XCray 于 2022-8-5 11:09 编辑

这盒子要涨价可和我没关系哈,我和任何卖家都不认识,也是海鲜市场随便买了一个自己折腾着玩的,想买的自己找哈。
~~~~~~~~~~~
另外分享一件闹鬼的事情:不焊ttl线的时候没这事儿。焊上ttl线、接着ttl适配器安装调试好之后,如果拔掉ttl适配器、让ttl线悬空的话,这盒子就会闹鬼、不启动!中途再接上ttl发现全是乱七八糟不可读的信息。插着ttl适配器(不用接电脑)或者一块8266(不用加电)就可以正常启动。也就十来公分长的3根杜邦线,就能有这么大的影响!害得我反复折腾。。。

~~~~~~~~~关于变砖和救砖

一般不写入bootloader(很多文档里和主线u-boot的概念混淆)的话是不会变砖的,插个带好使系统的U盘就能起来。

如果写入的bootloader不对(和硬件不匹配?),就会导致变砖。

砖的情况或者说级别又有两种(取决于线刷固件的bootloader有没有被覆盖):

1. 可以按住背面开关插入A-A线开始刷机

2. 按键不好使,必须短接正面的短接点才能开始刷机

大致过程:
1. 电脑启动线刷工具、A-A线(就是俗称的公对公线)电脑端插入、打开镜像、确认“擦除Flash”和“擦除Bootloader”两项为选中状态,点“开始”
2. 盒子电路板不要接电源,按住背面按键、A-A线插入盒子、松开按键,这时如果是第一级别的砖的话电脑就会有发现新硬件的提示音、烧写进度自动开始走
3. 如果电脑上没任何动静,那就是第二级别的砖,拿镊子或螺丝刀短接那两个短接点,接上后快速松开就行(有短路放电的声音、灯会变暗),不要太长时间。如果不行就多试几次。
我手上的盒子短接点位置和之前网上找到的都不一样。如果你的板子长得样子不一样,自己到网上找图吧,或者多试几个长得差不多的焊点。
具体:【另一个教程】魔百盒M401A刷Armbian,及中级、终极救砖大法 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』


回复

使用道具 举报

39

主题

1256

帖子

5208

积分

论坛元老

Rank: 8Rank: 8

积分
5208
金钱
3947
HASS币
20
发表于 2022-8-2 09:50:49 | 显示全部楼层
感谢楼主无私奉献,折腾精神永存
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

37

主题

266

帖子

2129

积分

论坛DIY达人

积分
2129
金钱
1863
HASS币
20
发表于 2022-8-2 10:23:38 | 显示全部楼层
版主就是版主,还是超级版主
回复

使用道具 举报

80

主题

388

帖子

1672

积分

金牌会员

Rank: 6Rank: 6

积分
1672
金钱
1284
HASS币
0
发表于 2022-8-2 10:27:41 | 显示全部楼层
本帖最后由 ciasdmxhxjjpd@c 于 2022-8-2 10:39 编辑

盒子配置是什么?网卡千兆or百兆?存储8?跟n1比有什么优势?

请分享 bootloader.img dtb 两个文件,谢谢!
准备移植至 openwrt, kernel 5.4.170 应该不需要 uboot.img , uboot.img 是为了适配高内核版本的。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11435
金钱
8504
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2022-8-2 10:39:34 来自手机 | 显示全部楼层
本帖最后由 XCray 于 2022-8-10 07:56 编辑
ciasdmxhxjjpd@c 发表于 2022-8-2 10:27
盒子配置是什么?

请分享 bootloader.img dtb 两个文件,谢谢!

据说是s905l3a,2+16的存储,百兆网口、蓝牙、红外…

文件都在ophub的镜像里,仓库里应该也能翻到。

5.4和5.15的内核没有u-boot.ext/emmc也能启动,就是网卡认不出来、内存只能认出一半,有这个uboot就没问题了
~~~~~~~~~~~

放在这里,有缘者得之

换了一种方法编辑dts编译dtb,就是在github上修改u200.dts源码、然后编译内核的同时就会把dts都编译成dtb,这种方法显然更科学更合理。
meson-g12a-u204.zip (14.86 KB, 下载次数: 104)
源码:linux-5.18.y/meson-g12a-u200.dts at main · xcray/linux-5.18.y (github.com)
改动之处看这个:Update meson-g12a-u200.dts · xcray/linux-5.18.y@0556ad3 (github.com)
回复

使用道具 举报

80

主题

388

帖子

1672

积分

金牌会员

Rank: 6Rank: 6

积分
1672
金钱
1284
HASS币
0
发表于 2022-8-2 10:43:30 | 显示全部楼层
XCray 发表于 2022-8-2 10:39
据说是s905l3a,2+16的存储,百兆网口、蓝牙、红外…

文件都在ophub的镜像里,仓库里应该也能翻到。

好吧,百兆就算了,本来还想搞个软路由,看来arm软路由已经到头了,下一步准备直接一步到位,上j4125 x86了。省的折腾了。
回复

使用道具 举报

0

主题

561

帖子

2169

积分

金牌会员

Rank: 6Rank: 6

积分
2169
金钱
1608
HASS币
0
发表于 2022-8-2 11:51:13 | 显示全部楼层
牛逼呀。 准备入手一个
回复

使用道具 举报

62

主题

581

帖子

6041

积分

论坛元老

Rank: 8Rank: 8

积分
6041
金钱
5385
HASS币
240

教程狂人论坛风云人物

发表于 2022-8-2 11:52:39 | 显示全部楼层
这个车容易翻,问了一下生产这个盒子的厂家,这些打着魔百盒的定制机有前后六七个配置。。他也不记得了。
尝试过萝卜,我想你一定会忘记青瓜
回复

使用道具 举报

0

主题

3

帖子

32

积分

新手上路

Rank: 1

积分
32
金钱
29
HASS币
0
发表于 2022-8-2 11:53:22 | 显示全部楼层
终于有了个堪称完美的M401A盒子Armbian安装方案
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-19 15:21 , Processed in 0.065096 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表