Skip to content

Boot Logo

Note

  1. On Allwinner platforms, the logo is displayed in two stages: U‑Boot and Kernel. bootlogo.bmp is used for the U‑Boot stage, and bootlogo_kernel.bmp is used for the Kernel stage.
  2. On Rockchip platforms, the logo is also displayed in two stages: logo.bmp for U‑Boot and logo_kernel.bmp for the Kernel stage.
  3. The logo resolution must be equal to or smaller than the display resolution.
  4. The replacement logo must match the original file format (e.g., BMP, bit depth, etc.).

Logo File Paths

Motherboard SoC Platform Logo Path
K5 / K5C A133 Allwinner longan/device/config/chips/a133/configs/c3/android/bootlogo.bmp
K2B / K2C H618 Allwinner longan/device/config/chips/h618/boot-resource/boot-resource/bootlogo.bmp
K10B A733 Allwinner longan/device/config/chips/a733/configs/demo_aiot/bootlogo.bmp
K1 / K1B / K3 / K8 RK3562 / RK3568 / RK3588 Rockchip kernel-5.10/logo.bmp
kernel-5.10/logo_kernel.bmp
K7 / K7C RK3576 Rockchip kernel-6.1/logo.bmp
kernel-6.1/logo_kernel.bmp
K9 T527 Allwinner longan/device/config/chips/t527/boot-resource/boot-resource/bootlogo.bmp

psplash Userspace Boot Splash

psplash is a lightweight boot splash screen tool for embedded Linux, used to display a static logo and a progress bar.

Compilation

# Install dependencies
sudo apt update
sudo apt install build-essential autoconf automake libtool git libgdk-pixbuf2.0-dev -y

# Download source code
git clone git://git.yoctoproject.org/psplash
cd psplash

# Create autogen.sh
cat > autogen.sh << 'EOF'
#!/bin/bash
aclocal
autoheader
automake --add-missing
autoconf
EOF
chmod +x autogen.sh

# Compile
./autogen.sh
./configure --host=arm-linux
make

# Test run
sudo ./psplash
# Method 1: Replace the default image directly
./make-image-header.sh psplash-poky.png POKY
make clean && make

# Method 2: Use a custom filename
./make-image-header.sh logo.png POKY

# Method 2 also requires updating the header file references in the source:
--- a/Makefile.am
+++ b/Makefile.am
-                 psplash-poky-img.h psplash-bar-img.h $(FONT_NAME)-font.h
+                 logo-img.h psplash-bar-img.h $(FONT_NAME)-font.h

--- a/psplash.c
+++ b/psplash.c
-#include "psplash-poky-img.h"
+//#include "psplash-poky-img.h"
+#include "logo-img.h"

Configuring Startup

1. Create the startup script /etc/init.d/psplash.sh:

#!/bin/sh
export TMPDIR=/mnt/.psplash
mount tmpfs -t tmpfs $TMPDIR -o,size=40k
/usr/bin/psplash --angle 0 &

2. Create the systemd service file /usr/lib/systemd/system/psplash.service:

[Unit]
Description=Psplash Boot Logo
DefaultDependencies=no

[Service]
ExecStart=/etc/init.d/psplash.sh
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

3. Deploy and enable:

sudo cp psplash /usr/bin/
sudo chmod 755 /usr/bin/psplash /etc/init.d/psplash.sh
sudo systemctl enable psplash.service

Other Customisations

Disable the progress bar and boot messages:

--- a/psplash-config.h
+++ b/psplash-config.h
-#define PSPLASH_STARTUP_MSG ""
+//#define PSPLASH_STARTUP_MSG ""

-#define PSPLASH_SHOW_PROGRESS_BAR 1
+//#define PSPLASH_SHOW_PROGRESS_BAR 1

Disable kernel framebuffer console logs (to prevent overwriting the boot splash):

--- a/arch/arm64/configs/linux_h618_defconfig
+++ b/arch/arm64/configs/linux_h618_defconfig
+CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y

Q&A

  • Compilation error: "command not found" – Install the dependencies: sudo apt install build-essential autoconf automake libtool -y
  • Screen blank after running psplash – Check that the framebuffer device exists: ls -l /dev/fb0
  • Startup service does not take effect – Check the service status and logs: sudo systemctl status psplash.service, sudo journalctl -u psplash.service
  • Logo display is abnormal – Ensure the image is in PNG format and regenerate the header: ./make-image-header.sh logo.png POKY