Table of Contents

Change Boot Logo

Introduction

This document explains how to change the boot logo. It is divided into two parts: the first part covers the Ubuntu platform, and the second part covers the Android platform.

Linux

The official Khadas Ubuntu image displays three logos during system boot:

  • U-Boot logo
  • Linux kernel logo
  • Plymouth (Ubuntu) boot splash logo

The U-Boot logo is located at /usr/share/fenix/logo/logo.bmp.

The required image format is BMP with a resolution of 500x500px and a color depth of 24 bits.

You can use the terminal to check the format of the default logo image:

$ file /usr/share/fenix/logo/logo.bmp

Example output:

/usr/share/fenix/logo/logo.bmp: PC bitmap, Windows 3.x format, 500 x 500 x 24, image size 750002, resolution 2834 x 2834 px/m, cbSize 750056, bits offset 54

To change it, simply replace the default logo.bmp file with your own BMP image that meets the format requirements.

Use the netpbm tool to convert a PNG image to the required PPM format.

$ pngtopnm linux_logo.png > linux_logo.pnm
$ pnmquant 224 linux_logo.pnm > linux_logo_clut224.pnm
$ pnmtoplainpnm linux_logo_clut224.pnm > logo_linux_clut224.ppm

Place the generated logo_linux_clut224.ppm file into the drivers/video/logo/ directory of your Linux kernel source code, replacing the existing file.

Recompile the kernel. After flashing the new kernel, the boot logo will be updated.

The Plymouth logo file is located at /usr/share/fenix/logo/logo.png. Replace this .png file to change the graphical boot splash screen.

If you are building a custom image with Fenix, you can change the logo by replacing the file at archives/logo/png/logo.png before the build.

Android

Starting from Android 10, Rockchip merged the logo partition into the super partition, making it impossible to modify the boot logo dynamically without rebuilding the entire firmware. To address this, a new custom partition has been added to allow for dynamic logo updates.

Logo Format Requirements

  • Source Location: The original logo file in the Android source code is located at kernel-6.1/logo.bmp.
  • Required Format:
    • 16-bit RGB565 BMP format.
    • Resolution should be ≤ 1080P (1920×1080 pixels).

Update Logo via ADB

You can push a prepared logo.bmp file to the device using ADB.

$ adb root
$ adb remount
$ adb push logo.bmp /vendor/custom/
$ adb reboot

Example command output:

$ adb root
restarting adbd as root
 
$ adb remount
AVB verification is disabled, disabling verity state may have no effect
Remounted /system as RW
Remounted /vendor as RW
Remounted /odm as RW
Remounted /system_dlkm as RW
Remounted /system_ext as RW
Remounted /vendor_dlkm as RW
Remounted /odm_dlkm as RW
Remounted /product as RW
Remount succeeded
 
$ adb push logo.bmp /vendor/custom
logo.bmp: 1 file pushed, 0 skipped. 655.0 MB/s (4147272 bytes in 0.006s)
 
$ adb reboot

After the device reboots, the new logo should be displayed.

Update Logo by Rebuilding Firmware

This method involves modifying the Android source code and building a complete update package.

1) Replace the logo source: Replace the logo.bmp file in the kernel-6.1/ directory of your Android source code.

2) build the update package:

$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh && lunch kedge2-userdebug
$ ./build.sh -UCKAu

This will generate an update.img file.

3) Flash the firmware: Burn the generated update.img to your device using the standard upgrade method (refer to the “How To Upgrade” guide). After the device restarts, the new boot logo will be active.