Armbian System Customization¶
Note
For K2B, use the Kickpi-k2b-v1 image for V1 boards and the Kickpi-k2b-v2 image for V2 boards.
The following motherboards are currently supported with Armbian:
| Motherboard | SoC | Platform | System |
|---|---|---|---|
| K2B | H618 | Allwinner | Ubuntu 24.04 xfce, Ubuntu 24.04 minimal |
| K2C | H618 | Allwinner | Ubuntu 24.04 xfce, Ubuntu 24.04 minimal |
| K7 | RK3576 | Rockchip | Ubuntu 24.04 gnome, Ubuntu 24.04 server |
| K7C | RK3576 | Rockchip | Ubuntu 24.04 gnome, Ubuntu 24.04 server |
| K7S | RK3576 | Rockchip | Ubuntu 24.04 gnome, Ubuntu 24.04 server |
RK3576¶
MIPI Display Configuration¶
The following Device Tree Overlay (dtbo) files are pre-installed in the board's filesystem:
/boot/dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3576-kickpi-lcd-mipi-AT101DS40I.dtbo
/boot/dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3576-kickpi-lcd-mipi-MX101BA1340.dtbo
/boot/dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3576-kickpi-lcd-mipi-MX080B2140.dtbo
/boot/dtb-6.1.115-vendor-rk35xx/rockchip/overlay/rk3576-kickpi-lcd-mipi-F050008M01.dtbo
Example: Connecting the MX080B2140 8-inch display
$ vim /boot/armbianEnv.txt
verbosity=1
bootlogo=true
console=both
overlay_prefix=rk35xx
fdtfile=rockchip/rk3576-kickpi-k7.dtb
rootdev=UUID=389fa6c5-33a8-4653-99ec-f532b9d5a742
rootfstype=ext4
overlays=rk3576-kickpi-lcd-mipi-MX080B2140
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
H618 Armbian GPU/VPU Testing¶
GPU¶
GLmark2 performance test (with HDMI-1080P display connected)
# Install GLmark2 tools
sudo apt install glmark2 glmark2-es2 -y
kickpi@kickpi-k2b-v2:~$ glmark2-es2
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: Mesa
GL_RENDERER: Mali-G31 (Panfrost)
GL_VERSION: OpenGL ES 3.1 Mesa 25.2.8-0ubuntu0.24.04.1
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
Surface Size: 800x600 windowed
=======================================================
...
=======================================================
glmark2 Score: 216
=======================================================
GLmark2 performance test (serial console / headless test)
# Install GLmark2 DRM version
sudo apt install glmark2-es2-drm -y
kickpi@kickpi-k2b-v2:~$ glmark2-es2-drm
Warning: DRM_CAP_ASYNC_PAGE_FLIP not supported, falling back to 'mailbox' mode for SwapInterval(0).
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: Mesa
GL_RENDERER: Mali-G31 (Panfrost)
GL_VERSION: OpenGL ES 3.1 Mesa 25.2.8-0ubuntu0.24.04.1
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
Surface Size: 1920x1080 fullscreen
=======================================================
[build] use-vbo=false:Error: Failed to become DRM master (hint: glmark2-drm needs to be run in a VT)
FPS: 278 FrameTime: 3.598 ms
=======================================================
glmark2 Score: 277
=======================================================
Test results: With an external display connected, GPU rendering graphics are visible (score ≈ 216). From the serial debug console, rendering logs are shown (score ≈ 277).
VPU¶
# Install GStreamer
sudo apt install -y gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad ffmpeg
ffmpeg -decoders 2>/dev/null | grep -E "v4l2|cedrus"
# Generate raw YUV test source
ffmpeg -f lavfi -i testsrc=duration=5:size=1920x1080:rate=30 \
-pix_fmt yuv420p -f rawvideo temp.yuv -y
H.264 hardware decoding test
# Encode H.264 (2Mbps CBR)
ffmpeg -s 1920x1080 -r 30 -pix_fmt yuv420p -i temp.yuv \
-c:v libx264 -b:v 2M -maxrate 2M -bufsize 4M \
-preset medium -x264-params "nal-hrd=cbr" test_h264.mkv -y
# Use GStreamer to force VPU hardware decoding
time gst-launch-1.0 filesrc location=test_h264.mkv \
! matroskademux ! h264parse ! v4l2slh264dec ! fakesink -t
Execution ended after 0:00:04.852539138
real 0m5.170s
user 0m4.379s
sys 0m0.160s
H.265 hardware decoding test
# Encode H.265 (2Mbps CBR)
ffmpeg -s 1920x1080 -r 30 -pix_fmt yuv420p -i temp.yuv \
-c:v libx265 -b:v 2M -maxrate 2M -bufsize 4M \
-preset medium -x265-params "hrd=1" test_h265.mkv -y
# Use GStreamer to force VPU hardware decoding
time gst-launch-1.0 filesrc location=test_h265.mkv \
! matroskademux ! h265parse ! v4l2slh265dec ! fakesink -t
Execution ended after 0:00:04.438429614
real 0m4.684s
user 0m4.528s
sys 0m0.113s
Test results: The current default software stack does not support FFmpeg hardware encoding/decoding. GStreamer hardware decoding works.
Chromium Browser¶
Firefox Browser¶
Firefox may encounter a profile issue that prevents it from launching after a reboot. Use one of the following solutions:
# Option 1: Use the profile manager
firefox -profilemanager
# Option 2: Remove the old profile
rm ~/.mozilla/firefox/ -rfv
Exporting and Modifying an Armbian Image¶
1. Export the root filesystem to a USB drive:
2. Check the image size. If the exported image is larger than the original partition capacity, resize it:
sudo fallocate -l 9G armbian.img
sudo losetup -P /dev/loop777 ./armbian.img
sudo parted /dev/loop777
# (parted) print free
# (parted) resizepart 1 100%
# (parted) quit
sudo e2fsck -f /dev/loop777p1
sudo resize2fs /dev/loop777p1
3. Mount and replace the filesystem:
sudo mount /dev/loop777p1 origin/
sudo mount ext4.img copy/
sudo cp -rfp copy/* origin/
sudo umount copy/ origin/
sudo losetup -d /dev/loop777
RK RKNN Deployment¶
For Rockchip series boards running Armbian, you can deploy rknn-toolkit2 and rknn_model_zoo. For detailed steps, refer to Linux_NPU.