From Fedora Project Wiki

Hardware variants

This board is sold under at least two different names, specifically:

  • SpacemiT K3 Pico-ITX (available from Sipeed and possibly other vendors)
  • Milk-V Jupiter 2

The boards are identical and the instructions below will apply to all variants.

Machine-specific instructions

Firmware update

You can generally skip this step.

Download Bianbu-Minimal-K3-v4.0.1-20260521183730.tar.gz from http://archive.spacemit.com/image/k3/version/bianbu/

Caution: stick to v4.0.1, do not download more recent versions even if they are available. We have encountered issues with their firmware builds.

This guide assumes you're going to use U-Boot as the firmware. A build of edk2 for the K3 exists, but it's still considered experimental and is known to have quirks. Make sure you don't download the file containing "UEFI" in the name.

To prepare the board for flashing, follow the official instructions found on the "OS Installation" section of https://www.spacemit.com/community/document/info?nodepath=hardware/eco/k3_pico/pico_user_guide.md&lang=en

It's recommended to use the fastboot method, which offers more control and makes it possible for any system with fastboot installed to act as a flashing host without installing or running third-party GUI apps. SpacemiT's documentation does not currently detail this method.

On the computer that will be used to flash the K3 Pico-ITX board over USB, install fastboot. Most major distributions offer it in a package named either android-tools or fastboot. If using a Fedora host:

$ sudo dnf in android-tools

Once the K3 board is in flashing mode and connected over USB, the following commands can be used to flash the firmware files extracted from a Bianbu download:

$ fastboot stage factory/FSBL.bin
$ fastboot continue
$ sleep 2

$ fastboot oem speed:super-speed

$ fastboot stage u-boot.itb
$ fastboot continue
$ sleep 3

$ fastboot stage ec.bin
$ fastboot oem ec:flash

$ fastboot flash mtd partition_4M.json
$ fastboot flash bootinfo factory/bootinfo_spinor.bin
$ fastboot flash fsbl factory/FSBL.bin
$ fastboot flash env env.bin
$ fastboot flash esos esos.itb
$ fastboot flash opensbi fw_dynamic.itb
$ fastboot flash uboot u-boot.itb

$ fastboot reboot

Firmware configuration

To get access to the U-Boot prompt, keep the S key pressed in a UART console while the machine is booting.

At the U-Boot prompt, run the following commmands:

=> env default -af
=> env set fdtfile 'spacemit/k3-pico-itx.dtb'
=> env set bootdev 'nvme 0'
=> env set bootcmd 'ping 127.0.0.1; nvme scan; load ${bootdev}:2 ${fdt_addr_r} dtb/${fdtfile}; load ${bootdev}:1 ${kernel_addr_r} EFI/fedora/shimriscv64.efi; bootefi ${kernel_addr_r} ${fdt_addr_r};'
=> env save

Adjust the value of bootdev according to the device you're booting off of: for example, use scsi 0 for the built-in UFS storage.

Optionally, you can run

=> env set bootdelay 2
=> env save

to introduce an additional delay during the boot process that makes it easier to access the U-Boot prompt.

Write Fedora to storage

Start by downloading the latest Fedora-Server-Host-Omni-* image from https://dl.fedoraproject.org/pub/alt/risc-v/release/44/Server/riscv64/images/

Make sure you grab the either the late July image (Fedora-Server-Host-Omni-44-20260731.0.riscv64.raw.xz) or a more recent one. Older images won't work out of the box on K3.

Once you have downloaded a suitable image:

  • unxz the image
  • Adapting the command to write to the correct file to the correct device run sudo dd if=Fedora-Server-Host-Omni-... of=/dev/sdX status=progress bs=16M
  • Install the storage in your K3 Pico-ITX and boot