19249 Commits
Author SHA1 Message Date
EvilOlaf 517f15b0b3 rockchip64-7.1: drop old patchset 2026-08-30 19:20:12 +02:00
Ricardo Pardini 230eda77b1 rockchip64-7.2: drop general-rk3588-i2s-mclk-output-gate-5-ignore-unused as it was merged upstream
- very last minute before v7.2 (-final), but, thankfully
2026-08-30 19:20:12 +02:00
EvilOlaf 737e06157b meson64-7.1: drop old patchset 2026-08-30 19:20:12 +02:00
EvilOlaf 9a05654d7f mainline-kernel.conf.sh: use generic function name
one thing less to edit every week to make sense
2026-08-30 19:20:12 +02:00
EvilOlaf d598124e3e set MAJOR.MINOR for edge to 7.2 on various families, bump bleedingedge to unreleased 7.3
just as a reminder: bleedingedge is mean for developers only and I don't care about breakage caused by this change
2026-08-30 19:20:12 +02:00
EvilOlaf 75ea03955f mainline: bump to unreleased 7.3-rc1 to allow stable 7.2 kernel to be built 2026-08-30 19:20:12 +02:00
Igor Velkov 7bc37c82b9 meson64: mmc: meson-gx: honour the busy timeout for R1b commands
The controller waits for R1b busy in hardware, but the driver programs a
fixed 1024 ms there and does not report max_busy_timeout, so erase and
cache-flush commands time out as soon as the card is busy for more than
a second:

  mmc_erase: erase error -110, status 0x0
  mmc1: cache flush error -110

Program the timeout from cmd->busy_timeout (bounded by the 2^15 ms field)
and report the bound as max_busy_timeout, the way sdhci and meson-mx-sdhc
do. ODROID-N2+ eMMC, 20 GiB write + delete + fstrim: 48 errors before,
0 after (two runs). Applies to 6.12, 6.18, 7.1 and 7.2.
2026-08-30 19:12:29 +02:00
Martin Schmiedel 08b7c70e0d fix(boards): only set up XFCE Wayland session for BUILD_DESKTOP=yes + DESKTOP_ENVIRONMENT=xfce
xfce4-session/labwc are only installed when BUILD_DESKTOP=yes AND
DESKTOP_ENVIRONMENT=xfce, but the lightdm/environment.d setup and the
pixman postinst hook ran whenever BUILD_DESKTOP=yes regardless of the
selected DE. CLI-only images, and desktop images built with a
different DE (gnome, kde-plasma, ...), ended up shipping a lightdm
config pointing at a session that was never installed.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel c55dbaab0c boards: use indented <<- heredocs in mba93xxca/mba93xxla-mini
Match the style already used elsewhere in the repo (e.g.
mba8mpxl-ras314.conf) so heredoc bodies can follow the surrounding
function's indentation instead of being forced flush-left. No change
to the generated file contents - <<- only strips the leading tabs.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 43bce953d8 boards: describe hardware instead of repeating board name in comments
Drop the redundant board/SOM-name comment (matches the config filename)
and describe the actual hardware instead, for mba93xxla-mini and the
imx8m TQ boards (mba8mpxl, mba8mpxl-ras314, tq-smarc2-tqma8mpxs) - same
cleanup as mba93xxca. Also add the missing KERNEL_TEST_TARGET for all
four boards (current,edge - confirmed booting on both branches).

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel b3ae08ca83 fix(kernel): rework TQ 7.1 patches
Split imx93-7.1 into shared symbols/LCDIF-LVDS-bridge patches plus
per-board MBa93xxCA/MBa93xxLA-MINI patches (fixes MINI's LVDS overlay
on 7.1). Also enable the LDB termination resistor for MBa8MPxL's LVDS
(fixes doubled/unreadable image).

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 8201e64fc0 feat(mba93xxca): add PWM fan overlay
fan0 (pwm-fan on tpm6, tacho on GPIO2_IO09) exists in the base DTS but
ships status = "disabled". tpm6 and its 12V supply (reg_pwm_fan) are
already enabled. Add an overlay that only flips fan0 to "okay", for
boards that have the fan populated.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 920b69a870 fix(boards): ship a separate xfce-wayland-pixman session instead of patching xfce4-session's file
post_family_tweaks_bsp__mba93xxca/mba93xxla-mini forced WLR_RENDERER=pixman
by patching /usr/share/wayland-sessions/xfce-wayland.desktop in place at
postinst time. xfce4-session owns that file, so any later xfce4-session
upgrade re-unpacks it unconditionally and silently reverts the renderer
back to GLES2 - imx93 has no 3D GPU, so that leaves an unusably slow
desktop until someone notices and reapplies the patch.

Ship xfce-wayland-pixman.desktop instead: derived at postinst time from
the current xfce-wayland.desktop with only Exec= overridden, under a name
xfce4-session never owns, so it can't collide and never gets reverted by
an xfce4-session update. lightdm's default session is pointed at it.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel c28f7c94c5 fix(imx8m,imx93): decouple write_uboot_platform seek offset from OFFSET
write_uboot_platform() reused the generic Armbian OFFSET variable (1st
partition offset in MiB) as `dd bs=1K seek=${OFFSET}` - only coincidentally
matching the actual SPL boot offset these boards need (0x8000 = 32 KiB).
Any future partition-layout change to OFFSET would silently seek to the
wrong byte offset.

Hardcode seek=32 so the two concerns vary independently.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 323375b4a3 arm64: dts: freescale: add MBa93xxCA LVDS TM070JVHG33 overlay
MBa93xxCA carries the same TQMa9352 LVDS wiring and DT labels
(&backlight_lvds, &display, &lcdif, &lvds_bridge, &media_blk_ctrl,
&tpm5) as MBa93xxLA-MINI, so the new overlay includes the existing
MBa93xxLA-MINI overlay instead of duplicating its content, keeping
the panel timing and labels in one place.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 39708af231 boards: add MBa93xxCA (TQMa93xx, imx93)
New TQMa93xx SoM carrier board. Reuses the MBa93xxLA-MINI GPU-less
desktop setup (XFCE/labwc, CPU pixman renderer - imx93 has no 3D GPU).

DisplayPort (TC9595XBG bridge) is the board's designed primary output,
LVDS an optional add-on - but DP bridge support isn't implemented yet,
so no DEFAULT_OVERLAYS here; LVDS follows in a later commit.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 69902bcff4 fix(kernel): rework imx8m/imx93 6.18 TQ patches for MBa93xxCA support
Merge the imx93 "enable DTB symbols" patch into the shared imx8m/imx93
Makefile patch, and add the MBa93xxCA display/LVDS bridge modifications
to the base DTS.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 12dc9bc674 boards: add u-boot pieces for MBa93xxCA (image format, mkimage)
Bump imx8m BOOTBRANCH, extend LEGACY_IMAGE_FORMAT to the new
tqma93xx_mba93xxca defconfigs, and add CONFIG_IMX_CONFIG so
Armbian's older mkimage can produce a flash.bin for MBa93xxCA
instead of falling back to the unsupported cfgout IMAGE_VERSION 2
auto-generation.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel d5ef9f810b fix(atf): move imx8m/imx93 ATF linker-flag patch to shared atf-tq dir
ATF_SKIP_LDFLAGS_WL="yes" was not a substitute for
0001-fix-needed-by-armbian-build-system.patch: that patch strips the
-Wl,-prefixed --no-warn-rwx-segment flag from TF_LDFLAGS because TQ's
ATF build invokes the linker directly, while ATF_SKIP_LDFLAGS_WL only
suppresses the -Wl, prefix on our side, leaving a flag the patch never
matches. Without the patch applied, TF_LDFLAGS reaches the linker
unfiltered and produces a BL31 that hangs on i.MX93 (MBa93xxCA) right
after SPL hands off via ROM_API, before any ATF console output.

Rename ATFPATCHDIR from the imx8-only 'atf-imx8' to 'atf-tq' and set
it per-board-case in imx8m.conf/imx93.conf, since the same fix is
needed by both families.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
Martin Schmiedel 2979800c5e fix(kernel): fix apparmor config for imx8m and imx93
CONFIG_SECURITY_APPARMOR=y alone doesn't activate AppArmor: the LSM is
compiled in but never registered unless it's also listed in CONFIG_LSM.
Without it there, AppArmor stays dark at boot and any userspace tooling/
profiles that expect it (standard on Debian) are silently ineffective.

Add apparmor to CONFIG_LSM for all four affected kernel configs.

Signed-off-by: Martin Schmiedel <Martin.Schmiedel@tq-group.com>
2026-08-30 19:10:56 +02:00
enthropy7 2bb31e43f7 sunxi: sort the TV encoder series.conf entries alphabetically
The only dependency is the unbind fix before the feature patch, which
alphabetical order already gives. Replayed both series in the new order:
no rejects, resulting trees identical.
2026-08-30 19:06:36 +02:00
enthropy7 bd2047a215 sunxi-7.1: enable composite TV output on H3 and H5
Same series as for 6.18, so it survives the kernel bump. The patches were
regenerated against 7.1.10 rather than copied: they apply with no fuzz,
since the sun8i_mixer_cfg rework they had to be rebased over in 6.18 has
landed upstream by now.

Verified the same way: the whole series applies with no rejects, the six
patches are clean under checkpatch --strict, and drivers/gpu/drm/sun4i,
drivers/clk/sunxi-ng and every allwinner dtb build for both architectures
with the tv-encoder node present in all 13 H5 device trees.
2026-08-30 19:06:36 +02:00
enthropy7 262a00b5e6 sunxi-6.18: enable composite TV output on H3 and H5
The H3 and H5 have a TV encoder behind a second display pipeline that
mainline describes for neither SoC, so composite output has never worked
on a mainline kernel. Add the mixer1, tcon1 and tv-encoder nodes, register
the TVE clock the H3 CCU was missing, and convert the mixer's RGB output
to the YUV the encoder wants. Nothing is on by default -- enabling the
display engine costs a running PLL on boards that have no other display --
so the output is opt-in through a new tve overlay. Split by subsystem so
the series can go upstream as it stands, with a pre-existing NULL deref in
the encoder's unbind path fixed first. Tested on an OrangePi Zero: 720x480i
on the connector, image written to /dev/fb0 comes back correct through a
capture card.
2026-08-30 19:06:36 +02:00
Tomaz Zaman 8118ce120b gateway-dk: hash BSP files via calculate_hash_for_files
Replace the ad-hoc cat | sha256sum of the copied board BSP files with
Armbian's calculate_hash_for_files helper — the same one artifact-kernel.sh
uses for the kernel config. It hashes each file's SRC-relative path and
content, sorted and order-independent, avoiding the concatenation-boundary
ambiguity of a raw cat.
2026-08-30 19:05:52 +02:00
Tomaz Zaman 07436f4820 gateway-dk: drop redundant KERNELSOURCE and hash copied BSP files
KERNELSOURCE was identical to Armbian's MAINLINE_KERNEL_SOURCE default
(the kernel.org linux-stable tree), and hardcoding it opted the kernel
fetch out of the tuna/bfsu/google mirror resolution. Drop it and let the
default apply; KERNELBRANCH stays pinned to the 6.12.103 commit, which
lives in that same stable tree.

Separately, the kernel cache key folded this extension's own source
(declare -f) but not the content of the board BSP files it copies into
the tree (sfp-led.c, leds-lp5812.*, the parent Kconfig/Makefile and the
board Kconfig patch). Editing one produced a different kernel that reused
the cached artifact. Fold their content hash in too.
2026-08-30 19:05:52 +02:00
Tomaz Zaman 33fad1e1ac gateway-dk: fold custom_kernel_config source into the kernel artifact hash
opts_* changes and the ASK pin already invalidate the kernel artifact
hash — opts auto-fold into kernel_config_modifying_hashes, and the pin
via ask_modules= — and the overlay synthesis is source-hashed through
extension_hooks_to_hash. The non-opts wiring in custom_kernel_config__ask_modules
(module-source copy, Kconfig/Makefile stitching) was the one path not
covered, since custom_kernel_config is not in extension_hooks_to_hash.

Fold the function's own parsed source into the hash so pure code changes
there rebuild the kernel. declare -f is comment/whitespace-insensitive,
so comment edits do not cause spurious rebuilds.
2026-08-30 19:05:52 +02:00
Tomaz Zaman 67e324c99b gateway-dk: move ASK/SDK kernel symbols from family config into the extension
linux-ls1046a-current.config is a family-level config shared by every
LS1046A board. ASK offload depends on licensed NXP FMan firmware, so a
future non-ASK LS1046A board may run plain mainline — and the SDK/offload
symbols only exist once this extension stages the SDK overlay. Move the
DPAA/FMan/QBMan and ASK-module symbols out of the checked-in config and
force them from the extension's opts arrays instead, keeping the family
config mainline-clean.

Kconfig defaults are not safe to rely on: FSL_DPAA_1588 defaults n,
FSL_SDK_DPA defaults n, and FSL_DPAA_ETH_MAX_BUF_COUNT defaults 128 (we
need 640), so set them explicitly via opts_y/opts_val.
2026-08-30 19:05:52 +02:00
Tomaz Zaman 05fda5790e gateway-dk: fail loud on depmod failure in WiFi postinst
depmod builds the modules.dep/aliases indexes that autoload mlan before
moal. Masking its exit with || true let dpkg report a successful install
even when indexing failed, leaving the driver unable to autoload. Drop
the mask in postinst so the failure surfaces. postrm keeps || true so
package removal still succeeds if the kernel dir is already gone.
2026-08-30 19:05:52 +02:00
Tomaz Zaman 3ee59b3470 gateway-dk: harden ASK kernel-config against silent offload loss
Address CodeRabbit review:

- Fail loud if drivers/staging/fsl_qbman is absent after the 005 SDK
  overlay. The post-patch wiring is the only registration path once patch
  110's staging hunks are stripped, so a silently-skipped wiring would ship
  a kernel with no SDK QBMan driver and no error.

- Force the SDK DPAA/FMan stack (FSL_SDK_FMAN/BMAN/QMAN) explicitly on, and
  the competing mainline FSL_FMAN off, via the kernel config opts arrays,
  instead of relying on Kconfig defaults. ASK_CDX depends on FSL_SDK_FMAN
  (which requires !FSL_FMAN); if a future mainline enabled FSL_FMAN by
  default, olddefconfig would silently drop ASK_CDX and a non-offloading
  kernel would build green. Mainline FSL_DPAA_ETH depends on FSL_FMAN, so
  disabling FSL_FMAN keeps it off transitively.
2026-08-30 19:05:52 +02:00
Tomaz Zaman efd1aaa6bc gateway-dk: lower mwifiex cfg80211 guard to 6.12.101
Address CodeRabbit review: the mwifiex compat patch guarded
set_monitor_channel's net_device parameter on 6.12.103, but the cfg80211
change was backported to the 6.12.y stable series in v6.12.101 (verified:
v6.12.100 old signature, v6.12.101 new). The old guard would select the
wrong signature on 6.12.101 and 6.12.102. Regenerate the patch at 6.12.101
and rename it version-agnostically.
2026-08-30 19:05:52 +02:00
Tomaz Zaman a5c37ba012 gateway-dk: add NXP 88W9098 WiFi + Bluetooth support
The Mono Gateway DK takes an optional PCIe 88W9098 (u-blox JODY-W3)
WiFi+BT combo card. Build the NXP mlan/moal fullmac WiFi driver as a
standalone kernel-module .deb (gateway-dk-wifi) against the kernel
headers, ship it with the 9098 combo firmware, and bake it into every
image (inert when no card is present).

- gateway-dk-ask.sh: pre_customize_image__002_build_wifi fetches the
  driver (nxp-imx/mwifiex) and firmware (nxp-imx/imx-firmware, sparse
  checkout of just the 9098 image), builds mlan.ko/moal.ko (PCIe-9098,
  cfg80211 fullmac, STA + uAP), and packages the modules + firmware +
  module autoload into gateway-dk-wifi. The .deb depends on the exact
  linux-image version (the prebuilt modules are vermagic-locked) and
  recommends the hostapd/wpa/iw/regdb userspace.
- mwifiex-cfg80211-mainline-6.12.103.patch: the driver gates
  set_monitor_channel's net_device argument on cfg80211 >= 6.13, but
  stable 6.12.103 backported that one API; lower the guard so the driver
  builds against the in-kernel cfg80211 (OpenWrt sidesteps this via
  mac80211 backports). It is the only cfg80211 op 6.12.103 backported.

The combo firmware also carries the BT blob, so the board's DTS-declared
btnxpuart controller initializes cleanly instead of erroring. Validated on
hardware: the 9098 enumerates two phys with STA + AP interfaces.
2026-08-30 19:05:52 +02:00
Tomaz Zaman 55f612aed1 ls1046a: migrate gateway-dk to mainline kernel + NXP SDK overlay
Switch the LS1046A family off the NXP vendor kernel (tag lf-6.12.49-2.2.0)
onto stock mainline linux-6.12.y, pinned at v6.12.103. The DPAA/FMan/QBMan
SDK that mainline does not carry is fetched from NXP at the ref the ASK
release pins and synthesized into an overlay patch at build time, with the
ASK hook + fix series (010-110) staged alongside; nothing SDK-related is
committed to the tree.

- ls1046a.conf: KERNELSOURCE -> kernel.org stable, KERNELBRANCH pinned to
  the exact commit the ASK patch series targets.
- gateway-dk-ask.sh: fetch the NXP SDK (fetch_from_repo, at the ref read
  from ASK's pins/nxp-sdk-srcrev.inc), overlay the driver source into its
  mainline locations, and synthesize two patches into userpatches for the
  Armbian patcher: 005 (SDK) and 006 (board device tree). The SDK-flavour
  DPAA dtsi go into a private arch/arm64/boot/dts/freescale-sdk/ dir (wired
  via subdir-y) so mainline's shared freescale/ dtsi are never overwritten
  and the sibling QorIQ boards are unaffected.
- Drop drivers/staging/{Makefile,Kconfig} hunks from the ASK series (the
  Armbian driver harness echo-appends out-of-tree drivers to those files
  before the series, breaking patch context) and re-add the fsl_qbman
  wiring post-patch.
- Remove the committed 001/002/004 kernel patches: INA234 (001) and the
  libbpf const-correctness fix (004) are both already in mainline 6.12.103;
  the board device tree (002) now comes from ASK.
- Carry the in-tree ASK module parent Kconfig/Makefile in the BSP (ASK 1.0.0
  dropped them from its root, as OpenWrt/Yocto build the modules out-of-tree).

Kernel boots on the Mono Gateway DK; DPAA/FMan hardware offload runs at 10G
line rate.
2026-08-30 19:05:52 +02:00
Igor Pecovnik 826a489e72 armbian-zsh: load bundled plugins robustly (fixed path + deferred highlight)
Address review on armbian-plugins.zsh:

- Load from the fixed install path $ZSH/custom/plugins instead of
  $ZSH_CUSTOM, which a user may repoint elsewhere.
- Stop relying on custom-file filename order to make zsh-syntax-highlighting
  last (a later custom file could add widgets after it). Defer it to a
  one-shot precmd hook that fires just before the first prompt — after all
  init, including the user's ~/.zshrc — then removes itself.

zsh-autosuggestions still loads immediately (it must precede highlighting).
Verified on zsh 5.9 with stub plugins: autosuggestions loads at source time,
highlighting loads on the first precmd and the hook self-removes.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Igor Pecovnik 2009780522 armbian-zsh: preserve mapfile -d '' as the NUL delimiter
The shim overwrote an explicitly empty -d '' with newline, so
`mapfile -d '' arr` split on newline instead of NUL (Bash's -d ''
semantics, used with find -print0 / sort -z). Drop the empty-to-newline
fallback: the initial __delim default already covers an omitted -d, and
zsh's `read -d ""` splits on NUL. Verified on zsh 5.9 that -d '' now
yields NUL-delimited records while newline / -d ':' / -u fd are unchanged.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Igor Pecovnik a0d29e6be8 armbian-zsh: address review — plugins reach upgraded users; mapfile -u fd
Two review fixes:

1. Enable the bundled plugins for EXISTING users on upgrade. Adding them to
   the per-user ~/.zshrc plugins=() only helped new users (postinst copies
   .zshrc only when absent). Instead source zsh-autosuggestions and
   zsh-syntax-highlighting from a package-owned custom/armbian-plugins.zsh,
   which the upgrade refreshes for everyone. It sorts last among the custom
   snippets, so zsh-syntax-highlighting still loads after all other widgets.
   The plugins=() line is reverted to its original list.

2. mapfile/readarray: handle -u FD. The flag parser dropped -u but not its
   operand, so `mapfile -u 3 arr` used the fd number as the array name and
   read stdin. Parse -u and pass it to `read -u`. Verified on zsh 5.9 with
   distinct data on stdin vs fd 3, plus the -t / -d / unterminated-record
   regressions.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Igor Pecovnik cd2a78795d armbian-zsh: make the mapfile/readarray shim match Bash semantics
Address review feedback: the first shim always stripped the newline, took
the array name from the last argument (so a bare `mapfile` with no name
broke), ignored -d, and dropped a final record with no trailing delimiter.

Rework it to follow Bash: default the name to MAPFILE, keep the delimiter
unless -t is given, honour -d DELIM, accept-and-ignore the other flags, and
capture a final unterminated record. readarray still delegates to mapfile.

Verified under zsh 5.9: default->MAPFILE, keep-vs-strip newline, -d ':',
the unterminated-record case, empty input, and readarray delegation all
match Bash; the generated custom snippet still passes `zsh -n`.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Igor Pecovnik c77cc42a33 armbian-zsh: persist more shell history than the oh-my-zsh default
oh-my-zsh already configures history well (HISTSIZE, dedup, share_history,
hist_verify) and completion (case-insensitive matching, menu select,
caching, colours), so there is nothing to duplicate there. The one gap it
leaves is SAVEHIST=10000 while keeping 50000 in memory. Ship a small
custom/armbian-defaults.zsh (loaded after oh-my-zsh) that raises SAVEHIST
to HISTSIZE so the full history is persisted, and adds HIST_REDUCE_BLANKS
and HIST_FIND_NO_DUPS.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Igor Pecovnik 71af07d5ad armbian-zsh: bundle zsh-autosuggestions and zsh-syntax-highlighting
The two external plugins that make zsh feel modern — fish-style history
suggestions and command-line syntax highlighting — were not shipped.
Vendor both the same way evalcache already is (fetch_from_repo, pinned to
a commit), drop them into custom/plugins, and enable them in plugins=().
zsh-syntax-highlighting is placed LAST as it requires. Their .git dirs are
stripped so they don't bloat the .deb.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Igor Pecovnik 431a691c3d armbian-zsh: bump oh-my-zsh (was 2023-05-21) and pin evalcache
The bundled oh-my-zsh was pinned to a 2023-05-21 commit — ~2.5 years of
missed fixes, completions and security updates. Bump it to a current
commit. Also pin evalcache to a commit instead of tracking branch:master,
so the package build is reproducible instead of drifting with upstream.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Igor Pecovnik 31e3eeb467 armbian-zsh: restore bash-only builtins for interactive parity
zsh lacks a handful of bash builtins, so bash one-liners typed at the
prompt (or sourced into an interactive shell) fail after switching the
login shell to zsh. Verified missing on zsh 5.9: complete / compgen /
compopt, mapfile / readarray (shopt/caller/bind/help too, but those don't
shim cleanly). Note this only affects interactive input — anything with a
"#!/bin/bash" shebang (all Armbian tooling, update-motd.d) runs under bash
regardless of the login shell.

Ship /etc/oh-my-zsh/custom/armbian-compat.zsh, which oh-my-zsh
auto-sources for every user ($ZSH_CUSTOM/*.zsh, default $ZSH/custom, after
compinit). It:
  - runs bashcompinit, restoring the complete/compgen/compopt builtins so
    a tool's bash-completion file works under zsh;
  - defines mapfile/readarray shims (array name = last arg, newline
    stripped) when the builtin is absent.

Delivered as a package-owned custom snippet rather than appended into each
user's ~/.zshrc, so updates ship with the package instead of drifting per
user. Generated file passes `zsh -n` and the shims were tested end to end.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:03:49 +02:00
Clownacy 37ec19f848 Fix Ayn Odin 2 Mini (& Portal?) audio/USB/battery support.
The `Armbian_community_26.11.0-trunk.19_Ayn-odin2mini_resolute_current_6.18.45_kde-plasma_desktop` build found at 'https://armbian.com/boards/ayn-odin2mini' just so happens to work fine on my Ayn Odin 2 Mini, but as soon as I update it (or switch from the developer build to the stable build), audio, USB-C, and battery support all disappear.

Comparing the `dmesg` output between a working build and a broken build, I found one difference:

Success:
```
[    1.428471] Run /init as init process
[    1.428472]   with arguments:
[    1.428474]     /init
[    1.428474]   with environment:
[    1.428475]     HOME=/
[    1.428476]     TERM=linux
(...)
[    3.404914] EXT4-fs (mmcblk0p2): mounted filesystem 922d114c-c6a9-4c64-86cd-84cae0326d11 ro with writeback data mode. Quota mode: none.
(...)
[    6.608309] remoteproc remoteproc0: adsp is available
[    6.609558] remoteproc remoteproc1: cdsp is available
(...)
[    6.829048] remoteproc remoteproc1: powering up cdsp
[    6.833590] remoteproc remoteproc1: Booting fw image qcom/sm8550/ayn/cdsp.mbn, size 7086504
(...)
[    6.909040] remoteproc remoteproc1: remote processor cdsp is now up
(...)
[    7.180015] remoteproc remoteproc0: powering up adsp
(...)
[    7.194469] remoteproc remoteproc0: Booting fw image qcom/sm8550/ayn/odin2mini/adsp.mbn, size 28379480
(...)
```

Fail:
```
[    1.415189] Run /init as init process
[    1.415191]   with arguments:
[    1.415192]     /init
[    1.415193]   with environment:
[    1.415193]     HOME=/
[    1.415194]     TERM=linux
(...)
[    1.685605] remoteproc remoteproc0: adsp is available
[    1.685642] remoteproc remoteproc0: Direct firmware load for qcom/sm8550/ayn/odin2mini/adsp.mbn failed with error -2
[    1.685645] remoteproc remoteproc0: powering up adsp
[    1.685654] remoteproc remoteproc0: Direct firmware load for qcom/sm8550/ayn/odin2mini/adsp.mbn failed with error -2
[    1.685655] remoteproc remoteproc0: request_firmware failed: -2
[    1.690042] remoteproc remoteproc1: cdsp is available
[    1.696068] remoteproc remoteproc1: powering up cdsp
[    1.699586] remoteproc remoteproc1: Booting fw image qcom/sm8550/ayn/cdsp.mbn, size 7086504
[    1.794079] remoteproc remoteproc1: remote processor cdsp is now up
(...)
[    3.006954] EXT4-fs (mmcblk0p2): mounted filesystem 922d114c-c6a9-4c64-86cd-84cae0326d11 ro with writeback data mode. Quota mode: none.
```

In the successful run, `remoteproc` runs after the EXT4 filesystem is mounted, and successfully loads `qcom/sm8550/ayn/odin2mini/adsp.mbn`, whereas the failed runs `remoteproc` before the filesystem is mounted, and fails to load the firmware with a 'file not found' error code.

I am not aware of any way to delay `remoteproc`, so the alternative is load the firmware into the initramfs so that it is available before the filesystem is loaded. There is already an `initramfs-tool` hook for this, but it ignores symlinks; this is relevant because `qcom/sm8550/ayn/odin2mini/adsp.mbn` is actually a symlink to `qcom/sm8550/ayn/odin2/adsp.mbn`.

This is fixed by making `find` follow symlinks, so that the missing firmware is correctly included in the initramfs.
2026-08-30 19:03:07 +02:00
Igor Pecovnik bbe2dcc894 cli-flash: match image selectors as full fields, not substrings
The per-selector image filter used a loose substring test
(candidate == *"${token}"*). Image names are
VENDOR_VERSION_Board_release_branch_kver..., where Board/release/branch are
underscore-delimited middle fields, so a short release/branch (e.g. 'sid',
'edge') could match inside another field and keep the wrong image. Anchor each
selector to a complete _-delimited field (*"_${token}_"*). Empty selectors are
still skipped and the sequential board->release->branch narrowing is unchanged.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:00:59 +02:00
Igor Pecovnik 904cab7b5f cli-flash: fail loudly when no CARD_DEVICE was given
`./compile.sh flash` without CARD_DEVICE announced the image, counted
down, then exited 0 having written nothing. Nothing downstream catches
it: write_image_to_device tests `lsblk "${device}"`, which is false for
an empty device, and its in-container fallback branch is guarded by
`[[ -n ${device} ]]`, so both branches fall through and the write is
skipped in silence. To the operator that reads as a successful flash.

Check the target up front, before the countdown, and say what to pass.
Also reject a CARD_DEVICE that is not a block device, which otherwise
took the same silent path.

Docker is not the obstacle here and the message does not mention it:
lib/functions/host/docker.sh passes CARD_DEVICE into the container when
it is set.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:00:59 +02:00
Igor Pecovnik 53aeec167d cli-flash: find the image when BOARD/RELEASE/BRANCH are unset
`./compile.sh flash` with no arguments failed even with an image sitting
in output/images:

  ls: cannot access '/armbian/output/images/*__*.img': No such file or directory
  cli_flash [ No image file specified. Using latest built image file found:  ]
  error! [ No image file to flash. ]

The lookup composed one glob out of all three of BOARD, RELEASE and
BRANCH. With none of them set that collapses to '*__*.img', which cannot
match an Armbian image: they are named <version>_<Board>_<release>_<branch>_...
with single underscores. The glob went to `ls` unquoted, so the failure
surfaced as raw ls stderr and an empty image_file, and the real message
arrived two lines later.

The same composition broke a partially specified invocation too. BOARD
and BRANCH without RELEASE produced '*Rockpi-4a__edge*.img', which also
matches nothing.

Take the comment at its word and list the directory, newest first, then
narrow by whichever of the three were actually set. find rather than a
glob, so a missing or empty output/images yields an empty list instead of
an unexpanded pattern on stderr, and the operator gets one clear error
naming what to do next.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 19:00:59 +02:00
Patrick Yavitz b4bf706085 SpacemiT K1: Set KERNEL_BTF="no" on both legacy and current
When booting Debian Trixie the system hangs when loading udev. As
discussed here https://github.com/armbian/build/pull/10462

Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
2026-08-30 18:58:30 +02:00
igorpecovnik c8ac2f3073 Automatic board configs status synchronise 2026-08-30 18:56:36 +02:00
Patrick Yavitz 495011ef25 SpacemiT K1: Switch to boot.scr: BPI-F3 Musebook MusePi Pro
Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
2026-08-30 12:52:10 -04:00
Patrick Yavitz 3c3fbd29e5 SpacemiT K1: Add boot script and default env file
Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
2026-08-30 12:52:10 -04:00
Igor Pecovnik 2adcd97077 mt7623: bananapi-r2: disable PMIC keys for the shorted power button
The power button on this unit is physically shorted so the board
auto-powers-on when DC is applied; the MT6323 PMIC then sees KEY_POWER held
forever and the board reboots as soon as userspace acts on the stuck key
(same failure as frank-w/BPI-Router-Linux#35).

Disable the whole &mt6323keys node for both mt7623 kernel targets (current
6.18, edge 7.1). The MFD core skips a disabled child (mfd_add_device ->
of_device_is_available), so the mtk-pmic-keys driver never binds - the DT
equivalent of the community fix (blacklisting mtk_pmic_keys). Disabling only
the "power" child does not work: mtk_pmic_keys_probe() iterates key children
by index with for_each_child_of_node_scoped() and never checks availability.

u-boot needs no change (its BPI-R2 DT has no mt6323/keys node). Verified
on-device via the runtime DTB.

Link: https://github.com/frank-w/BPI-Router-Linux/issues/35

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-08-30 18:46:00 +02:00
Julian Sikorski 4a50e16e09 Update odroidxu4-current to 6.6.155 2026-08-30 08:16:56 +02:00