Best Options - For a Rad’-/-'xa Rockchip Single Board Experience
Download Options
Armbian ⇄
the best ARM framework
Debian ⇄
Ubuntu
Arch Linux ⇄
Mini Arch ⇄
BredOS
FydeOS ⇄
OpenFyde ⇄
Guide ⇄ Alpha
Batocera ⇄
AmigaOS ⇄
RetroPie ⇄
LibreElec ⇄
RockNix
AndroidTV ⇄
EmteriaOS
Joshuas Ubuntu Software ⇄
Boogie Arch Support
[Guide] 🖥️ Arch Linux Installers for Radxa
Radxa Compute Module 5 with CM4-Nano 💾
Linux UEFI
EDK2 UEFI - Forum
Windows 11 ARM - Docs
Fedora - Forum
OpenSuse - Forum
Void Linux - Forum
NixOS - Rock 5B - Forum
Armbian - Forum
Bluefin - Forum
More images to find here at the Radxa - Docs
Notes:
-
if downloading with wget use condition –no-check-certificate to avoid the download to fail or use an app like jdownloader or motrix.
-
After starting the system you most likely have to open your disk storage and perform a disk resize
-
Some systems start in x11 so you will notice that the system fails to deliver its brilliant performance at launch make sure you switch to wayland.
-
Very important grab a proper type C charger/cable for your device!
🪁 Fan options 
Manual fan control for rock5b+
echo 204 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon*/pwm1
Armbian uses hwmon10 for rock5b+ and hwmon8 for rock5b so hwmon* needs to be played out accordingly.
For the fan heatsink to work: (Armbian - might not be required in further armbian updates.)
git clone https://github.com/lukaszsobala/fan-control-rock5b
cd fan-control-rock5b
make package
sudo dpkg -i fan-control*.deb
sudo systemctl enable fan-control
systemctl start fan-control
Manage the fan manually
Prevent the system to take over fan control - Automatically.
sudo apt install i2c-tools -y
sudo echo step_wise > /sys/class/thermal/thermal_zone0/policy
sudo echo user_space | sudo tee /sys/class/thermal/thermal_zone0/policy
sudo i2cset -y -f 2 0x18 0x8A 0x2
(Fan speed 0x41 = 50%, 0x64 = 100%)
Wifi and BT Tricks 
Wifi - Example to install firmware
For AX210 Wifi and BT to Work - You will need Ethernet to do this.
#wifi
sudo wget -P /lib/firmware https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/iwlwifi-ty-a0-gf-a0-59.ucode
sudo mv /lib/firmware/iwlwifi-ty-a0-gf-a0.pnvm /lib/firmware/iwlwifi-ty-a0-gf-a0.pnvm.bak
#bt
sudo wget -P /lib/firmware/intel https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/intel/ibt-0041-0041.sfi
sudo wget -P /lib/firmware/intel https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/intel/ibt-0041-0041.ddc
Bluetooth fix for Intel Wifi/BT modules:
sudo nano /etc/modprobe.d/blacklist.conf
then add these lines somewhere (at the bottom of the file is fine):
blacklist pgdrv
blacklist btusb
blacklist btrtl
blacklist btbcm
#blacklist btintel
Then press Ctrl+X, then Y.
sudo apt install bluez
or bluetooth – not needed to install since latest armbian version
systemctl status bluetooth
CTRL+ C
systemctl start bluetooth
Then reboot
.
📢 Audio options 
Audio Tutorial for Bluetooth devices: – (not required since armbian latest versions)
Some valid information on how to fix issues with audio be free to explore.
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt install pipewire pipewire-audio-client-libraries gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,media-session,bin,locales,tests}} -y
systemctl --user daemon-reload
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user --now enable pipewire pipewire-pulse
pactl info
reboot
💽 Flashing Software 
Flashing Images via Rockchip Dev Tools App:
- Use
rkdevtools
on Windows.
Image Preparation
-
Decompress Images: Use WinRAR to decompress
.img.xz
files to.img
, not the Windows ‘Extract All’ option.
- Tick ‘Write by Address’
Rockchip Boot Loader SPL File
- Download and use the rockchip Boot loader spL file for Rockchip RK35/88/82/S2/S: rk3588_spl_loader_v1.15.113.bin.
For SPI / select SPINOR and use the SPI Image
(Short guide for Flashing via Terminal) SPI flashing on the board itself:
wget https://dl.radxa.com/rock5/sw/images/others/zero.img.gz
gzip -d zero.img.gz
sudo dd if=zero.img of=/dev/mtdblock0
Wait ~5 minutes for the command to complete, check that sudo md5sum /dev/mtdblock0
returns 2c7ab85a893283e98c931e9511add182
. Then:
wget https://dl.radxa.com/rock5/sw/images/loader/rock-5b/release/rock-5b-spi-image-g49da44e116d.img
sudo dd if=rock-5b-spi-image-g49da44e116d.img of=/dev/mtdblock0
Wait ~5 minutes for the command to complete, check that this time sudo md5sum /dev/mtdblock0
returns 46de85de37b8e670883e6f6a8bb95776
. Then:
sync
reboot
🥛 App Manager Hubs 
Raspberry Pi App Store for Open Source Projects.
wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bash
FlatHub - Hundreds of apps and games for Linux.
sudo apt install flatpak -y ; sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo ; sudo flatpak update -y
Bauh – a Manager for Your Multi-Package Needs
sudo apt install git python3 python3-full pipx python3-pyqt5 python3-pyqt5.qtsvg python3-setuptools qtbase5-dev qtchooser qt5-qmake qttools5-dev-tools ; source venv/bin/activate ; pip install pyqt5 --config-settings --confirm-license= --verbose ; pipx install bauh
Graphics Acceleration / Performance 
LiuJianFeng & PPA Graphics Panfrost/fork on Wayland
OpenCL runtime (libmali)
sudo add-apt-repository ppa:rockchip-linux/ppa
sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia
sudo apt update ; sudo apt install mali-g610-firmware rockchip-multimedia-config glmark2 glmark2-es2 glmark2-es2-wayland mesa-utils malirun -y ; sudo apt upgrade -y
sudo add-apt-repository --remove ppa:liujianfeng1994/panfork-mesa
sudo add-apt-repository --remove ppa:liujianfeng1994/rockchip-multimedia
glxinfo|grep OpenGL -- check actual status of things
mkdir -p ~/tmp/libmali && cd ~/tmp/libmali
wget 'https://github.com/tsukumijima/libmali-rockchip/releases/download/v1.9-1-55611b0/libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb'
sudo dpkg -i ./libmali-valhall-g610-g13p0-gbm_1.9-1_arm64.deb
Max out the SoC performance (Optional) - That’s if you want some real performance at the cost of being hot and power-hungry.
sudo echo performance | sudo tee /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
sudo echo performance | sudo tee /sys/class/devfreq/fb000000.gpu/governor
sudo echo performance | sudo tee /sys/class/devfreq/dmc/governor
sudo echo performance | sudo tee /sys/class/devfreq/fdab0000.npu/governor
Or add to startup script /etc/rc.local
Or if you want a shortcut for performance / ondemand and powersave do nano .bash_aliases and add these instructions - save it Ctrl X, Yes, restart and after just type the governor you desire Terminal: performance to trigger it.
alias performance="echo performance | sudo tee /sys/bus/cpu/devices/cpu[046]/cpufreq/scaling_governor /sys/class/devfreq/dmc/governor /sys/class/devfreq/fb000000.gpu/governor"
alias ondemand="echo ondemand | sudo tee /sys/bus/cpu/devices/cpu[046]/cpufreq/scaling_governor && echo dmc_ondemand | sudo tee /sys/class/devfreq/dmc/governor && echo simple_ondemand | sudo tee /sys/class/devfreq/fb000000.gpu/governor"
alias powersave="echo powersave | sudo tee /sys/bus/cpu/devices/cpu[046]/cpufreq/scaling_governor /sys/class/devfreq/dmc/governor /sys/class/devfreq/fb000000.gpu/governor"
Mali Blobs Vulkan WSI Layer
Start with Noble / GNOME / vendor, make sure the gpu-panthor overlay is disabled (and you don’t have mesa stuff installed, especially mesa-vulkan-drivers), then install libmali and WSI and reboot. That’s it, vkcube-wayland and various emulators should work.
Android Linux 
Android with Screen Copy (scrcpy) 
Only works with old Panfrost Kernel 5.10
Android Emulator to your ARM system (ReDroid with Scrcpy and Docker):
sudo apt install docker.io scrcpy android-tools-adb -y
sudo docker run -d -p 5555:5555 -v ~/redroid-data:/data --restart unless-stopped --name redroid --privileged cnflysky/redroid-rk3588:13.0.0-latest androidboot.redroid_height=1920 androidboot.redroid_width=1080
Currently only working on Panfrost.
adb disconnect localhost:5555 ; adb connect localhost:5555 ; scrcpy -s localhost:5555
Just add this alias in nano .bash_aliases and run it as malior each time:
alias malior="malior-droid stop ; adb disconnect localhost:5555 ; malior-droid start ; adb connect localhost:5555 ; scrcpy -s localhost:5555 ; malior-droid resize 720x1280"
Change it to english this way. Just drag and drop your .apk file into the android window it will auto install it .
🧑🏻🔬 Kernel modules required for Android
CONFIG_STAGING=y
CONFIG_ASHMEM=y
CONFIG_ANDROID_BINDER_IPC=y
# CONFIG_ANDROID_BINDERFS is not set
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
CONFIG_ESD_FS=y
Waydroid for Panthor 
Credits to @Willzen - The Armbian vendor kernel version now includes Panthor, and will soon be able to run it as well.
Works with the current Panthor Install it!
sudo apt install curl ca-certificates -y
curl https://repo.waydro.id | sudo bash
sudo apt install waydroid -y
sudo wget -P https://github.com/WillzenZou/armbian_fork_build/releases/download/willzen-armbian-24.5.0/2.waydroid-panthorv10-240416-v1.img.tar.gz
cd /usr/share ; sudo mkdir waydroid-extra ; cd waydroid-extra ; sudo mkdir images ; cd
sudo tar -xf 2.waydroid-panthorv10-240416-v1.img.tar.gz -C /usr/share/waydroid-extra/images
sudo waydroid init -f -i /usr/share/waydroid-extra/images
Apps will be re-sizable but never the show-full-gui
sudo waydroid container stop ; waydroid session stop ; sudo waydroid prop set persist.waydroid.multi_windows true ; sudo waydroid session start ; waydroid show-full-ui
Supposedly resizes the full-gui
sudo waydroid container stop ; waydroid session stop ; sudo waydroid prop set persist.waydroid.multi_windows true ; sudo waydroid prop set persist.waydroid.width 720 ; sudo waydroid prop set persist.waydroid.height 1280 ; systemctl restart waydroid-container ; waydroid session start
Install Google Store
Select gapps and microG from Android 13 off the Script - For your Waydroid Android 11
sudo apt install lzip -y
git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script
python3 -m venv venv
venv/bin/pip install -r requirements.txt
sudo venv/bin/python3 main.py
Other commands
waydroid app install com.app.apk
waydroid app launch com.app
waydroid app list
🧑🏻🔧 Fix Google Store Protect ID with Device ID
To become certified with access to the play store you have to:
1 - Install a device ID apk to get this Device ID and register it on your google account.
2 - Register it here: https://www.google.com/android/uncertified/
3 - Restart Malior-Droid again and add your google account manually on settings.
4 - Send apkpure the emulator window and start installing apps like a boss !
🎮 Steam 
Steam Installation Tutorial
Easier method: Just install steam via Pi-Apps
wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bash ; pi-apps
FEX-EMU or NicoD Armbian-Gaming Script
Desktop Ricing #Unixporn
🎛️ Tweaks and Shell Extensions🎚️
Getting the Gnome Shell Extensions
sudo apt install gnome-tweaks gnome-shell-extension-manager chrome-gnome-shell -y
Open Tweaks and enable the dam Titlebar buttons (Why is this even disabled -.-’ )
You can now install ‘el’ gnome extensions:
- Enable User Themes
- Dash to Panel or Dash to Dock
- Freon or Vitals
- Compiz for an wobble effect.
-
Burn my Windows to keep your system lit.
Rice your Desktop
Themes / Icons - Shell - The Rice
Download this .themes
Download these .icons
Download this Wallpaper
cd Downloads
sudo tar -xf Graphite-teal-nord-rimless.tar.xz -C /usr/share/themes
sudo tar -xf Zafiro-Nord-Black.tar.xz -C /usr/share/icons
/home/$USER/.themes
& /home/$USER/.icons
(if they dont exist just mkdir them).
Giving /home/.themes
& .icons
writting permissions can work.
You can also use /usr/share/themes
by sudo tar -xf Cold-Metal-No-Logo-GTK.tar.xz -C /usr/share/themes
Then user themes
extension from gnome shell extensions has to be enabled by sudo apt install chrome-gnome-shell -y
and when user themes
is enabled we can then apply shell themes on Tweaks
.
Open Tweaks application and select these themes.
Your Login Manager
Not all SDDM themes found on github works on non archlinux systems. If you find a way let me know
sddm qt6-svg qt6-virtualkeyboard qt6-multimedia-ffmpeg # Arch
sddm qt6-svg qt6-virtualkeyboard qt6-multimedia # Void
sddm qt6-qtsvg qt6-qtvirtualkeyboard qt6-qtmultimedia # Fedora
sddm-qt6 libQt6Svg6 qt6-virtualkeyboard qt6-virtualkeyboard-imports qt6-multimedia qt6-multimedia-imports # OpenSUSE
Install these requirements for debian/ubuntu (might not work try)
sudo apt install -y sddm qtdeclarative5-dev qml-module-qtgraphicaleffects qml-module-qtquick-controls qml-module-qtquick-controls2 libqt5svg5 qt6-wayland qt6-5compat-dev qtcreator ; QT_QPA_PLATFORM=xcb
#Disable all display managers but enable only sddm for these to work
sudo systemctl disable display-manager.service ; sudo systemctl enable sddm
#Test your themes before applying:
sddm-greeter --test-mode --theme /usr/share/sddm/themes/maya
sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sddm-astronaut-theme
KeyitDev is the best I have found!
sudo git clone https://github.com/Keyitdev/sddm-astronaut-theme.git /usr/share/sddm/themes/sddm-astronaut-theme
sudo cp /usr/share/sddm/themes/sddm-astronaut-theme/Fonts/* /usr/share/fonts/
echo "[Theme]
Current=sddm-astronaut-theme" | sudo tee /etc/sddm.conf
sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/sddm-astronaut-theme
sudo git clone https://github.com/JaKooLit/simple-sddm-2.git /usr/share/sddm/themes/simple-sddm-2
echo "[Theme]
Current=simple-sddm-2" | sudo tee /etc/sddm.conf
sddm-greeter --test-mode --theme /usr/share/sddm/themes/simple-sddm-2
sudo git clone https://github.com/RadRussianRus/sddm-slice.git /usr/share/sddm/themes/sddm-slice
echo "[Theme]
Current=sddm-slice" | sudo tee /etc/sddm.conf
sddm-greeter --test-mode --theme /usr/share/sddm/themes/sddm-slice
sudo git clone https://github.com/Match-Yang/sddm-deepin.git
cd sddm-deepin
bash ./install.sh
sddm-greeter --test-mode --theme /usr/share/sddm/themes/deepin
sudo git clone https://github.com/m-wynn/sddm_wynn-theme.git /usr/share/sddm/themes/sddm_wynn-theme
echo "[Theme]
Current=sddm_wynn-theme" | sudo tee /etc/sddm.conf
sddm-greeter --test-mode --theme /usr/share/sddm/themes/sddm_wynn-theme
sudo git clone https://github.com/3ximus/abstractdark-sddm-theme.git /usr/share/sddm/themes/abstractdark-sddm-theme
echo "[Theme]
Current=abstractdark-sddm-theme" | sudo tee /etc/sddm.conf
sddm-greeter --test-mode --theme /usr/share/sddm/themes/abstractdark-sddm-theme
sudo git clone https://github.com/AlfredoRamos/urbanlifestyle-sddm-theme.git /usr/share/sddm/themes/urbanlifestyle
echo "[Theme]
Current=urbanlifestyle" | sudo tee /etc/sddm.conf
sddm-greeter --test-mode --theme /usr/share/sddm/themes/urbanlifestyle
Other Desktop Environments for ARM 
#ubuntucraft for arm isnt there yet..
#curl -LO https://github.com/archcraft-os/archcraft-arm/releases/download/1.0/archcraft-arm.tar.gz
tar -xzvf ubuntucraft.tar.gz
cd ubuntucraft
# nano customize.sh (optional)
# user/pass archcraft
sudo bash ./install.sh
#choose sddm not gdm3
Fix the top bar modules for each theme being on this example the “default” one:
1 - nano ~/.config/openbox/themes/default/polybar/config.ini
2 - Find the line modules-right =
. This should be line 147.
3 - Remove the “battery” module, replacing it with “temperature”
Paste this instead:
modules-right = temperature dot volume dot network dot LD sysmenu RD
git clone --depth=1 -b Ubuntu-24.04-LTS https://github.com/JaKooLit/Debian-Hyprland.git ~/Ubuntu-Hyprland
cd ~/Ubuntu-Hyprland
chmod +x install.sh
./install.sh
SUPER Environments often needs changed from SUPER to FN+SUPER
# Look for $mainMod = SUPER
nano ~/.config/hypr/hyprland.conf
nano ~/.config/hypr/configs/Keybinds.conf
# Change it to $mainMod = FN+SUPER