Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Paul Etienne <fractalclone@gmail.com>
To: buildroot@buildroot.org
Cc: Jean-Paul Etienne <fractalclone@gmail.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: [Buildroot] [PATCH 3/3] configs/rock4b_defconfig: add support for Radxa ROCK-PI 4B board
Date: Thu, 17 Sep 2026 21:17:17 +0200	[thread overview]
Message-ID: <20260917191717.2471859-3-fractalclone@gmail.com> (raw)
In-Reply-To: <20260917191717.2471859-1-fractalclone@gmail.com>

Add board config to support the Radxa ROCK-PI 4B board
with working WiFi, bluetooth and ethernet.

Signed-off-by: Jean-Paul Etienne <fractalclone@gmail.com>
---
 DEVELOPERS                                    |   2 +
 board/radxa/rock4b/extlinux.conf              |   4 +
 board/radxa/rock4b/genimage.cfg               |  22 +++++
 board/radxa/rock4b/linux.fragment             |   6 ++
 .../overlay/etc/modprobe.d/brcmfmac.conf      |   4 +
 .../overlay/etc/network/if-down.d/wpacli      |   1 +
 .../rock4b/overlay/etc/network/if-up.d/wpacli |  50 ++++++++++
 .../rock4b/overlay/etc/network/interfaces     |   9 ++
 .../rock4b/overlay/etc/wpa_supplicant.conf    |   3 +
 .../overlay/etc/wpa_supplicant/wpa_action.sh  |  20 ++++
 .../firmware/brcm/brcmfmac43456-sdio.clm_blob | Bin 0 -> 7163 bytes
 .../patches/linux-headers/linux-headers.hash  |   1 +
 board/radxa/rock4b/patches/linux/linux.hash   |   2 +
 board/radxa/rock4b/patches/uboot/uboot.hash   |   2 +
 board/radxa/rock4b/post-build.sh              |   9 ++
 board/radxa/rock4b/readme.txt                 |  93 ++++++++++++++++++
 configs/rock4b_defconfig                      |  62 ++++++++++++
 17 files changed, 290 insertions(+)
 create mode 100644 board/radxa/rock4b/extlinux.conf
 create mode 100644 board/radxa/rock4b/genimage.cfg
 create mode 100644 board/radxa/rock4b/linux.fragment
 create mode 100644 board/radxa/rock4b/overlay/etc/modprobe.d/brcmfmac.conf
 create mode 120000 board/radxa/rock4b/overlay/etc/network/if-down.d/wpacli
 create mode 100755 board/radxa/rock4b/overlay/etc/network/if-up.d/wpacli
 create mode 100644 board/radxa/rock4b/overlay/etc/network/interfaces
 create mode 100644 board/radxa/rock4b/overlay/etc/wpa_supplicant.conf
 create mode 100755 board/radxa/rock4b/overlay/etc/wpa_supplicant/wpa_action.sh
 create mode 100644 board/radxa/rock4b/overlay/lib/firmware/brcm/brcmfmac43456-sdio.clm_blob
 create mode 120000 board/radxa/rock4b/patches/linux-headers/linux-headers.hash
 create mode 100644 board/radxa/rock4b/patches/linux/linux.hash
 create mode 100644 board/radxa/rock4b/patches/uboot/uboot.hash
 create mode 100755 board/radxa/rock4b/post-build.sh
 create mode 100644 board/radxa/rock4b/readme.txt
 create mode 100644 configs/rock4b_defconfig

diff --git a/DEVELOPERS b/DEVELOPERS
index 2fd4c6e26f..04505b8e96 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1617,6 +1617,8 @@ N:	Jean Burgat <jeanburgat33@gmail.com>
 F:	package/openfpgaloader/
 
 N:	Jean-Paul Etienne <fractalclone@gmail.com>
+F:	board/radxa/rock4b
+F:	configs/rock4b_defconfig
 F:	package/brcmfmac_sdio-firmware
 F:	package/rockchip-rkdeveloptool
 
diff --git a/board/radxa/rock4b/extlinux.conf b/board/radxa/rock4b/extlinux.conf
new file mode 100644
index 0000000000..a0af1ea610
--- /dev/null
+++ b/board/radxa/rock4b/extlinux.conf
@@ -0,0 +1,4 @@
+label Radxa ROCK-PI 4B Linux
+  kernel /boot/Image
+  devicetree /boot/rk3399-rock-pi-4b.dtb
+  append root=/dev/mmcblk1p1 rw rootfstype=ext4 earlycon rootwait
diff --git a/board/radxa/rock4b/genimage.cfg b/board/radxa/rock4b/genimage.cfg
new file mode 100644
index 0000000000..966c869273
--- /dev/null
+++ b/board/radxa/rock4b/genimage.cfg
@@ -0,0 +1,22 @@
+image sdcard.img {
+	hdimage {
+	}
+
+	partition u-boot-tpl-spl-dtb {
+		in-partition-table = "no"
+		image = "idbloader.img"
+		offset = 32K
+	}
+
+	partition u-boot-dtb {
+		in-partition-table = "no"
+		image = "u-boot.itb"
+		offset = 8M
+		size = 30M
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+	}
+}
diff --git a/board/radxa/rock4b/linux.fragment b/board/radxa/rock4b/linux.fragment
new file mode 100644
index 0000000000..ce4b11de27
--- /dev/null
+++ b/board/radxa/rock4b/linux.fragment
@@ -0,0 +1,6 @@
+#
+# Disable the generic GPIO reset driver as it conflicts with
+# the reset-gpios of sdio bus controlling the wifi chip
+#
+
+# CONFIG_RESET_GPIO is not set
diff --git a/board/radxa/rock4b/overlay/etc/modprobe.d/brcmfmac.conf b/board/radxa/rock4b/overlay/etc/modprobe.d/brcmfmac.conf
new file mode 100644
index 0000000000..c997473bd5
--- /dev/null
+++ b/board/radxa/rock4b/overlay/etc/modprobe.d/brcmfmac.conf
@@ -0,0 +1,4 @@
+# Disable Broadcom Frame Aggregation Feature
+# to fix authentication timeout problem for WiFi
+
+options brcmfmac feature_disable=0x2000
diff --git a/board/radxa/rock4b/overlay/etc/network/if-down.d/wpacli b/board/radxa/rock4b/overlay/etc/network/if-down.d/wpacli
new file mode 120000
index 0000000000..340f3ef9e6
--- /dev/null
+++ b/board/radxa/rock4b/overlay/etc/network/if-down.d/wpacli
@@ -0,0 +1 @@
+../if-up.d/wpacli
\ No newline at end of file
diff --git a/board/radxa/rock4b/overlay/etc/network/if-up.d/wpacli b/board/radxa/rock4b/overlay/etc/network/if-up.d/wpacli
new file mode 100755
index 0000000000..983d84fc1e
--- /dev/null
+++ b/board/radxa/rock4b/overlay/etc/network/if-up.d/wpacli
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+START_TRIES=3
+WPA_CLI_BIN="/usr/sbin/wpa_cli"
+WPA_ACTION_SCRIPT="/etc/wpa_supplicant/wpa_action.sh"
+
+# Run this script only for interfaces which have wpa-conf option
+[ -z "$IF_WPA_CONF" ] && exit 0
+
+if [ -n "$IF_WPA_IFACE" ]; then
+	WPA_IFACE="$IF_WPA_IFACE"
+else
+	WPA_IFACE="$IFACE"
+fi
+
+start_wpa_cli() {
+	count=0
+	while [ $count -lt $START_TRIES ]
+	do
+		[ -n "$(pidof wpa_supplicant)" ] && break
+		count=$((count + 1))
+		sleep 0.5
+	done
+
+	[ $count -eq $START_TRIES ] && return
+
+	sleep 0.5
+	$WPA_CLI_BIN -i "$WPA_IFACE" -a /etc/wpa_supplicant/wpa_action.sh -B
+}
+
+case "$MODE" in
+	start)
+		case "$PHASE" in
+			post-up)
+				start_wpa_cli&
+				;;
+		esac
+		;;
+
+	stop)
+		case "$PHASE" in
+			pre-down)
+				killall -q wpa_cli
+				$WPA_ACTION_SCRIPT "$WPA_IFACE" "DISCONNECTED"
+				;;
+		esac
+		;;
+esac
+
+exit 0
diff --git a/board/radxa/rock4b/overlay/etc/network/interfaces b/board/radxa/rock4b/overlay/etc/network/interfaces
new file mode 100644
index 0000000000..1646408d8f
--- /dev/null
+++ b/board/radxa/rock4b/overlay/etc/network/interfaces
@@ -0,0 +1,9 @@
+auto lo
+iface lo inet loopback
+
+auto eth0
+iface eth0 inet dhcp
+
+auto wlan0
+iface wlan0 inet manual
+wpa-conf /etc/wpa_supplicant.conf
diff --git a/board/radxa/rock4b/overlay/etc/wpa_supplicant.conf b/board/radxa/rock4b/overlay/etc/wpa_supplicant.conf
new file mode 100644
index 0000000000..535d0a491b
--- /dev/null
+++ b/board/radxa/rock4b/overlay/etc/wpa_supplicant.conf
@@ -0,0 +1,3 @@
+ctrl_interface=/var/run/wpa_supplicant
+ap_scan=1
+update_config=1
diff --git a/board/radxa/rock4b/overlay/etc/wpa_supplicant/wpa_action.sh b/board/radxa/rock4b/overlay/etc/wpa_supplicant/wpa_action.sh
new file mode 100755
index 0000000000..6d45f46e66
--- /dev/null
+++ b/board/radxa/rock4b/overlay/etc/wpa_supplicant/wpa_action.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+INTERFACE=$1
+ACTION=$2
+UDHCPC_PID_FILE="/var/run/udhcpc.$INTERFACE.pid"
+
+kill_udhcpc() {
+	[ -f "$UDHCPC_PID_FILE" ] || return
+	kill "$(cat "$UDHCPC_PID_FILE")" 1>/dev/null 2>&1
+}
+
+if [ "$ACTION" = "CONNECTED" ]
+then
+	kill_udhcpc
+	udhcpc -i "$INTERFACE" -b -R -p "$UDHCPC_PID_FILE"
+elif [ "$ACTION" = "DISCONNECTED" ]
+then
+	kill_udhcpc
+	ifconfig "$INTERFACE" 0.0.0.0
+fi
diff --git a/board/radxa/rock4b/overlay/lib/firmware/brcm/brcmfmac43456-sdio.clm_blob b/board/radxa/rock4b/overlay/lib/firmware/brcm/brcmfmac43456-sdio.clm_blob
new file mode 100644
index 0000000000000000000000000000000000000000..36b8652655e5bf1704cc3471eba91f7e836d9b05
GIT binary patch
literal 7163
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
AS^xk5

literal 0
HcmV?d00001

diff --git a/board/radxa/rock4b/patches/linux-headers/linux-headers.hash b/board/radxa/rock4b/patches/linux-headers/linux-headers.hash
new file mode 120000
index 0000000000..5808d92afe
--- /dev/null
+++ b/board/radxa/rock4b/patches/linux-headers/linux-headers.hash
@@ -0,0 +1 @@
+../linux/linux.hash
\ No newline at end of file
diff --git a/board/radxa/rock4b/patches/linux/linux.hash b/board/radxa/rock4b/patches/linux/linux.hash
new file mode 100644
index 0000000000..f83883b936
--- /dev/null
+++ b/board/radxa/rock4b/patches/linux/linux.hash
@@ -0,0 +1,2 @@
+# From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc
+sha256  37f0c5d5c242c1d604e87d48f08795e861a5a85f725b4ca11d0a538f12ff8cff  linux-6.18.8.tar.xz
diff --git a/board/radxa/rock4b/patches/uboot/uboot.hash b/board/radxa/rock4b/patches/uboot/uboot.hash
new file mode 100644
index 0000000000..b6a925ea4e
--- /dev/null
+++ b/board/radxa/rock4b/patches/uboot/uboot.hash
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256  b60d5865cefdbc75da8da4156c56c458e00de75a49b80c1a2e58a96e30ad0d54  u-boot-2026.01.tar.bz2
diff --git a/board/radxa/rock4b/post-build.sh b/board/radxa/rock4b/post-build.sh
new file mode 100755
index 0000000000..5b50e1ef81
--- /dev/null
+++ b/board/radxa/rock4b/post-build.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+BOARD_DIR="$(dirname "$0")"
+
+install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$TARGET_DIR"/boot/extlinux/extlinux.conf
+
+# Append debugfs in fstab if not present
+grep -F -q "debugfs" "$TARGET_DIR"/etc/fstab || \
+	echo "none	/sys/kernel/debug  debugfs  defaults  0  0" >> "$TARGET_DIR"/etc/fstab
diff --git a/board/radxa/rock4b/readme.txt b/board/radxa/rock4b/readme.txt
new file mode 100644
index 0000000000..a6a7d5c7c1
--- /dev/null
+++ b/board/radxa/rock4b/readme.txt
@@ -0,0 +1,93 @@
+Intro
+=====
+
+This default configuration will allow you to start experimenting with the
+buildroot environment for the Radxa ROCK 4B. With the current configuration
+it will bring-up the board, and allow access through the serial console or
+via ssh if the board is plugged via ethernet port or has WiFi network configured.
+
+Radxa ROCK 4B link:
+https://radxa.com/products/rock4/4b
+
+Documentation link:
+https://docs.radxa.com/en/rock4/rock4ab-se
+
+GPIO Interface link:
+https://docs.radxa.com/en/rock4/rock4ab-se/hardware-design/hardware-interface?model=ROCK+4B
+
+This configuration uses mainline ATF, U-Boot and kernel.
+
+How to build
+============
+
+    $ make rock4b_defconfig
+    $ make
+
+How to write the SD card
+========================
+
+Once the build process is finished you will have an image called "sdcard.img"
+in the output/images/ directory.
+
+Copy the bootable "sdcard.img" onto an SD card with "dd":
+
+  $ sudo dd if=output/images/sdcard.img of=/dev/sdX
+  $ sudo sync
+
+Insert the micro SD card in your Radxa ROCK 4B and power it up. The console
+is available on UART2 on the GPIO connector, 1500000bps 8N1.
+
+How to flash the board eMMC
+===========================
+
+Before building the sdcard.img for use on the board eMMC, you'll have to
+edit the board/radxa/rock4b/extlinux.conf file with root=/dev/mmcblk0p1
+
+Once the build process is done, flashing the sdcard.img on the board
+eMMC is achieved using the rkdeveloptool tool found in output/host/bin/
+as follows:
+1) Download the Flash loader binary for the board from the following link:
+   https://github.com/radxa/rkbin/blob/9840e87723eef7c41235b89af8c049c1bcd3d133/bin/rk33/rk3399_loader_spinor_v1.15.114.bin
+
+2) Follow the process given in the following link to start the board in Maskrom
+   https://docs.radxa.com/en/rock4/rock4ab-se/low-level-dev/maskrom/linux?model=Without+onboard+eMMC
+
+2) Once done, use the rkdeveloptool tool load the Flash loader binary onto the board as follows:
+   $ sudo ./output/host/bin/rkdeveloptool db PATH_TO_LOADER/rk3399_loader_spinor_v1.15.114.bin
+
+2) Once done, use the rkdeveloptool tool to flash the sdcard.img on the eMMC as follows:
+
+   $ sudo ./output/host/bin/rkdeveloptool wl 0 output/images/sdcard.img
+
+3) Once done reboot as follows:
+
+   $ sudo ./output/host/bin/rkdeveloptool rd
+
+
+How to setup WiFi config via console
+=====================================
+Once logged in do the following to setup the WiFi config:
+
+  $ wpa_cli
+
+  This will run the wpa_cli command in interactive mode.
+  Once wpa_cli has started do the following:
+
+  > add_network
+
+  This will create a network entry and will return its index
+  The following commands assumes index 0 is returned
+
+  > set_network 0 ssid "MY_SSID"
+  > set_network 0 psk "MY_PASSPHARSE"
+  > enable_network 0
+  > save_config
+  > quit
+
+  As the configuration include mdns, you can access the board
+  over your local network using the name rock-4b.local,
+  for example:
+
+  $ ping -c 1 rock-4b.local
+  PING rock-4b.local (192.168.1.5) 56(84) bytes of data.
+  64 bytes from 192.168.1.5: icmp_seq=1 ttl=64 time=8.48 ms
diff --git a/configs/rock4b_defconfig b/configs/rock4b_defconfig
new file mode 100644
index 0000000000..c2f99b7df2
--- /dev/null
+++ b/configs/rock4b_defconfig
@@ -0,0 +1,62 @@
+BR2_aarch64=y
+BR2_cortex_a72_a53=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
+BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y
+BR2_GLOBAL_PATCH_DIR="board/radxa/rock4b/patches"
+BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
+BR2_TARGET_GENERIC_HOSTNAME="rock-4b"
+BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Radxa ROCK-PI 4B"
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
+BR2_ROOTFS_OVERLAY="board/radxa/rock4b/overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/radxa/rock4b/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/radxa/rock4b/genimage.cfg"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.8"
+BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/radxa/rock4b/linux.fragment"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3399-rock-pi-4b"
+BR2_LINUX_KERNEL_INSTALL_TARGET=y
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="512M"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_LTS_2_12_VERSION=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="rk3399"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES=""
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN=y
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2026.01"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rock-pi-4-rk3399"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
+BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS=y
+BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
+BR2_TARGET_UBOOT_NEEDS_GNUTLS=y
+BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y
+BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb"
+BR2_TARGET_UBOOT_SPL=y
+BR2_TARGET_UBOOT_SPL_NAME="idbloader.img"
+BR2_PACKAGE_BLUEZ_TOOLS=y
+BR2_PACKAGE_BLUEZ5_UTILS=y
+BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
+BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE=y
+BR2_PACKAGE_IW=y
+BR2_PACKAGE_MDNSD=y
+BR2_PACKAGE_OPENSSH=y
+BR2_PACKAGE_WIRELESS_REGDB=y
+BR2_PACKAGE_WIRELESS_TOOLS=y
+BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
+BR2_PACKAGE_WPA_SUPPLICANT=y
+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
+BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_ROCKCHIP_RKDEVELOPTOOL=y
-- 
2.55.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  parent reply	other threads:[~2026-09-17 19:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-17 19:17 [Buildroot] [PATCH 1/3] package/rockchip-rkdeveloptool: new host package Jean-Paul Etienne
2026-09-17 19:17 ` [Buildroot] [PATCH 2/3] package/brcmfmac_sdio-firmware: new package Jean-Paul Etienne
2026-09-17 19:17 ` Jean-Paul Etienne [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-09-17 20:42 [Buildroot] [PATCH 0/3] Add support for ROCK-PI 4B board Jean-Paul Etienne
2026-09-17 20:42 ` [Buildroot] [PATCH 3/3] configs/rock4b_defconfig: add support for Radxa " Jean-Paul Etienne

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260917191717.2471859-3-fractalclone@gmail.com \
    --to=fractalclone@gmail.com \
    --cc=buildroot@buildroot.org \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox