====== 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
==== U-Boot 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:
```shell
$ 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.
==== Linux Kernel Logo ====
Use the netpbm tool to convert a PNG image to the required PPM format.
```shell
$ 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.
==== Plymouth (Ubuntu Boot Splash) Logo ====
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 [[/products/sbc/vim3/development/linux/build-ubuntu| 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 (1920x1080 pixels).
==== Update Logo via ADB ====
You can push a prepared ''logo.bmp'' file to the device using ADB.
```shell
$ adb root
$ adb remount
$ adb push logo.bmp /vendor/custom/
$ adb reboot
```
Example command output:
```shell
$ 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:
```shell
$ 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.