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.

RSS Bot

Bot
  • Joined

  • Last visited

    Never

Everything posted by RSS Bot

  1. Welcome to the latest Armbian newsletter! This development cycle brings a massive wave of progress across the entire ecosystem, packed with broad new board enablement, major platform maturation, and essential tooling upgrades. Highlights include: Extensive Board Enablement: Expanding support across multiple SoC families—including the EasePi R1, Pine64 Quartz64 Zero, ArmSoM CM7s IO board, Boardcon EM3588, Skysi X5 laptop, Banana Pi BPI-M4, Qualcomm Lenovo Legion Y700 Gen 4, NVIDIA Jetson Nano, Altera Agilex 5 SoCDK, Banana Pi R3 Mini, Firefly AIBOX-K3, Radxa Rock 2A/2F, and Anbernic handhelds like the RG Rotate. Bootloader & Kernel Modernization: A sweeping refresh moving numerous platforms to U-Boot v2026.10, TF-A lts-v2.14.11, and updated DDR blobs, alongside mainline kernel progression advancing to 7.3 across rockchip64, meson64, sunxi, and uefi targets. Deep Rockchip & Vendor Refinements: Major kernel, media, and wireless achievements, including 6 Gbps SATA on RK3588, RK3576 Panfrost GPU overlays, Amlogic VDEC fixes, and a consolidated rk35xx-vendor-next kernel branch. Tooling & Infrastructure Overhaul: Significant upgrades to the Armbian Imager (featuring Settings page, board-scoped profiles, and ext4 writer hardening), alongside refactored armbian-install, armbianmonitor, singlemode repository management with Acquire-By-Hash, and improved CI resilience. SPONSORED Join us in making open source better! Every donation helps Armbian improve security, performance, and reliability — so everyone can enjoy a solid foundation for their devices. Github HighlightsThis cycle is defined by three themes: broad new board enablement, a coordinated U-Boot v2026.10 refresh across Rockchip and Allwinner platforms, and substantial Rockchip kernel, media, and wireless work. Board support expanded on multiple SoC families, including the EasePi R1 and Pine64 Quartz64 Zero on RK3568, the ArmSoMYour whole smart home, on a new board, before the coffee gets coldWe moved our Home Assistant to a bigger board, and nothing needed re-pairing Our house runs on Armbian, and it has for years. Its Home Assistant setup started on an Allwinner H5 NanoPi K1 Plus. In 2025, it moved to the Rockchip NanoPi R3S LTS as soon as thatArmbian Imager 2.5 is outArmbian Imager 2.5 sets up your board from a few simple questions, double-checks your storage before it writes, and now speaks Greek and Serbian.View the full article
  2. We moved our Home Assistant to a bigger board, and nothing needed re-pairingOur house runs on Armbian, and it has for years. Its Home Assistant setup started on an Allwinner H5 NanoPi K1 Plus. In 2025, it moved to the Rockchip NanoPi R3S LTS as soon as that board came out. This month it moved again, to the NanoPi M6. It was a live install: a Z-Wave mesh, a Zigbee network, a pile of automations and years of history. We expected at least one evening of re-pairing sensors. It took about half an hour, and every device came back on its own. Before: NanoPi R3S LTS After: NanoPi M6 V2 SoC Rockchip RK3566 Rockchip RK3588S CPU 4 × Cortex-A55 4 × Cortex-A76 + 4 × Cortex-A55 RAM 2 GB 8 GB Storage 32 GB eMMC 64 GB eMMC, NVMe slot free Both on Armbian trixie with Home Assistant Supervised. The R3S served us well, but the M6 is a big step up. Its Cortex-A76 cores and four times the memory mean dashboards open faster, history loads quicker, and there’s room for more apps. Everything runs from the 64 GB on-board eMMC for now, so the NVMe slot is free for later. The whole move, by the numbers: one backup file, one armbian-config entry, zero re-paired devices, about 30 minutes end to end. Why it’s this easyTwo things do the heavy lifting. First, a Home Assistant backup holds the whole house: configuration, dashboards, automations, history and installed apps. Armbian runs the same Supervised stack on every board it supports, so the backup doesn’t care what hardware it’s restored onto. Second, your Z-Wave and Zigbee networks live on the USB sticks, not on the computer. Move the sticks and the devices follow. The move, step by step1. Take a backup on the old device Go to Settings → System → Backups, create a full backup, and download the .tar file to your computer. 2. Put Armbian on the new board Download the Armbian Debian Trixie minimal image for your board from armbian.com, write it to an SD card or eMMC, and boot. Home Assistant Supervised on Armbian only works on Debian Trixie, so don’t pick Ubuntu or another Debian release. 3. Give it a fixed IP address Your phones, dashboards and automations expect Home Assistant at an address that doesn’t change. Set a static IP in armbian-config, as described in Network settings. You can also edit Netplan by hand using the networking guide, or set a DHCP reservation on your router. If you want everything to keep working as before, reuse the old device’s address. Just switch the old device off first so the two don’t fight over it. 4. Install Home Assistant with armbian-config Open armbian-config → Software → Home Automation and pick Home Assistant. Or do it in one line: armbian-config --cmd HAS001The installer sets up Docker, the Supervisor and the OS agent, then waits until the web interface responds. Reboot when it asks. 5. Plug in your USB radios Move the Z-Wave and Zigbee sticks from the old device to the new one before you restore. That way the apps find their hardware the first time they start. 6. Upload the backup Open http://<board-ip>:8123. On the welcome screen, choose to restore from a backup and upload your .tar file. The restore runs in the background. When Home Assistant restarts, reload the page and log in with your usual account. That’s it. Your house is back. The radios just workHome Assistant finds USB sticks by their stable names under /dev/serial/by-id/. Those names come from the stick itself, not from the board, so they’re identical on the new machine. In our move: Aeotec Z-Stick Gen5: Z-Wave JS connected, and every node reported ready.Sonoff Zigbee 3.0 Dongle Plus: ZHA picked up the network with every device in place.Forgot to plug a stick in first? No harm done. Plug it in now and restore just that app from the same backup: ha backups restore <backup-slug> --app core_zwave_jsA couple of finishing touchesTake a fresh backup on the new board once everything is running, so your next move starts from here.Check your custom integrations. If you use HACS or other custom components, make sure they loaded, and reinstall any that are missing.A note on support: the Supervised installation method is maintained by the Armbian team and isn’t officially supported by the Home Assistant project. Hardware questions go to the Armbian forum. Application issues you can also reproduce on the official Home Assistant OS go to the Home Assistant community. View the full article
  3. The easiest way to get Armbian onto your board just got easier. In Armbian Imager 2.5, you set up a board by answering a few simple questions, and Imager double-checks your storage right before it writes. Settings now has a page of its own, and the app speaks Greek and Serbian too. Armbian Imager 2.5 in four minutes: the real app, from start to finish. Set up your board with a few answersA first-boot profile writes your network, user account, SSH keys, language and time zone onto the card, so the board is ready to use the moment it boots. In 2.5, New profile walks you through setup one question at a time: how the board connects, who logs in, which language and time zone to use, and how you sign in. Skip whatever you don’t need. Your answers build up in a column next to the questions, so you always see what the profile will do. Imager also catches the mistakes that are hardest to track down on a board with no screen. If you type a static address that can’t work, like your subnet’s broadcast address or a gateway outside the subnet, Imager tells you while you type. Add SSH keys from GitHub, GitLab or a link, and Imager fetches them and shows you which keys it found. A typo in a user name shows up right there, not after your first failed login. Profiles also fit more naturally into the rest of the app: Use one profile for every board, or only for the boards you pick.Choose a profile from a menu just before you write. Icons show Wi-Fi or cable, user, time zone and keys at a glance.Use profiles with Armbian images you build yourself.A board with no screen and no network no longer gets stuck at first login asking “Connect via wireless?”. The profile answers for it.Pick any Wi-Fi country that Linux’s wireless regulatory database accepts.One last check before anything is erasedJust before it writes, Imager checks the target one more time. It only writes to a writable disk it found itself, at the exact size you confirmed. Swapping cards while the password prompt is open can’t send the image to the wrong one. If the image is too big for the storage, or the file is empty, Imager stops before erasing anything. And if a device can’t be used, Imager tells you why, in your language. You can now cancel at any stage, even while the image is still being prepared. When the write finishes, the last screen tells you what you wrote to: an SD card, a USB drive or a disk. For Qualcomm boards in EDL mode, Imager matches the board you selected by its serial number, so it writes to that board and no other. A nicer app all roundSettings get a page of their own: The gear icon now opens a full page with five sections: General, Writing, First-boot profiles, Downloads and storage, and About and support. Each section has a small animation that reacts to its settings. The General scene changes with your theme, and the Downloads scene shows when you’re offline. Change the theme or reduce motion, and you see the result before you save. More room on the home screen: The page numbers under the manufacturer and board grids are now a small glass pager. It floats over the cards and opens when you point at it, so the grid gets the whole window. Board names are no longer cut short, and vendor logos keep their colors. Twenty languages: Imager now speaks Greek and Serbian, which brings it to twenty languages. The first time you open it, it starts in your system’s language. Help when something goes wrong: If Armbian’s servers don’t respond, Imager says so and gives you a Retry button. Upload Logs sends this session’s log to paste.armbian.com and gives you a link to add to your bug report, plus a QR code if you’d rather grab it on your phone. If a Settings section can’t load, it tells you. Checksum, verification and decompression errors now come with a plain-language explanation. Updates in the background: When a new version is out, you’ll see it in the sidebar and under About and support in Settings. Click Install and the update downloads in the background while you keep working. Click Restart Now when you’re ready. If a write is in progress, the restart waits until it’s done. Under the hoodDebug builds include a scenarios panel that simulates SD cards, USB drives, EDL boards, write errors and network failures. That’s how we filmed the video above: every shot is the real app, and not a single real card was erased. Every release build is checked to make sure none of that code ships. CI now also audits dependencies and checks the Windows code. Thank youSpecial thanks to Superkali, the main developer behind this application, for doing the heavy lifting and driving most of the improvements. Thanks also to Emmanouil C. for reviewing the Greek translation, Aleksandar D. for reviewing the Serbian translation, Igor P. for improving static IP checks and fixing the wireless prompt, Cyrus Ho for adding missing Wi-Fi country codes, and Xavier S. for displaying the device type on the final screen. Get itArmbian Imager 2.5 is out now for Mac, Linux and Windows, free and open source. Already running 2.0 or later? Imager will offer you the update. Download Armbian Imager 2.5 View the full article
  4. This cycle is defined by three themes: broad new board enablement, a coordinated U-Boot v2026.10 refresh across Rockchip and Allwinner platforms, and substantial Rockchip kernel, media, and wireless work. Board support expanded on multiple SoC families, including the EasePi R1 and Pine64 Quartz64 Zero on RK3568, the ArmSoM CM7s IO board and Boardcon EM3588 on RK3588, Forlinx OK3572-C, and the Skysi X5 laptop. The Banana Pi BPI-M4 (RTD1395) and Cubieboard 4 returned with full enablement including A80 cpufreq, thermal, HDMI, and audio. Qualcomm support advanced with the Lenovo Legion Y700 Gen 4 on an SM8750 edge kernel bumped to 7.2.11, while the NVIDIA Jetson Nano joined the uefi-arm64-dt target. A sweeping bootloader refresh moved numerous platforms to U-Boot v2026.10, TF-A lts-v2.14.11, and refreshed DDR blobs, covering Radxa RK3399, RockPro64, Rock Pi 4C, NanoPi M4, Orange Pi 4 variants, Tinker Board 2, Mixtile Blade3 and Edge2, and the Recomputer RK3588 devkit. GRUB images gained a separate ext2/ext4 /boot partition and now honour UEFISIZE, and the build framework switched to the new git.u-boot-project.org upstream host. On the kernel side, the RK3588 gained working 6 Gbps SoC SATA and CAN node support, while HDMI received a 31.5 MHz clock for RK356x and a 16-bit audio fix for RK3576. Rockchip wireless work includes WPA3/SAE handling in bcmdhd and backported rtw88 support for rtl8723bs. Amlogic saw multiple meson64 VDEC fixes for H.264, MPEG-1/2, and GStreamer/FFmpeg start failures, and Sophgo SG2000 gained H.264 encoder and JPEG unit support in coda. #Armbian #EmbeddedLinux #Rockchip #UBoot #SBC Changesadd board EasePi-R1 (RK3568). by @kunxiang1 in armbian/build#11077add board image for Lenovo Legion Y700 Gen4. by @retro98boy in armbian/armbian.github.io#511Add board image: dshanpi-a1-cm5-waveshare-cm5-to-pi5-adapter. by @sckiyo in armbian/armbian.github.io#519Add board: Pine64 Quartz64 Zero. by @pablo-cabrera in armbian/build#11028Add Boardcon EM3588 board image. by @boardcon-arm in armbian/armbian.github.io#518Add Forlinx OK3572-C board support. by @lch08 in armbian/linux-rockchip#594add linux-source-package extension. by @EvilOlaf in armbian/build#10777add rtw8723b_fw.bin for upcoming rtw88 driver support for rtl8723bs. by @paolosabatino in armbian/firmware#153add support for ArmSom CM7s IO board. by @amazingfate in armbian/build#11061arm64: dts: rockchip: add ArmSoM CM7s IO board support. by @amazingfate in armbian/linux-rockchip#595arm64: dts: rockchip: add Boardcon EM3588 device tree. by @boardcon-arm in armbian/linux-rockchip#600arm64: dts: rockchip: add Skysi X5 laptop. by @bingo1991 in armbian/linux-rockchip#596arm64: dts: rockchip: rework the DshanPi R1 and R1+ boards. by @sckiyo in armbian/linux-rockchip#572armbian-audio-config: return instead of exit when sourced. by @puding-svk in armbian/build#11117ASoC: rockchip: support sleepable headphone detect GPIO. by @boardcon-arm in armbian/linux-rockchip#599bananapim4: add the Banana Pi BPI-M4 (RTD1395). by @igorpecovnik in armbian/build#11071Bluetooth: hci_aic: Add module ready check to setup. by @wukibaka in armbian/linux-rockchip#555board-images: add ArmSoM CM7s-IO board. by @amazingfate in armbian/armbian.github.io#514board-images: add Banana Pi BPI-M4. by @igorpecovnik in armbian/armbian.github.io#515board-images: add Cubieboard 4. by @igorpecovnik in armbian/armbian.github.io#512board-images: add EasePi R1 board image. by @kunxiang1 in armbian/armbian.github.io#517board-instructions: add Orange Pi 4. by @igorpecovnik in armbian/armbian.github.io#513board: mixtile-blade3: update mainline DTS for rockchip64. by @evtest-hash in armbian/build#11052board: mixtile-core3588e: update edge kernel support. by @evtest-hash in armbian/build#11114boards: remove duplicate vendor names from BOARD_NAME. by @stevenjoezhang in armbian/build#10932brcm: add ROCK Pi 4C and Orange Pi 4 links for BCM43456. by @igorpecovnik in armbian/firmware#152brcm: link AP6330 firmware for the Cubieboard 4. by @igorpecovnik in armbian/firmware#150bsp-cli: version the package on the packages/dirs its hooks install from. by @lukaszsobala in armbian/build#10327bsp: aic8800: skip bluetooth attach without the wireless module. by @sckiyo in armbian/build#11057bsp: create the hardware groups and add new users to them. by @xsalaices in armbian/build#11015bsp: remove armbian-ssh-title.sh. by @p-durlej in armbian/build#10960build-framework: document firmware source and branch switches. by @igorpecovnik in armbian/documentation#1672build-framework: document GITHUB_TOKEN. by @igorpecovnik in armbian/documentation#1671build-framework: fix UBOOT_MIRROR default and add denx. by @igorpecovnik in armbian/documentation#1673build-framework: separate /boot on GRUB images. by @igorpecovnik in armbian/documentation#1683bump SM8750 edge kernel to 7.2.11 and initial support for the Lenovo Legion Y700 Gen 4. by @retro98boy in armbian/build#11044chore(deps): bump rustls and tokio to clear cargo audit. by @SuperKali in armbian/imager#227chore(deps): resolve Dependabot alerts published 2026-10-21. by @SuperKali in armbian/website#61chore(deps): resolve open Dependabot alerts. by @SuperKali in armbian/website#59clk: rockchip: rk3328: fix armclk parent/mux mismatch. by @xsalaices in armbian/linux-rockchip#568complete-artifact-matrix: set image chunk outputs in 4 jobs. by @igorpecovnik in armbian/ci#95Cubieboard 4: U-Boot v2026.10, A80 cpufreq, thermal, HDMI and audio. by @igorpecovnik in armbian/build#11047d1: kernel: build mainline v7.3 with HDMI. by @khaliforce in armbian/build#11050desktops: bianbu: make archive.spacemit.com a thin overlay (fix riscv64 rootfs build). by @igorpecovnik in armbian/configng#1052drm/rockchip: dw_hdmi: skip PHY debugfs without a PHY. by @lukaszsobala in armbian/linux-rockchip#585drm/rockchip: more HDMI/DP outputs for Mecotronic R58-HD (DT-gated) — ported to rkr7.2. by @igorpecovnik in armbian/linux-rockchip#545drm: dw-hdmi: guard optional CEC adapter in HPD worker. by @novadusk in armbian/linux-rockchip#582eltay-rm66: fix mainline overlay prefix. by @RiPetitor in armbian/build#11081external: add obs-studio-rockchip for trixie and resolute. by @HeyMeco in armbian/os#494feat(ui): show a real error state when a selection panel fails to load. by @SuperKali in armbian/imager#230feat(update): download updates in the background from Settings. by @SuperKali in armbian/imager#229firmware: newest linux-firmware tag, with mirror fallback. by @igorpecovnik in armbian/build#10950Fix Steam install script. by @ginkage in armbian/configng#1069fix(config): add display names for vendors without a company name. by @EvilOlaf in armbian/website#63fix(config): match vendor name suffixes as whole words. by @EvilOlaf in armbian/website#62fix(flash): refuse empty images before they can erase a device. by @SuperKali in armbian/imager#226fix(ui): stop clipping board card photos that fill their frame. by @SuperKali in armbian/imager#228Gaming: add native Steam client module and heroic launcher. by @HeyMeco in armbian/configng#1066gha-matrix: let separate jobs set the images outputs. by @igorpecovnik in armbian/build#11055gha-matrix: limit the matrix by size, not by job count. by @igorpecovnik in armbian/build#11054grub: allow a separate ext2/ext4 /boot. by @igorpecovnik in armbian/build#11084grub: honour UEFISIZE, and size the EFI partition when it is also /boot. by @igorpecovnik in armbian/build#11072input: touchscreen: gt9xx: update I2C device name. by @boardcon-arm in armbian/linux-rockchip#598invalidate rootfs cache, force rebuild. by @EvilOlaf in armbian/build#11065kickpi-k2b-v2: add Seekwave SWT6621S (vs6621s) SDIO WiFi/BT driver. by @Novice-PG in armbian/build#11006KVM: arm64: PMU: Don't overwrite PMUSERENR with vcpu loaded. by @monolith-jaehoon in armbian/linux-rockchip#571lckfb-taishanpi: set vdd_npu to 900 mV in U-Boot. by @sckiyo in armbian/build#11066lubancat-5io: sync device trees with Linux submission. by @lch08 in armbian/build#10945mainline: bump to unreleased 7.4-rc1 to make room for 7.3-stable. by @EvilOlaf in armbian/build#11046mangopi-mq: u-boot: build v2026.10 with board patches. by @khaliforce in armbian/build#11049media: i2c: techpoint: Update TP2855 register settings. by @boardcon-arm in armbian/linux-rockchip#597media: rockchip: hdmirx: keep the 5V detect IRQ disabled while suspended. by @gconaty in armbian/linux-rockchip#567meson64: vdec: fix H.264 luma in the first GOP. by @outhud in armbian/build#11098meson64: vdec: fix MPEG-1/2 decoding. by @outhud in armbian/build#11069meson64: vdec: fix start failures with GStreamer and FFmpeg. by @outhud in armbian/build#11070mfd: rk808: write DEV_OFF for RK809/RK817 on poweroff. by @sckiyo in armbian/linux-rockchip#565mixtile-blade3: u-boot/kernel: boot-from-SATA & eMMC fixes. by @rpardini in armbian/build#11102mixtile-blade3: u-boot: mainline: bump to v2026.10 (+USB-PD powering; +recover vendor u-boot for comparison). by @rpardini in armbian/build#11093mixtile-edge2: mainline u-boot: v26.10; new DT/defconfig; +fancy; +env-in-emmc-boot0/1. by @rpardini in armbian/build#11073nanopi-r28s: build the AIC8800 SDIO driver as DKMS. by @igorpecovnik in armbian/build#11063nanopim4, nanopim4v2: u-boot v2026.10 with mainline TF-A. by @igorpecovnik in armbian/build#11094net: wireless: bcmdhd: handle NL80211_WPA_VERSION_3 (WPA3/SAE with wpa_supplicant 2.11). by @defcom5-rockchip in armbian/linux-rockchip#561olinux-som-a13: merge configs, drop duplicate, move to .csc, eltay: add missing hw description. by @EvilOlaf in armbian/build#11105orangepi4, orangepi4-lts, tinkerboard-2: u-boot v2026.10, own targets, DT fixes. by @igorpecovnik in armbian/build#11056phy: rockchip-inno-usb2: respect fixed peripheral role. by @jannikbecher in armbian/linux-rockchip#578qcom: add Lenovo Y700 Gen4 firmware from ZUXOS 1.5.10.259. by @retro98boy in armbian/firmware#149radxa rk3399: U-Boot v2026.10, TF-A lts-v2.14.11, DDR blob v1.30 TPL. by @igorpecovnik in armbian/build#11091recomputer-rk3588-devkit: mainline u-boot: bump v2026.07 -> v2026.10. by @rpardini in armbian/build#11074release-targets: add NVIDIA Jetson Nano on uefi-arm64-dt. by @igorpecovnik in armbian/armbian.github.io#510Report missing board pinouts, schematics and instructions, without blocking. by @igorpecovnik in armbian/build#11037rk3399pro: add ddr 800MHz v1.30. by @igorpecovnik in armbian/rkbin#53rk3588: kernel & u-boot: fixes for working, 6gbps, SoC SATA. by @rpardini in armbian/build#11101rock-2f, rock-2a: add current kernel, u-boot v2026.10, newer blobs, SD and USB fixes. by @igorpecovnik in armbian/build#11088rockchip64-7.3: mixtile-blade3: recover fixed-function RTL8125 PCIe description and ethernet0/1 alias. by @rpardini in armbian/build#11092rockchip64-7.3: mixtile-blade3: restore fan curve & tach pull-up. by @rpardini in armbian/build#11103rockchip64: add 31.5 MHz HDMI clock for RK356x. by @RiPetitor in armbian/build#11067rockchip64: add PocketTerm35 touch overlay for ELTAY RM66. by @RiPetitor in armbian/build#11079rockchip64: fix RK3576 HDMI audio for 16-bit samples. by @sckiyo in armbian/build#11095rockchip64: rk3399: keep thermal trips below the hardware shutdown, add throttle floor. by @igorpecovnik in armbian/build#11059rockchip64: rock-pi-4: describe the Ethernet PHY in DT. by @iav in armbian/build#11108rockchip: add the RK3588 CAN nodes for kernel 7.3 and U-Boot v2026.04. by @igorpecovnik in armbian/build#11090rockchip: backport rtw88 support for rtl8723bs. by @paolosabatino in armbian/build#11099rockchip: Drop redundant boot soc in board config file. by @amazingfate in armbian/build#11036rockpi-4c: u-boot v2026.10, mainline TF-A, SPI NOR cap. by @igorpecovnik in armbian/build#11053rockpro64: U-Boot v2026.10, TF-A lts-v2.14.11, Rockchip DDR blob as TPL. by @igorpecovnik in armbian/build#11085Software nav: list categories in alphabetical order. by @igorpecovnik in armbian/documentation#1657sophgo-sg200x: add the SG2000 H.264 encoder and JPEG unit to coda. by @lukaszsobala in armbian/build#11039sophgo: add the SG2000 CODA980 firmware. by @lukaszsobala in armbian/firmware#151sunxi-6.18/sunxi-7.3: port A523/T527 patches (Avaota-A1, Cubie-A5E, OrangePi-4A). by @juanesf in armbian/build#11040sunxi64: U-Boot v2026.10, TF-A lts-v2.14.11, Crust v0.6+; Banana Pi M64 fixes. by @igorpecovnik in armbian/build#11051u-boot: use git.u-boot-project.org, the new upstream host. by @vidplace7 in armbian/build#10477uefi-arm64-dt: Jetson Nano support, current branch, edge 7.3. by @igorpecovnik in armbian/build#11034ZeroPi, Orange Pi PC Plus, Orange Pi Plus 2E: U-Boot v2026.10 with Crust; fix ARM DMA oops. by @igorpecovnik in armbian/build#11058View the full article
  5. Kraid is now the default Panfrost compiler for Valhall and newer Mali GPUs, delivering major reductions in shader instructions, spilling, compile time, and memory use while providing a stronger foundation for future compiler optimization. View the full article
  6. Tyr has reached a major milestone by booting the Arm Mali-G610 GPU’s MCU using upstream Rust DRM memory-management abstractions, while helping shape the kernel infrastructure future Rust GPU drivers will rely on. View the full article
  7. This week's work centers on expanded board support, Rockchip and Realtek platform maturation, and continued refinement of installation and BSP tooling. New hardware enablement spans several SoC families. Initial build support arrives for the Altera Agilex 5 SoCDK, Banana Pi R3 Mini, Firefly AIBOX-K3, and the Allwinner H5 PBS TV Stick, while a new realtek-rtd129x family brings mainline kernel and U-Boot to the Banana Pi W2. The MangoPi MQ Pro gains Debian GRUB EFI boot and a proper maintainer, and the Radxa CM5-IO transitions to mainline kernel and U-Boot. Supporting firmware updates include Tegra210 USB, GPU and VIC blobs, Amlogic VDEC firmware, Realtek rtl8261c, and Qualcomm EDK2 firmware for Radxa boards. Rockchip receives sustained attention across kernel branches, with RK3576 Panfrost GPU overlays, vendor-next OPP and GPU-name corrections for RK356x Panfrost, RK356x suspend fixes for USB and NVMe, and patch repairs for the 6.18 and 7.3 trees. The new Realtek RTD129x family lands multiple stabilization patches covering hwnat RX overflow, watchdog timeout handling, and the r8169soc driver. Sunxi edge advances to 7.3, A523 gains HDMI audio DTS, and Meson moves VIM4 to 7.3 with GPU and audio support. On the user-facing side, armbian-install gains a standalone mode for U-Boot boot disks and board-defined firmware naming, while the BSP layer improves conffile handling, preserves user edits to periodic configuration, and defers armbianEnv.txt rewrites. The imager stops mislabeling every target as an SD card, mainline U-Boot advances to v2026.10, and the documentation site adds DUT inventory, board pinouts, schematics, and installation instructions. #Armbian #EmbeddedLinux #Rockchip #Realtek #UBoot ChangesAdd board and vendor logo images for the Altera Agilex5 SoCDK. by @dinguyen702 in armbian/armbian.github.io#483Add board image for Banana Pi BPI-W2. by @igorpecovnik in armbian/armbian.github.io#496Add board image for pbstvstick. by @JulioRamos0 in armbian/armbian.github.io#495Add board instructions. by @igorpecovnik in armbian/armbian.github.io#508Add board pinouts and schematics. by @igorpecovnik in armbian/armbian.github.io#507Add DKMS support. by @Vladnwx in armbian/uwe5622#22Add DUT inventory workflow (NetBox -> data branch). by @igorpecovnik in armbian/armbian.github.io#501Add initial board configuration for Firefly AIBOX-K3. by @leoppark94 in armbian/build#10956add Shaghal isologo. by @JulioRamos0 in armbian/armbian.github.io#497add vendor-next to ci. by @EvilOlaf in armbian/uwe5622#26apt-cacher-ng: fetch Armbian repositories from mirrors directly. by @igorpecovnik in armbian/docker-armbian-build#43arm64: dts: rockchip: add NanoPi M6 V2. by @igorpecovnik in armbian/linux-rockchip#584arm64: dts: rockchip: add RK3576 Panfrost GPU overlay. by @HeyMeco in armbian/linux-rockchip#592arm64: dts: rockchip: mixtile-blade3: raise the USB-C1 sink PDOs to 3A. by @evtest-hash in armbian/linux-rockchip#590arm64: dts: rockchip: retune reComputer RK3588 devkit fan curve. by @rpardini in armbian/linux-rockchip#588armbian-add-overlay: quote paths, run #include overlays through cpp. by @iav in armbian/build#10981armbian-firstlogin: write Wi-Fi password as YAML literal block. by @jfcabral in armbian/build#10996armbian-hardware-optimization: only rewrite armbianEnv.txt when it changes. by @pablo-cabrera in armbian/build#11029armbian-install: add a standalone mode for disks u-boot boots from. by @SuperKali in armbian/configng#1065armbian-install: let boards name the firmware they flash. by @SuperKali in armbian/configng#1064armbian-led-state: wait for LEDs registered by modules. by @igorpecovnik in armbian/build#10987armbian-upgrades: set APT::Periodic::Enable. by @igorpecovnik in armbian/configng#1059armbian-upgrades: show the checkboxes in the unattended-upgrade dialog. by @igorpecovnik in armbian/configng#1063bananapiw2: u-boot: use 1 GiB with one DRAM controller, turn on the eth1 LEDs. by @igorpecovnik in armbian/build#11026board-images: add MangoPi MQ Pro. by @igorpecovnik in armbian/armbian.github.io#500board-images: add Pine64 Quartz64 Zero. by @pablo-cabrera in armbian/armbian.github.io#506board: add Agilex 5 SoCDK build support. by @dinguyen702 in armbian/build#10938board: add Banana Pi R3 Mini. by @SuperKali in armbian/build#10678board: mixtile-edge2: update mainline DTS for rockchip64. by @evtest-hash in armbian/build#11045board: sunxi: add Allwinner H5 PBS TV Stick (pbstvstick) support. by @JulioRamos0 in armbian/build#10986boards: fix broken module-devkit build, add resolute btattach workaround. by @Lesords in armbian/build#11009bsp/armbian-ramlog - allow armbian-ramlog to recognize .lz files. by @tabrisnet in armbian/build#10993bsp: keep user edits to 02-armbian-periodic. by @igorpecovnik in armbian/build#10985bsp: skip a conffile that an extension removed from the BSP. by @igorpecovnik in armbian/build#11017bsp: write the conffiles list after the hooks, and check the files are there. by @igorpecovnik in armbian/build#11008ci: enable remaining uwe related kernel modules. by @EvilOlaf in armbian/uwe5622#27cix-6.18: rebase SCMI ACPI patch onto 6.18.57. by @SuperKali in armbian/build#11016community: build orangepi4pro from the manual list. by @igorpecovnik in armbian/armbian.github.io#499download-external: fetch arch-independent debs from GitHub releases. by @SuperKali in armbian/armbian.github.io#503drop kernel configs no longer referenced. by @EvilOlaf in armbian/build#11032dut-inventory: trigger web directory rebuild after data update. by @igorpecovnik in armbian/armbian.github.io#502external: add Radxa EDK2 firmware for Qualcomm boards. by @SuperKali in armbian/os#493fix(flash): stop calling every target an SD card. by @SuperKali in armbian/imager#223Index board pinouts, schematics and instructions in armbian-images.json. by @igorpecovnik in armbian/armbian.github.io#509JetHome: Add board image for JetHub D3 (j310). by @QwaSeeK in armbian/armbian.github.io#493kickpi-k2b-v2: fix 1G Ethernet packet loss and enable 1512 MHz OPP. by @Novice-PG in armbian/build#11014mangopi-mq: boot through Debian GRUB EFI. by @khaliforce in armbian/build#10925mangopi-mq: name the board MQ Pro, add a maintainer and a test target. by @igorpecovnik in armbian/build#11001meson-s4t7: replace current (7.1) with edge (7.3), add VIM4 GPU and audio. by @igorpecovnik in armbian/build#10984meson64-7.3: aiu: keep the HDMI source bounds check. by @iav in armbian/build#10982meson64-7.3: phylink WoL: give the MAC the PHY's SecureOn password. by @iav in armbian/build#10983meson: add vdec firmware from linux-firmware. by @igorpecovnik in armbian/firmware#146mvebu: edge: Helios4 OLED via the kernel ssd130x driver. by @neheb in armbian/build#11002nightly: build Khadas VIM1S/VIM4 on edge, add GNOME mid desktop. by @igorpecovnik in armbian/armbian.github.io#498nvidia: add Tegra210 USB, GPU and VIC firmware. by @igorpecovnik in armbian/firmware#148odroidhc4: u-boot: power-cycle the SD card after a watchdog reset. by @iav in armbian/build#10992ping-unresolved-reviews: wait 48 hours before a ping. by @igorpecovnik in armbian/armbian.github.io#494Radxa Dragon Q6A: expose the SPI NOR and update firmware from armbian-install. by @SuperKali in armbian/build#11007radxa-cm5-io: u-boot: fix SPI image build. by @igorpecovnik in armbian/build#10999realtek-rtd129x: add family and BananaPi W2 with mainline kernel and u-boot. by @igorpecovnik in armbian/build#10988realtek-rtd129x: hwnat: fix RX buffer overflow on eth1. by @igorpecovnik in armbian/build#11022realtek-rtd129x: r8169soc: drop CSI access, log link changes once. by @igorpecovnik in armbian/build#11027realtek-rtd129x: watchdog: allow timeouts above the hardware limit. by @igorpecovnik in armbian/build#11023remove orphaned u-boot patches. by @EvilOlaf in armbian/build#11033Revert "drivers: net: wireless: add aic8800 sdio support". by @rpardini in armbian/linux-rockchip#587rk356x: vendor-next: make Panfrost work (OPP masks, GPU names). by @lukaszsobala in armbian/linux-rockchip#586rk35xx-vendor: enable ES8389 codec for NanoPi M6 V2. by @igorpecovnik in armbian/build#10980rockchip-6.18: fix pm-domains patch after 6.18.y update. by @igorpecovnik in armbian/build#11012rockchip-7.3: fix general-rockchip-various-fixes for 7.3-rc7. by @igorpecovnik in armbian/build#10978rockchip64-6.18: fix broken iommu driver patch. by @EvilOlaf in armbian/build#11010rockchip64-7.3: helios64: drop DTS properties that nothing reads. by @iav in armbian/build#11030rockchip64-7.3: helios64: split add-board-helios64.patch into numbered patches. by @iav in armbian/build#11004rockchip64-7.3: RK356x: suspend with USB and NVMe. by @iav in armbian/build#11005rockchip64: drop the rk_crypto2 (montjoie) crypto engine series. by @xfournet in armbian/build#10969rtd129x: add CODA980 (VE1) firmware. by @igorpecovnik in armbian/firmware#147rtl_nic: add rtl8261c.bin from linux-firmware. by @iav in armbian/firmware#145runner-cleanup: remove corrupt apt-cacher-ng by-hash entries. by @igorpecovnik in armbian/configng#1062Simplify the odroidxu4 rtl8821cu fix. by @belegdol in armbian/build#11021sophgo-sg200x: add camera support for the Milk-V Duo S J1 and J2 connectors. by @leafpmpmp in armbian/build#10936sun60iw2: install the patched Xorg only for the X11 desktops. by @igorpecovnik in armbian/build#11000sunxi-6.18: sun55i-iommu: pass old domain to attach_dev. by @EvilOlaf in armbian/build#11011sunxi-7.2: a523 HDMI audio DTS (I2S2 -> DW-HDMI, playback-only). by @juanesf in armbian/build#10913sunxi: bump edge to 7.3. by @EvilOlaf in armbian/build#11031u-boot: mainline: v2026.10 - open the floodgates. by @rpardini in armbian/build#10976u-boot: ship BOOTLOADER_BOOTS_FROM in platform_install.sh. by @SuperKali in armbian/build#11025uboot: enable EEPROM MAC sourcing for reComputer RK3576 Module Dev Kit. by @Lesords in armbian/build#10990unisocwifi: size the remaining reply buffers with sizeof (-Wvla). by @lukaszsobala in armbian/uwe5622#24Update odroidxu4-current to 6.6.159. by @belegdol in armbian/build#11013Update the ELTAY RM66 photo. by @RiPetitor in armbian/armbian.github.io#504uwe5622: bump pinned commit hash. by @EvilOlaf in armbian/build#10989uwe5622: open files from the init root on kernel 7.3. by @lukaszsobala in armbian/uwe5622#23vendor-next: Fix AIC8800 bug. by @HeyMeco in armbian/build#10977wireless: apply the RTL8821CU 6.6.157 fix only where the driver exists. by @igorpecovnik in armbian/build#11019Automatic refresh repository README. by @igorpecovnik in armbian/docker-armbian-build#41radxa-cm5-io: mainline kernel & u-boot. by @JohnTheCoolingFan in armbian/build#10979View the full article
  8. This week's development centers on expanded board support and vendor kernel work, mainline kernel progression to 7.3 with CI resilience improvements, and a substantial refresh of the Armbian Imager. New hardware enablement spans multiple SoC families, including the Boardcon SBC3568 (RK3568), ELTAY RM66 (RK3566) with vendor HDMI and power-domain workarounds, the Anbernic RG Rotate on the new Unisoc UMS512 family, and the NanoPi M6 V2. The NanoPi R6S, R6C, M6/M6V2, and NanoPC T6/T6-LTS have been unified under a single image with shared aliases, reducing duplication across the FriendlyELEC RK3588 lineup. On the vendor side, an initial rk35xx-vendor-next branch based on 6.12-rkr1 consolidates Rockchip vendor families, while fixes land for Orange Pi CM5 boot, Orange Pi 3B U-Boot unification, and RS485 support in the 8250 serial driver. Mainline moves to 7.3-rc7 across rockchip64, meson64, and uefi targets, with SpacemiT K1 edge migrating from 7.2.y to 7.3.y and an RK3568 PCIe Root Port reset loop fix. Build infrastructure gains a GitHub mirror fallback for mainline kernel fetches, longer git proxy timeouts, overflow of arm64 image jobs to X64 runners, and ccache refactored into a swappable extension. The Armbian Imager received broad investment: full-page Settings with board-scoped first-boot profiles, a critical fix preventing the ext4 writer from corrupting the rootfs, hardened disk target validation before flashing, cache correctness fixes on Windows, and expanded CI coverage including Rust linting on Windows and functional test builds for fork PRs. #Armbian #EmbeddedLinux #Rockchip #MainlineKernel #SBC ChangesAdd board image for Firefly AI Box K3. by @leoppark94 in armbian/armbian.github.io#487Add RTL8723D Bluetooth firmware. by @boardcon-arm in armbian/firmware#144Add support for Boardcon SBC3568 (RK3568). by @boardcon-arm in armbian/build#10723anbernic-rg-vita-pro: prefer the built-in codec over HDMI for audio. by @crackerjacques in armbian/build#10919arm64: dts: rockchip: orangepi5: alias GbE as ethernet0 (stable NIC name). by @igorpecovnik in armbian/linux-rockchip#575arm64: dts: rockchip: orangepi5: drop sd-uhs-sdr104 (SD reliability). by @igorpecovnik in armbian/linux-rockchip#573arm64: dts: rockchip: rk3566: remove empty rockchip,supported-hw from GPU OPP table. by @outhud in armbian/linux-rockchip#574armbian-kernel: globally disable CONFIG_DMABUF_DEBUG explicitly. by @rpardini in armbian/build#10928assets: add ELTAY RM66 board images and ELTAY brand artwork. by @RiPetitor in armbian/armbian.github.io#469autoconfig: decline first login's wireless prompt in every preset. by @igorpecovnik in armbian/imager#193blacklist NanoPi R6S/R6C/M6 and NanoPC T6/T6-LTS from all CI targets. by @igorpecovnik in armbian/armbian.github.io#486board-images: add Anbernic RG Rotate. by @crackerjacques in armbian/armbian.github.io#468board-images: add Xiaomi Pad 8 Pro (xiaomi-piano) board image. by @code002-2 in armbian/armbian.github.io#480board: add Anbernic RG Rotate (Unisoc T618 / UMS512) and the sprd-ums512 family. by @crackerjacques in armbian/build#10813board: add ELTAY RM66 (RK3566) community support. by @RiPetitor in armbian/build#10788board: add NanoPi M6 V2 (image + virtual board). by @igorpecovnik in armbian/armbian.github.io#417board: unify NanoPi R6S, R6C, M6/M6V2 and NanoPC T6 at a single image. by @igorpecovnik in armbian/build#10946bsp-cli: accept .dtso files in armbian-add-overlay. by @novadusk in armbian/build#10963bsp: avoid sysctl defaults file collision. by @nightcityblade in armbian/build#10944build-images: raise image build timeout to 60 min. by @igorpecovnik in armbian/ci#89chore(deps): clear RustSec advisories and make cargo audit blocking. by @SuperKali in armbian/imager#200chore(deps): let an MCP client drive the app in dev builds. by @SuperKali in armbian/imager#197chore: add a pull request template. by @SuperKali in armbian/imager#198ci: add PR labelling automation (from armbian/build). by @igorpecovnik in armbian/linux-rockchip#576ci: give fork PRs working test build links. by @SuperKali in armbian/imager#209ci: lint the Rust code on Windows too. by @SuperKali in armbian/imager#211ci: reuse main's caches and the npm Tauri CLI in PR checks. by @SuperKali in armbian/imager#217Create sync_user.sh. by @EvilOlaf in armbian/armbian.github.io#460datacenter: add an architecture picture. by @igorpecovnik in armbian/documentation#1521debian/changelog: release 101.10.591.52.27-10. by @igorpecovnik in armbian/bcmdhd-dkms#14Disable Bianbu desktop target for SpacemiT K1. by @igorpecovnik in armbian/armbian.github.io#484docs: ccache is an extension now; USE_CCACHE has no effect. by @iav in armbian/documentation#1528docs: sync the language count and build output with main. by @SuperKali in armbian/imager#208Document MAINLINE_MIRROR=github. by @igorpecovnik in armbian/documentation#1559Drop deprecated apa extension (fixes K3 rootfs cache miss). by @igorpecovnik in armbian/build#10947Enable User Button to Boot into Loader Mode for Luckfox Lyra Ultra. by @pdxlocations in armbian/build#10939env_init: set ARCH on hosts without /etc/armbian-release. by @igorpecovnik in armbian/configng#1055extensions: ccache: add @description; one-line compile_wrapper_pre summary. by @iav in armbian/build#10922feat(dev): add a dev scenarios simulator for debug builds. by @SuperKali in armbian/imager#206feat(settings): full-page Settings and board-scoped first-boot profiles. by @SuperKali in armbian/imager#215feat(settings): new animated hero scenes for the Settings sections. by @SuperKali in armbian/imager#222Fetch mainline kernel from the GitHub mirror. by @igorpecovnik in armbian/ci#87Fetch mainline kernel from the GitHub mirror in all configs. by @igorpecovnik in armbian/ci#88filogic: enable Linux 7.2 for GL-MT2500. by @JiaY-shi in armbian/build#10638fix building for Linux 7.3. by @EvilOlaf in armbian/bcmdhd-dkms#12Fix Goodix touchscreen X-axis orientation on SBC3568. by @boardcon-arm in armbian/build#10958fix(autoconfig): stop the ext4 writer from corrupting the rootfs. by @SuperKali in armbian/imager#221fix(build): repair the local build scripts. by @SuperKali in armbian/imager#207fix(cache): drop UFS images cached before the #196 fix. by @SuperKali in armbian/imager#214fix(custom): keep decompressed image deletes inside their folder. by @SuperKali in armbian/imager#212fix(download): keep cache file names inside their folder on Windows. by @SuperKali in armbian/imager#213fix(dts): restore ELTAY RM66 vendor HDMI. by @RiPetitor in armbian/linux-rockchip#577fix(flash): check the target disk in the backend before writing. by @SuperKali in armbian/imager#201fix(qdl): inject the UFS autoconfig into a per-flash copy. by @SuperKali in armbian/imager#210fix(soc): enable RM66 power-domain workaround in vendor kernel. by @RiPetitor in armbian/linux-rockchip#581fix(ui): stop data views hanging on skeletons or hiding load errors. by @SuperKali in armbian/imager#199fix(ui): translate checksum, verify and decompress errors. by @SuperKali in armbian/imager#216generate_targets: fill 'alfa' runners first with kernel jobs. by @igorpecovnik in armbian/armbian.github.io#492gha-matrix: add by-name-and-arch-overflow-max runner cap. by @rpardini in armbian/build#10967git: fall back to other kernel remotes when one does not answer. by @iav in armbian/build#10929git: GitHub fallback and longer timeout for the runner git proxy. by @igorpecovnik in armbian/build#10935git: mark the MEMO_DICT nameref in git2info for shellcheck. by @iav in armbian/build#10961haos: accept ARCH=arm for 32-bit ARM. by @igorpecovnik in armbian/configng#1056haos: let NetworkManager manage netplan interfaces. by @igorpecovnik in armbian/configng#1054helios4: stable MAC address from SPI NOR unique ID. by @iav in armbian/build#10962helios64: arm auto power-on in U-Boot, fix its GPIO numbers, make it configurable. by @iav in armbian/build#10906i18n: translate the rolling release labels. by @SuperKali in armbian/imager#219JetHome: Add board image for JetHub D3 (j310). by @QwaSeeK in armbian/armbian.github.io#493kernel-debug-tiers: detect hard lockups in tier 1. by @iav in armbian/build#10921kernel-rust: ship the generated arch asm include files in headers. by @iav in armbian/build#10931kernel: add github mainline mirror. by @igorpecovnik in armbian/build#10949kickpi-k2b-v2: add fail-soft prebuilt FFmpeg v4l2-request install (cedrus HW decode). by @Novice-PG in armbian/build#10915mainline: bump to 7.3-rc7. by @EvilOlaf in armbian/build#10975maintainers: virtual boards inherit maintainers of their base board. by @igorpecovnik in armbian/armbian.github.io#489mangopi-mq: replace Boot0/TOC1 with SPL/FIT. by @khaliforce in armbian/build#10926mangopi-mq: update OpenSBI to v1.9. by @khaliforce in armbian/build#10924meson64: meson64-reboot on gpiod for current and edge, drop the SD power-off DT patch. by @iav in armbian/build#10899mmc: core: Handle NULL vqmmc in voltage setting. by @jannikbecher in armbian/linux-rockchip#564mvebu: don't fetch the 64-bit Marvell bootloader tools. by @iav in armbian/build#10970nanopi-r3s-lts: name ports wan/lan, blink LEDs on traffic. by @igorpecovnik in armbian/build#10953nanopi-r76s: name ports wan/lan, blink LEDs on traffic. by @igorpecovnik in armbian/build#10954Orangepi CM5 boot fixes. by @ECO1AI in armbian/build#10916orangepi3b: one U-Boot image for NVMe and SATA, fix overlay prefix. by @lukaszsobala in armbian/build#10896orangepi5: drop sd-uhs-sdr104 for SD card reliability (mainline). by @igorpecovnik in armbian/build#10917partitioner: keep board hook stderr off the dialog gauge. by @iav in armbian/configng#1053perf(autoconfig): speed up the profile step and honour an early cancel. by @SuperKali in armbian/imager#220piano: add Xiaomi Pad 8 Pro (SM8750) firmware. by @code002-2 in armbian/firmware#143Ping PR authors about new unresolved review conversations. by @igorpecovnik in armbian/armbian.github.io#481ping-unresolved-reviews: wait 48 hours before a ping. by @igorpecovnik in armbian/armbian.github.io#494qca: Added missing bluetooth firmware for WCN7860. by @kasimling in armbian/firmware#142refactor(compilation): extract ccache support into a swappable extension. by @iav in armbian/build#9840refactor(ui): move hard-coded values into config, dedupe helpers. by @SuperKali in armbian/imager#205reusable: enable friendlyelec-rk3588 aliases for R6S, R6C, M6, T6, T6-LTS. by @igorpecovnik in armbian/armbian.github.io#490reusable: hide friendlyelec-rk3588 download page, keep its aliases. by @igorpecovnik in armbian/armbian.github.io#488Ripetitor/eltay rm66 vendor support. by @RiPetitor in armbian/linux-rockchip#560rk35xx-vendor-next: initial 6.12-rkr1 from Meco; consolidate & fold families. by @rpardini in armbian/build#10966rockchip-7.3: fix general-rockchip-various-fixes for 7.3-rc7. by @igorpecovnik in armbian/build#10978rockchip64-7.3: add opt-in helios64 CPU stability overlay. by @iav in armbian/build#10942rockchip64-7.3: fix RK3568 PCIe Root Port reset loop. by @igorpecovnik in armbian/build#10937rockchip64/meson64/uefi-*: bump edge to v7.3(-rc6). by @rpardini in armbian/build#10920rockchip64: current/edge: build REALTEK_PHY in. by @sckiyo in armbian/build#10923serial: 8250: add RS485 support with RTS and GPIO DE control. by @boardcon-arm in armbian/linux-rockchip#569soc: rockchip: pm_domains: don't panic on handshake timeout when always_on is set. by @RiPetitor in armbian/linux-rockchip#558software: add SolidPing uptime monitoring module. by @fclairamb in armbian/configng#1057SpacemiT K1: Edge: Migrate from linux-7.2.y to 7.3.y. by @pyavitz in armbian/build#10965SpacemiT K1: Remove CONFIG_BPF_JIT_ALWAYS_ON=y and other misc fixups "current". by @pyavitz in armbian/build#10959sun60iw2: fetch camera tools from orangepi-build. by @igorpecovnik in armbian/build#10951sunxi/rockchip64/meson64: rewrite patches. by @EvilOlaf in armbian/build#10964sunxi: recore: set the A5/A6 GPU clock, throttle instead of powering off at 90 C, keep pstore. by @eliasbakken in armbian/build#10940targets: overflow arm64 image jobs to X64 runners above the ARM64 capacity. by @igorpecovnik in armbian/armbian.github.io#491Update Boardcon SBC3568 board configuration. by @boardcon-arm in armbian/build#10952wl_cfg80211: handle NL80211_WPA_VERSION_3 (WPA3/SAE with wpa_supplicant 2.11). by @defcom5-rockchip in armbian/bcmdhd-dkms#11View the full article
  9. A look at the USB-PD, PHY, hotplug, and DRM changes involved in making USB-C DisplayPort Alternate Mode work on RK3588/RK3576, and where they stand on the way to mainline Linux. View the full article
  10. This week's work centers on expanded board and SoC support, build and repository infrastructure modernization, and refinements to user-facing tooling and documentation. On the hardware side, mainline support arrived for the Radxa Rock 2A/2F and the Toradex Verdin iMX8M Mini, while the KickPi K2B V2.2 DDR3 gained a full board definition including a new Maxio MAE0621 PHY driver. The Allwinner sun60iw2 platform saw substantial advancement on the Orange Pi 4 Pro with GPU, desktop, and hardware video decode enablement, alongside kernel configuration refinements. The Amlogic C400-plus received U-Boot repacking and Mali-T820 stabilization, the Rockchip armhf edge kernel was bumped to 7.3, and smaller fixes landed for the BPI-M4-Zero, Allwinner D1 RISC-V, MangoPi MQ, and Anbernic handhelds. The build framework received a significant repository management overhaul, adopting the production singlemode repo.sh into main and publishing with Acquire-By-Hash for integrity. OCI storage became configurable with a read-only OCI_PROXY, propagated through CI chunk workflows and runner cleanup. NXP and Trusted Firmware sources were migrated to Armbian-hosted GitHub mirrors, user patches can now override same-named core patches, and USERPATCHES_PATH was restored to working order. For end users, armbianmonitor received a full refactor, armbian-firstlogin gained unattended-preset safety and broader username validation, and the APT lock handling was hardened against stale cache locks. The configng project introduced a read-only registry-cache for ghcr.io, fixed static IP cancellation handling, and corrected tuning-profile swappiness regressions. Documentation expanded to cover OCI storage, unattended first login, and application installation workflows. #Armbian #EmbeddedLinux #SBC #Rockchip #Allwinner #UBoot ChangesActions: Fix noble dkms, add to test matrix. by @vidplace7 in armbian/MorseMicro-DKMS#18Actions: Use numbered distro release in deb version. by @vidplace7 in armbian/MorseMicro-DKMS#19aml-c400-plus: repack blob; u-boot: env-in-mmc; +fancy-ish (<1MiB bl33). by @rpardini in armbian/build#10907aml-c400-plus: u-boot: fix u-boot.ext (bare bl33 for chainloading/toothpick). by @rpardini in armbian/build#10918anbernic-rg-ds: MBR image, fix battery charging, rumble at power-on. by @crackerjacques in armbian/build#10900anbernic-rg-vita-pro: MBR image, rumble at power-on. by @crackerjacques in armbian/build#10901apt: wait on lock + clear stale cache lock (fix "held by process 0"). by @igorpecovnik in armbian/build#10893armbian-firstlogin: allow underscore and hyphen in usernames. by @xsalaices in armbian/build#10844armbian-firstlogin: don't block an unattended preset run on questions. by @igorpecovnik in armbian/build#10840armbian-kernel: enable SMB/CIFS client and ksmbd on all kernels. by @igorpecovnik in armbian/build#10885Armbianmonitor refactor. by @EvilOlaf in armbian/build#9327autoconfig: document unattended first login and static IP scope. by @igorpecovnik in armbian/documentation#1419ayn-odin3: Migrate kernel to Linux 7.2. by @kasimling in armbian/build#10690bcm2711: always use official raspberrypi/firmware for start4.elf (and co). by @rpardini in armbian/build#10855bcm2711: don't enable a second serial getty on the Raspberry Pi UART. by @igorpecovnik in armbian/build#10848board-images: add KickPi K2B V2.2 board image. by @Novice-PG in armbian/armbian.github.io#478board-vendor-logos: add 9tripod logo. by @igorpecovnik in armbian/armbian.github.io#477board: add Toradex Verdin iMX8M Mini (board+vendor). by @lucshl in armbian/armbian.github.io#475board: bananapicm4io: blacklist out-of-tree 88x2cs wifi driver. by @igorpecovnik in armbian/build#10872board: mixtile-blade3: use rk3588-mixtile-blade3.dtb on the vendor branch. by @evtest-hash in armbian/build#10774boards: add Toradex Verdin iMX8M Mini support. by @lucshl in armbian/build#10867boards: aml-c400-plus: stabilize Mali-T820 by pinning runtime-PM on probe and reset. by @jomadeto in armbian/build#10797BPI-M4-Zero: Adjust LPDDR4 timings and AXP313 regulators. by @pyavitz in armbian/build#10873BPI-M4-Zero: Optimize mmc1 DT properties for fast SDIO initialization. by @pyavitz in armbian/build#10880BPI-M4-Zero: U-Boot: Drop HACK: sunxi: gpu enable. by @pyavitz in armbian/build#10881bring USERPATCHES_PATH back into working state and fix inconsistencies. by @EvilOlaf in armbian/build#10776bsp: refresh the release checksum after version changes. by @khaliforce in armbian/build#10909build-framework: document OCI storage and OCI_PROXY. by @igorpecovnik in armbian/documentation#1445bump rockchip armhf edge kernel to 7.3. by @paolosabatino in armbian/build#10864cache services: publish on the host and local containers only by default. by @igorpecovnik in armbian/configng#1043chunk workflows: export the runner's oci_cache as OCI_PROXY. by @igorpecovnik in armbian/ci#83ci: expand kernel defconfigs before the security check. by @igorpecovnik in armbian/build#10897contribute/datacenter: add infra repo screenshot to gallery. by @igorpecovnik in armbian/documentation#1507contribute/datacenter: add rack photo gallery. by @igorpecovnik in armbian/documentation#1503contribute/datacenter: correct console server port count. by @igorpecovnik in armbian/documentation#1508create AGENTS.md. by @EvilOlaf in armbian/build#10843d1: backport the RISC-V clocksource rating fix. by @khaliforce in armbian/build#10886d1: enable RTL8723DS Wi-Fi and fix regulatory database support. by @khaliforce in armbian/build#10887data: fail closed when a mirror is unreachable, not silently short. by @igorpecovnik in armbian/armbian.github.io#447docker_publish_local: use the default when BIND_ADDRESS has no address. by @igorpecovnik in armbian/configng#1045docs: link app pages to the install steps. by @igorpecovnik in armbian/configng#1049extension: add interactive shell. by @EvilOlaf in armbian/build#10879extensions: arm64-compat-vdso: fix the riscv64 host handling. by @iav in armbian/build#10869feat: Add Seeed Studio reComputer RK3576 Module devkit dts. by @Lesords in armbian/linux-rockchip#570fix customize-image and config-example . by @EvilOlaf in armbian/build#10878generate-servers-jsons: include VMs tagged "github runner". by @igorpecovnik in armbian/armbian.github.io#476getting-started: document armbian-debug; fix armbian-upgrade wording. by @igorpecovnik in armbian/documentation#1428git: don't hard-abort when the global safe.directory write fails. by @xsalaices in armbian/build#10845git: fetch trustedfirmware.org shared submodules from GitHub mirrors. by @igorpecovnik in armbian/build#10877gl-mt2500: use lowercase vendor slug gl.inet. by @igorpecovnik in armbian/build#10895helios4: u-boot: drop obsolete patches. by @iav in armbian/build#10883imx8m, imx93, imx8ulp: fetch NXP firmware from armbian/nxp-firmware. by @igorpecovnik in armbian/build#10868kernel-debs: headers: depend on python3-minimal. by @iav in armbian/build#10846kickpi-k2b-v2: add KickPi K2B V2.2 DDR3 board (DDR3 u-boot defconfig, DTS, WiFi watchdog). by @Novice-PG in armbian/build#10902main-config: cause error when lib.config is present. by @EvilOlaf in armbian/build#10876mainline: bump to 7.3-rc6. by @EvilOlaf in armbian/build#10914mangopi-mq: fix board configuration and clock handling. by @khaliforce in armbian/build#10908mangopi-mq: replace bundled boot firmware with source builds. by @khaliforce in armbian/build#10888meson-gxm-c400-plus: enable front panel display. by @jomadeto in armbian/build#10903meson64-6.12: rebase the old aiu HDMI codec patch onto 6.12.111+. by @iav in armbian/build#10898meson64-7.2: fix due to upstream changes broken patch. by @EvilOlaf in armbian/build#10890mkdocs: cache-bust extra_css with a version query. by @igorpecovnik in armbian/documentation#1506module_redis: opt-in cache mode (REDIS_MAXMEMORY). by @igorpecovnik in armbian/configng#1038module_tuning_profile: apply was undoing its own swappiness. by @igorpecovnik in armbian/configng#1039mvebu64: fetch TF-A from its GitHub mirror. by @igorpecovnik in armbian/build#10866network: abort static IP setup on dialog cancel instead of crashing netplan. by @xsalaices in armbian/configng#1040oci: configurable OCI storage and read-only OCI_PROXY. by @igorpecovnik in armbian/build#10860Odroidxu4 wifi adjustment. by @EvilOlaf in armbian/build#10875orangePi CM5 USB3 enhancement + exprimental mode. by @ECO1AI in armbian/build#10904pack-debian: publish the repository with Acquire-By-Hash. by @igorpecovnik in armbian/scripts#94patching: let a userpatch override the same-named core patch. by @iav in armbian/build#10884pkg_remove: use purge instead of autopurge to stop cascade removal. by @xsalaices in armbian/configng#1037Radxa Rock 2A/2F mainline. by @lukaszsobala in armbian/build#10852redirector: torrent check needs proof before reporting in sync. by @igorpecovnik in armbian/armbian.github.io#474redirector: verify mirror sync by file-probe, not directory mirroring. by @igorpecovnik in armbian/armbian.github.io#471repo management: adopt the production (singlemode) repo.sh into main. by @igorpecovnik in armbian/build#10304repo: publish with Acquire-By-Hash. by @igorpecovnik in armbian/build#10911repository update: publish stable only every STABLE_REPOSITORY_UPDATE days. by @igorpecovnik in armbian/armbian.github.io#472repository update: use repo.sh from build main. by @igorpecovnik in armbian/armbian.github.io#473rockchip64-7.2: media: rkvdec: Add VP9 support for VDPU381 variant (v1). by @rpardini in armbian/build#10874rockchip64: 7.3: helios64: Wake-on-LAN through the PHY. by @iav in armbian/build#10865rockchip64: copy the RK3562 patch set from 7.2 to 7.3. by @retro98boy in armbian/build#10863rockchip: rk3506: fix RockUSB full-speed enumeration data abort. by @stevenjoezhang in armbian/build#10833runner-clean: export the runner's oci_cache as OCI_PROXY. by @igorpecovnik in armbian/actions#43runner-cleanup: keep build-cache service images. by @igorpecovnik in armbian/configng#1048runner-cleanup: never wipe _work of a runner with a live job. by @igorpecovnik in armbian/configng#1050software: add registry-cache, a read-only cache of ghcr.io. by @igorpecovnik in armbian/configng#1044software: explain how to install an app. by @igorpecovnik in armbian/documentation#1504software: stop offering Watchtower install, keep Disable. by @xsalaices in armbian/configng#1041sophgo-sg200x-aic8800: fetch the driver only when the kernel builds. by @igorpecovnik in armbian/build#10847sophgo-sg200x-aic8800: keep the 7.3 RoC cookie in the RoC element. by @lukaszsobala in armbian/build#10854sun60iw2: fix GPU userspace install ELOOP on headless builds. by @ijiki16 in armbian/build#10882sun60iw2: GPU, desktop and hardware video decode for Orange Pi 4 Pro. by @ijiki16 in armbian/build#10835sun60iw2: keep the Dirty Frag mitigation over the Armbian default. by @igorpecovnik in armbian/build#10912sun60iw2: kernel config: modulize drivers, add wireguard, mitigate dirty frag. by @EvilOlaf in armbian/build#10871sunxi-7.2: drop patch upstreamed with v7.2.9. by @EvilOlaf in armbian/build#10889sunxi: add Maxio MAE0621 PHY driver (KickPi K2B V2.2 DDR3 ethernet fix). by @Novice-PG in armbian/build#10894sunxi: recore: add device trees for Recore A5-A8. by @eliasbakken in armbian/build#10850sunxi: recore: update U-Boot and put BL31 in DRAM. by @eliasbakken in armbian/build#10853tests: skip stable switch on forky, disable redis and portainer tests. by @igorpecovnik in armbian/configng#1051u-boot: report SPL/TPL size against CONFIG_*_MAX_SIZE. by @igorpecovnik in armbian/build#10858uefi-x86-6.18: rebase i915 4-lane quirk patch for 6.18.55. by @igorpecovnik in armbian/build#10891View the full article
  11. Next week we'll be in Prague for a packed Open Source week! We’ll speak at the Linux Plumbers Conference and GStreamer Conference, and present two demos at the ELC Technical Showcase. View the full article
  12. Welcome to the latest Armbian Newsletter: your source for the latest developments, community highlights, and behind-the-scenes updates from the world of open-source ARM and RISC-V computing. JetHome boosts Armbian CIJetHome (Shenzhen JetHome Technology Co.) donated a build server for Armbian. The server compiles Armbian images, kernels and U-Boot packages. Thank you, JetHome. HW Specifications CPU 2 × Intel Xeon Gold 6148, 80 threads Memory 384 GB Storage 3.84 TB SSD, plus 20 TB of disk Network 2 × 1Sponsored Github HighlightsThis week’s work centers on Rockchip platform maturation, kernel and toolchain modernization, and board-level enablement across vendors. Rockchip received the largest share of attention, with RK3528 gaining a thermal driver, cooling-map refinements, and cleanup of legacy PCIe and pmdomain workarounds. The Radxa E24C now stores its U-Booting every board, every nightArmbian builds for hundreds of boards. A kernel bump that is clean on one SoC can leave another unbootable and no build log will tell you. So there is a rack, and the rack boots them. Compiling is not evidence. A kernel that builds, packages that install, an image thatMali GPU with LiteRT-LMRunning Gemma 4 E2B on a Mali GPU with LiteRT-LM This guide should work on any armbian minimal/console (trixie) system with a working Mali-g610 GPU. DO NOT USE DESKTOP Verified on: Orange Pi 5 Max (Rockchip RK3588, Arm Mali-G610 MC4), Armbian/Debian 13 (trixie), aarch64, 8View the full article
  13. Armbian builds for hundreds of boards. A kernel bump that is clean on one SoC can leave another unbootable and no build log will tell you. So there is a rack, and the rack boots them. Compiling is not evidence. A kernel that builds, packages that install, an image that flashes — none of it proves a board comes back after reboot. Armbian supports a very large number of boards across a dozen vendors and twenty SoC families, maintained largely by volunteers who each own one or two of them. The failure mode that hurts is not a broken build. It is a change that builds perfectly and quietly bricks the boot path on hardware nobody happened to have on their desk that week. The automated test facility exists to close that gap. It is a rack of real boards, wired for remote power, that installs what Armbian published and then tries to use it: upgrade, switch kernel branches, reboot repeatedly, measure, report. What follows is what it does today, the hardware it takes to run, where AI fits into maintaining the stack around it, and the change we want to make next: moving hardware validation from nightly builds to pull requests. What is in the rackFleet composition, as recorded in inventory 65 Boards under test 62 Distinct models 22 Vendors 20 SoC families The boards are the point, and the spread is deliberate. Rockchip, Amlogic, Allwinner, NXP, Marvell, Broadcom, TI, Samsung, Qualcomm, SpacemiT and x86 are all represented, because that is where the differences live; a change to a shared kernel config lands differently on rockchip64 than on meson64, and only one of them will tell you so. Vendors currently on the bench include Radxa, FriendlyELEC, Khadas, Orange Pi, Banana Pi, Odroid, Raspberry Pi, Pine64, SolidRun, Mekotronics, Kobol, Cubietech, Udoo, Inovato and Arduino. Of the 65, 56 are active and 9 are in a failed state at the moment article was done boards that need a hand in the rack. That number is itself a signal: a board that has stopped answering is a board that stopped being able to report, which is usually more interesting than a test that merely failed. Every board is registered in NetBox, which is the source of truth for the whole system. Not just an asset list the orchestrator reads it to decide what a board can be tested with. Power is derived from cabling topology rather than a field someone typed: a board's power port is cabled to an outlet on a controller device, and the controller carries the driver. If the cable is not in the model, the board is treated as having no managed power, and the tests that need a hard power cut are skipped rather than faked. The hardware it takesPer bench, and the shared infrastructure behind it The cost of adding a board is not the board. It is the wiring around it. Each bench needs some subset of the following, and which subset a board has determines which tests it is eligible for. Remote power Required A way to cut and restore power without a human. Three backends are in use: PoE switch ports for anything powered over Ethernet, a switched rack PDU for mains devices, and a 24-channel relay board driven over GPIO for DC-barrel and USB-powered boards. Without this there is no cold-boot test, only a soft reboot which is exactly the case that tends to pass while the real one fails. Network Required Wired Ethernet on a managed switch. This is the control channel (the harness drives boards over SSH), the measurement channel for throughput tests, and on PoE benches, the power channel too. A board that only has Wi-Fi is testable but much harder to recover. Power metering Strongly recommended PoE ports meter per-port draw, so the harness samples watts throughout a run. This is how you tell a board that genuinely rebooted from one whose SoC never stopped executing the power trace is flat across what was supposed to be a power cycle. Serial console Recommended USB-to-TTL adapters on a powered hub, exposed over the network as named consoles. Without one, a board that fails to boot tells you nothing at all: you get silence and have to guess. Several boards in the rack currently lack one, and every hang on those is an investigation that stalls at "it does not come back". Clean-flash path Not yet wired An SD-card switcher that presents the card to a flasher host or to the board, or USB access for vendor recovery modes. This is what makes a board recoverable from software that does not boot. The framework supports it; no bench in the rack is currently wired for it, which is the single biggest constraint on what comes next. Behind the benches sits the shared infrastructure, the part people underestimate when they picture "a few boards on a shelf": Switching. Three core switches and four access switches, several of them PoE, which do double duty as the fleet's power controllers. Between them they carry the control network, the test traffic and the power for a large fraction of the boards. This is no longer just a 1 GbE network: newer boards increasingly come with 2.5 GbE, while the uplinks and core need 10 GbE to aggregate traffic from many boards running tests in parallel. Without that headroom, the lab network itself becomes the bottleneck and network-performance results stop measuring the board under test.Power delivery. A switched rack PDU, multi-channel DC supplies, multiple 16-way USB supply, switched power strips, and a UPS in front of all of it because a lab that loses power mid-write is a lab that corrupts SD cards.Console and out-of-band. Dedicated console hosts, including a KVM device for the machines that need screen-level access.Compute. Six servers in the same site, including two Ampere-class ARM machines, running the CI runners that execute the build and test jobs and the services the fleet depends on.All of it is scripted. Each class of hardware has a small command-line tool with the same shape — status, on, off, powercycle so the harness does not care whether a board is switched by a PoE port, a PDU outlet or a relay channel. It resolves the path from the inventory model and calls whichever tool matches. What a nightly run doesThe cycle, end to end The fleet does not stay powered. A full cycle brings it up, tests it, and puts it back to sleep. The last step runs even when everything before it failed. Power on The fleet is brought up from the PDU and the boards are given several minutes to boot.Scan and reconcile Every board is probed and the inventory updated: what version it is running, what kernel, when it was last seen. Drift between the model and reality is recorded rather than assumed away.Sync maintainer keys Board maintainers' SSH keys are pushed to the boards they own, so the person responsible for a board can log into the actual unit that failed.Run the board pipeline A matrix job per board, in parallel across the runners. This is the part below.Scan again Post-test state is captured; what the run left behind, not just what it reported.Power off Always, including after a failure. A rack left powered on a failed run is a rack that cooks.Inside step four, each board runs the same pipeline. It upgrades to the nightly repository, reboots, and then walks every kernel branch that board is configured to test: StepWhat it doesupgradePoint at the nightly repository and install what is currently published.rebootVerify that the board comes back with what it already had installed.For each branchRepeat the steps below for each kernel branch (current, edge, …).↳ kernel-switchInstall that branch's kernel and verify that it is fully configured.↳ rebootPerform warm reboots, followed by a cold power cycle where switched power is available.↳ hw-performanceTest CPU, memory, disk and temperature.↳ dvfsVerify that the governor actually reaches the frequencies it claims.↳ network-iperfMeasure throughput on each cabled network interface.↳ store-versionsRecord exactly what is installed and running.restore-stablePut the board back the way it was found. Two details in there carry more weight than they look. The reboot module does warm reboots followed by a cold power cycle, because those fail differently: a board can survive reboot indefinitely and still not come back from a real power cut. Testing both is the only way to catch both failure modes. And kernel-switch verifies that the package is genuinely configured rather than trusting an exit code, because the interesting failures can leave a kernel half-installed while every command reports success. What the results look like Current results are published publicly at docs.armbian.com/status/board-tests, refreshed as runs complete. What it actually catchesHere are few examples from recent runs. Reboots that hang on both kernelsOne board fails every reboot attempt on both of its kernel branches. The power trace shows the draw holding steady through what should have been a restart — the SoC never stopped executing. That points at firmware rather than the kernel, but the issue remains unresolved. It is also a good example of the console gap: that bench has no serial console, so the investigation is relying on power measurements and inference instead of a boot log. A test that was wrong about x86The frequency-scaling check assumed that a governor under load should reach at least 95% of the maximum advertised frequency. That works for ARM cpufreq, but not for Intel and AMD, where the driver manages turbo behaviour itself and the advertised maximum is not a promise. Every x86 board was therefore failing a test that was itself wrong. The test was fixed by detecting the driver and applying the check only where it makes sense. Telling a broken board from a broken runnerSelf-hosted runners occasionally drop mid-job: the test finishes green, then the job dies later and the run is marked failed. Retrying everything would be wrong. A board pipeline power-cycles hardware and takes about half an hour, so retrying a genuine failure wastes rack time and keeps cycling a board that may already be unwell. The retry logic therefore re-runs only jobs whose test step did not fail. A real hardware or test failure stays red rather than being hidden by an automatic retry. Where AI fitsAnd where it explicitly does not A large share of the tooling described here — the test modules, hardware control scripts, inventory reconciliation and documentation — is now written and maintained with AI assistance. That is worth being plain about, including the parts that go wrong. What AI is genuinely good at is shortening the distance from symptom to candidate explanation. A board fails; there is a transcript, a package state, a power trace, a kernel version and forty thousand lines of shell across several repositories. Correlating those quickly, proposing a mechanism and drafting a patch is work that used to take an evening and can now take a few minutes. What it is bad at is knowing when it is wrong. In the course of this work, an analysis confidently concluded that a particular board had never appeared in the test results. The conclusion came from a sample that covered about three-quarters of the archive and happened to miss both of that board's records. The reasoning was sound; the evidence was partial; nothing in the output said so. The pointAI shortens the distance from symptom to patch. It does not shorten the distance from patch to proof. Those are different problems, and only one of them has been made easier. That is precisely why the rack matters more now, not less. If proposing changes gets cheaper while validating them does not, the amount of unverified change grows faster than our ability to verify it. And the most dangerous bugs here are exactly the ones that compile cleanly, install without error, and fail only when a specific board is asked to come back from a power cut. A machine that is confidently wrong is a fine collaborator as long as something downstream can check it. Sixty-five boards that will actually try to boot are that something. So the working rule is simple: AI is free to propose anything, but nothing reaches a board on its say-so. Hardware evidence is the gate, and every conclusion that matters is expected to point at a run, a trace or a package state rather than an argument. What is next: validation at pull-request timeThe change we want to make Today the facility validates nightly builds. Whatever was published overnight gets installed on real hardware and exercised. That is genuinely useful, and it is how the bugs above were found, but it is validation after the fact. By the time a board fails, the change is already in the nightly repository and, depending on timing, already on users' machines. The goal is to move that gate earlier: a pull request that touches a board family gets that family's boards booted before it merges. Not the whole rack for every PR, just the boards the change can actually reach. Several things have to be true first, and they are worth stating honestly rather than as a roadmap of solved problems. SelectionA diff has to map to boards. A change to a board configuration file implicates that board; a change to a kernel family implicates every board in it; a change to the packaging code implicates everything. Select too broadly and every PR occupies the entire rack for half an hour. Select too narrowly and the one board that would have caught the regression never gets tested. ArtifactsA PR build currently proves a compile. Hardware testing needs installable packages the rack can pull and install exactly as a user would, which means PR builds must publish to an isolated repository the fleet can reach. Our current build machinery is already stretched by existing CI and release workloads. Making hardware testing part of routine PR validation will require additional build capacity, storage and package-publishing infrastructure. Time budgetA full board pipeline takes around thirty minutes. That is acceptable overnight and much too slow as a merge gate, particularly when a nightly cycle already has the rack. This needs a short profile for PRs: install, switch kernel, reboot warm and cold, and confirm it is running what was installed. Performance and throughput work can stay in the nightly run. It also needs real contention handling, so a PR does not simply queue behind a fleet cycle. RecoveryThis is the hard one, and it is a hardware problem rather than a software one. Testing unmerged code means occasionally installing a kernel that does not boot. Right now every bench in the rack is tested in place; there is no remote path to reflash a board whose boot is broken. A board that a bad PR bricks is a board that stays bricked until somebody walks to the rack. So PR-stage testing starts on benches that can be recovered remotely: SD-card switchers for boards that boot from removable media, and vendor recovery modes over USB for those that support it. Wiring that up across the fleet is the prerequisite that gates everything else, and it is where the next round of hardware effort goes. Boards that cannot be recovered remotely stay on nightly testing, where a failure is an inconvenience instead of a dead unit. Signal qualityA merge gate that fails for reasons unrelated to the change is worse than no gate: it trains people to ignore it. The distinction between a board failure and a broken bench, already important for nightly runs, becomes critical the moment a red result blocks a merge. HelpingInfrastructure, capacity, partnerships There are three practical ways to move this forward. Bench infrastructure. Remote recovery is the immediate blocker for PR-stage testing, particularly SD-card switchers and the wiring around them. The network also needs to grow with the hardware being tested: managed PoE switches with 2.5 GbE access ports and 10 GbE uplinks, plus PoE splitters for boards that cannot be powered directly over Ethernet. These are not just infrastructure upgrades; they expand what can be tested, measured and recovered without somebody standing in front of the rack. Build capacity. PR-stage hardware testing needs PR builds, and build queue time is already a constraint on how quickly a fix reaches hardware. More build capacity, storage and package-publishing infrastructure are needed to move validation from nightly runs into the pull-request workflow. If you can host a build server, the requirements are documented, and the current fleet is listed on the build machinery page. Hardware partnerships. For vendors, the facility provides a way to keep hardware under continuous validation rather than testing it once around release. Devices covered by support and maintenance agreements can become part of the permanent test fleet, where kernel updates, upgrades, reboots, networking and other regressions are exercised on real hardware as Armbian evolves. The value is not the board itself; it is keeping that board working over its supported lifetime. View the full article
  14. JetHome (Shenzhen JetHome Technology Co.) donated a build server for Armbian. The server compiles Armbian images, kernels and U-Boot packages. Thank you, JetHome. HW Specifications CPU 2 × Intel Xeon Gold 6148, 80 threads Memory 384 GB Storage 3.84 TB SSD, plus 20 TB of disk Network 2 × 1 Gbit/s, bonded Build runners 40 That is about a tenth of the fleet's capacity, running up to 3 kernel or 40 full image builds at once. The server also remembers work it has already done: Compiled code is reused. A rebuild takes under a minute instead of three.Software packages are downloaded once and shared by all 40 build jobs.Source code and ready-made parts, such as kernels, are fetched once and kept on the server.The fleet today18 build servers · 774 CPU threads · 322 build runners With 2371 GB of memory across x86-64 and ARM servers. Part of the fleet sleeps and powers up only when builds are waiting. Current build servers are sponsored by JetHome, the OSU Open Source Lab and netcup. Armbian members sponsor all other servers. See the live list on the build machinery page. We need more build servers!More servers mean more than more boards. We want faster CI, and more building and testing of every pull request, so community developers get feedback sooner and fixes reach users faster. Today the build queue is longer than it should be. Minimum Ideal CPU 16 cores 32 cores Memory 64 GB 128 GB Storage (NVMe) 512 GB 1 TB Upload 50 Mbit/s 1 Gbit/s Both x86-64 and arm64 help. The server runs only Armbian builds, and we credit your hosting on the build machinery page. Spare CPU cores and a fast uplink? Put them to work compiling Armbian for hundreds of boards. Donate build capacity View the full article
  15. Running Gemma 4 E2B on a Mali GPU with LiteRT-LMThis guide should work on any armbian minimal/console (trixie) system with a working Mali-g610 GPU. DO NOT USE DESKTOP Verified on: Orange Pi 5 Max (Rockchip RK3588, Arm Mali-G610 MC4), Armbian/Debian 13 (trixie), aarch64, 8 GB RAM. Status summary: Both CPU (XNNPACK) and GPU (WebGPU/Dawn → Vulkan → panvk → panthor) work on the mainline panthor kernel — numbers below. The GPU path needed one line of local patching in Mesa's panvk driver (raise maxImageDimension3D 512 → 2048 to meet the WebGPU minimums that LiteRT's Dawn library enforces; recipe in §5, rationale in §7.1). The model is multimodal (Text + Vision + Audio): the vision encoder runs on the same patched panvk via--vision-backend gpu (§5 "VL path" results). The vendor Rockchip libmali route and OpenCL remain unavailable on mainline panthor (§7.2, §7.3). Stack (as shipped): Gemma 4 E2B (.litertlm, int4) → LiteRT-LM CLI → LiteRT GPU accelerator (WebGPU/ML Drift) Dawn (WebGPU impl) → Vulkan → panvk → panthor (kernel) → Mali-G610 1. PrerequisitesARM (aarch64) Linux with a Mali GPU and at least 8 GB RAM.Armbian/Debian 13 (trixie)The panthor (or panfrost for older Mali) kernel driver active:ls /dev/dri/renderD128 # render node must exist lsmod | grep panthor # or panfrost / lima Full ARMv8.2-A dotprod support is required — LiteRT's ARM64 binaries are built with it and will SIGILL otherwise:lscpu | grep -w asimddp (both A55 and A76 cores list it here). 2. Install Mesa + Vulkan for Mali (needs root)sudo apt update # Prefer the newest Mesa (backports on Debian) for the best panvk coverage of Valhall CSF GPUs: sudo apt install -y -t trixie-backports mesa-vulkan-drivers libvulkan1 vulkan-tools # Optional (see §7 — currently yields NO usable OpenCL device on panthor): sudo apt install -y -t trixie-backports mesa-opencl-icd clinfo Verify the GPU is visible to Vulkan: vulkaninfo --summary | grep -iE "deviceName|driverName" # Expect: deviceName = Mali-G610 MC4 driverName = panvk 3. Install the LiteRT-LM CLI (user space, no root)curl -LsSf https://astral.sh/uv/install.sh | sh export PATH="$HOME/.local/bin:$PATH" uv tool install litert-lm # current: v0.17.x; incl. CPU (XNNPACK/YNNPACK) + GPU (WebGPU/Vulkan) backends 4. Get the model (Gemma 4 E2B, int4 .litertlm, 2.58 GB)mkdir -p ~/litert-lm-bench && cd ~/litert-lm-bench curl -L -o gemma-4-E2B-it.litertlm \ https://huggingface.co/litert-community/gemma-4-E2B-it-litert-lm/resolve/main/gemma-4-E2B-it.litertlm # or have the CLI fetch it for you: # litert-lm benchmark --from-huggingface-repo litert-community/gemma-4-E2B-it-litert-lm gemma-4-E2B-it.litertlm Other ready models: google/gemma-3n-E2B-it-litert-lm (gemma-3n-E2B-it-int4.litertlm),litert-community/gemma-4-E4B-it-litert-lm, ... (see litert-lm list / HF). 5. BenchmarkLock the CPU governor to performance first (fair, repeatable numbers): sudo sh -c 'for c in /sys/devices/system/cpu/cpu[0-7]/cpufreq/scaling_governor; do echo performance > $c; done' CPU baseline (XNNPACK, 8 threads): litert-lm benchmark ~/litert-lm-bench/gemma-4-E2B-it.litertlm \ -p 1024 -d 256 --backend cpu --cpu-thread-count 8 --cache disk --runs 2 GPU (patched panvk, §7.1). One-time local Mesa build — stays entirely in userland, the system Mesa is untouched: # 1) Mesa source + one-line patch (26.1.2) cd ~/litert-lm-bench curl -L -o mesa.tar.xz https://archive.mesa3d.org/mesa-26.1.2.tar.xz tar -xf mesa.tar.xz && cd mesa-26.1.2 python3 - <<'PY' p = 'src/panfrost/vulkan/panvk_vX_physical_device.c' s = open(p).read() s = s.replace('.maxImageDimension3D = PAN_ARCH <= 10 ? (1 << 9) : (1 << 14),', '.maxImageDimension3D = (1 << 11), /* 2048 — meets WebGPU min */') open(p, 'w').write(s) PY # 2) build deps (the LLVM/CLC chain is required — panvk bakes CLC-compiled SPIR-V for libpan) sudo apt install -y --no-install-recommends meson ninja-build pkg-config gcc g++ python3-mako \ python3-yaml python3-ply libdrm-dev llvm-19-dev libllvmspirvlib-19-dev spirv-tools \ libclang-19-dev libclang-cpp19-dev # 3) panvk-only build (~10–25 min on the 5 Max) meson setup build-panvk -Dvulkan-drivers=panfrost -Dgallium-drivers= -Dbuildtype=release \ -Dllvm=enabled -Dmesa-clc=auto -Dplatforms= -Degl=disabled -Dgbm=disabled -Dglx=disabled \ -Dopengl=false -Dglvnd=disabled -Dtools= -Dbuild-tests=false ninja -C build-panvk -j6 # 4) benchmark with the patched driver, process-scoped. First put the WebGPU prebuilts # (libLiteRtTopKWebGpuSampler.so + libwebgpu_dawn.so etc., litert-lm repo tag v0.17.1, # prebuilt/linux_arm64) in ~/litert-lm-bench/prebuilt_v0171/ — see Troubleshooting. export BUILD=~/litert-lm-bench/mesa-26.1.2/build-panvk export VK_ICD_FILENAMES="$BUILD/src/panfrost/vulkan/panfrost_devenv_icd.aarch64.json" export LD_LIBRARY_PATH="$BUILD/src/panfrost/vulkan:$HOME/litert-lm-bench/prebuilt_v0171" export PATH="$HOME/.local/bin:$PATH" # uv-installed CLI litert-lm benchmark ~/litert-lm-bench/gemma-4-E2B-it.litertlm \ -p 1024 -d 256 --backend gpu --cache disk --runs 2 First GPU run compiles the WebGPU/Vulkan shaders (one-time) and uploads GPU-rearranged weights (~0.8 GB weight cache); --cache disk persists both next to the model, so later loads start fast — the compile cost is NOT repaid on every run. Results on this Orange Pi 5 Max (Mali-G610 MC4) Backend Prefill (tk/s) Decode (tk/s) TTFT (s) CPU (XNNPACK, 8 threads) 123.6 12.3 8.4 GPU (WebGPU/Dawn→Vulkan, patched panvk §5/§7.1) 374.0 8.7 2.9 Google's on-device-class references for Gemma 4 E2B: S26 Ultra GPU 3808/52 tk/s, Raspberry Pi 5 CPU 133/7.6 tk/s. On this board the GPU wins the prefill race by ~3.0× (374 vs 124 tk/s) and TTFT by ~2.9× (2.9 vs 8.4 s), while decode stays on the CPU's side (8.7 vs 12.3 tk/s) — as expected, decode is the bottleneck on Mali-class hardware; the Mali GPU is a prefill/TTFT accelerator here, not a decode accelerator. GPU clock note (measured, no guesswork): the Mali-G610 is an integrated GPU sharing the board's DDR. The devfreq governor (simple_ondemand, stock) boosts it to 1 GHz under load and parks it at 200 MHz idle — confirmed by sampling cur_freq at 400 ms during the run (233/263 samples at 1000 MHz, temps 41→56 °C, no thermal trip). Leave the governor alone: forcingperformance/min/max via sysfs was counterproductive (idle readbacks that look like the clock collapsed, and it destabilized perfectly good runs). The numbers above are at the stock governor's real 1 GHz boost. Results: Gemma 4 E4B (4B) — text GPU via the web flavor, vision GPU straight from stockE4B (the 4B sibling) ships as three files in the HF repo: the stock gemma-4-E4B-it.litertlm (text+vision+audio, 3.66 GB) plus an -gpu and a -web (text-only, 2.97 GB) variant. On this 8 GB board the stock file cannot run on the GPU — two structural walls, both measured: panthor job watchdog: a fixed one-shot pipeline dispatch (dmesg: job timeout ... seqno=144, same job on every E4B attempt) exceeds the driver's compiled-in 1 s job timeout even at the real 1 GHz boost (E2B's equivalent is seqno=77 and fits). The GPU is reset, Dawn reports VK_ERROR_DEVICE_LOST, generation aborts. 8 GB RAM ceiling: GPU buffers (pinned, unrescalable shmem) peak near 4–5 GB on top of the 3.66 GB model; every run ended in a global OOM-kill (EXIT=137) during iteration 2 even with a 2048-token KV cap + ringbuffers + disk cache. The -web flavor dodges both — its finer op layout splits the killer dispatch under the 1 s bar and shrinks the GPU working set (peak 4.3 GB observed, holds 1 GHz the whole run): Gemma 4 E4B lane Flavor Prefill (tk/s) Decode (tk/s) TTFT (s) CPU (XNNPACK, 8 threads) stock 52.6 5.58 19.6 GPU (patched panvk) web (text-only) 75.1 4.54 13.9 (reproducible to the decimal across --runs 2; init 6.2 s; note --cache disk does not persist for the web flavor — expect a recompile each run. --speculative-decoding true gave no gain:4.37 vs 4.54 tok/s decode (this build ships no draft model).) Reference: Raspberry Pi 5 (16 GB, CPU) 51/3.2/20.5 — this board matches or beats it on every column. Same shape as E2B: GPU wins prefill +1.4× and TTFT 19.6→13.9 s, but decode stays CPU-favored (4.5 vs 5.6 tk/s). E4B vision (VL) on GPU works — cpu text + gpu visionThe stock E4B's vision encoder is a separate 1477-op subgraph that fits under the panthor watchdog and inside 8 GB even though the full stock model's text lane does not. Drive it via the Engine API (this repo's vl_bench.py --model ...), LLM lane = CPU, vision encoder = GPU (patched panvk): the test image (resized to 912×672 → 2394 patches, near E4B's max_num_patches 2520) is encoded on the Mali. E4B VL (LLM lane = cpu) vision cpu vision gpu (patched panvk) TTFT (s) 12.3–12.5 9.6 Decode (tok/s) 7.33–7.37 7.28–7.39 Reply (same image) "coyote walking on a dirt path" identical Text-only CPU control: TTFT ≈ 2.0 s (7-token prompt, decode ~7.8 tok/s). Isolated vision-encode cost: ~10.4 s CPU vs ~7.6 s GPU — the Mali cuts E4B vision latency by ~2.9 s/image (~27%). No watchdog hits, no OOM (peaks well below ceiling; vision weights are a fraction of a GB). Same conclusion as E2B: for vision work keep the LLM on CPU and let the GPU run the encoder. # 1. SET ENVIRONMENT FOR GPU VISION DELEGATE export LITERT_VISION_DELEGATE=gpu # 2. RUN VL HARNESS FOR STOCK GEMMA-4-E4B ~/.local/share/uv/tools/litert-lm/bin/python vl_bench.py \ --text cpu \ --vision gpu \ --image \ --iters 3 \ --model gemma-4-E4B-it.litertlm# Ensure directory exists and download model mkdir -p ~/litert-lm-bench curl -L -o ~/litert-lm-bench/gemma-4-E4B-it-web.litertlm \ https://huggingface.co/litert-community/gemma-4-E4B-it-litert-lm/resolve/main/gemma-4-E4B-it-web.litertlm # Execute benchmark with standard LiteRT-LM flags litert-lm benchmark ~/litert-lm-bench/gemma-4-E4B-it-web.litertlm \ --backend=gpu \ -p 1024 \ -d 256 \ --runs 2Results: VL (vision) pathThe benchmark sub-command only benches the text path. To time the vision encoder, drive the same engine via the Python API (vl_bench.py in this directory) — it loads the model, streams a real image (test_multi.jpg, httpbin.org/image/jpeg) + text through vision_backend=cpu|gpu and prints TTFT (vision encode + prefill + first token), per-chunk decode rate, and the reply. One sentence prompt, 13-token answer, ~290-token total prefill (280 vision + text), generations deterministic (temperature=0). Medians over 3+ runs after compile: Combo (text / vision) VL TTFT (s) Decode (tok/s) Reply matches CPU? cpu / cpu 8.93–9.40 17.4 baseline cpu / gpu (patched panvk) 6.16–6.62 17.2 yes, identical gpu / gpu (patched panvk) 5.62–6.16 9.8 yes, identical Text-only controls (7-token prompt): CPU TTFT ≈ 0.8 s, GPU TTFT ≈ 0.57 s. Isolating the vision cost (VL TTFT − text-only TTFT for the same text backend): ~8.1 s on a CPU vision encoder vs ~5.4 s GPU — the Mali GPU cuts vision-encoder latency by ~2.7–3 s per image (~30%), and the full-GPU combo is ~37% faster end-to-end (5.6 vs 8.9 s). The patched panvk covers the model's separate VISION_ENCODER subgraph too (no extra Dawn limits tripped). Caveat: for short generations (< ~20 tokens) GPU decode is slower than CPU (9.8 vs 17.4 tok/s) — per-iteration GPU sync overhead — so for chatty/VL replies the CPU text lane with GPU vision is often the best mix (6.2 s TTFT, CPU-fast decode). Benchmarking the VL path yourself# 1. FETCH SAMPLE TEST IMAGE curl -sL -o ~/litert-lm-bench/test_multi.jpg https://httpbin.org/image/jpeg # 2. SET PYTHON INTERPRETER PATH VL_PY=~/.local/share/uv/tools/litert-lm/bin/python # 3. BASELINE: TEXT (CPU) + VISION (CPU) $VL_PY ~/litert-lm-bench/vl_bench.py --text cpu --vision cpu --image --iters 3 # 4. HYBRID: TEXT (CPU) + VISION (GPU) — EXPORT PANVK MESA ENVS FIRST export BUILD=~/litert-lm-bench/mesa-26.1.2/build-panvk export VK_ICD_FILENAMES="$BUILD/src/panfrost/vulkan/panfrost_devenv_icd.aarch64.json" export LD_LIBRARY_PATH="$BUILD/src/panfrost/vulkan:$HOME/litert-lm-bench/prebuilt_v0171" $VL_PY ~/litert-lm-bench/vl_bench.py --text cpu --vision gpu --image --iters 3 # 5. FULL ACCELERATION: TEXT (GPU) + VISION (GPU) $VL_PY ~/litert-lm-bench/vl_bench.py --text gpu --vision gpu --image --iters 3 # 6. TEXT-ONLY CONTROLS (ISOLATE VISION-ENCODER COST) $VL_PY ~/litert-lm-bench/vl_bench.py --text cpu --iters 3 $VL_PY ~/litert-lm-bench/vl_bench.py --text gpu --iters 3 Prints per-iteration TTFT / decode tok/s / reply. Run cases sequentially — parallel GPU runs contend for the Mali GPU and inflate the numbers (observed 2× TTFT when two ran at once). 6. Inference# 1. DIRECT CLI EVALUATION litert-lm run ~/litert-lm-bench/gemma-4-E2B-it.litertlm \ --cache disk --prompt "What is the capital of France?" # 2. INTERACTIVE REPL MODE litert-lm run ~/litert-lm-bench/gemma-4-E2B-it.litertlm # 3. OPENAI-COMPATIBLE API SERVER litert-lm serve ~/litert-lm-bench/gemma-4-E2B-it.litertlm Vision (and audio) input uses run with attachments — one per --attachment, placed before the first user text (images and audio can be mixed): litert-lm run ~/litert-lm-bench/gemma-4-E2B-it.litertlm \ --attachment ~/litert-lm-bench/test_multi.jpg \ --prompt "What is in this image? Answer in one sentence." \ --vision-backend cpu # or gpu (patched panvk, §5) — ~2.7–3 s faster vision encode --vision-backend/--audio-backend pick the encoder lane independently of --backend (which chooses the LLM lane). Like --backend gpu, --vision-backend gpu needs the §5 env (VK_ICD_FILENAMES + LD_LIBRARY_PATH) exported for that run. Notes: --cache disk persists compiled artifacts next to the model — the first GPU load compiles shaders, later loads start instantly. The load time is NOT paid on every run. Observed caches: <model>_*_mldrift_program_cache.bin (compiled kernels) and<model>_*_mldrift_weight_cache.bin (GPU-rearranged weights, ~0.8 GB). The vision encoder's kernels live in the same cache files — first GPU --vision-backend gpu run compiles, later runs reuse. GPU (patched panvk) is ~2.8× faster at prefill and ~2.7× on TTFT, but ~30% slower at decode — pick the lane by workload (§7.4). Vision: --vision-backend gpu cuts vision-encode latency by ~2.7–3 s per image; CPU text + GPU vision is the best blend for short/chatty replies (§5 VL results). Speculative decoding (--speculative-decoding true) can lift decode on CPU+GPU for rewrite/summarize/coding style prompts (Gemma 4 E2B supports it). 7. GPU deep dive: the blocker and how it was unblocked hereEverything below was reproduced with LiteRT-LM v0.17.1 (CLI + litert-lm-api), Mesa 26.1.2 (trixie-backports), kernel 7.2.4-edge-rockchip64 (mainline panthor). 7.1 The panvk limit blocker — RESOLVED with a one-line local patchLiteRT's WebGPU accelerator uses Dawn, which enforces the WebGPU spec minimums against the Vulkan driver and refuses to proceed when they are unmet. Stock panvk reports: maxImageDimension3D = 512 # WebGPU spec requires ≥ 2048 Dawn logs exactly this (PhysicalDeviceVk.cpp:794: "Insufficient Vulkan limits for maxTextureDimension3D ... must be at least 2048"), and stock panvk then dies with a null-pointer dispatch (SIGSEGV, pc=0x0) inside the WebGPU path on the first real GPU execution. The root cause is the driver limit, not packaging: the crash is identical even with the WebGPU prebuilts (libLiteRtTopKWebGpuSampler.so + friends) fetched from the litert-lm repo prebuilt/linux_arm64 @ v0.17.1 on LD_LIBRARY_PATH. The fix (validated on this board): panvk caps 3D textures at 512 for Valhall (PAN_ARCH <= 10), but the Mali-G610 hardware handles 2048³ — raising the advertised limit to 2048 makes Dawn accept the adapter: -.maxImageDimension3D = PAN_ARCH <= 10 ? (1 << 9) : (1 << 14), +.maxImageDimension3D = (1 << 11), /* 2048 — meets WebGPU min (was 512 on arch <= 10) */ Why it's safe: Dawn only validates the advertised limit against its spec minimum, and the value also caps future image allocations — so if a kernel ever genuinely requested a 2048³ 3D texture, panvk would fail cleanly at allocation instead of corrupting anything. LiteRT/ML-Drift's LLM and vision-encoder kernels allocate buffers and 2D textures only, so real GPU behaviour is unchanged; Dawn simply stops rejecting the adapter, the SIGSEGV disappears, and the full benchmark runs (§5). Confirmed via vulkaninfo on the patched build: maxImageDimension3D = 2048. All other WebGPU minimums (per-stage descriptors, workgroup sizes, buffer ranges) were already comfortably met. The build is process-scoped (VK_ICD_FILENAMES + LD_LIBRARY_PATH per run), the system Mesa is never touched, and reverting is unsetting two variables. Unless/until Mesa raises this limit upstream for Valhall, keep this build around for LiteRT-LM GPU runs. 7.2 The vendor route (Rockchip libmali) — needs a different kernelRockchip's proprietary blob would satisfy Dawn (it exposes Vulkan 1.3 with full limits), but the blob's userspace talks to Rockchip's proprietary kbase kernel driver (/dev/mali) and cannot attach to the mainline panthor driver: "libmali-valhall-g610-g13p0-gbm" → loads, exports NO Vulkan ICD (0 vk_* symbols) "libmali-valhall-g610-g24p0-gbm" libMaliVulkan.so.1 (api 1.3.276) → loads, "No mali devices found" then SIGSEGV (no /dev/mali) Installable packages exist (tsukumijima/libmali-rockchip releases, e.g. v1.9-1-20260312-bd33ee2), but they all presume the vendor kernel. Unblock: flash a vendor-kernel image (kernel with kbase/mali.ko, e.g. Armbian images with the Rockchip BSP kernel), then install libmali-valhall-g610-g13p0-gbm (or g24p0) and point Dawn/Vulkan at it (VK_DRIVER_FILES/LD_LIBRARY_PATH). That same blob also provides OpenCL 3.0 (libMaliOpenCL.so + /etc/OpenCL/vendors/mali.icd), which would additionally satisfy the "would OpenCL be faster?" curiosity — for running LLMs, both WebGPU/Vulkan and OpenCL on the same GPU land in the same class of throughput; the win is the mature compiler's fast startup, not raw speed. 7.3 OpenCL on the current kernel — not availableMesa's rusticl on panthor currently exposes zero devices (clinfo -l shows only the rusticl platform, no device). So there is no OpenCL device at all on the mainline stack, and LiteRT-LM has no Linux OpenCL accelerator anyway. 7.4 Practical advice for this board todayChat / streaming (decode-bound): CPU is the better lane — 12.3 vs 8.7 tk/s decode.Long prompts / RAG / document Q&A (prefill-bound): GPU pays off — 345 vs 124 tk/s prefill, 3.1 vs 8.4 s TTFT.Images / VL: --vision-backend gpu cuts vision-encode latency by ~2.7–3 s (~30%). Shortest VL TTFT is text+vision both on GPU (5.6 vs 8.9 s all-CPU), but keep the LLM on CPU when replies are short and chatty (6.2 s TTFT plus CPU-fast decode). --speculative-decoding true can lift decode further on both lanes (Gemma 4 E2B supports it).Serving an OpenAI-compatible endpoint (litert-lm serve)litert-lm serve exposes an OpenAI API on 0.0.0.0:9379, so LAN clients (LiteCode, opencode, aider, Continue, scripts) use the board like any OpenAI endpoint. Import a model once (litert-lm import ./gemma-4-E2B-it.litertlm, registry at ~/.litert-lm/models/), then litert-lm serve. Per-model settings come from ~/.litert-lm/config.json (default + models.<id>), so clients stay plain-OpenAI: { "default": { "backend": "cpu", "cpu_thread_count": 8, "cache": "disk" }, "models": { "gemma-4-E2B-it.litertlm": { "speculative_decoding": true, "max_num_tokens": 4096 } } } Endpoints: GET /v1/models and POST /v1/chat/completions (streaming + non-streaming). OpenAI tools / tool_choice are bridged to the model's function-calling template — verified to return valid tool_calls JSON (non-streaming and streamed) and to complete the full agent cycle (assistant tool_call → tool result → final answer). /v1/embeddings exists but is not tied to LLM models. Even though litert-lm describe reports Supports Function Call: NO for Gemma 4, the serve layer still bridges tools into the model template (empirically verified); that flag only means the CLI's interactive run has no native FC template. RAM budget (E2B, CPU): max_num_tokens preallocates KV/ringbuffer arenas up front.Measured process RSS: 4096 → ~3.1 GB (4.9 GB free — recommended), 8192 → ~7 GB (1.1 GB free — works but leaves no headroom). Keep 4096 and let clients budget. Config keys (0.15+): backend, vision_backend, audio_backend, cpu_thread_count, cache, max_num_tokens, speculative_decoding, thinking, thinking_budget, gpu_decode_steps_per_sync, sampling. CLI flags override config. For a persistent border, run under systemd. Verified client on this boardLiteCode (razvanneculai/litecode) — works end-to-end. Its Planner ({"synthesis","tasks"} strict JSON) and Executor (raw file content, no fences) prompts fit the 4096 budget; single-request task runs completed correctly and files linter-clean. litecode.json: { "provider": { "baseURL": "http://<yourIP>:9379/v1", "apiKey": "", "model": "gemma-4-E2B-it.litertlm" }, "tokenLimit": 4096, "reservedOutputTokens": 1500, "systemPromptBudget": 1000, "maxParallelExecutors": 1 } TroubleshootingFATAL ERROR: This binary was compiled with dotprod enabled... → CPU lacks FEAT_DotProd, not supported by the ARM64 prebuilt wheels. RK3588 has it. GPU benchmark errors but CPU works → with stock Mesa this is the §7.1 Dawn limit crash (maxImageDimension3D = 512); with the patched build, check vulkaninfo --summary again — panvk must list the Mali device and report maxImageDimension3D = 2048. ExportVK_ICD_FILENAMES+LD_LIBRARY_PATH for every run that should use the patched driver. Could not load shared library libLiteRtTopKWebGpuSampler.so → the CLI wheel does not bundle the WebGPU samplers; fetch them from the litert-lm repo prebuilt/linux_arm64/ at the matching version tag (e.g. v0.17.1) and export their directory on LD_LIBRARY_PATH. First GPU run is slow (one-time kernel compilation) — normal; use --cache disk so later loads skip it. Caches persist next to the model. Bigger models (e.g. stock gemma-4-E4B-it.litertlm, 3.66 GB) fail on the GPU even with the patched driver: panthor ... job timeout in dmesg (fixed 1 s driver watchdog, not tunable; the model has a one-shot dispatch that exceeds it even at the real 1 GHz boost) theVK_ERROR_DEVICE_LOST, and/or a global OOM-kill (EXIT=137) when pinned GPU buffers + the model outgrow 8 GB. E2B fits, E4B-stock doesn't. Use the text-only -web flavor (gemma-4-E4B-it-web.litertlm, 2.97 GB) for E4B-on-GPU — its finer kernels stay under the watchdog and its GPU set peaks ~4.3 GB (§5 E4B section). Join the conversation on the Armbian Forum and let us know how it runs on your hardware! View the full article
  16. We’ll be in Frankfurt this Thursday for the AMD Embedded Computing Summit! See a live demo of our AI Magic Mirror for a touchless, real-time experience. View the full article
  17. This week's work centers on Rockchip platform maturation, kernel and toolchain modernization, and board-level enablement across vendors. Rockchip received the largest share of attention, with RK3528 gaining a thermal driver, cooling-map refinements, and cleanup of legacy PCIe and pmdomain workarounds. The Radxa E24C now stores its U-Boot environment in SPI flash and reads switch port MAC addresses from EEPROM, while device trees for the Mixtile Blade 3, Core3588E, and Edge 2 were corrected. New board support was added for the Boardcon SBC3568, and the Rock 5T now ships an edge kernel. On the configuration side, hyphenated LINUXFAMILY handling was fixed in both the kernel selector and firmware remap logic for the rk35xx family. Kernel and build infrastructure saw significant modernization. Mainline advanced to 7.3-rc5, several C23 build errors were resolved for D1 ATF, OpenSBI, and libbpf, and the default FRAME_WARN was restored on 64-bit configs. Deprecated patch directories for imx6 and the RK BSP 5.10 legacy kernel were retired, parallel patch queueing was optimized, and kernel-debs postinst ordering was hardened for DKMS safety. CI switched to remote ccache only, and ATF builds now honor USE_CCACHE correctly. Board-level enablement spanned multiple vendors. ODROID-HC4 gained PCIe suspend, Wake-on-LAN, and RTC alarm support, along with a usable SPI NOR and SD card power-down. ODROID-XU4 was bumped from 6.15 to 7.2 on edge, the Amlogic C400 Plus received SD-boot and Wi-Fi profile fixes, and the Raspberry Pi 4B added support for Waveshare and Raspberry touchscreen v2 panels. The MorseMicro DKMS project also matured substantially with split MM6108/MM8108 packages, Linux 7.1 API compatibility, and initial NetworkManager udev integration. #Armbian #EmbeddedLinux #Rockchip #Kernel #SBC ChangesActions: Test DKMS module against many kernels. by @vidplace7 in armbian/MorseMicro-DKMS#16Actions: Update to Ubuntu 26.04. by @vidplace7 in armbian/MorseMicro-DKMS#10arm64: dts: rockchip: add Boardcon SBC3568 support. by @boardcon-arm in armbian/linux-rockchip#562arm64: dts: rockchip: fix the Mixtile Blade 3, Core3588E and Edge 2 device trees. by @evtest-hash in armbian/linux-rockchip#556arm64: dts: rockchip: rk3528: drop pcie2x1 skip-reset-in-config. by @rpardini in armbian/linux-rockchip#552armbian_firmware: apply RK3588 family remap for BOARDFAMILY=rk35xx too. by @igorpecovnik in armbian/configng#1030armbian_firmware: fix kernel selector truncating hyphenated LINUXFAMILY. by @igorpecovnik in armbian/configng#1028artifacts: hash compile_crust into the u-boot artifact version. by @iav in armbian/build#10829atf: fix C23 build errors for D1 (OpenSBI). by @khaliforce in armbian/build#10772bcm2711: don't wipe the firmware kernel when removing one of several kernels. by @igorpecovnik in armbian/build#10783board-tests: sections + right-hand TOC, no collapsed cards. by @igorpecovnik in armbian/documentation#1343board: ztl-a568: enable OTG connector VBUS switch. by @yanhy2000 in armbian/build#10823boards: aml-c400-plus: fix SD card booting capability, QCA9377 profiles and blacklist simpledrm. by @jomadeto in armbian/build#10793bootscripts: rk35xx: fall back to PARTUUID instead of hardcoded rootdev. by @akshar27 in armbian/build#10622ci: use remote ccache only, drop the duplicate local cache. by @igorpecovnik in armbian/ci#77cleanup deprecated kernel patch directories. by @EvilOlaf in armbian/build#10810cli: obtain host release and arch for config-only artifact dumps. by @iav in armbian/build#10485compilation: add compile-wrapper and ATF/Crust make hooks. by @iav in armbian/build#10828deprecate rk bsp 5.10 "legacy" kernel. by @EvilOlaf in armbian/build#10811docs: widen the content column 25%, site-wide. by @igorpecovnik in armbian/documentation#1342drm: rockchip: dw_hdmi_qp: support inverted HDMI HPD. by @evtest-hash in armbian/linux-rockchip#559env_init: fix KERNELPKG_LINUXFAMILY truncating hyphenated family. by @igorpecovnik in armbian/configng#1029extensions: arm64-compat-vdso: do nothing on non-arm64 targets. by @iav in armbian/build#10809extensions: gxlimg: cleanups, better logging, debugging. by @rpardini in armbian/build#10769external: add ZFS for resolute from arter97 PPA. by @igorpecovnik in armbian/os#490external: pull the Raspberry Pi archive suite that matches the release. by @igorpecovnik in armbian/os#491Fix build against Linux 7.0 by updating kernel API usage to match 7.1. by @vidplace7 in armbian/MorseMicro-DKMS#17Fix Documentation references in systemd unit files for hostapd and wpa_supplicant. by @vidplace7 in armbian/MorseMicro-DKMS#14fix(atf): honour USE_CCACHE; no leading space when CCACHE is empty. by @iav in armbian/build#10820imx6: drop abandoned patch dirs for 6.1, 6.6 and 6.10. by @EvilOlaf in armbian/build#10795Initial usage docs + udev rules for NM. by @vidplace7 in armbian/MorseMicro-DKMS#15inovato-quadra: force an explicit HDMI mode for the switch-fed port. by @igorpecovnik in armbian/build#10800kernel-debs: copy the kernel into FAT32 /boot, and give FAT32 /boot room for it. by @igorpecovnik in armbian/build#10801kernel-debs: run header_postinst.d from linux-headers postinst (DKMS order-safety). by @igorpecovnik in armbian/build#10775kernel: 7.3: fix false test_fortify failures with colored diagnostics. by @iav in armbian/build#10805kernel: drop NETFILTER_NETLINK from the forced module list. by @iav in armbian/build#10808kernel: fix C23 build errors for libbpf in D1. by @khaliforce in armbian/build#10773kernel: use the default FRAME_WARN (2048) on 64-bit configs. by @iav in armbian/build#10821mainline: bump to 7.3-rc4. by @EvilOlaf in armbian/build#10785mainline: bump to v7.3-rc5. by @EvilOlaf in armbian/build#10841meson64-6.18: fix broken patch with upstream changes, general patch maintenance. by @EvilOlaf in armbian/build#10786meson64: 7.2, 7.3: HEVC decoder patch: fallthrough keyword, source. by @iav in armbian/build#10807meson64: new tm16xx driver; aml-t95z-plus: bump & fixes. by @rpardini in armbian/build#10814meson64: odroid c4/hc4: let the SD card be powered down. by @iav in armbian/build#10781meson64: odroidhc4: make the SPI NOR usable — mux HOLD#/WP#, clock it at 40 MHz. by @iav in armbian/build#10779meson64: sleep and wake on ODROID-HC4 - PCIe, Wake-on-Lan and the RTC alarm. by @iav in armbian/build#10740milkv-duos: make the MAC addresses truly stable. by @lukaszsobala in armbian/build#10778MorseMicro 2.1.0. by @vidplace7 in armbian/MorseMicro-DKMS#11mvebu: CPU bugfixes. by @neheb in armbian/build#10789net: stmmac: don't claim IFF_UNICAST_FLT without address registers. by @rpardini in armbian/linux-rockchip#551odroidxu4: bump edge kernel 6.15 → 7.2 (validated on HC1). by @igorpecovnik in armbian/build#10796odroidxu4: name on-board ethernet end0 via device tree. by @igorpecovnik in armbian/build#10831parallel-patches: optimize chain queue to start from largest set. by @EvilOlaf in armbian/build#10818patching: keep the b4 footer after the diff out of the diff. by @iav in armbian/build#10806radxa-e24c: u-boot: environment in SPI Flash. by @rpardini in armbian/build#10836Remove D-Bus integration from wpa-supplicant-s1g and update service configs. by @vidplace7 in armbian/MorseMicro-DKMS#13rewrite various patches. by @EvilOlaf in armbian/build#10830rock-5t: build and publish an edge kernel. by @igorpecovnik in armbian/build#10824rockchip64-7.2: radxa-e24c: read ethernet switch ports MAC from EEPROM. by @rpardini in armbian/build#10817rockchip64-7.2: rk3528: add thermal driver. by @rpardini in armbian/build#10816rockchip64-7.2: rk3528: drop "pmdomain/rockchip: skip domains returning -EPROBE_DEFER". by @rpardini in armbian/build#10815rockchip64-7.2: rk3528: thermal: cooling-map on the first passive trip. by @rpardini in armbian/build#10837rockchip64-7.3: fix warnings from overlay-configfs, rk3328-dmc and hdmi-clock patches. by @iav in armbian/build#10822rockchip64: fix u-boot builds for 9tripod-x3568-v4 and graperain-g3568-v2. by @igorpecovnik in armbian/build#10825rpi4b: add support for waveshare and Raspberry touchscreen v2. by @EvilOlaf in armbian/build#10784runner-cleanup: don't wipe _diag under a busy runner. by @igorpecovnik in armbian/configng#1035seeed-extension: don't fetch external repo during config-dump-json (fixes matrix race). by @igorpecovnik in armbian/build#10763Split MM6108 / MM8108 packages. by @vidplace7 in armbian/MorseMicro-DKMS#9star64: change KERNEL_TARGET to the last available "vendor". by @EvilOlaf in armbian/build#10794sun55i-a523 fix/restore delays on the network adapters. by @juanesf in armbian/build#10804sunxi-6.18: current: fix stk3310 patches causing breakage. by @EvilOlaf in armbian/build#10787Sync from mainline for 9tripod-x3568-v4 and graperin-g3568-v2. by @rbqvq in armbian/build#10819system: add tuning profiles for the machine's actual role. by @igorpecovnik in armbian/configng#1033uefi-x86: refresh applesmc drvdata patch for the workqueue-leak fix. by @igorpecovnik in armbian/build#10791Update hostap_s1g and mm6108/mm8108 driver DKMS configurations. by @vidplace7 in armbian/MorseMicro-DKMS#12Automatic refresh repository README. by @igorpecovnik in armbian/documentation#1196Automatic refresh repository README. by @igorpecovnik in armbian/shallow#12View the full article
  18. The annual X.Org Developer's Conference returns to Toronto September 28-30, and as a Gold Sponsor, Collabora's graphics team will present six talks and a workshop spanning Vulkan and Open Source GPU drivers. View the full article
  19. This cycle centers on expanded board and SoC support, kernel maintenance across sunxi, rockchip, and sophgo families, and infrastructure refinements to installer, extensions, and CI tooling. New platform enablement covers a broad range of vendors and architectures. Notable additions include the EmbedFire LubanCat 3 v2 and Seeed reComputer RK3576 devkits, the TQ-Systems MBa62xx/MBa67xx TI K3 boards, the Tanix TX6s (Allwinner H616), and the ZTL A568 (RK3568). The Allwinner A733 line advances with a full HDMI display pipeline (DE33/RCQ), PCIe/NVMe, and U-Boot 2026.07 integration for sun55iw3, while the Sophgo SG200x family bumps edge to 7.2, gains TPU support for the Milk-V Duo S, and doubles the /boot partition to 256 MB. Kernel work spans multiple maintenance streams. The sunxi 6.18 and 7.2 patch sets were rewritten against upstream changes, with fixes for a sun8i_thermal NULL-caldata Oops that also resolves a reboot hang, and a correction for H616/H618 analog LINEOUT playing at half speed. Rockchip receives an RK3588 SDMMC fix for bus-width > 1, plymouth and ttyGS0 gadget console improvements on RK35xx, and Radxa E24C network fixes. Amlogic meson64 gains GPIO wakeup sources, PCIe port service requirements, and a rebased MPS series, while the cix-6.18 sky1 PDC driver was converted to the new syscore API. Tooling and distribution changes improve reliability and lifecycle handling. A new backward-compatible switch-alias mechanism formalizes deprecation, armbian-install gains an "spi" mode for self-contained boot on NVMe, SATA, or USB, and armbian_firmware now installs linux-headers before linux-image to satisfy first-pass DKMS. GitHub release lookups are checked and authenticated with GITHUB_TOKEN propagated through CI, kernel-deb postinst symlinks are made resilient to hook failures, and download-external mirrors only the newest version of each package to reduce archive bloat. #Armbian #EmbeddedLinux #Rockchip #Allwinner #KernelDevelopment Changesa bunch of cosmetics across board configs, and removed outdated readmes. by @EvilOlaf in armbian/build#10764Add board image for Tanix TX6s. by @lagosproject in armbian/armbian.github.io#451Add Boardcon SBC3568 board assets. by @boardcon-arm in armbian/armbian.github.io#456Add EmbedFire LubanCat 3 v2 (RK3576) support. by @hqnicolas in armbian/build#10689add overlay to restore orangepi 5 pro fan params.. by @eebssk1 in armbian/build#10737arm64: dts: rockchip: bunch of Radxa E24C network fixes. by @rpardini in armbian/linux-rockchip#553armbian-install: add "spi" mode for self-contained boot on NVMe/SATA/USB. by @igorpecovnik in armbian/configng#1024armbian_firmware: don't silently swallow old-kernel purge failures on switch. by @igorpecovnik in armbian/configng#1025armbian_firmware: install linux-headers before linux-image (first-pass DKMS). by @igorpecovnik in armbian/configng#1026armbian_firmware: resolve RK3588 kernel family by branch on install. by @igorpecovnik in armbian/configng#1027bcm2711: enable the serial console by default on Raspberry Pi. by @igorpecovnik in armbian/build#10726board assets: add ZTL A568 image and vendor logo. by @yanhy2000 in armbian/armbian.github.io#464board-images: add mba62xx/mba67xx board images. by @schmiedelm in armbian/armbian.github.io#457board: add reComputer RK3576 Module Dev Kit support. by @Lesords in armbian/build#10693board: add ZTL A568 (DC_A568, RK3568). by @yanhy2000 in armbian/build#10761Board: fix u-boot mainline for JP-Tvbox Rk3566. by @hqnicolas in armbian/build#10752board: name Lyra Ultra and Ultra W together. by @stevenjoezhang in armbian/build#10754board: nanopi-r28s: remove obsolete Bluetooth workaround. by @wukibaka in armbian/build#10753boards: add MBa62xx and MBa67xx (TQ-Systems TI K3 boards). by @schmiedelm in armbian/build#10724bsp: end hdmi-hotplug and sheng-ucm-init.sh with a newline. by @iav in armbian/build#10758ci: pass GITHUB_TOKEN into the build so release lookups authenticate. by @igorpecovnik in armbian/ci#76cix-6.18: convert sky1 PDC driver to the new syscore API. by @igorpecovnik in armbian/build#10715cix-6.18: rebase SCMI ACPI patch onto 6.18.52. by @igorpecovnik in armbian/build#10706cloud-init: stop persisting zram swap into /etc/fstab (slow cloud boot). by @igorpecovnik in armbian/build#10324deprecations: backward-compatible switch-alias mechanism. by @igorpecovnik in armbian/build#10525Disable fast for mba62xx and exclude mba62xx/mba67xx from stable builds. by @schmiedelm in armbian/armbian.github.io#459docs(contribute): ask for build servers, the way we ask for mirrors. by @igorpecovnik in armbian/documentation#1291docs(contribute): modernize the automation page. by @igorpecovnik in armbian/documentation#1261docs(datacenter): describe what the lab can actually do. by @igorpecovnik in armbian/documentation#1241download-external: mirror only the newest version of each package. by @igorpecovnik in armbian/armbian.github.io#463extensions: add seeed-extension wrapper pinning Seeed's external repo. by @Mkiring in armbian/build#10698extensions: add uboot-mainline-mmc-env-storage. by @rpardini in armbian/build#10658extensions: make the GitHub release lookup checked and authenticated. by @igorpecovnik in armbian/build#10720external: drop armhf where upstream no longer builds it. by @igorpecovnik in armbian/os#488external: drop the $Version floors from aptly GLOBs. by @igorpecovnik in armbian/os#489families: don't call display_alert in write_uboot_platform (runs on target). by @igorpecovnik in armbian/build#10765feat(board): add Tanix TX6s (Allwinner H616 with AXP305 PMIC). by @lagosproject in armbian/build#10699feat: Add Seeed Studio reComputer RK3576 Module devkit dts. by @Lesords in armbian/linux-rockchip#550firstlogin: start the setup on the console where Enter is pressed. by @enthropy7 in armbian/build#10716github_latest_release_tag: say whether the lookup was authenticated. by @igorpecovnik in armbian/build#10762i18n: add Greek (el) and Serbian Cyrillic (sr) translations. by @igorpecovnik in armbian/imager#169kernel-debs: relink /boot kernel symlinks even when postinst.d hooks fail. by @igorpecovnik in armbian/build#10766kernel/sc8280xp-edge: fix QPS615 (TC956x) never linking at 1G on Radxa Dragon Q8B. by @yuskesh in armbian/build#10683kernel: rtc-pcf8563: fix oops on the first alarm interrupt. by @iav in armbian/build#10729lint-scripts: name files shfmt flags without a hunk. by @iav in armbian/build#10759mainline: bump to v7.3-rc3. by @EvilOlaf in armbian/build#10700meson64: allow GPIO interrupts to act as wakeup sources. by @iav in armbian/build#10738meson64: move the pending MPS series from v7 to v9. by @iav in armbian/build#10743meson64: require the PCIe port services on boards that have PCIe. by @iav in armbian/build#10739meson64_common: uboot_gxl_postprocess_ng: run aml_encrypt_gxl under run_host_x86_binary_logged. by @rpardini in armbian/build#10755mvebu, spacemit: drop patches that landed upstream, fix K3 xsk call. by @igorpecovnik in armbian/build#10709mvebu: alternate implementation of WoL. by @neheb in armbian/build#10595mvebu: gpio and mmc backports. by @neheb in armbian/build#10730odroidhc4: let the ethernet PHY wake the board. by @iav in armbian/build#10741profile: lead with what to do next. by @igorpecovnik in armbian/.github#2python: pylibfdt: drop fork, use upstream release 1.7.2-2 with swig 4.4.x. by @rpardini in armbian/build#10756qcs6490: enable CONFIG_HIDRAW. by @cfarley137 in armbian/build#10736radxa-cubie-a5e: u-boot: fall back to alternative DRAM parameters. by @Guation in armbian/build#10694readme workflow: open PRs as armbianworker, not a person. by @igorpecovnik in armbian/armbian.github.io#454release-targets: blacklist xiaomi-sheng from community builds. by @igorpecovnik in armbian/armbian.github.io#462release-targets: fix the delimiter on two dead extension-map entries. by @igorpecovnik in armbian/armbian.github.io#465Remove 'odroidc2' from targets-release-nightly blacklist. by @igorpecovnik in armbian/armbian.github.io#461remove experimental status for PARALLEL_PATCHES. by @EvilOlaf in armbian/documentation#1260Remove sk-am62-lp from blacklist and add uefi-loong64. by @igorpecovnik in armbian/armbian.github.io#453reorder contributors. by @EvilOlaf in armbian/documentation#1250rewrite sunxi 6.18 and 7.2 patches. by @EvilOlaf in armbian/build#10768rk35xx vendor: enable CONFIG_LED_TRIGGER_PHY. by @rpardini in armbian/build#10757rk35xx: bound plymouth-quit-wait to fix headless boot deadlock. by @Mkiring in armbian/build#10719rk35xx: enable ttyGS0 gadget serial console with clean first connect. by @Mkiring in armbian/build#10697rockchip64: rk3399: keep the watchdog from resetting the board in sleep. by @iav in armbian/build#10705soc: rockchip: grf: Fix SDMMC not working on RK3588 with bus-width > 1. by @evtest-hash in armbian/linux-rockchip#554sophgo-sg200x-7.2: drop DMA compatible patch, it is upstream. by @igorpecovnik in armbian/build#10710sophgo-sg200x: add TPU support for the Milk-V Duo S (mainline port of the vendor driver). by @leafpmpmp in armbian/build#10760sophgo-sg200x: bump edge to 7.2 and bleedingedge to 7.3, fix SDHCI clocks, run Duo S eMMC at HS200. by @lukaszsobala in armbian/build#10714sophgo-sg200x: increase the /boot partition size from 128 MB to 256 MB. by @lukaszsobala in armbian/build#10751SpacemiT K3: Update OpenSBI / U-Boot to k3-br-v1.0.8. by @pyavitz in armbian/build#10742sun55iw3: HDMI display pipeline (DE33/RCQ), PCIe/NVMe on U-Boot 2026.07 and board support. by @juanesf in armbian/build#10587sun60iw2/orangepizero3w: fix GPU 600MHz clock cap (PowerVR, 1008MHz + matching voltage). by @davidhfrankelcodes in armbian/build#10702sun60iw2: drop dead pd_gpu_core_test override from cubie-a7z DTS. by @igorpecovnik in armbian/build#10747sun60iw2: fix cubie-a7z patch broken by upstream dtb Makefile change. by @igorpecovnik in armbian/build#10744sun60iw2: re-anchor the GPU clk_rate hunk below the power-domains line. by @igorpecovnik in armbian/build#10771sunxi-6.12: resync three patches with 6.12.110. by @igorpecovnik in armbian/build#10711sunxi-6.18: drop upstreamed patch and rewrite the rest. by @EvilOlaf in armbian/build#10704sunxi-6.18: fix sun8i_thermal NULL-caldata Oops (also fixes reboot hang). by @trueell in armbian/build#10727sunxi-7.2: adjust patches to compensate upstream changes in 7.2.6. by @EvilOlaf in armbian/build#10703sunxi-7.2: fix sun8i_thermal NULL-caldata Oops (also fixes reboot hang). by @trueell in armbian/build#10728sunxi64-edge: rewrite kernel config against 7.2.6. by @EvilOlaf in armbian/build#10767sunxi: fix H616/H618 analog LINEOUT playing at half speed after HDMI clock fix. by @vdju in armbian/build#10745sunxi: mellowflyc5: prefer SD card over eMMC in U-Boot boot order. by @deece in armbian/build#10749switches: document backward-compatible switch renaming (deprecation aliases). by @igorpecovnik in armbian/documentation#1251tanix-tx6s: fix u-boot build hang — add missing CONFIG_DRAM_SUNXI_TPR6. by @igorpecovnik in armbian/build#10748targets-extensions: enable seeed-extension for reComputer boards. by @Mkiring in armbian/armbian.github.io#452u-boot: aml-c400-plus: clean up defconfig, correct DTSI naming and fi…. by @jomadeto in armbian/build#10750uefidt: bump edge to 7.2. by @amazingfate in armbian/build#10734wireless: fix Realtek USB drivers against 6.6.157. by @igorpecovnik in armbian/build#10708Automatic refresh repository README. by @igorpecovnik in armbian/actions#41Automatic refresh repository README. by @igorpecovnik in armbian/ci#72Automatic refresh repository README. by @igorpecovnik in armbian/distribution#15View the full article
  20. Next week we'll be in Paris for Kernel Recipes! We’re pleased to sponsor this gathering of the kernel community and contribute a talk on upstream H.264 and HEVC decoding for Rockchip RK3588/RK3576. View the full article
  21. Visit us at the STMicroelectronics booth at SIDO to see how the STM32MP2 platform enables responsive edge-AI applications for industrial use cases. View the full article
  22. This week's work centers on new board and SoC enablement, a broad wireless driver and firmware overhaul, and continued kernel, boot, and installer refinements. Board support expanded on multiple fronts. A new RK3562 family was introduced alongside the KICKPI K3B with mainline U-Boot and Linux, and mainline 7.2 bring-up landed for the S5P6818 platform covering NanoPC-T3+, NanoPi M3, and Fire3. The FriendlyELEC NanoPi R28S, Wildfire Lubancat 3 v2, OrangePi CM5 Base edition, and SpacemiT Musebook (current branch) were added, while the Mixtile Edge2 and Blade 3, Orange Pi 5 Max/Ultra, and Banana Pi M2 Ultra received targeted fixes for Bluetooth, eMMC, Ethernet, and thermal behavior. Wireless support saw substantial cleanup and expansion. The rtl8723ds driver underwent an extensive warning-elimination pass — addressing -Wmissing-prototypes, -Wempty-body, -Wmaybe-uninitialized, -Wrestrict, and -Warray-bounds findings — with parallel improvements to rtl8189es/fs, rtl8192eu, rtl8852bs, and uwe5622. Firmware additions include MT7986 Wi-Fi and Airoha EN8811H blobs, AIC8800 D80 SDIO names, and AP6212 NVRAM for S5P6818 boards, complemented by Bluetooth and 5 GHz Wi-Fi fixes on Rockchip and AYN Odin 2 targets. On the platform side, the mainline kernel was bumped to 7.3-rc2, a critical stmmac resume-ordering backport restores Ethernet after suspend on RK3588, and sunxi 6.18 and 7.2 gained fixes for eMMC boot hangs and post-reboot Ethernet loss. The installer engine now supports extlinux boards and native USB/NVMe boot on RPi-style hardware, zram-config was corrected for modern kernels, and BSP changes make SSH host key regeneration power-loss safe. Build infrastructure improvements include ORAS gitball use for U-Boot, better shallow-export handling during merge windows, and expanded CI coverage. #Armbian #EmbeddedLinux #Rockchip #SBC #KernelDevelopment ChangesAdd board image for lubancat-3-v2. by @igorpecovnik in armbian/armbian.github.io#450Add board-images/bananapir3mini.png. by @igorpecovnik in armbian/armbian.github.io#445Add CI to build kernel module on chance. by @EvilOlaf in armbian/wifi-rtl8852bs#29add watchdog for failed workflows. by @EvilOlaf in armbian/wifi-rtl8852bs#30aic8800: add generic D80 SDIO firmware names. by @sormy in armbian/firmware#138aml-c400-plus: fix boot chain migration and resolve OverlayFS CI failure. by @jomadeto in armbian/build#10682aml-c400-plus: migrate to modern U-Boot v2026.07 and improve boot chain. by @jomadeto in armbian/build#10548arm64: dts: rockchip: add FriendlyELEC NanoPi R28S. by @wukibaka in armbian/linux-rockchip#542arm64: dts: rockchip: add Wildfire Lubancat 3 v2. by @hqnicolas in armbian/linux-rockchip#549arm64: dts: rockchip: mixtile-edge2: fix Bluetooth wake GPIOs and enable eMMC HS400ES. by @evtest-hash in armbian/linux-rockchip#544armbian-install: sd mode on RPi-style boards, + native (full USB/NVMe boot). by @igorpecovnik in armbian/configng#1021Ayn Odin 2: add SDL gamepad mappings. by @Clownacy in armbian/build#10681AYN Odin2 updates. Edge kernel to 7.2.3, fixing 5GHz wifi not working. by @kasimling in armbian/build#10625BACKPORT rkr5.1: ARM: dts: rockchip: rk3502: add 2M alignment for CMA address. by @vidplace7 in armbian/linux-rockchip#543be nicer to git upstreams; use ORAS gitball for u-boot as well as kernel. by @rpardini in armbian/build#10655board images: add a minimum object size, re-crop the 32 images outside the bounds. by @igorpecovnik in armbian/armbian.github.io#442board-images: add NanoPC-T3/T3 Plus and NanoPi Fire3/M3 renders. by @igorpecovnik in armbian/armbian.github.io#443board-images: add reComputer RK3576 Module Dev Kit. by @Lesords in armbian/armbian.github.io#449board: add FriendlyELEC NanoPi R28S. by @wukibaka in armbian/build#10601brcm: add AP6212 (BCM43430) NVRAM for FriendlyARM S5P6818 boards. by @igorpecovnik in armbian/firmware#140bsp: survive power loss during SSH host key regeneration. by @Mkiring in armbian/build#10696cfg80211: keep the ndev alias alive for the wdev-based ops (fix the CONFIG_RTW_DEBUG=y build). by @iav in armbian/rtl8723ds#24ci(unit-tests): post-merge dispatch runs the tests the merge changed. by @igorpecovnik in armbian/configng#1006ci: auto-label PRs "Work in progress" from review state. by @igorpecovnik in armbian/build#10294Declare the last two undeclared functions (-Wmissing-prototypes 2 -> 0). by @iav in armbian/rtl8723ds#23desktops/xmonad: run the session under GNOME Flashback, add autostart. by @igorpecovnik in armbian/configng#1019docs(contribute): add S5P6818 as a new-board(-family) example. by @igorpecovnik in armbian/documentation#1208docs: publish software category hubs at /software//. by @igorpecovnik in armbian/configng#1020docs: retire the /User-Guide_Armbian-Software/ URLs. by @igorpecovnik in armbian/documentation#1202download-images-report: do not flag virtual boards as non-standard. by @igorpecovnik in armbian/documentation#1217download-images-report: drop the virtual boards listing. by @igorpecovnik in armbian/documentation#1219Draw dialog borders with Unicode box characters. by @iav in armbian/configng#1016Extension Brostrend-AIC8800: skip for kernel > 7.2. by @Shadowrom2020 in armbian/build#10652firmware: refresh the apt index before the repository madison check. by @igorpecovnik in armbian/configng#1022firstlogin: prefer the GNOME Flashback xmonad session when it can start. by @igorpecovnik in armbian/build#10663Fix -Wempty-body (114 -> 0). by @iav in armbian/rtl8723ds#11Fix -Wformat-truncation in the 8723D coex debug output (13 -> 0). by @igorpecovnik in armbian/rtl8723ds#21Fix -Wmaybe-uninitialized in the proc write handlers (36 -> 0). by @iav in armbian/rtl8723ds#13Fix -Wrestrict (58 -> 0). by @iav in armbian/rtl8723ds#12Fix clang warnings: -Wmissing-prototypes (330 → 2) and mismatched header guards. by @iav in armbian/rtl8723ds#6fix shallow export during merge window, rework mirrors across retries. by @rpardini in armbian/shallow#13fix sunxi edge build and patch maint. by @EvilOlaf in armbian/build#10664Fix two clang findings: dead recv-frame helpers, inverted HT/VHT test in phydm_debug. by @iav in armbian/rtl8723ds#17fix(autoconfig): add missing Wi-Fi country codes. by @hlhc in armbian/imager#190fix(rockchip64): fix Bluetooth on Orange Pi 5 Max and Ultra. by @fbernier in armbian/build#10673fix(rockchip64): remove conflicting rfkill node on orangepi-5-max. by @fbernier in armbian/build#10667generate_targets: classify S5P6818 as slow HW (XFCE, not GNOME). by @igorpecovnik in armbian/armbian.github.io#448gl-mt2500-v2: stop shipping Airoha firmware in the BSP. by @igorpecovnik in armbian/build#10686gnome: add gnome-tweaks and libopengl0 to minimal tier. by @igorpecovnik in armbian/configng#929helios64: fix stray /thermal_zone0 symlink. by @iav in armbian/build#10640images: generate /etc/armbian-release so repository switching works. by @igorpecovnik in armbian/docker-armbian-build#42Import two long-carried armbian/build patches, with authorship. by @iav in armbian/rtl8723ds#7initial introduction of OrangePi-CM5-Base edition. by @ECO1AI in armbian/build#10643install engine: read the partition table without opening the disk for writing. by @iav in armbian/configng#1017install-engine: support extlinux boards when repointing root. by @igorpecovnik in armbian/configng#985Introduce RK3562 family and KICKPI K3B (mainline U-Boot and mainline Linux). by @retro98boy in armbian/build#10613Introduce xiaomi-sheng-thp to fix touch issues. by @code002-2 in armbian/build#10631Keep the log arguments referenced when CONFIG_RTW_DEBUG is off. by @iav in armbian/wifi-rtl8852bs#27luckfox-rk3308b-nova: use bootph-all for the SPL console. by @crackerjacques in armbian/build#10688mainline: bump to 7.3-rc2. by @EvilOlaf in armbian/build#10661maintenance-private-packages: also render the table on the run summary. by @igorpecovnik in armbian/ci#68mediatek: add MT7986 Wi-Fi and Airoha EN8811H firmware. by @SuperKali in armbian/firmware#141menu: draw dialog borders with Unicode box characters. by @iav in armbian/build#10660modules/software: add HedgeDoc (and fix module_postgres sidecar handling). by @igorpecovnik in armbian/configng#741Move cfg80211_roam_info off the stack in rtw_cfg80211_indicate_connect(). by @igorpecovnik in armbian/rtl8723ds#22mvebu: fix the carried patches (PWM, atheros, gpio-keys) and enable drivetemp. by @iav in armbian/build#10605net: stmmac: fix dead Ethernet after suspend on RK3588 (backport the 6.15 phylink/stmmac resume ordering). by @defcom5-rockchip in armbian/linux-rockchip#548oci: link pushed packages to their GitHub repository. by @igorpecovnik in armbian/build#10584patching.py: render the failed-patches table at the terminal width. by @iav in armbian/build#10641phydm: fix broken include guards in phydm_features.h and phydm_kfree.h. by @iav in armbian/rtl8723ds#8proc: read only what was written in the sa_query / tx_deauth / tx_auth handlers. by @iav in armbian/rtl8723ds#16recomputer-rk35xx-common.inc‎: fix ttyGS0 login loop under PrivateDevices. by @Mkiring in armbian/build#10475Revert "aml-c400-plus: migrate to modern U-Boot v2026.07 and improve boot chain". by @igorpecovnik in armbian/build#10665rockchip64-7.2: Mixtile Blade 3: fix pwm-fan tacho & regulator; levels. by @rpardini in armbian/build#10656rtl8189es/fs: bump pins to c204f13 / 1c2f168. by @iav in armbian/build#10670rtl8189es/fs: move the pins to 2fef6c67 / 185ab67f (warning cleanup). by @iav in armbian/build#10691rtl8192eu: move the pin to e84384b5 and drop the set_monitor_channel patch. by @iav in armbian/build#10695rtl8723ds: bump pin to b5c8a00 (warning fixes, 7.3 compat). by @iav in armbian/build#10669rtl8852bs: bump pin to 643a4990 (no_printk log stubs). by @iav in armbian/build#10676runners: fix label fallback, runner listing and parameter handling. by @igorpecovnik in armbian/configng#1023S5P6818 (NanoPC-T3+ / NanoPi M3 / Fire3): mainline 7.2 bring-up. by @igorpecovnik in armbian/build#10674SpacemiT K1: Disable CSI by default on BPI-F3 and MusePI Pro. by @pyavitz in armbian/build#10685SpacemiT K1: Musebook: Add to current branch. by @pyavitz in armbian/build#10659sunxi-6.18: add sun8i-r40-emmc compatible, fixes eMMC boot hang (Banana Pi M2 Ultra). by @trueell in armbian/build#10635sunxi-6.18: dwmac-sun8i: fix Ethernet lost after warm reboot on external-PHY H616/H618 boards. by @seupedro in armbian/build#10492sunxi-6.18: enable USB0 OTG as host on Banana Pi M2 Ultra (sun8i-r40). by @trueell in armbian/build#10636sunxi-7.2: add sun8i-r40-emmc compatible, fixes eMMC boot hang (Banana Pi M2 Ultra). by @trueell in armbian/build#10637sunxi-7.2: enable USB0 OTG as host on Banana Pi M2 Ultra (sun8i-r40). by @trueell in armbian/build#10672tests: add Proxmox VE install test (trixie only). by @igorpecovnik in armbian/configng#1015u-boot/filogic: fix two defects in the Airoha PHY driver. by @SuperKali in armbian/build#10679uefi-x86-7.2: update applet2 patches from t2linux/linux-t2-patches@1637df4. by @rpardini in armbian/build#10657unisocwifi: size the reply buffers with sizeof instead of a runtime length (-Wvla-larger-than 2 -> 0). by @iav in armbian/uwe5622#21Update cfg80211_port_authorized conditions to match 6.1.172 rk35xx. by @ii343hbka in armbian/bcmdhd-dkms#9Use C99 flexible array members for the trailing variable-length arrays (-Warray-bounds 30 -> 0). by @iav in armbian/rtl8723ds#18uwe5622: bump pin to 6eb2184 (-Wvla-larger-than 2 -> 0). by @iav in armbian/build#10671zram-config: don't write read-only max_comp_streams on modern kernels. by @igorpecovnik in armbian/build#10677Automatic refresh repository README. by @igorpecovnik in armbian/bcmdhd-dkms#10Automatic refresh repository README. by @igorpecovnik in armbian/ci#34Automatic refresh repository README. by @igorpecovnik in armbian/hastebin-ansi#8View the full article
  23. Working closely with Google, we built the first RDK-based Chrobalt reference platform for third-party devices, enabling Chromium-based YouTube support, certification, and automation on embedded TVs and set-top boxes. View the full article
  24. Working closely with Google, we built the first RDK-based Chrobalt reference platform for third-party devices, enabling Chromium-based YouTube support, certification, and automation on embedded TVs and set-top boxes. View the full article
  25. Turnip is the first Mesa driver to achieve official Vulkan conformance on Android, with stronger Android integration, shared Vulkan runtime improvements, and real-device CI testing on Qualcomm Adreno hardware. View the full article

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.