Skip to content

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.

H.264 1920x1080 150-frame test: ~30.9 fps
H.265 1920x1080 150-frame test: ~33.8 fps

Chromium Browser

sudo apt update
sudo apt install chromium

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:

sudo ./ff_export_rootfs /mnt/ -t ext4

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.