I wonder if I’m the only one with this problem, or perhaps others who care about the same requirements, are just more competent on embedded linux than I am (which is not very hard, I admit).
I’m trying to get my M5 running with a maintained linux that can :
- keep itself updated with its package manager, and ideally follow major upgrades
- run docker
- UARTs support (I’ll be needing two among UART_EE_A on header gpio pins 8 & 10, UART_EE_B on pins 33 & 15, UART_AO_B on pins 12 & 37)
- I2C support (have a RTC and a Matrix orbital graphic display there)
- SPI support (for a RFM69 radio with mysensors, but later)
The images linked on the BPi wiki are ok for short term, I tested ubuntu server 20.04 and debian buster, however I noticed that both have the kernel frozen in 4.9. Although dist upgrade to 22 for ubuntu, and bullseye for debian, did work, this broke docker as the immediately noticeable result. And it is probably only the tip of the iceberg.
Using recent binaries and libs on top of an outdated kernel looks to me like asking for trouble.
And, even with docker, containers run on the same kernel so… I’ll run into trouble with the containerized software as well.
I also tried the armbian image from BPi, but first apt upgrade replaces the kernel and kicks all overlays out. So I’d have to freeze the kernel, so back with the maintenability issue, even if I’d have more time with a 6.x kernel. That, and only one UART works.
So unless I missed something, so far, official Armbian fits the bill for the maintainable part, but it seems to lack the I/O support part.
# cat /boot/armbianEnv.txt verbosity=1 console=both overlay_prefix=meson rootdev=UUID=b0ae2d42-5b5d-41cc-bf0c-3dad452a18d4 rootfstype=ext4 overlays=i2cA i2cB uartA uartC user_overlays= usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
Here are the provider overlay’s result at the debug console :
Applying kernel provided DT overlay meson-i2cA.dtbo failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND 343 bytes read in 2 ms (167 KiB/s) Applying kernel provided DT overlay meson-i2cB.dtbo failed on fdt_overlay_apply(): FDT_ERR_BADMAGIC base fdt does did not have a /__symbols__ node make sure you've compiled with -@ 238 bytes read in 2 ms (116.2 KiB/s) Applying kernel provided DT overlay meson-uartA.dtbo failed on fdt_overlay_apply(): FDT_ERR_BADMAGIC base fdt does did not have a /__symbols__ node make sure you've compiled with -@ 238 bytes read in 2 ms (116.2 KiB/s) Applying kernel provided DT overlay meson-uartC.dtbo failed on fdt_overlay_apply(): FDT_ERR_BADMAGIC base fdt does did not have a /__symbols__ node make sure you've compiled with -@ Error applying DT overlays, restoring original DT
This issue is mentioned in a post on the armbian forum, but so far no news.
So my question is : how difficult is it to create those overlays, and what is needed ? I keep looking at documentation about the subject, but so far it is totally esoteric to me and I don’t even know if it is possible on the stock armbian distribution, or if building a system from scratch is needed. Or perhaps someone already has dts working for armbian ?
Having to recompile them when the kernel gets updated would be a relatively little constraint. The uses of the UARTs will be monitored so if I break something with a kernel upgrade, I will know it quickly.
Thanks for reading.
I’ll keep the post updated if I find something, of course.