Enable the PCIe Gen2x1 controller and combo PHY on the NanoPi Zero2
to support the M.2 Key-E 2230 slot used for WiFi/BT cards (e.g. Intel
AX210).
The reset GPIO (gpio1 RK_PA2) and pinctrl (pciem1_pins) match the
vendor kernel device tree.
Note: Intel AX210 requires iwlwifi firmware >= v89
(iwlwifi-ty-a0-gf-a0-89.ucode) which may not be included in minimal
images. Install linux-firmware or armbian-firmware-full if needed.
Firmware available at:
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/
Tested on hardware with Intel AX210 on kernel 6.18 (current branch).
Enable mainline kernel (current/edge) for the NanoPi Zero2 (RK3528):
- Add current,edge to KERNEL_TARGET
- Override BOOT_FDT_FILE to rk3528-nanopi-zero2.dtb for mainline branches
(vendor kernel uses rk3528-nanopi-rev01.dtb)
- Set SERIALCON=ttyS0 and patch boot script for mainline, as RK3528 debug
UART is UART0 (ttyS0), not UART2 (ttyS2) like other RK35xx SoCs
Tested on hardware with kernel 6.18 (current branch).
- Freeze KERNELBRANCH at v6.12.28 for current branch
- Fix max_hdmi_phy_freq value from 1650000000 to 1650000 Hz
Signed-off-by: Igor Pecovnik <igor@armbian.com>
* uefi-arm64-6.18: fix stmmac Phytium driver compilation
Remove obsolete 'has_gmac' member assignment from struct plat_stmmacenet_data.
The field was removed in newer kernels as MAC version detection is now
handled automatically from hardware registers.
Fixes compilation error:
error: 'struct plat_stmmacenet_data' has no member named 'has_gmac'
* meson64-6.19: drop upstreamed odroid regulator boot-on patch
The Odroid HC4 regulator-boot-on fix has been upstreamed in kernel 6.19.
Original patch:
Fixes: 164147f094ec ("arm64: dts: meson-sm1-odroid-hc4: add regulators")
Fixes: 45d736ab17b4 ("arm64: dts: meson-sm1-odroid: add 5v regulator gpio")
Fixes: 1f80a5cf74a6 ("arm64: dts: meson-sm1-odroid: add missing enable gpio")
Fixes: 88d537bc92ca ("arm64: dts: meson: convert meson-sm1-odroid-c4 to dtsi")
* meson64-6.18: update meson-axg mmc phase configuration
Add amlogic,mmc-phase properties to sd_emmc_b and sd_emmc_c nodes
for proper MMC timing configuration on Amlogic AXG SoCs.
* Disable Pythium onboard nic driver
* add hook to allow customizing before kernel make env creation
* Hook runs in docker_cli_prepare_launch() just before DOCKER_EXTRA_ARGS
is processed, allowing extensions to add Docker arguments with a more
descriptive hook name than add_host_dependencies.
* Extension: ccache-remote
Enables ccache with remote Redis storage for sharing compilation cache across build hosts.
Features:
- Auto-discovery via Avahi/mDNS (ccache.local hostname)
- Explicit Redis server configuration via CCACHE_REMOTE_STORAGE
- Build statistics display at end of build (hit/miss/error rates)
- Support for both Docker and native builds
- Hooks for kernel and u-boot compilation environments
Documentation includes server setup instructions with security warnings,
client mDNS configuration, and cache sharing requirements.
* uboot: fix ccache environment and add extension hook
U-Boot build uses `env -i` which clears all environment variables.
CCACHE_DIR and CCACHE_TEMPDIR were not explicitly passed to make,
unlike kernel build (kernel-make.sh). This caused ccache to use
default directory instead of configured Armbian one, breaking
cache statistics and shared cache functionality.
Changes:
- Add CCACHE_DIR and CCACHE_TEMPDIR to uboot_make_envs
- Add uboot_make_config hook for extensions (similar to kernel_make_config),
allowing modification of environment variables before compilation
* add long list of allowed ccache-related env vars
* set permissions to ccache files RW for everyone if cache not private
* ccache: add ccache_post_compilation hook for extensions
* ccache-remote: use ccache_post_compilation hook instead of cleanup handler
Show remote ccache stats after each compilation (kernel, uboot) via hook,
instead of once at the end via cleanup handler. Stats now shown even on
build failure.
* ccache: show stats with safe arithmetic
* ccache/uboot: improve code comments per review feedback
- uboot.sh: clarify ARMBIAN=foe workaround for dual-compiler scenario
- ccache-remote.sh: document that CCACHE_REDIS_CONNECT_TIMEOUT must be
set before extension loads
* ccache-remote: mask storage URLs in logs
Mask CCACHE_REMOTE_STORAGE when emitting Docker env debug logs.
* ccache-remote: extract ccache_inject_envs() helper to deduplicate passthrough loops
Extract ccache_inject_envs() helper to deduplicate identical passthrough
loops in kernel and uboot make config hooks.
ccache-remote: rename functions to follow project naming conventions
Rename get_redis_stats and mask_storage_url to ccache_get_redis_stats
and ccache_mask_storage_url to follow project naming conventions.
ccache-remote: mask credentials in debug log output for passthrough loops
Mask CCACHE_REMOTE_STORAGE value through ccache_mask_storage_url() before
logging in both Docker env and make env passthrough loops to avoid leaking
credentials into build logs.
* ccache-remote: add HTTP/WebDAV backend and DNS discovery
* ccache-remote: move extension script into directory layout
* ccache-remote: add server setup docs and config files
* ccache-remote: validate Redis credentials in URLs
* ccache-remote: document Redis auth options and safe passwords
Add separate insecure config example for trusted networks.
Recommend URL-safe hex passwords and update setup docs.
* ccache-remote: improve Docker loopback handling and IPv6 host parsing
Was only used once (orangepi5pro.csc) and has been deprecated.
Remove the implementation, the board config, and the README entry.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Other read calls in the same file already use -r.
Without -r, backslashes in user input are interpreted as escape characters.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add extension that enables CONFIG_RUST in kernel menuconfig and
configures the build environment (rustc, rustfmt, bindgen, rust-src)
using versioned APT packages from noble-security/noble-updates.
Handles env -i in run_kernel_make_internal by passing tool paths
via RUSTC, RUSTFMT, BINDGEN make params and RUST_LIB_SRC env var.
Includes optional RUST_KERNEL_SAMPLES=yes for building sample
Rust modules (rust_minimal, rust_print, rust_driver_faux) as a
toolchain smoke test.
Tested: kernel 6.19 build for rockchip64 on aarch64, both with
and without Docker.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
При упаковке linux-headers скомпилированные бинарники из scripts/ удаляются,
так как они собраны под хост сборки, а не под целевую машину (типичный случай
кросс-сборки). Поэтому postinst при установке пакета пересобирает их нативно,
предварительно запустив `make olddefconfig`.
Однако olddefconfig не только подготавливает окружение — он заново вычисляет
конфигурацию ядра, проверяя тулчейн, доступный на целевом хосте при установке.
Если инструменты, использовавшиеся при сборке ядра, на целевой машине отсутствуют
или имеют другую версию, olddefconfig молча отключает соответствующие CONFIG_*
опции (например, CONFIG_CC_IS_CLANG, CONFIG_LTO_CLANG, CONFIG_DEBUG_INFO_BTF).
В результате установленный пакет заголовков описывает не то ядро, которое
реально собрано и работает, а то, которое можно было бы собрать на данном хосте.
Это затрагивает:
- include/generated/autoconf.h (используется препроцессором C)
- include/config/auto.conf + маркер-файлы include/config/ (используются
make-правилами kbuild)
- include/generated/rustc_cfg (используется Rust-сборками)
Все эти файлы — артефакты сборки и должны описывать скомпилированное ядро,
а не возможности хоста установки.
Исправление: при упаковке сохраняем сайдкар-тарбол с build-time версиями
include/config/ и include/generated/{autoconf.h,rustc_cfg}; восстанавливаем
его в postinst в самом конце, после всех make-шагов.
Fixes: https://github.com/armbian/build/issues/9425
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- that was for otg/ums bringup
- now `-u-boot.dts` does it instead
- add missing usbdp_phy0 with lane mux split with DP (type-c/DP)
- drop DP mux from usbdp_phy1 (which should just be type-a and no DP)
- for the Mekotronics R58X Pro LCD
- The Vinka VK2C21 (and pin-compatible VK2C21A/VK2C21B) is a memory-mapping
segment LCD controller that communicates over I2C. It can drive up to
128 segments (e.g. 32 SEG × 4 COM in 1/3 bias mode).
- Some SBCs wire this chip to GPIO pins without I2C pull-up
resistors, making the standard i2c-gpio (open-drain) driver unusable.
This driver therefore bit-bangs I2C in push-pull mode directly via GPIO,
requiring no external pull-ups.
- extra glyphs and fix for top-bar
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>