本帖最后由 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这一行改成:
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加载项提供远程访问更简单方便。