#10313 isolated the ttyGS0 getty in a private device namespace to stop
it deadlocking across USB gadget re-bind cycles. That namespace mounts a
tmpfs over /dev holding only systemd's minimal node set; DeviceAllow=
filters cgroup device access but never creates the ttyGS0 node there.
systemd opens TTYPath=/dev/ttyGS0 before entering the namespace, so
agetty inherits working fds and prints the prompt. util-linux login
however cannot map stdin back to a /dev path via ttyname(), dies with
"FATAL: bad tty", and Restart=always turns that into an endless login
loop over the Type-C serial console.
Wrap /bin/login with `nsenter -t 1 -m` so it runs in PID 1's mount
namespace, where /dev/ttyGS0 exists again. setns does not change cgroup
membership, so the DeviceAllow filter and the re-bind hang protection
from #10313 stay in effect.
Signed-off-by: Mkirin <haohao.wang@seeed.cc>
Refactor the boot infrastructure for Magicsee C400 Plus (aml-c400-plus) to support mainline U-Boot integration and drop the legacy Android hybrid boot implementation.
Key changes include:
- Enabled native U-Boot building using the v2026.07 branch.
- Switched the FIP custom post-processing to use the correct 'tartiflette-s912' signing firmware instead of 'p212'.
- Migrated from legacy boot scripts to full Extlinux support (SRC_EXTLINUX="yes") for a modern, standard boot flow.
- Cleaned up obsolete vendor boot scripts (s905_autoscript, u-boot.ext, emmc_autoscript) to avoid conflicts during package pre-installation steps.
- Addressed custom defconfig, upstream DTS, and U-Boot DTSI overlays into the build tree patch structure.
Tested and verified on XFCE desktop environment with working Wi-Fi (SDIO), Bluetooth, Ethernet, and USB. Internal eMMC storage is successfully detected by the modern kernel.
mvebu boards carry SATA, and the drives report temperature over SMART —
but only smartctl can read it that way. fancontrol, thermal zones and
everything else in the regulation chain read hwmon, so without
CONFIG_SENSORS_DRIVETEMP the drives do not exist as a temperature source
at all.
rockchip64 carries the same option for helios64, the other Kobol NAS, in
all three branches. mvebu is the family that misses it: neither the edge
nor the current config mentions the symbol at all, and legacy has it as
an explicit "is not set". Enable it in all three, since helios4 builds
all three targets.
drivetemp registers a SCSI class_interface rather than a driver with an
id_table, so it carries no modalias and udev never autoloads it. Name it
in MODULES_* for helios4, which is the board this was tested on;
maintainers of the other mvebu boards can add the same line once they
have checked it on their hardware.
Verified on helios4 running 7.2.3: after boot the drives are absent from
hwmon, and modprobe drivetemp brings up one hwmon per disk (33 °C and
29 °C on the two attached drives).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- add libssc_0.4.2-1_arm64.deb and xiaomi-sheng-thp_0.3.9_arm64.deb under packages/bsp/xiaomi-sheng/
- install both via install_deb_chroot in post_family_tweaks__xiaomi-sheng_enable_services(),
libssc first then the NT36532E touch host processor daemon; apt resolves deps from repo
Switch BOOTBRANCH/BOOTPATCHDIR to the v2026.07 tag and adapt the
self-contained helios64 patch set:
- drop 1000-exception-include-string.patch: upstream carries the same
fix since 8f83a459667 ("cmd/exception: missing include string.h")
- refresh hunk context of 1001-helios64-enable-target.patch and
cmd-fileenv-read-string-from-file-into-env.patch (line offsets and
the "if NET" guard after the CMD_XXD block in cmd/Kconfig); the
added lines are unchanged
- general-fix-btrfs-zstd-decompression.patch and the overlay files
(defconfig, board/, include/configs, u-boot.dtsi, upstream dts)
apply unchanged
All patches apply to v2026.07 with zero fuzz and zero offset.
Assisted-by: Claude:claude-fable-5.1
The unconditional `enable_extension "radxa-aic8800"` and
`source recomputer-rk35xx-common.inc` at the top of the board conf
duplicated what the BRANCH case below already does for vendor, so
BRANCH=vendor sourced common.inc twice. Each sourcing runs
`enable_extension "seeed_armbian_extension"`, which enables
`armbian-ota/ota-support` again; the second pass trips
"OTA_COMMON_ROOTFS: readonly variable" (ota-support.sh declares it
readonly) and aborts the build. The case statement covers both
branches, so the pre-case lines are simply removed.
* board: add Xiangcheng XC3399FR (RK3399)
The XC3399FR is an RK3399 industrial SBC (4GB LPDDR4, eMMC, GbE via
RTL8211E, 2x USB3, HDMI, AP6256 WiFi/BT). The device tree is derived from
rk3399-fine3399.dts, corrected against the vendor Android DTB and verified
on real hardware (rev v1.1a):
- describes the USB3 VBUS-enable regulators the generic config leaves
floating (revives the second USB3 port) and drops the st7735r panel node
that held one of them low
- Bluetooth as brcm,bcm4345c5 @ 1.5M (BT 5.0)
- board-specific RGMII skew; PCIe disabled (no PCIe routed on this board)
- correct fan/LED/backlight/4G-slot/UART4; reference-board junk removed
(HYM8563 RTC proven absent by i2c scan, RT5640, GT911, IR)
The board uses boot.scr (not extlinux), so the stock armbian-install
'boot from eMMC, system on this disk' flow works: the rockchip64 boot
script resolves paths through ${prefix}, which handles both the SD-card
and eMMC-partition /boot layouts.
Product page: https://www.proembed.com/Download/71.html
Signed-off-by: Ho Hoang Nam <liamhnam@gmail.com>
* board: xc3399fr: add BOARD_VENDOR
Signed-off-by: Ho Hoang Nam <liamhnam@gmail.com>
* board: xc3399fr - address review feedback
- drop the duplicated vendor/board name from the header comment
- add INTRODUCED (year the board came to market)
- build for edge and bleedingedge too, and ship the device tree in the
rockchip64-7.2 / rockchip64-7.3 patch directories so the board is not
dropped on the next LTS kernel bump
- reword the SRC_EXTLINUX note and point at armbian/configng#985
Signed-off-by: Ho Hoang Nam <liamhnam@gmail.com>
* board: xc3399fr - align the RK808 interrupt pinmux with its interrupt
pmic_int_l was inherited verbatim from rk3399-fine3399.dts and muxes
GPIO1_B2, while the rk808 node declares its interrupt on GPIO1_C5. Those
two cannot both describe the same line. Every internally consistent
RK3399 board in the tree that takes the PMIC interrupt on GPIO1_C5 also
muxes GPIO1_C5 (am40, emb-3531, orangepi-4, xiaobao-nas); fine3399 is
the only one where the two disagree. Align pmic_int_l with the value the
working configuration already declares.
Nothing else in this device tree claims either pin, so this only moves a
pull-up from an idle pin onto the interrupt line itself.
Also soften the header comment: the vendor Android device tree referenced
there was dumped from an XC3399FR of a different hardware revision, so it
is a cross-check, not an authority.
Signed-off-by: Ho Hoang Nam <liamhnam@gmail.com>
* board: xc3399fr - declare the output voltage of the GPIO load switches
vcc5v0_host, vcc5v0_otg, fan_pwr and vcc_4g are plain GPIO-enabled load
switches, so their output is their input rail. Declare equal min/max
microvolts rather than letting the fixed-regulator driver register them
with microvolts = 0.
vcc_phy is deliberately left without voltage constraints: I have not
measured that rail and would rather describe nothing than describe it
wrongly.
Signed-off-by: Ho Hoang Nam <liamhnam@gmail.com>
---------
Signed-off-by: Ho Hoang Nam <liamhnam@gmail.com>
armbian/build#10448 bumped the "edge" kernel target to 7.2.
rk3528.dtsi renamed the USB2 PHY labels (u2phy* -> usb2phy*) going into
7.2, and usb_host0_xhci now gets its USB2/USB3 phys wired by default at
SoC level, so the board override no longer needs to repeat them. All
other labels this board dts references (gmac1, spi1_csn0/1, i2c5m0_xfer,
uart1m0_xfer, combphy, sdmmc, ...) are unchanged.
* odroidn2: move u-boot board patches v2026.04 -> v2026.07
Pure rename, no content changes; prepares the bump of odroidn2 to
u-boot tag:v2026.07. The v2026.04 patch pool stays for other boards.
* odroidn2: bump u-boot to tag:v2026.07
Move ODROID-N2/N2+ from v2026.04 to the v2026.07 release. Board
patches (meson_gx_mmc f_max cap to 24 MHz, USB/NVMe/SCSI-first boot
order) apply cleanly to v2026.07; the f_max cap is still required
since upstream keeps 40 MHz. The shared v2026.07 pool already carries
the btrfs zstd decompression fix and cmd-fileenv.
Pin edge to stable v7.2.3 instead of following the moving 7.1 branch.
Regenerate the configuration against the final Q6A patch stack.
Signed-off-by: SuperKali <hello@superkali.me>
Add some extra patches from upstream to fix some dmesg warnings.
Reorder legacy and current. Delete 6.1 as it's no longer used.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
- `1001-fdt_fixup_ethernet-add-logs.patch` is already in v2026.07's root, just drop
- move dt/u-boot-dt/defconfig (as-is)
- drop ramboot/471/472 bins as it's handled by `EXT=rkusboot` now
- fancy: LwIP, mbedTLS, wget
Pin edge to the stable v7.2.3 tag instead of following the moving
7.1.y branch. Regenerate the config against the final Q8B patch stack.
Signed-off-by: SuperKali <hello@superkali.me>
Move Arduino UNO Q from Linux 7.1 to v7.2.3 and refresh the edge config.
Pin the kernel tag so builds remain reproducible.
Signed-off-by: SuperKali <hello@superkali.me>
Add armbian.bootdev/armbian.bootdevnum so initramfs hooks can anchor
root/userdata resolution to the disk U-Boot actually loaded the OS from
when several disks carry identical cloned images (duplicate
PARTLABEL/UUID); without the token the first-match scan may assemble
the root from the wrong disk.
The Zero 3W device tree disables the SoC's working on-die RTC and
enables an external hym8563 (on s_twi2) that is not populated on the
board, so every boot starts in 1970 with a probe error and a wrong
clock until NTP syncs (breaking apt on fresh boots, among other things).
- 0009: enable the SoC RTC (allwinner,rtc-v201, driver already =y),
disable the phantom hym8563 node.
- kernel config: point RTC_HCTOSYS_DEVICE and RTC_SYSTOHC_DEVICE at
rtc0 - with the phantom gone the SoC RTC registers as rtc0, so the
kernel both restores the system clock from it at boot and keeps it
updated via the periodic NTP sync.
Verified on hardware: /dev/rtc0 registers, time survives reboots, probe
error gone.
The mt7623 family now targets current 6.18 + edge 7.2, so the
archive/mt7623-7.1 patch directory is no longer selected by any
build - remove it (its two patches, power-key + PSE-reset, already
live in mt7623-6.18 and mt7623-7.2).
Re-ran rewrite-kernel-config against the bumped kernels (KERNEL_BTF=yes
to keep BTF and skip the host-RAM pre-flight): current is unchanged,
edge drops CONFIG_ATALK and CONFIG_DMABUF_SELFTESTS, which are not
offered by the 7.2 kernel.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
With mainline u-boot 2026.07 on SD, current 6.18 / edge 7.2 kernels, and the
onboard MT7530 switch data path fixed (PSE reset for single-PPE mt7623), the
Banana Pi R2 boots and networks end to end. Promote it from community-
supported (.csc) to supported (.conf). Maintainer already set to igorpecovnik.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
The MT7530 DSA switch links up but forwards no data on 6.18/7.1/7.2: user
ports lease nothing and drop all traffic, though management frames reach the
CPU. A driver re-probe of mtk_soc_eth fixes it, isolating the fault to the
frame-engine bring-up. Root cause is upstream e8716b5b0e2e removing the PSE
reset from mtk_open() for multi-PPE SoCs; single-PPE MT7623 needs it.
- add mtk_eth_soc-pse-reset-single-ppe.patch to the mt7623-6.18, -7.1 and
-7.2 kernel dirs: re-add the PSE reset in mtk_open(), gated on ppe_num < 2
so multi-PPE SoCs are unaffected. Verified on hardware: DSA ports now DHCP
and route from boot.
- bump edge target 7.1 -> 7.2.
- carry the shorted-power-key DTS patch into the new mt7623-7.2 dir.
Signed-off-by: Igor Pecovnik <igor@armbian.com>
- `.dts` is copy from rockchip64-7.2
- `recomputer-rk3588_defconfig` is similar to other rk3588 boards, except:
- enable all/most SPI Flash drivers
- enable FUSB302 driver
- `-u-boot.dtsi` just pulls in the generic dtsi + sfc/flash0 bootph
- stores environment in SPI at offset 0xc00000 size 0x20000
- fw_printenv/fw_setenv userspace vs SPI environment
- preboot flashes R/G/B LED (tri-color user LED)
- use mainline AT-F for mainline builds (so HDMI-RX works with mainline kernel)
- keep rkbin blob for vendor builds (although vendor is using rk u-boot for now)
- DeviceTree will be submitted to LKML separately
- identical across v7.1 and v7.2
- board file:
- make way for `edge` by sprinkling "only for vendor" shortcircuits in strategic places
- use a case/esac to gate `aic8800` extension, extra packages, and `recomputer-rk35xx-common.inc` sourcing
- series:
- `dt-bindings: arm: rockchip: Add Seeed Studio reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add USB host to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add USB Type-C to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add DisplayPort to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add PCIe Ethernet to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add M.2 slots to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add HDMI to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add HDMI input to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add analog audio to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add mini PCIe slot to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add 40-pin header to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add cooling fan to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: Add NPU to Seeed reComputer RK3588 Dev Kit`
- `arm64: dts: rockchip: describe PCIe RTL8125 Ethernet on reComputer RK3588`
- `arm64: dts: rockchip: Name the GPIO lines on Seeed reComputer RK3588`
The upstream AYN UCM brings the wcd9395 headphone amp up in CLS_H_ULP
with the compander on, which distorts badly and collapses at high
volume, and its HiFi carries a second Headphones section bound to the
speaker PCM that wins over the real one. Vendor a cleaned-up UCM in
the bsp tree instead of curling the fork zip at build time: a single
Headphones section on PCM 1, a Class-AB HiFi bring-up with HD2
compensation and no compander (the same operating point radxa ships
for the wcd938x Q8B, radxa-pkg/alsa-ucm-conf#18), an entrypoint for
the UEFI card name and slightly higher analog volume.
Signed-off-by: SuperKali <hello@superkali.me>
Trixie still ships a Mesa that predates the Adreno 830, so the desktop
image would run on llvmpipe with no usable GL. Install the GL and
Vulkan stack from trixie-backports in a dedicated hook, and export
FD_MESA_DEBUG=sysmem to dodge the A830 GMEM defect that shows up as
glitches under accelerated browsers.
Signed-off-by: SuperKali <hello@superkali.me>