Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

AurealNix

Members
  • Joined

  • Last visited

  1. Hi all, Quick update for anyone following the Orange Pi 4A (Allwinner T527, A523 family / sun55iw3) mainline work: I've just pushed AurealNix v0.4, now on a vanilla Linux 6.18.44 kernel (up from 6.18.38). Three ready-to-flash images, all validated on real hardware: - CLI / headless — 197 MB. Working analog audio out of the box, HDMI console. - GNOME (Wayland) — 717 MB. Autologin, ArcMenu, hardware video decode. - Kubuntu 26.04 / KDE Plasma (Wayland) — 1.1 GB. New this release. Same disclaimer as always: I'm not a kernel developer by trade — a lot of this was done with AI coding agents and a lot of testing on my own board. It's shared in case it's useful and to get feedback, not as something perfect. Reviews of the patches are very welcome. What's new in v0.4 WireGuard + nftables/iptables NAT (requested by a user who wanted a small router/VPN box). All as modules. Both iptables-nft and iptables-legacy paths work. Kubuntu 26.04 (Plasma 6.6.6) as a third image — pure Wayland (KWin), and it's genuinely fast on this board: glmark2 880 at 800x600 (a touch above GNOME's 847), boots to the desktop in ~26 s. GTK apps run fine under Plasma too. 52 kernel patches since the last drop — mostly hardening: PCIe/NVMe resume fixes, clock/CCU robustness, a couple of memory-safety fixes in the video engine and the combo-PHY, plus DTS work (696 MHz GPU OPP for this SID bin, a voltage range for the little cluster so a future DSU driver can coordinate the shared rail). Images now ship fully up to date (dist-upgrade at build time), and the kernel has the lockup detectors enabled. One honest known issue Under sustained WireGuard saturation (~880 Mbps, `iperf3`) the board can hang and reboot. It's intermittent and so far *only* `iperf3` has reproduced it — moving the same data with `netcat` (22 GB) or copying real files over `scp` went through fine, and it's rock-solid at 100–300 Mbps. It's not thermal, not power, and not the network on its own (unencrypted iperf3 sustains 925 Mbps). With every lockup detector on and a serial console recording, the kernel dies without printing a thing. Still chasing the root cause — if anyone has seen this pattern with WireGuard on an ARM SoC, I'm all ears. Still on the list: hardware VPU is in (cedar + gst-omx, H.264/HEVC), NVMe with a real drive and eMMC boot are the next hardware items. Downloads & patches: https://github.com/ut-slayer/orangepi-4a-mainline/releases/tag/v0.4 The repo has the patch series, defconfig and board DTS if you'd rather build your own. If this saved you some time and you want to chuck a coffee my way, there's a Ko-fi link on the repo — entirely optional, the images are free and always will be. Thanks, and feedback very welcome.
  2. Massive thanks to everyone in here — this thread has basically become a live bring-up lab. Catching up with each of you: @bickns — the whole 256 GB written and verified with zero dmesg noise is a much harder test than I asked for; passing it clean means the PCIe link and the Innosilicon combo PHY are genuinely solid under sustained I/O, not just "it enumerates." Thank you. Two follow-ups on your requests: iproute2 is in now — I re-rolled the v0.3 CLI with just that one package added (ip / ss), same kernel and everything else; only the SHA-256 changed (updated in the release notes). rootfs on NVMe: don't burn your Tuesday on it just yet — it won't boot with the current image. In this kernel nvme is a module and the images have no initramfs, so pointing root= at the NVMe just gives an "unable to mount root fs" panic. I'm baking NVMe built-in (NVME=y) plus a short "move rootfs to the NVMe" recipe into the next release — I'd love to have you confirm it then. @JamesCL — two milestones from you: Booting v0.3 from the eMMC (root on mmcblk2p1, auto-resize working, and no SD enumerating in your dmesg) is something I genuinely can't test myself — my board has the eMMC socket but I don't have a module for it, so I run from SD. So this is your discovery, not mine, and it's why the FAQ still says nothing about eMMC install: I won't document steps I can't verify. Could you share the exact steps you used (and confirm no SD card was inserted on that boot)? Another tester's board stops early in the boot ROM stage doing the same thing, so your method is the missing piece — with it I'll write a proper "install to eMMC" guide, with your name on it. The f3 run on your Intel NVMe — 50 GB, 0 corrupted / 0 changed / 0 overwritten, ~276 MB/s read — is exactly the result I hoped for, and now it's confirmed on two different drives/vendors (bickns' KIOXIA and your Intel). NVMe as storage is closed with confidence. 🙌 @flintduval — on the U-Boot question: the released images boot with the stock Orange Pi BSP U-Boot (2018.07-orangepi, boot0/eGON SPL) — I reuse the vendor blob as-is in the first 20 MiB rather than building my own. If you get mainline U-Boot into SPI, I'd love to hear how far it boots. @ioncube — thanks for helping spread the word. 🙌 Roadmap, for everyone following: my plan is to refresh the kernel roughly every 5-10 stable point releases, starting with the 6.18.40/.41 bump. 6.18 is longterm, so the stable stream keeps landing fixes — and I've already spotted some genuinely interesting A523-specific improvements queued up there. So expect worthwhile updates over the coming weeks, not just version bumps. No firm dates, as always.
  3. @JamesCL One more thing, only if you're up for it (zero pressure, as always): I'd love to know how both drives hold up under a real data load — sustained writes, and whether anything corrupts. The clean tool for this is f3 (it writes known patterns and verifies them on read-back, so it catches even a single flipped bit). On the eMMC — keep it small. Your root fills the whole module (57 GB of 58), so there's little free space, and filling the live root filesystem completely would be a bad idea. A 5 GB run is plenty to prove integrity: sudo apt install f3 cd ~ && f3write --end-at=5 . # 5 × 1 GB files, watch the speed it reports f3read . # re-reads and verifies every bit sudo dmesg | grep -iE "mmc2|error|fail" rm ~/*.h2w # cleanup On the Intel NVMe — go big. That's where a long sustained run really tells us something. No need to format — f3 just writes files into whatever's mounted, so we can use the existing partition's free space (non-destructive): lsblk # find the NVMe partition (nvme0n1p1) sudo mount /dev/nvme0n1p1 /mnt # mount what's already there — no formatting df -h /mnt # how much free space? cd /mnt && sudo f3write --end-at=100 . && sudo f3read . # or drop --end-at to just fill the free space sudo dmesg | grep -iE "nvme|pcie|error|fail" sudo rm /mnt/*.h2w && cd ~ && sudo umount /mnt # cleanup (If there's less than 100 GB free, no problem — f3 fills whatever is available and stops; even 20-30 GB is a solid sustained run.) The --end-at numbers are just suggestions — check free space with df -h first and dial them down to whatever fits on each drive. A smaller run still proves integrity; it just exercises the drive for less time. The point is 0 corrupted sectors, not the size. What we're looking for: 0 corrupted sectors and a quiet dmesg on both. The speeds are a nice bonus — the eMMC at HS200 should read 100+ MB/s, and the NVMe is capped by the M.2 slot being PCIe 2.0 ×1, so ~350-400 MB/s is the by-design ceiling; if f3 reports that range with 0 corrupted, the link is running as well as this SoC allows. A clean eMMC run is the last box to tick before I write the "install to eMMC" guide around your method. @bickns you can try too.
  4. @flintduval You're absolutely right — thanks for the correction, and consider me happily corrected. The boot ROM on these SoCs also tries SPI NOR (and finally FEL over USB) after SD/eMMC, and this board does carry SPI flash — 16 MB as you say. So my "only microSD or eMMC" was incomplete. That would enable the classic setup Armbian uses on other boards: bootloader in SPI, kernel + rootfs on NVMe → a genuinely SD-free board. One heads-up on the second half, though: U-Boot would also need to learn PCIe/NVMe on this board to load the kernel from the SSD — writing U-Boot to SPI alone doesn't get there. It's not something I'm working on myself right now (my plate is full), but if you feel like experimenting with the SPI, it should be low-risk on this board: the ROM tries the SD slot first, so a bad SPI write is recoverable by just booting from SD. If you do try it, please share what you find here — I'd read that with great interest.
  5. Oh yes!! 🎉 We fixed a few bugs along the way, but honestly I didn't think it was fully ready yet — so "NVMe is working now!!" genuinely made my day. And glad it came down to just the /dev/ prefix in the end 😄 This one matters a lot: it's the first time the PCIe/NVMe bring-up has been confirmed with a real drive instead of an empty slot — and it even came up at Gen2, better than the Gen1 I saw with nothing plugged in. So the controller and the Innosilicon combo PHY are solid. I'll note it in the docs (and credit you + the KIOXIA). Next step, if you're keen: running the rootfs on the NVMe (still booting the boot chain from SD/eMMC) — a big jump over the microSD, and it sidesteps the fact that this board can't do UHS on SD anyway. It's not on by default yet because the NVMe driver is a module with no initramfs, so it isn't loaded when root gets mounted. No need for a special build right now, though: I'll just bake NVMe built into the kernel in the next release and add a short "move rootfs to NVMe" recipe then. A one-off build today would only make sense to fix an actual bug, and there isn't one — as storage it already works. And it shouldn't be a long wait: I want the next release to fold in the 6.18.40/.41 stable improvements — there's a fair few worth having, some of them A523-specific — and the NVMe-built-in change will ride along with that refresh.
  6. AurealNix v0.3 is out 🎉 — hardware video decode (H.264/H.265 in the browser) plus a GNOME desktop, on mainline 6.18.38: https://github.com/ut-slayer/orangepi-4a-mainline/releases/tag/v0.3 On booting from an SSD — short answer, you can't boot the board purely from an M.2 SSD. The Allwinner boot ROM only loads the bootloader from microSD or eMMC (it doesn't boot off PCIe), so the boot chain (U-Boot + kernel) has to live on SD or eMMC. If you flash the whole image onto the SSD with nothing on SD/eMMC, there's no bootloader for the ROM to pick up, so it won't start. Thanks @bickns, that's really useful! It fits what I'd expect: on this SoC the boot ROM only loads the bootloader from microSD or eMMC, never from PCIe — so booting purely from an M.2 SSD can't work, however it's flashed. The boot (U-Boot + kernel) always has to live on SD/eMMC. The good news: your fdisk -l shows the drive and the PCIe link are fine. So the realistic setup is boot from SD/eMMC, rootfs on the NVMe (that needs a small kernel tweak — NVMe built-in or an initramfs). Booting the kernel itself off the SSD would mean adding NVMe support to U-Boot, which is a bigger job for another day. If you get a chance, boot v0.3 from SD and run lsblk — I'd love to know the mainline 6.18 kernel sees your NVMe too. Cheers! 🙌
  7. Orange Pi 4A (Allwinner T527 / A523, sun55i-a523) — new mainline image coming in a few days Hi all, A quick heads-up for anyone following the Orange Pi 4A / Allwinner T527 (A523) mainline effort: a new image, v0.3, is coming in the next few days. It's based on mainline Linux 6.18 (longterm) and it's a decent step up from v0.2, so I wanted to give some advance notice. What's new in v0.3: Hardware video decode (VPU): H.264/H.265 decoded on the Cedar VPU — smooth video in the bundled web browser (WebKitGTK), using Allwinner's own cedar + libcedarc stack. GNOME on Wayland (replaces Plasma), accelerated by Panfrost (Mali-G57). The X11 session is intentionally not used — Wayland is much faster on this GPU for both desktop and video. Low-RAM fix: compressed in-RAM swap (zram) is on by default, so the 2 GB board stays responsive under a browser + video instead of freezing. Robustness: the VPU driver now survives a client crashing mid-decode without wedging the board, plus a round of code-audit fixes across the clock, PCIe, DRM, VPU and audio-codec drivers. Everything from before still works: display/KMS, GPU, HDMI + analog audio (headphones with jack detection), Ethernet, WiFi, USB, PCIe/NVMe (not yet tested with a real drive), thermal and cpufreq/DVFS. How it's built: on top of mainline Linux and public community work (linux-sunxi, Armbian and others — credited in the tree), with Allwinner's public documentation and vendor BSP as the hardware reference, plus the project's own patches, each one validated on real hardware. Some of this has been posted to the linux-sunxi / upstream lists and picked up by maintainers. This is a spare-time hobby project, shared as-is (async, no live support). Sources, patches and images are on GitHub — I'll post here again when the release is up: GitHub: https://github.com/ut-slayer/orangepi-4a-mainline Testers and feedback are very welcome. Thanks!
  8. Small update: the patch series on GitHub is now up to date with what I actually run on the board. It went from 106 to 129 patches, all on vanilla 6.18.38. https://github.com/ut-slayer/orangepi-4a-mainline What's new since the last drop: The GPU was running at the wrong frequencies (and now it isn't). This is the interesting one. The A523 GPU clock is not a linear divider — it's a cycle-masking one: rate = source * (16 - M) / 16. Everyone modelled it as linear, including the vendor BSP. The practical effect: what the kernel labelled "150/200/300/400/600 MHz" was really running at 487/648/560/750/599 MHz. So the GPU was faster than advertised, and thermal throttling to "400 MHz" actually raised the clock to 750. To be clear: nothing was ever unsafe. It ran like that for weeks, stable, at 920 mV, with temperatures in the normal range — the chip simply tolerates it. But the labels were wrong, throttling did the opposite of what it should, and you cannot tune power/performance on numbers that aren't real. Now the five operating points measure 149/199/300/399/597 MHz with the Mali cycle counter, from the intended parents. Credit where it's due: Chen-Yu Tsai spotted the fractional divider while reviewing a patch I sent upstream. That review also produced a Reviewed-by for the generic clk fix, which is now on the lists. PCIe / M.2. The controller and the Innosilicon combo PHY now probe, link training runs and the root port enumerates. I want to be honest about the limit of that statement: I don't own an NVMe drive, so I have only tested it with an empty slot. The bus comes up and behaves; whether a real drive negotiates, enumerates and performs is something I genuinely cannot confirm. If anyone here has an M.2 NVMe in this board, that report would be very welcome — including a failure report, which is just as useful. (Kernel side comes from Marvin Wewer's Armbian series, authorship preserved, plus a 1-lane fix from the BSP and the device-tree wiring for this board.) Hardware video decode works for H.264/H.265. With the cedar-ve shim in this tree plus the Allwinner userspace (libcedarc + gstreamer1.0-omx), YouTube plays smoothly in a WebKit browser (I use Cog). VP8/VP9 do not — that engine never raises its interrupt — so those codecs are capped and YouTube negotiates H.264 instead. Note the userspace half is not in the patch series and not in the published images yet. Also in: a display fix for a frame that could get stuck after direct-scanout transitions, and JOYDEV/UINPUT enabled (analog sticks were dead in software that opens /dev/input/jsN first). Images: the published v0.2 images are now well behind this. Refreshed Debian images (Desktop and CLI) built on this kernel are in preparation. No date promised — they go up when they're tested. Thanks again to everyone testing and reporting here; the eMMC and 4 GB confirmations came from this thread, and the PCIe work started because someone took the trouble to diagnose why NVMe didn't show up.
  9. @Nick_Sl @bickns — the headless build is up (146 MB, pure Debian 13, mainline 6.18.38, SSH from first boot): https://github.com/ut-slayer/orangepi-4a-mainline/releases/tag/v0.2 If either of you gives it a spin, I'd love a short report — what works, what doesn't. No rush and no obligation; even "booted, nothing broke" is useful. @Nick_Sl — you offered to test, so I'm taking you up on it 🙂. Most useful gaps right now: NVMe / M.2 SSD, suspend, and the GPIO header (eMMC and the 4 GB variant were just confirmed by another tester). @bickns — if the board ever leaves the drawer: the analog codec driver works, but mic capture is the one bit I couldn't bench-test (no onboard mic here). With your outdoor-audio project, you'd be the only one who could close that gap. Zero pressure either way. And if you don't mind, I'll add you to the thanks in the repo — testers get named there (JamesCL is already in for confirming the eMMC and the 4 GB variant). Also, early days and no promises: the VPU (hardware video decode) is something I've now started digging into. Thanks both.
  10. @JamesCL This is a fantastic report — thank you, James. 🙏 You've actually confirmed two things I couldn't test on my own hardware… 1) eMMC works (detection + HS200 + read/write)… booting from eMMC is a separate step I haven't wired up yet. 2) 4GB variant confirmed (free -m shows 3830 MB)… The two warnings — you read it right, secure SRAM for OP-TEE/BL31, harmless, cosmetic DTS cleanup I'll tidy up. …that's the most useful kind of report there is. Thanks again! 🙌
  11. @L. Jorge Soares Thanks a lot for testing both — genuinely, this is the most useful thing anyone can do for the project. 🙏 CLI: great to hear it boots and HDMI works on your setup — that's the first confirmation from hardware other than mine, so it means a lot. If you get time, I'd love to hear how it holds up (networking, USB, and the 4 GB variant if that's what you have). Root password: that's by design, not a bug. Root login is locked on purpose — the image ships with a default user / user account and SSH enabled, so an open root account would be a security hole. Use the user account with sudo: root shell: sudo -i (or sudo su) to set a root password if you really want one: sudo passwd root KDE image + Etcher error: let's pin it down. Full disclosure — I flash with dd myself, so I haven't actually run these images through BalenaEtcher; I'll test the Etcher path on my end to try to reproduce it. In the meantime, two quick checks: Verify the download — a truncated/corrupt download is the #1 cause of Etcher errors. The desktop image sha256 is: 63b0019423d2a320aaa5fe58df97db68823b353a30510ffa863fec475904e0ba Check yours: sha256sum on Linux/Mac, or certutil -hashfile <file> SHA256 on Windows. If it doesn't match, re-download. And thanks for the heads up — I'll also double-check on my end that the file on the release didn't get corrupted during upload. Card size — the desktop image is ~5.3 GB when written (bigger than the CLI one), so it needs an 8 GB or larger card. A smaller/oddly-sized card makes Etcher fail. If the checksum matches and the card is 8 GB+ but it still errors, it's most likely Etcher choking on the .xz — try Raspberry Pi Imager (Use custom → pick the .img.xz), Rufus (it writes in DD Image mode and takes the .xz directly), or on Linux just dd: xz -dc aurealnix-opi4a-debian13-v0.2.img.xz | sudo dd of=/dev/sdX bs=4M status=progress And if you can, paste the exact Etcher error text — that tells me straight away whether it's a size, decompression, or validation issue. Thanks again for digging in! 🙌
  12. @Nick_Sl @bickns — no more waiting, the headless build is up. 🙂 It's a CLI / headless image for the Orange Pi 4A: pure Debian 13 (a debootstrap minbase — bare on purpose, add the rest with apt), the full mainline 6.18.38 kernel, SSH on from first boot. 146 MB compressed, idles at ~180 MB of RAM. Same kernel as the desktop image (HDMI, WiFi/BT, gigabit ethernet, USB, thermal + CPU/GPU frequency scaling) — just no desktop. It's the ...-cli-v0.2.img.xz asset here (the desktop image is on the same page): https://github.com/ut-slayer/orangepi-4a-mainline/releases/tag/v0.2 Whoever gives it a spin: I'd really appreciate the feedback — especially if something doesn't work quite right. A lot of this only shakes out once other people run it on their own boards, so bug reports are genuinely welcome (here or on the GitHub issues). @bickns — "no special requests, apt adds the rest later" was exactly the design goal, so we're on the same page: it's a minimal base and nothing more. If you're still doing your own build for the Armbian-stable PR, the tip stands — for a headless target you can drop the whole display/GPU series (drm/sun4i + iommu + clk), which is where most of your ~20 rejects were coming from; you only need the dts + the ethernet/wifi/usb/thermal/cpufreq bits. One thing that's right up your alley given your outdoor-audio project: the A523 analog codec now has a working driver (ported from the BSP). Headphone output and jack-detect are validated on hardware; mic capture is wired in the driver but I couldn't bench-test it (no onboard mic here). You'd be the ideal person to confirm whether capture works — if it does, that's the last gap on this codec closed. @Nick_Sl — you said you could wait; turns out you don't have to. 🙂 If you're still up for testing, I'd genuinely love your results — flash it, SSH in, and tell me what breaks (especially on the 4 GB variant if that's what you have). Glad the board's out of the eBay pile.
  13. @Nick_Sl @bickns — CLI/headless image is coming. It's the same debootstrap base and the same kernel, just without Plasma/Mesa/Discover, so it's mostly "subtracting", not extra work — a small ~300–500 MB image. Nick, I'll ping you when there's something to test. 🙂 Before I build it: is there anything you'd want baked in by default? Thinking headless/server use — things like NetworkManager vs systemd-networkd, docker/podman, python3, build tools, an ssh-only footprint, zram on by default, etc. If you tell me your use case I'll pick sane defaults rather than guessing. Good news on audio in the meantime: both HDMI and the analog 3.5 mm jack are working now (with jack-detect hotplug), so that's no longer a blocker for either image.
  14. you fancy a fun distraction rather than a frustrating one: I'm also putting together a retro-gaming image for this SoC (HDMI to the TV + a gamepad = a neat little emulation box, and it's the same chip as some of the new handhelds). Early days, but it's in the works — one more reason to keep the board out of the eBay pile. 🙂
  15. Hi @bickns, thanks a lot for giving it a go! 🙏 The reason dropping them into userpatches/kernel/archive/sunxi-6.18 fails is that these aren't Armbian-style patches — they're a git format-patch series on top of plain vanilla 6.18.38 (base commit 1db74811b), meant to be applied to a clean tree in order. Armbian applies its own sunxi patch set first, so they conflict against that. I didn't use the Armbian build system at all — I built mainline from scratch: Clone/checkout vanilla 6.18.38, then git am /path/to/patches/0*.patch (all 106, in order). Copy opi4a_blindboot_defconfig into arch/arm64/configs/ and make opi4a_blindboot_defconfig. make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) Image dtbs modules Wrap it for the BSP U-Boot (this is the important bit — it only boots a legacy uImage): mkimage -A arm -O linux -T kernel -C none -a 0x41000000 -e 0x41000000 -d arch/arm64/boot/Image uImage Two things to know: A handful of the patches are BSP-U-Boot workarounds (static /memory, display FDT stubs, etc.) — only needed to boot under the proprietary BSP U-Boot. If you're on mainline U-Boot / a normal Armbian boot flow, you'd skip those. The README groups the patches by destination so you can see which is which. If you want to integrate into Armbian proper, the cleaner path is probably the board DTS + defconfig + the generic sunxi fixes as individual patches, rather than the whole display series in one go (that one's a big port of the minimyth2/Suess work and would need adapting to Armbian's tree). Happy to help however's useful — glad it's of interest!

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.