Skip to content

U-Boot builds for Orange Pi 5 (and variants)

License

Notifications You must be signed in to change notification settings

schneid-l/u-boot-orangepi5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

U-Boot build for Orange Pi 5

This repo provides pre-built SPI flash U-Boot v2024.10 binaries for the Orange Pi 5 (and variants) board.

Supported boards

  • Orange Pi 5
  • Orange Pi 5B (use the same binary as the Orange Pi 5)
  • Orange Pi 5 Plus

Pre-built binaries

This U-Boot build uses pre-built TPL binaries provided by Rockchip from rkbin repo.

This U-Boot build also uses patches provided by Armbian to support the rk3588 SoC.

Known issues

  • HDMI output is not working.
  • Booting from a m.2 SATA drive is not working (NVMe is working).
  • Network does not work on Orange Pi 5 Plus.

Don't hesitate to open a Github issue if you encounter any other issue.

Install

This repo only provides a version made to be flashed on the SPI flash of the Orange Pi 5 as its the recommended way to boot the board.

To do this you will need an official distribution provided by Orange Pi (or Armbian) booted from an SD card.

Once booted, download your board specific U-Boot binary from the releases section:

# Orange Pi 5 (and Orange Pi 5B)
wget https://github.com/schneid-l/u-boot-orangepi5/releases/download/latest/u-boot-v2024.10-orangepi5-spi.bin

# Orange Pi 5 Plus
wget https://github.com/schneid-l/u-boot-orangepi5/releases/download/latest/u-boot-v2024.10-orangepi5-plus-spi.bin

We will assume that the SPI flash chip is /dev/mtdblock0 (you can check this by using lsblk).

Reset the SPI flash:

devicesize=$(blockdev --getsz /dev/mtdblock0)
dd if=/dev/zero of=/dev/mtdblock0 bs=1M count=$devicesize status=progress && sync

Flash the U-Boot binary:

# Orange Pi 5 (and Orange Pi 5B)
dd if=u-boot-v2024.10-orangepi5-spi.bin of=/dev/mtdblock0 bs=1M status=progress && sync

# Orange Pi 5 Plus
dd if=u-boot-v2024.10-orangepi5-plus-spi.bin of=/dev/mtdblock0 bs=1M status=progress && sync

Reboot the board, et voilà!

Build

Build is done using a Docker container to ensure reproducibility.

To build the U-Boot binary, you will need to have Docker installed on your machine.

Clone this repo:

git clone https://github.com/schneid-l/u-boot-orangepi5.git
cd orangepi5-u-boot

Build the U-Boot binary with Docker:

# Orange Pi 5 (and Orange Pi 5B)
docker build --platform="linux/arm64" --output type=local,dest=. . --build-arg DEFCONFIG=orangepi-5-rk3588s

# Orange Pi 5 Plus
docker build --platform="linux/arm64" --output type=local,dest=. . --build-arg DEFCONFIG=orangepi-5-plus-rk3588

The U-Boot binary will be available in the current directory.

Available build args:

  • U_BOOT_VERSION: the U-Boot version to build (default: v2024.10)
  • DEFCONFIG: the U-Boot defconfig to use (_defconfig is automatically appended, default: orangepi-5-rk3588s)
  • BOARD: the board name (used in the output name, default: orangepi5)
  • NAME: the binary output name (default: u-boot-${U_BOOT_VERSION}-${NAME}-spi)
  • SOURCE_DATE_EPOCH: the source date epoch to use for reproducibility (default: the last commit date)

As this image uses the rkbin provided BL31 and TPL binaries for rk3588, this build environment could be used to build U-Boot for any rk3588 board by passing the correct DEFCONFIG argument.

License

The U-Boot source code is licensed under the GPL-2.0 license. So this repo too.