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.

Didn't find what you were looking for? Try searching for:

More search options

  • Search By Tags

    Search will match any tag entered
  • Search By Author

Content Type

Forums

  • Armbian
    • Armbian project administration
  • Community
    • Announcements
    • SBC News
    • Framework and userspace feature requests
    • Off-topic
  • Using Armbian
    • Beginners
    • Software, Applications, Userspace
    • Advanced users - Development
  • Standard support
    • Amlogic meson
    • Allwinner sunxi
    • Rockchip
    • Other families
  • Community maintained / Staging
    • TV boxes
    • Amlogic meson
    • Allwinner sunxi
    • Marvell mvebu
    • Rockchip
    • Other families
  • Support

Product Groups

  • Misc
  • Support

Calendars

  • Community Calendar

Find results in

Find results that contain...

Date Created

  • Start

    End

Last Updated

  • Start

    End


Filter by number of...

  • Minimum number of comments

  • Minimum number of replies

  • Minimum number of reviews

  • Minimum number of views

Found 784 results

  1. 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
  2. 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
  3. Wireless-Tag WT32P4C5-43S (ZX4D30CE405-V1.3) is a fully integrated 4.3-inch touch display development board that combines an ESP32-P4 MCU with an ESP32-C5 wireless module supporting dual-band WiFi 6 (2.4/5 GHz), Bluetooth LE, and 802.15.4 connectivity. Unlike previous ESP32-P4 + ESP32-C5 solutions, this one comes with a built-in touchscreen, so you don’t need to connect a separate display. Designed for industrial automation, smart control panels, and edge AI vision terminals, the board also integrates a 15-pin MIPI CSI camera interface, a microSD card slot, two USB Type-C ports (USB 2.0 High-Speed and Debug/JTAG), and a 14-pin GPIO expansion header. Wireless-Tag WT32P4C5-43S (ZX4D30CE405-V1.3) specifications: Core module – Wireless Tag WT0132P4-A1-N16R32 SoC – Espressif Systems ESP32-P4 CPU Dual-core 32-bit RISC-V HP (High-performance) CPU @ up to 400 MHz with AI instructions extension and single-precision FPU Single-RISC-V LP (Low-power) MCU core @ up to 40 MHz with 8KB of zero-wait TCM RAM Memory 768 KB HP [...] The post Wireless-Tag WT32P4C5-43S – A fully integrated 4.3-inch ESP32-P4 and ESP32-C5 touch display devkit appeared first on CNX Software - Embedded Systems News. View the full article
  4. Hi all, Inspired by this thread, I've built mainline Linux images for the H96 MAX M9. (Images here: https://github.com/gregordinary/boot2deb/releases/tag/20261005-snapshot) Thank you to everyone who posted factory DTBs, boot logs and board photos, it really helped jumpstart the process! Quick disclosure: While this post was written by me (gregordinary), the project build tool, patches, and documentation relied heavily on AI (Claude Code). My Particular H96 Max M9: 8 GB RAM / 128 GB eMMC, AIC8800D80 Wi-Fi, factory firmware from September 2025 (Android kernel 6.1.75). In Short The box runs Debian forky on mainline Linux 7.2.9 and mainline U-Boot 2026.07 (plus patches, Rockchip's rkbin DDR init, and BL31 blobs). Most components work, including the GPU, NPU, hardware H.264/HEVC decode (8-bit and 10-bit), Wi-Fi, Bluetooth, all three audio outputs (3.5mm audio jack, S/PDIF, HDMI), HDMI-CEC, IR and suspend. Remaining gaps are hardware video encode, 4K60 output, and Vulkan. I thought I'd share things I've made in hopes that it is useful for others to advance their development with this device. More Detail For some context, I mess with a bunch of SBCs and other devices, so I used Claude to build boot2deb, a tool that can build Debian images using recipes for devices. So far I've used it for the Asus C201, Turing RK1, and now the H96 Max M9. For those who just want to test some images out, I've made a snapshot with pre-built images for all the devices listed above. Additionally, it has some U-Boot images with Ethernet, HDMI, and USB all working. Things of Interest: Device Tree, written against the in-tree rk3576.dtsi; hopefully useful if you're building Armbian or your own kernel. Kernel and U-Boot patches for the RK3576. The README should detail what each patch is for. U-Boot that can recover the box without a serial cable. Reference notes for the H96 Max M9 and the RK3576 SoC. Observation: My H96 had 16 partitions, I think ones on this forum thread had 15. My firmware revision was RZX.V01.20250924.1643. Mainline Status I've tested a number of components across builds, mostly kernels 7.1 and 7.2. The enablement status page tracks what works and what doesn't. NPU: The images I built are mainline and have the rocket driver. Separately, I've been working on rocket-userspace, which together with ggml-rocket let's you build & run llama.cpp/whisper.cpp on mainline with support for the Rockchip NPU. I've mainly tested it with RK3588 but have made decent progress on the RK3576. The NPU on the 3576 isn't as powerful so it's use cases are probably geared more towards things like object detection. For that I've made tflite-rocket. Audio: HT5010 on SAI1 is correct, the ES8388 in the factory DTB is a leftover from Rockchip's EVB. WiFi/BT Chip: Similar to the audio situation above, the ap6275p label in the DTB is seemingly boilerplate. My unit and the one in the boot logs posted somewhere in this thread run an AIC8800D80 under that label. The SDIO vendor ID shows: 0xC8A1, which is AICSemi. The AIC8800D80 driver is out of tree; I used the radxa-pkg/aic8800 fork to build it into images produced with boot2deb. USB Port for Flashing: is the blue USB 3.0 port, (Maybe this was obvious to many but I had a dumb moment or three troubleshooting with the 2.0 port). Remotes: Although the box has an IR Receiver, the remote is a 2.4 GHz RF remote that speaks to a USB receiver soldered inside the box and shows up as a standard USB keyboard and mouse. Works with no additional configuration. The IR receiver is on gpio0 PC4; I tested it successfully using gpio-ir-receiver and an IR Remote bundled with an older H96 Box. Recovery Button: This was interesting, it seems what the recovery button does depends on the factory firmware build. Several people here reach Loader mode by holding it before connecting USB. On my unit (a newer firmware build) the same button booted Android recovery instead, and "reboot to bootloader" landed in fastboot. Shorting the two pins at power-on though, reaches maskrom as expected. One tweak I made my U-Boot build was remapping the recovery button so it goes straight to maskrom without having to manually short pins. Failed Backups: When I first got the device I tried dumping the factory firmware, however backing up the eMMC over rockusb silently stopped at 32 MiB. Every read at or past sector 65536 returned 0xCC filler with a success status, so the dump looked complete, but wasn't. I think cmuki reported of a dump "full of cc" as well. I ended up dropping to U-Boot, running ums 0 mmc 0 at the prompt and dd the resulting block device onto my laptop. There's probably a lot more to add, but I'll leave it here for now and hope others find this work useful. Will try and add some screenshots, pictures, logs, etc. in the coming days.
  5. AAEON has introduced a new version of its UP Xtreme PTL Edge Panther Lake mini PC with the “Air” variant featuring Frore Systems AirJet solid-state active cooling solution. The company says the AirJet passive cooling technology makes the Panther Lake mini PC 35% thinner, 43% lighter, and capable of operating silently at under 21 dBA. This is mostly achieved by removing the thick (and heavy) heatsink found on the original design. The mini PC still benefits from up to an Intel Core Ultra X7 358H with 180 TOPS of AI performance, a 40-pin GPIO header, two RS-232/422/485 COM ports, and a wide 19 to 36V DC input range. UP Xtreme PTL Edge Air specifications: Intel Core Ultra Series 3 Panther Lake SoC (one or the other) Intel Core Ultra X7 Processor 358H CPU – 16-core (4P + 8E + 4LPE) @ 1.9/1.5/1.5 GHz Base frequency, 4.8/3.5/3.5 GHz Turbo frequency Cache [...] The post UP Xtreme PTL Edge Air Panther Lake Mini PC gets AirJet solid-state active cooling solution appeared first on CNX Software - Embedded Systems News. View the full article
  6. 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
  7. 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
  8. Unless I'm mistaken, overlays cannot be used with the Odroid-C1; I tried setting `overlays "gpio-ir-tx"` in the `/boot/` directory, but it had no effect—`/dev/lirc1` was not created, and I was unable to transmit signals. If it’s not too much trouble, could you post a "recipe" I can follow to enable signal transmission? And, in case it doesn't work, could you list potential errors to look out for? Many thanks.
  9. The old blaster isn't coming back on 26.04, and it's worth knowing why before chasing it: "odroid blaster" wasn't a lirc configuration, it was an out-of-tree Hardkernel module (lirc_odroid) built for the 3.10 vendor kernel, and hardware.conf died with lirc 0.10 anyway. There's no modern driver for that path, so the clean way is to rebuild the transmit side on the generic kernel infrastructure. Your LED circuit can stay exactly as it is. Declare a gpio-ir-tx node in a DT overlay on the GPIO behind pin 7 of the 40-pin header (Hardkernel's pinout will give you the GPIOX number), keep driving the LED through the same transistor/resistor from the 5V pin, and the TX side shows up as an extra /dev/lirc device. From there ir-ctl replaces irsend: capture the power code from your LG remote with any IR receiver (a $1 gpio-ir on a spare pin, or the onboard receiver if your image enables it) or pull the LG address/command from irdb, verify the LED blinks with a phone camera, then ir-ctl -S lg:: sends it. If you specifically want lircd and irsend back, modern lirc can sit on top of the same /dev/lirc0 — but for a single SEND_ONCE use case, ir-ctl alone is fewer moving parts. One gotcha: gpio-ir-tx is bit-banged, so a heavily loaded system can stretch the first transmission now and then — a repeat usually fixes it, that's not a config error.
  10. I also have an orange pi zero 3 which was fried due to 12V applied to the GPIO +5V pin (forgot to turn a potentiometer to lower the voltage). What is the ED1? Is it a fuse or similar? Is there an equivalent for the GPIO 5V?
  11. 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
  12. 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
  13. Hello, I am working on Sony IMX219 camera support on the Orange Pi 4A (Allwinner T527) with the current Armbian/mainline kernel. Current system Board: Orange Pi 4A SoC: Allwinner T527 / sun55i-a523 family Armbian: 26.11.0-trunk.54 Running kernel: 7.2.6-edge-sunxi64 Camera: Sony IMX219 Interface: 4-lane MIPI CSI-2 Current DTB: sun55i-t527-orangepi-4a.dtb The IMX219 V4L2 sensor driver is already present in the kernel: drivers/media/i2c/imx219.c and the corresponding module is available: imx219.ko with the expected sony,imx219 alias. Current camera state At the moment there are: /dev/video* — absent /dev/media* — absent The current DT does not contain the complete T527 camera/VIN/CSI/MIPI/ISP topology. I therefore started comparing the current mainline DT and drivers with the Orange Pi vendor T527 BSP. I2C / IMX219 The vendor DTS defines: TWI0 controller: 0x02502000 IMX219 address: 0x20 TWI0 pins: PH0 / PH1 PWDN: PH2 On the current Armbian system TWI0 is available as: /dev/i2c-1 and PH0/PH1 are correctly assigned to: 2502000.i2c function twi0 However: sudo i2cdetect -y 1 does not detect a device at 0x20. At this point I have not established the reason for the missing I2C ACK. I do not want to assume that it is caused by the driver or by the CSI host. PH2 is currently unclaimed and matches the PWDN GPIO used by the vendor DTS. Reconstructed vendor camera topology From the Orange Pi T527 vendor BSP I reconstructed the following intended topology: IMX219 │ │ 4-lane MIPI CSI-2 ▼ MIPI2 │ ▼ CSI2 │ ▼ VINC0 │ ▼ ISP / VIPP / DMA │ ▼ V4L2 / media The vendor VINC configuration contains: vinc0_csi_sel = 2 vinc0_mipi_sel = 2 which points to MIPI2 / CSI2 for this configuration. Important vendor hardware resources The vendor BSP exposes the following resources: BlockBase address VIN host0x05800800 CSI20x05822000 MIPI20x05810300 MIPI2 PHY0x05811800 MIPI2 is configured for four lanes. The MIPI2 S2P register is: 0x05810328 and the vendor four-lane configuration uses: 0x00280300 The vendor implementation also contains separate CSI/MIPI/ISP clocks, bus gates and resets, including CSI and ISP reset resources. No MMIO writes have been performed during this investigation. Vendor VIN implementation The vendor vind@5800800 node contains the complete camera-host resource set, including: CSI core clock CSI source clock CSI master clocks 0..3 ISP clock/source CSI bus clock CSI MBUS gate ISP MBUS gate CSI reset ISP reset camera power domain VIN / CCU / combo-CSI register mappings The vendor driver maps three relevant register regions: VIN / CSI top VIN CCU Combo CSI top Vendor driver structure An important finding is that the vendor camera support is not implemented as a single MIPI driver. The vendor vin_v4l2.ko contains, among other components: sunxi_csi sunxi_mipi combo_csi sunxi_isp vipp dma vin_video vin_core sensor_list So simply enabling the existing imx219 driver is not sufficient to reproduce the vendor camera pipeline. The generic mainline MIPI CSI-2 drivers currently available for other Allwinner SoCs also use different compatibles and do not directly bind the vendor: allwinner,sunxi-mipi implementation used by the T527 BSP. Present / Missing PresentMissing IMX219 kernel driverComplete T527 camera DT topology TWI0 /dev/i2c-1IMX219 ACK at 0x20 PH0/PH1 TWI0 pinmuxSensor power/MCLK/PWDN binding Vendor T527 camera topology reconstructedMainline T527 CSI/MIPI host support 4-lane IMX219 configuration identified/dev/video* / /dev/media* camera pipeline Current conclusion The sensor driver itself is already available. The larger missing piece appears to be the T527 camera host integration: VIN/VINC, MIPI2, CSI2, PHY, clocks/resets, power domain and the corresponding device-tree/media-controller topology. At the same time, the sensor currently does not ACK on I2C address 0x20, so the physical/power/MCLK/PWDN side still needs to be verified independently. I have documented the reconstructed vendor resources and topology in more detail in the attached technical report. Question for the Armbian / mainline developers Would this reconstructed T527 camera topology and the vendor resource information be useful for upstream/mainline camera support? If so, which repository/subsystem would be the preferred place to continue this work — Linux media/V4L2, sunxi platform support, or another location? I would also appreciate advice on whether the T527 VIN/MIPI/CSI blocks are already being worked on elsewhere, so that this work can be aligned with existing upstream efforts rather than duplicated. English technical report: Orange Pi 4A / Allwinner T527 — IMX219 Camera Support Report Thank you. orange_pi_4a_imx219_report_en.pdf
  14. Thanks. I honestly hope the bug will be fixed in future versions. I also can confirm this is the cause of the NVME not booting. If you toggle the gpio manually before the boot, the NVME will be detected just fine. I tried recompiling the bootloader, but gave up after battling errors for half a day. 1. You're right, i found this while checking against the schematic myself, and then verified it. 2. I haven't checked power sequencing. Honestly this is out of my comfort zone at the moment. 3. I would if I knew where. That is why I made the forum post here, i hope it would dripple into the upstream. If you expect something from me here, please let me know, Cheers, Stefan.
  15. My T95 hardware: * **Model:** T95 Android TV Box * **SoC:** Allwinner H616 * **Board:** H616-T95MAX-V4.0 * **RAM:** 4GB DDR3 * **Internal storage:** 64GB eMMC * **Wi-Fi chip:** AW859A * **PMIC:** AXP305 * **Ethernet:** 100Mbps, using the AC200/AC300 internal PHY * **USB:** 2x USB 2.0 host ports * **Video:** HDMI output * **UART:** 3.3V logic * **Boot method:** Debian from microSD using mainline U-Boot * **Current OS:** Debian 12 Bookworm * **Current test kernel:** Linux 7.3-rc3 * **Stock Android:** still intact on eMMC Important detail: this is the **V4.0 board revision**, and some upstream T95 device-tree assumptions were based on other revisions. That mattered for things like the second USB port. T95 Box T95 H616 Linux issues and fixes so far: * **Only 2GB RAM showing** * Fixed with a U-Boot DRAM-size patch. Box now sees the full **4GB**. * **SD boot problems / wrong card detect** * Fixed by using the correct T95 device tree with the **PI16 SD card-detect GPIO**. * **Debian 7.3 kernel would not mount root** * `root=UUID=` failed without initramfs. * Fixed by using: `root=PARTUUID=fe8d38d0-eebf-4bb1-aa05-baafaf8c3f50` * **No HDMI output** * Added the H616 display-engine/HDMI patches and enabled HDMI in the T95 DTS. * HDMI now works at **1080p**. * **Ethernet not working** * Fixed H616 EMAC/AC200 PHY support. * Ethernet now links at **100Mbps full duplex**. * **One USB port had power but no data** * Stock Android DTS showed the V4.0 board also uses USB host 1. * Added: ```dts &ehci1 { status = "okay"; }; &ohci1 { status = "okay"; }; ``` * Both USB ports now work. * **Mali/Panfrost GPU acceleration** * Still being worked on. * Panfrost times out because of the H616 PRCM GPU power-domain path. This is the last major issue. Board: **H616-T95MAX-V4.0** OS: **Debian 12** Kernel testing: **Linux 7.3-rc3**
  16. So on H96Max 3318, the working configuration file for Openvfd is: /etc/modprobe.d/openvfd.conf options openvfd vfd_gpio_clk="4,0x16,0" options openvfd vfd_gpio_dat="4,0x15,0" options openvfd vfd_gpio_stb="0,0,0xFF" options openvfd vfd_chars="0,4,3,2,1" options openvfd vfd_dot_bits="0,1,3,2,4,5,6" #ID Display type #0x03 A display like on the A95X R2 (or the Abox A1 Max). <-- #.2 Reserved - must be 0. #.3 flags #.4 0 - > FD628 and compatible controllers options openvfd vfd_display_type="0x02,0x00,0x00,0x06" But GPIO2_22 (global GPIO86) is claimed by the spi-gpio driver for the Device Tree node i2c-aux-display Device Tree │ └── /i2c-aux-display compatible = "spi-gpio" │ ▼ kernel spi_gpio driver │ ├── GPIO2_19 → SCK ├── GPIO2_22 → MOSI ← GPIO86 is claimed here └── GPIO2_18 → CS i2c-aux-display { compatible = "spi-gpio"; sck-gpios = <... 0x13 ...>; /* GPIO2_19 */ mosi-gpios = <... 0x16 ...>; /* GPIO2_22 */ cs-gpios = <... 0x12 ...>; /* GPIO2_18 */ }; So we have to unbind with: echo i2c-aux-display | sudo tee /sys/bus/platform/drivers/spi_gpio/unbind before 0x15 → GPIO2_21 → unused 0x16 → GPIO2_22 → "mosi" [used] after GPIO2_21 → unused GPIO2_22 → unused we might want to modify the DTS or just unbind it before loading the openvfd module: /lib/systemd/system/openvfd.service [Unit] Description=OpenVFD Service ConditionPathExists=/proc/device-tree/openvfd/ [Service] ExecStart=/bin/sh -c '[ `cat /proc/device-tree/openvfd/compatible` = "open,vfd" ] && echo i2c-aux-display | sudo tee /sys/bus/platform/drivers/spi_gpio/unbind; /sbin/modprobe openvfd; /usr/sbin/OpenVFDService' ExecStop=/bin/kill -TERM $MAINPID ExecStopPost=-/usr/sbin/rmmod openvfd RemainAfterExit=yes [Install] WantedBy=basic.target Attached OpenVfd.c for this box. OpenVFDService.c
  17. Update on a H96 box Rk3318 and openvfd. After disassembly of the original android firmware i have: Controller/display: FD628 Interfaccia: 2-wire CLK: GPIO2_22 = GPIO86 DAT: GPIO2_21 = GPIO85 STB/CS: not used Bit order: MSB first START/STOP: type I²C Android sequence: correctly relpicated H96 Max use a protocol FD628 2-wire H96 Max RK3318 / HS2734C Controller : FD628 Bus : Proprietary 2-wire CLK : GPIO2_22 = GPIO86 DAT : GPIO2_21 = GPIO85 STB/CS : None Bit order : MSB first Digit positions: 0x6E → digit 1 0x6C → digit 2 0x6A → digit 3 0x68 → digit 4 Segments: bit0 = A bit1 = B bit2 = C bit3 = D bit4 = E bit5 = F bit6 = G Verified examples: 1 = 0x06 2 = 0x5B 3 = 0x4F 4 = 0x66 BOOT: b = 0x7C o = 0x5C t = 0x78 ``` Therefore, the GPIO pins, bit order, communication protocol, digit addresses, and segment mapping are now confirmed to be correct. continues..
  18. 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
  19. 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
  20. Thanks for sharing this guide. The explanation of using a MOSFET module between the GPIO and fan is especially useful, and the thermal trip setup makes the approach easy to understand. The 75°C on / 65°C off hysteresis also seems like a practical way to avoid constant fan switching.
  21. Hello Armbian community, I want to share the experience I have had bringing Armbian to life on my own Q8 tablet with an Allwinner A33 SoC. This is not an official Armbian-supported device and it is not a universal image for every tablet sold as “Q8”. It is a community experiment based on one specific hardware revision. I am sharing it because these tablets are often discarded, even though they can still become useful Linux devices with patience, testing and good documentation. Why I started My goal was not to turn this tablet into a modern desktop computer. I wanted to reuse it as a small portable Linux machine for learning, lightweight entertainment, retro games and hardware experimentation. The tablet has limited resources, especially memory, so every decision had to be made with that limitation in mind. The result is now a usable system that boots from microSD, presents a touchscreen-oriented desktop and includes a small software store built specifically for this device. Base system The current setup uses: • Allwinner A33 SoC • ARMv7 / armhf userspace • Debian 12 Bookworm on a community-built Armbian system • Linux 6.12.100-legacy-sunxi • Device tree: allwinner/sun8i-a33-q8-tablet.dtb • 1024 × 600 LCD • Approximately 457 MiB of usable RAM • Boot from microSD • X11 with IceWM and a custom GTK3 interface Hardware bring-up Display The 1024 × 600 LCD is working correctly. Getting a stable picture was one of the first important milestones because it gave me a reliable base for testing the rest of the hardware. Touchscreen The Silead touchscreen is working. I also experimented with a small uinput-based helper that can present touch input as a relative pointer when that behavior is more convenient for older applications. Wi-Fi The RTL8723BS Wi-Fi interface is functional. On this board it required the correct power and GPIO sequence, followed by an MMC reprobe. This was a good reminder that a driver being present is only one part of the job; the board-specific initialization also matters. Bluetooth Bluetooth from the same RTL8723BS module can be initialized, powered on, made visible and used for pairing. I still consider long-term reconnect behavior and compatibility with different peripherals an area that needs more testing. Audio Audio is working through the Allwinner A33 audio hardware using the a33-audio overlay. ALSA exposes the sun8ia33audio card, and I added touchscreen-friendly controls so the tablet can be operated without depending on a physical keyboard. Battery Battery information is available through the axp20x-battery driver and is integrated into the interface. Being able to see charge status directly in the shell makes the tablet much more practical as a portable device. Accelerometer The STK8312 accelerometer is detected and exposed through IIO. Sensor data is available, but complete and reliable automatic screen rotation is not finished yet. Camera The GC0308 camera is detected and I have captured test frames through the sensor → sun6i-csi-bridge → capture pipeline. This part remains experimental because format coordination and stability still need work. Video decoding The Cedrus driver is detected. I have not yet certified real hardware-accelerated playback in every application, so I prefer to describe this as detected rather than fully validated. Building a usable interface Because the screen is small and the tablet has very little RAM, I created “Q8 Shell”, a fullscreen Python/GTK3 interface designed for 1024 × 600 and touch input. It provides large launchers, system information, Wi-Fi and Bluetooth controls, volume, weather, calendar, power options and a simple taskbar. Underneath, the system still uses X11 and IceWM, but the normal experience feels closer to a dedicated tablet interface. I kept the project intentionally lightweight. On hardware with about 457 MiB of usable RAM, a beautiful feature is not useful if it makes the system unstable. Tienda Q8 I also built “Tienda Q8”, a small software catalog for the tablet. It does not give the graphical application unrestricted root access. Instead, it calls a restricted helper that only accepts packages from an explicit allowlist and protects packages that are part of the working Q8 environment. The store can: • show whether a catalog application is installed • install approved lightweight applications • remove only applications managed by the store • refresh APT package information • display the complete APT output during an operation • prevent multiple simultaneous operations I tested the complete install/remove cycle with ace-of-penguins. The package installed correctly, was registered as managed by Tienda Q8, and was later removed correctly. After the round trip, the package inventory returned to the expected state and dpkg reported no pending operations. Applications tested Among the applications and environments I have tested are DOSBox, ScummVM, Xash3D with Half-Life/Counter-Strike content, FreeAOE, Chromium in kiosk-style use, PCManFM, MPV and other lightweight utilities. What I learned The most important lesson is that “Q8-A33” is not a precise hardware identity. Different tablets can share the same commercial name while using different displays, touch controllers, cameras, Wi-Fi modules or board wiring. For that reason, I strongly recommend: • identifying the exact board and hardware revision first • keeping a known-good backup of the boot files and device tree • changing one thing at a time • checking logs after every change • testing package operations in simulation before allowing real changes • never assuming that a DTB or image for another Q8 variant is safe for your own tablet I also learned that working with very limited hardware changes the meaning of optimization. Memory use, process count and startup time matter just as much as adding features. Current status Today the tablet boots and works as a small Linux system. Display, touch, Wi-Fi, audio and battery reporting are functional. Bluetooth works at a basic level. The accelerometer and camera are detected but still need additional work. Cedrus is present but hardware decoding still needs proper application-level validation. The next stage is to continue reducing unnecessary packages while preserving the working kernel, device tree, firmware and hardware support. I am treating this as a gradual “Q8 Armbian Slim” phase rather than a risky one-step cleanup. Project files and documentation I have published the scripts, notes, configuration details and screenshots in this repository: Q8-A33 Armbian project on GitHub Tienda Q8 is documented here: Tienda Q8 documentation on GitHub I hope this experience is useful to anyone trying to recover a similar tablet. I am also interested in comparing notes with other Q8-A33 owners, especially about hardware revisions, device trees, cameras, sensors and low-memory optimization. Thanks to the Armbian community and to everyone who has documented Allwinner hardware over the years. This project would have been much harder without that shared knowledge.
  22. Nice find, Stefan — and thanks for including the LTSSM state, that makes the root cause unambiguous. LTSSM 0x3 is Detect.Quiet: the PHY never even starts link training because the PCIe rail never comes up. That is exactly what you expect when the regulator's enable GPIO points at a pin that does not drive the M.2 power switch.For anyone wondering how this happened: gpio0 RK_PC5 is a leftover from the Rockchip EVB reference design. The RK3588 EVB routes vcc3v3_pcie20's enable through GPIO0_C5, but the Orange Pi 5 board wires the M.2 power switch to GPIO2_A1. When a board DTS is derived from the EVB, the power-tree GPIOs are the first things to silently go wrong, because everything else (I2C, UART, display) still matches the silicon reference. A couple of points from the industrial/product side, since we maintain a DTS review checklist for our own RK3588 boards going through Armbian bring-up: 1. Cross-check enable GPIOs against the schematic, not against the SoC reference. The EVB-derived pins are the single most common source of "regulator never enables" bugs on Rockchip platforms. 2. While you are in there, check power sequencing too — not just the pin number. On designs where PERST# is also GPIO-controlled, the enable -> PERST# release -> link training order matters, and regulator-ramp-delay / startup-delay can mask or fix marginal boards. A rail that powers up in the wrong order can still enumerate NVMe but fail intermittently at cold boot. 3. Worth pushing the fix upstream: a local overlay is a fine workaround for your own board, but the wrong pin is still in the DTS shipped with mainline kernels (and it reproduced across 6.1.115 / 6.18.x / 7.1.8, so it is the shared DTS, not a kernel regression). A one-line patch to the board DTS would fix this for every user.
  23. Hi, I'm new to this game,being mostly a (French) software dev doing backend Node.js. Recently I bought a 21.5" Android kiosk display from Beelta, the T2100AA, to build a custom kiosk for my company. The Android build is bloated, so I wanted something cleaner. I started looking into porting Armbian to this display. Inside there's an SBC identified as a Shimeta AIoT-3568A. There's no Linux support for this board, and the manufacturer wasn't willing to provide any documentation. I started digging with Claude and worked through most of the blockers in under a day. Here's what I found — and possibly a path forward for other Shimeta-based boards too (more on that below). Hardware SoC: Rockchip RK3568 (quad Cortex-A55, Mali-G52, unused 0.8 TOPS NPU) Based on the reference rockchip,rk3568-evb1-ddr4-v10 design; the stock firmware actually bundles several board variants (EVB1/3568HV/3568S/3568ST/3568WP) selected at boot via androidboot.dtb_idx DDR4, DDR init confirmed working with the stock rk3568_ddr_1560MHz idbloader (MiniLoaderAll.bin) PMIC: RK809 (i2c 0x20) with integrated audio codec 21.5" Full HD (1920×1080) touch panel — this is an all-in-one panel/SBC unit, not a bare dev board Analysis method Full generic Android firmware image extracted (RKFW→RKAF) plus a live dump (via adb root) from a unit actually running in production, giving both /sys/firmware/fdt and the real boot/dtbo/vbmeta partitions to cross-check against. Display pipeline — the core blocker RK3568 DSI0 → GM8775C (DSI-to-dual-channel-LVDS bridge, "CORPRO") → dual-LVDS → 21.5" FHD panel RK3568 has no native dual-channel LVDS output (needed above ~1440×900), hence the GM8775C bridge chip on the PCB. It's configured purely through generic DSI commands from the RK3568 (no separate I2C control) — the full init sequence has been extracted from the vendor DTB (panel-init-sequence). Timing is confirmed stable at 1920×1080@60 (148.5 MHz pixel clock). Everything else is straightforward / mainline-ready Backlight: standard pwm-backlight, PWM + GPIO enable, nothing to write Touch: pure USB, ILITEK controller, standard HID multitouch — zero driver work Ethernet: dual GMAC with RTL8211F PHY, mature mainline support WiFi/BT: AW-NM43438 (Broadcom/AmpaK BCM43438/AP6212 rebrand) — just needs the correct firmware/nvram blobs pulled from the vendor partition, brcmfmac/hci_bcm handle the rest Power button, headset jack, IR receiver: all standard or non-blocking Getting a working base The Odroid M1 mainline image worked out of the box for HDMI, USB, etc., but had no LVDS output and no networking. With Claude's help, I: Overwrote the Odroid idbloader with the one from the stock Android install Built a DTB for the AIoT-3568A to get networking working, which let me switch to SSH over Ethernet for much faster iteration Wrote (well, Claude wrote...) the MIPI-DSI-to-LVDS bridge driver for the Corpro GM8775C, plus the LVDS panel config — resulting in a fully working panel with backlight Reboot issue and solution Board freezes completely and power-cycles (not a clean reboot, not a kernel panic) roughly 10 minutes after power-on, regardless of load, distro, or kernel config. Confirmed independently by another user on the same board family in the youyeetoo forum back in 2023 — including a report that it happens even while stuck in U-Boot, before Linux ever runs. What we ruled out (with evidence, on Armbian mainline kernel 6.18) SoC-internal software watchdog (dw_wdt): disabled, masked, or actively fed via ftrace-confirmed kicks right up to the crash — innocent either way Thermal: never critical (43–58 °C) CPU/RAM/storage stress in isolation (stress-ng): all pass Two different SD cards, freshly reformatted: same symptom systemd timers (fstrim/tmpfiles/hwclock): masked, no effect Main DC input power, scoped on a Rigol DP832: no anomalous current draw correlated with the crash Ethernet fully unplugged, WiFi/BT unloaded: no effect PMIC (RK809) regulator config: confirmed exact match against the live vendor DTB, node by node ext4 commit interval: tested multiple values, inconclusive Decisive test: powered on, then issued a software reboot at ~5 min uptime. The board still crashed at ~10 min from the original power-on, not restarted from the software reboot. This proves the timer is driven by something external to Linux, tied to physical power, not the OS. Root cause: undocumented external supervisor MCU These boards carry a secondary microcontroller separate from the RK3568/RK3588/RK3399 main SoC — an STM8S00K3, shown in the vendor device tree as: dts mcuinf@62 { compatible = "smdtmcu,STM8S00K3"; status = "okay"; reg = <0x62>; }; Sitting on an I2C bus (i2c5 @ 0x62 on the 3568A), invisible to any mainline Linux driver. ShiMeta's own product documentation confirms its purpose: "Watchdog Timer Configuration: To ensure 24/7 autonomous uptime, the MCU runs a hardware watchdog. If the main Android system freezes, the MCU automatically forces a hard reset to recover the device." Reverse-engineered by tracing I2C traffic (ftrace events/i2c) on the stock Android vendor image, where a kernel thread literally named mcu proc (kthread, PPID 2 — not killable from userspace) talks to the MCU continuously: I2C transactionFrequencyPurpose None of this exists in mainline Linux, so on any custom OS (Armbian, or any non-vendor image) the MCU eventually decides the AP never booted / has hung, and fires the hardware reset it's designed to perform. What actually fixes it: Write reg 0x51 = 0x33, read back via 0xD1 → 0x33 (once, ~25s after power-on (triggered by vendor binary /system/bin/mcu_tool notify_power_on) : Tells the MCU "AP booted successfully" — disarms the initial boot-timeout Write 0x80, read 1 byte (every 3.04s, continuous) : Status poll (0x00 = nominal, 0xAA = observed once feeding stops) Write [0x33, 0xAB] (2 bytes) (every 11.15s, continuous) : Periodic heartbeat/feed from the AP This script fixes sends the correct frames: # one-shot, early in boot i2cset -y 5 0x62 0x51 0x33 # then, forever, two independent loops: while true; do i2cget -y 5 0x62 0x80 >/dev/null; sleep 3; done & while true; do i2cset -y 5 0x62 0x33 0xAB >/dev/null; sleep 10; done & Thomas.
  24. @BipBip1981 — on the missing cpufreq_dt module: nothing broke. It was switched from module to built-in in Armbian on 2026-02-28 (commit 6868e1c9, "orangepi5: fix slow boot on current kernel"), so rockchip64 current/edge carry CONFIG_CPUFREQ_DT=y. lsmod will never show it, and policy0/policy4 being present means the driver is active. Nothing to restore. More useful is what your own tests show: cpufreq.off=1 is what gets the board through boot, with either overlay or none. That points at CPU DVFS/OPP, not PCIe. The PERST# overlay did apply on your board (gpio-28 (|ep) out hi) and did not change your crashes — so your failure class is not the boot SError I was chasing.
  25. I've been troubleshooting a little bug all day long, and think I pretty much found it. vcc3v3_pcie20 specifies gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>, but the M.2 power switch on the Orange Pi 5 is on GPIO2_A1. The vendor DTS uses gpio2 pin 1. With the mainline value, pcie2x1l2 never links (Phy link never came up / LTSSM 0x3); changing it to <&gpio2 RK_PA1 GPIO_ACTIVE_HIGH> brings up PCIe Gen.2 x1 link up and the NVMe enumerates. This was reproduced on vendor 6.1.115, current 6.18.x, and edge 7.1.8. Workaround that I'm currently using is a little user overlay: mkdir -p /boot/overlay-user cat > /tmp/pcie-m2-power-fix.dts <<'EOF' /dts-v1/; /plugin/; / { compatible = "rockchip,rk3588"; fragment@0 { target = <&vcc3v3_pcie20>; __overlay__ { gpios = <&gpio2 1 0>; }; }; }; EOF dtc -@ -I dts -O dtb -o /boot/overlay-user/pcie-m2-power-fix.dtbo /tmp/pcie-m2-power-fix.dts Hope it helps other people as well, Stefan.

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.