Menlo

Flash the RPU

Install the flashing tool, enter MaskROM mode, and write the image to the Radxa CM5.

The RPU has no SD card slot — you flash its onboard storage over USB-C, with the board in a special MaskROM mode.

2.1 Install the flashing tool

The tool differs by operating system. Windows uses a graphical tool; macOS and Linux use a command-line one. Open the section for your computer.

On Ubuntu 22.10 or newer, and current Debian:

sudo apt install rkdeveloptool

On older distributions the package may not exist, in which case build it from source:

sudo apt install -y libudev-dev libusb-1.0-0-dev dh-autoreconf pkg-config build-essential git
git clone https://github.com/rockchip-linux/rkdeveloptool
cd rkdeveloptool && autoreconf -i && ./configure && make -j"$(nproc)"
sudo cp rkdeveloptool /usr/local/sbin/

Check it worked:

rkdeveloptool -V

No driver is needed. You will need sudo for the flashing commands.

Install via Homebrew — no compiling required:

brew tap IgorKha/rkdeveloptool
brew install rkdeveloptool

If you encounter an untrusted tap error:

Error: Refusing to load formula igorkha/rkdeveloptool/rkdeveloptool from untrusted tap igorkha/rkdeveloptool

Fix it via the recovery instructions and run:

brew trust igorkha/rkdeveloptool

Check it worked:

rkdeveloptool -V

If the tap is unavailable, build from source instead:

# We must use g++ on MacOS when building
brew install automake autoconf libusb pkg-config gcc@15
# Clone and build
git clone https://github.com/rockchip-linux/rkdeveloptool
cd rkdeveloptool && autoreconf -i && CXX=/opt/homebrew/bin/g++-15 ./configure && make

Windows uses RKDevTool, a graphical tool, plus a USB driver. Both come from Radxa:

  1. Download and extract DriverAssistant v5.14, then run DriverInstall.exe as administrator. Without this driver Windows will not recognise the board.
  2. Download and extract RKDevTool v2.96, then launch RKDevTool.exe.
  3. You will also need 7-Zip to decompress the .img.xz image into a plain .img before flashing.

The commands in Step 2.3 below are for macOS and Linux. For the RKDevTool click-through, follow Radxa's RKDevTool guide — with the board in MaskROM mode (Step 2.2) it will show “Found One MASKROM Device”, and you write the loader and image from there.

If you have access to a Mac or Linux machine, we recommend using it — that is the path we test against.

2.2 Put the board in MaskROM mode

The order matters — the button must already be held down when the board first receives power. Connect power last.

  1. Plug the USB-C cable from your laptop into the CM5's USB-C port.
  2. Hold down the MaskROM button on the board.
  3. While still holding it, connect battery power to the RPU.
  4. Release the MaskROM button.
  5. Confirm the laptop sees it:
    rkdeveloptool ld

You should see Mode=Maskrom. For example:

DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=202    Maskrom

If the list is empty, re-seat the cable and repeat — the button must be held as the board is first powered, and the cable must carry data.

2.3 Write the image

The bootloader file rk3588_spl_loader.bin is the rk3588_spl_loader_v1.15.113.bin you downloaded in Step 1 — rename it to match, or use its full name in the commands below. Writing takes a few minutes.

When it finishes, unplug the USB-C cable and remove the battery power.

rkdeveloptool db rk3588_spl_loader.bin
# You should see: Downloading bootloader succeeded.

xz -dk asimov-rpu-<version>.img.xz

rkdeveloptool wl 0 asimov-rpu-<version>.img
# The write process will begin. After a few minutes it will reach:
# Write LBA from file (100%)

rkdeveloptool rd
# You should see: Reset Device OK.

On Linux these need sudo. The xz -dk line decompresses the image and keeps the original; the write itself needs the plain .img.

In RKDevTool, with the board showing “Found One MASKROM Device”, load rk3588_spl_loader.bin as the loader and the decompressed asimov-rpu-<version>.img as the image, then start the write. Step-by-step screens are in Radxa's RKDevTool guide.

Decompress the .img.xz with 7-Zip first — RKDevTool cannot read the compressed file.

How is this guide?

On this page