I just bought a Turris Omnia as an upgrade from Linksys WRT1900AC v1.
I build my own OpenWrt from latest sources and I have lots of questions about my new Turris Omnia. I hope to meet many enthusiasts and tinkerers here to discuss improvements to this router.
Before I bought Omnia, I briefly tried a WRT1900ACS which is almost indentical, but the mwlwifi was unusable and the wifi is not on separate cards like WRT1900AC v1, so I sold it. I still have my WRT1900ACS branch and I tried to use that as a base for Omnia build.
I found out that there are still some significant differences, not all for the better. I’ll use this topic to discuss all of them instead of opening topics for each one. I will keep them numbered.
1) Dual boot / dual firmware
As an enthusiast OpenWrt user, I like to test lots of modifications to OpenWrt. Inevitably, some of them are bad. I really liked the dual firmware layout of WRT1900-series. It was nice to have a known stable firmware to go back to, when I make a mess with a new kernel and the rest of the family want internet access.
WRT1900 splits the large mtd into partitions using dts and ubi volumes, while Turris Omnia uses a very small mtd for uboot and a large emmc for kernel and rootfs. Is it possible to configure OpenWrt to create the dual firmware layout on emmc ordinary partitions? I looked around in both menuconfig and sources, but I can’t see the option.
As an alternative, I could enlarge the boot partition (mmcblk0p1) to hold two kernels (testing kernel and backup kernel), manually partition and format the second partition (mmcblk0p2) and create 2 btrfs volumes (testing rootfs and backup rootfs), then I could edit uboot scripts to load one kernel or the other as needed, each with it’s btrfs subvolume in rootflags. With this configuration I could update OpenWrt by manually copying rootfs files into the btrfs subvolume and the kernel into boot partition.
2) Is TurrisOS better?
I briefly looked at TurrisOS at gitlab. I noticed that it’s basically a wrapper around OpenWrt buildroot with a new package feed. I was expecting a fork instead, with patches, lots and lots of patches. I found the patches, but I’m confused how they apply. For example, this patch does not match the source file from OpenWrt main branch since 2023-06-01.
On the other hand, I see something about omnia-mcu ability to power off the system. This is not in OpenWrt main branch. The front GPIO button is also not in OpenWrt and not in mainline kernel.
How should I combine the best from each? Can I just take patch files from TurrisOS patches/openwrt/, put them in the OpenWrt target/linux/mvebu/patches-6.1/ and make target/linux/prepare to test them?
3) Missing drivers
a) I see a ATSHA204A devicetree node added 2 years ago, in kernel 5.19, but it’s not in TurrisOS 6.5, not even as a backport. Is it actually present on the board? How does it compare to mvebu-cesa?
b) turris-omnia-ctrl devicetree node needs some out-of-tree kernel driver, which is in /patches/openwrt/a-new-kernel-5.15/0019-mvebu-patches-5.15-Backport-Turris-Omnia-MCU-support.patch. Is this compatible with kernel 6.1? Why wasn’t this added to upstream OpenWrt while it was still using 5.15 kernel?
c) About the front button (again). I see it defined as gpio-keys in the devicetree, but it acts on led intensity even when kernel not loaded. That means it is not a gpio button. I’m confused. What’s needed for this button to work in OpenWrt for custom actions? Just the devicetree node, or is there something else?
d) SPDIF audio sound card was added in the linux devicetree 2 years ago (6.1rc1). Did anyone try it? Does it actually work?
4) Hardware mods and addons
Did anyone try to add a SD-card reader/module to gpio header? It seems to have all the needed pins.
Thanks for reading.