Jump to content

Armbian boot Splash screen


shaddow501

Recommended Posts

Armbianmonitor:

Hello

 

In raspberry pi there is an option to add a boot splash screen, looking in this forum I havent found and instructions or if it is even possible.

 

I am not interested with u-boot splash screen but when the Linux start booting.

I am using 3.5" SPI LCD and I do see the boot logs when the Linux is loading.

 

So my question is if there is any guide of how to do that boot splash screen in Armbian or there is no way to do that?

Link to comment
Share on other sites

You can use plymouth to create a splash boot.

 

I have done this on a Pine64-LTS board so maybe you need to alter some steps.

 

First step is to create a custom boot logo image for u-boot to show.

I am not really sure which file you need exactly but to be sure just

use the same image as boot logo and save the images in /boot

 

1 file named boot-desktop.png in /boot/boot-desktop.png

1 file named boot.bmp in /boot/boot.bmp

 

If you don't want to lose the original ones, back-up them first:


 

cp /boot/boot-desktop.png /boot/boot-desktop.png-orig

cp /boot/boot.bmp /boot/boot.bmp-orig

 

Next reboot you will notice you are having a nice new boot image, but you will

probably also notice that the kernel boot messages are written over this screen

and/or maybe also the init boot messages. Sadly this is due to the fact that u-boot

isn't compled with silent boot support. It would have been nice, because you

could then set a parameter to use it in silent or not. Now we first have to recompile

the u-boot with a patch to silence the boot messages. Use the default Armbian

build guide and before you start compiling you need to enable a u-boot patch.

You can try to enable the patch, but i tried it and it failed applying due to some

inconsistencies. I changed the patch so it now works. I don't know how i should

give this patch change to the correct maintainer, so i will place it here:

 

patch file located in -><armbian git clone dir>/20.02.2/build/patch/u-boot/u-boot-sunxi

 

File name -> remove-boot-messages-from-hdmi.patch.disabled

You should normally only have to remove the '.disabled' part to make use of this patch.

But since this version did not work i created a new file called:

 

remove-boot-messages-from-hdmi.patch

containing:

diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -438,12 +438,12 @@

 #ifdef CONFIG_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
-       "stdout=serial,vga\0" \
-       "stderr=serial,vga\0"
+       "stdout=serial\0" \
+       "stderr=serial\0"
 #elif CONFIG_DM_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
-       "stdout=serial,vidconsole\0" \
-       "stderr=serial,vidconsole\0"
+       "stdout=serial\0" \
+       "stderr=serial\0"
 #else
 #define CONSOLE_STDOUT_SETTINGS \
        "stdout=serial\0" \

 

*UPDATE* - Jan 27th 2022 - When using the new Armbian build trunk called 22.02.0

i again was not able to use this new patch, since the 'sunxi-common.h' file changed

too much. For those also trying to use this guide using Armbian 22.02.0 trunk please

try the following patch instead:
 

This removes all boot messages but leave logo. For Plymouth configuration proceed here:

https://forum.armbian.com/topic/10087-armbian-boot-splash-screen/?do=findComment&comment=96114

diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -403,8 +403,8 @@

 #ifdef CONFIG_DM_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
-       "stdout=serial,vidconsole\0" \
-       "stderr=serial,vidconsole\0"
+       "stdout=serial\0" \
+       "stderr=serial\0"
 #else
 #define CONSOLE_STDOUT_SETTINGS \
        "stdout=serial\0" \

 

After creating this file you can use the Armbian build guide to create a new 'release'.

Use the deb files in the output path located at:

 

<armbian git clone dir>/20.02.2/build/output/debs

 

The most important file is -> linux-u-boot-current-pine64so_20.05.0-trunk_arm64.deb

Keep in mind i am describing these steps for a Pine64-LTS, the idea stays the same...

 

Put the deb file on your unit and install the package with:

 

dpkg -i linux-u-boot-current-pine64so_20.05.0-trunk_arm64.deb

Once this is finished you also have to save this u-boot img to mmc/sdcard or whatever you are using.

You can do this with armbian-config. Start armbian-config and select menu item 'system' then 'install'

and then '5 Install/Update the bootloader on sD/eMMC' . Once finished you will have the new u-boot

on your system. To really make sure you are not getting any messages to your console make the

following changes to your armbianEnv.txt

verbosity=0
console=custom
consoleargs="console=ttyS0,115200 console=tty7"
#extraargs=vt.global_cursor_default=0 quiet splash fbcon=rotate:3 plymouth.ignore-serial-consoles
extraargs=vt.global_cursor_default=0 quiet splash plymouth.ignore-serial-consoles
stdout=serial

 

vt.global_cursor_default=0 makes sure you dont see any blinking cursor in the upper left corner

quiet makes sure you don't get extra kernel messages.

splash enables kernel splash logo.

fbcon=rotate:3 you don't need to and is only needed on LCD's or HDMI units that are rotated.

plymouth.ignore-serial-consoles makes sure plymouth ignores the /dev/ttyS0 console because else plymouth wont continue and

you wont get any video driver attached to plymouth.

stdout=serial makes sure the boot.scr does not do his own thing.

 

Once you made all these changes you can do a reboot and notice that you will see a splash screen followed by a long

silence black screen and then the login prompt (or desktop if you are using desktop image).

 

You can now install plymouth to also show splash screen (takeover) from the point where u-boot left.


 

apt-get install plymouth

apt-get install plymouth-themes

 

Now you can try a default theme, for example spinner:

 

plymouth-set-default-theme spinner

 

To make really sure the initrd also starts plymouth i ran an extra initrd update:

 

update-initramfs -u

 

Ok, now you should be done. Reboot the system and enjoy the splash boot and loader.

Link to comment
Share on other sites

  • Igor pinned this topic

Hello.

I have Orange PI with Armbian. I need to replace load logs by splashscreen.

As i understand, first of all i need to activate splashscreen in uboot loader.

i did next:

press Space before loading kernel.

usb start

load usb 0:1 92000000 logo.bmp

bmp d 92000000 - displays my picture on screen

cp.b 92000000 41F80000 3656856
setenv splashimage 41F80000
saveenv

and here i have error that emmc0 is unreachable.

my Armbian is on emmc and it is emmc1. emmc0 - microSD.

what i need to do to save to my emmc?

 

then i need to remove logs output (in uboot and armbian), how can i do it?

Link to comment
Share on other sites

Hi Gogoer,


I did recompiled u-boot myself also the kernel for the Gentoo distribution, but i did

not yet do anything with the emmc unit (on my Pine64-LTS) so i do not know

exactly how u-boot knows which device to read and wirte environment data from/to.

I expect this to be hardcoded in the u-boot bootloader when first time creating it

with the make config command (during recompile of u-boot). I expect some

config settings indicating the environment device. But u-boot has made some

major changes during the last year, so it could also be possible that there

is some sort of autodetect possible.

 

I don't have any experience with the Orange Pi, but i would expect Armbian to work

in the same way. Can't you just boot up your system first, then edit the arnbianenv.txt

in the /boot directory, use armbian-config to update emmc u-boot and after that

follow the recompile steps i post earlier?

Link to comment
Share on other sites

  • Igor unpinned this topic

hi Patrick Peters.

i trying to change my boot splash screen like your answer! but i think your command is old:

plymouth-set-default-theme spinner

 

 

i think this command is not working right now because i install any plymouth like this:

sudo apt install plymouth-*

 

and after that i can not see any command like: plymouth-set-default-theme spinner in my terminal!

 

Edited by EmadDeve20
Link to comment
Share on other sites

Hi EmadDeve20,

 

Sorry for the late reply. Did you try to find/execute the commands as 'root' user? because you should

have done that or else you won't be able to find/execute them. For instance:'plymouth-set-default-theme'

is located in the '/usr/sbin' directory which is not added as a standard search path for normal users by

default.

 

You can try to elevate yourself to 'root' user by executing the command: 'su -' on the prompt. If your

system does not allow this, you should type sudo in front of each command i stated in my earlier

posting.

 

Link to comment
Share on other sites

 Jan 29th 2022
It works for me.
 

 

diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index e840e963..6b15462c 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -418,8 +418,8 @@ extern int soft_i2c_gpio_scl;
 
 #ifdef CONFIG_DM_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
-    "stdout=serial,vidconsole\0" \
-    "stderr=serial,vidconsole\0"
+    "stdout=serial\0" \
+    "stderr=serial\0"
 #else
 #define CONSOLE_STDOUT_SETTINGS \
     "stdout=serial\0" \


 

Link to comment
Share on other sites

On 4/8/2019 at 7:45 PM, Igor said:


Each hardware has their own special handling. It won't be simple if you want to have boot splash all the way from power-on to desktop ...

 

One generic way, but with limitations: https://github.com/armbian/build/blob/second/scripts/bootsplash

@Igor I can see its moved to https://github.com/armbian/build/tree/master/packages/blobs/splash
I changed the pngs and run the `bootsplash-packer` to create a file trying to recreate as per boot.cmd the bootsplash.armbian but file is too small compared to orginal.

Basically I d like to make the bootsplash just black and have only the spinner.
Any tips are welcome

Tx in advance

 

On 2/25/2020 at 9:31 PM, Patrick Peters said:

You can use plymouth to create a splash boot.

 

I have done this on a Pine64-LTS board so maybe you need to alter some steps.

 

First step is to create a custom boot logo image for u-boot to show.

I am not really sure which file you need exactly but to be sure just

use the same image as boot logo and save the images in /boot

 

1 file named boot-desktop.png in /boot/boot-desktop.png

1 file named boot.bmp in /boot/boot.bmp

 

If you don't want to lose the original ones, back-up them first:


 

cp /boot/boot-desktop.png /boot/boot-desktop.png-orig

cp /boot/boot.bmp /boot/boot.bmp-orig

 

Next reboot you will notice you are having a nice new boot image, but you will

probably also notice that the kernel boot messages are written over this screen

and/or maybe also the init boot messages. Sadly this is due to the fact that u-boot

isn't compled with silent boot support. It would have been nice, because you

could then set a parameter to use it in silent or not. Now we first have to recompile

the u-boot with a patch to silence the boot messages. Use the default Armbian

build guide and before you start compiling you need to enable a u-boot patch.

You can try to enable the patch, but i tried it and it failed applying due to some

inconsistencies. I changed the patch so it now works. I don't know how i should

give this patch change to the correct maintainer, so i will place it here:

 

patch file located in -><armbian git clone dir>/20.02.2/build/patch/u-boot/u-boot-sunxi

 

File name -> remove-boot-messages-from-hdmi.patch.disabled

You should normally only have to remove the '.disabled' part to make use of this patch.

But since this version did not work i created a new file called:

 

remove-boot-messages-from-hdmi.patch

containing:

diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -438,12 +438,12 @@

 #ifdef CONFIG_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
-       "stdout=serial,vga\0" \
-       "stderr=serial,vga\0"
+       "stdout=serial\0" \
+       "stderr=serial\0"
 #elif CONFIG_DM_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
-       "stdout=serial,vidconsole\0" \
-       "stderr=serial,vidconsole\0"
+       "stdout=serial\0" \
+       "stderr=serial\0"
 #else
 #define CONSOLE_STDOUT_SETTINGS \
        "stdout=serial\0" \

 

*UPDATE* - Jan 27th 2022 - When using the new Armbian build trunk called 22.02.0

i again was not able to use this new patch, since the 'sunxi-common.h' file changed

too much. For those also trying to use this guide using Armbian 22.02.0 trunk please

try the following patch instead:
 

This removes all boot messages but leave logo. For Plymouth configuration proceed here:

https://forum.armbian.com/topic/10087-armbian-boot-splash-screen/?do=findComment&comment=96114

diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -403,8 +403,8 @@

 #ifdef CONFIG_DM_VIDEO
 #define CONSOLE_STDOUT_SETTINGS \
-       "stdout=serial,vidconsole\0" \
-       "stderr=serial,vidconsole\0"
+       "stdout=serial\0" \
+       "stderr=serial\0"
 #else
 #define CONSOLE_STDOUT_SETTINGS \
        "stdout=serial\0" \

 

After creating this file you can use the Armbian build guide to create a new 'release'.

Use the deb files in the output path located at:

 

<armbian git clone dir>/20.02.2/build/output/debs

 

The most important file is -> linux-u-boot-current-pine64so_20.05.0-trunk_arm64.deb

Keep in mind i am describing these steps for a Pine64-LTS, the idea stays the same...

 

Put the deb file on your unit and install the package with:

 

dpkg -i linux-u-boot-current-pine64so_20.05.0-trunk_arm64.deb

Once this is finished you also have to save this u-boot img to mmc/sdcard or whatever you are using.

You can do this with armbian-config. Start armbian-config and select menu item 'system' then 'install'

and then '5 Install/Update the bootloader on sD/eMMC' . Once finished you will have the new u-boot

on your system. To really make sure you are not getting any messages to your console make the

following changes to your armbianEnv.txt

verbosity=0
console=custom
consoleargs="console=ttyS0,115200 console=tty7"
#extraargs=vt.global_cursor_default=0 quiet splash fbcon=rotate:3 plymouth.ignore-serial-consoles
extraargs=vt.global_cursor_default=0 quiet splash plymouth.ignore-serial-consoles
stdout=serial

 

vt.global_cursor_default=0 makes sure you dont see any blinking cursor in the upper left corner

quiet makes sure you don't get extra kernel messages.

splash enables kernel splash logo.

fbcon=rotate:3 you don't need to and is only needed on LCD's or HDMI units that are rotated.

plymouth.ignore-serial-consoles makes sure plymouth ignores the /dev/ttyS0 console because else plymouth wont continue and

you wont get any video driver attached to plymouth.

stdout=serial makes sure the boot.scr does not do his own thing.

 

Once you made all these changes you can do a reboot and notice that you will see a splash screen followed by a long

silence black screen and then the login prompt (or desktop if you are using desktop image).

 

You can now install plymouth to also show splash screen (takeover) from the point where u-boot left.


 

apt-get install plymouth

apt-get install plymouth-themes

 

Now you can try a default theme, for example spinner:

 

plymouth-set-default-theme spinner

 

To make really sure the initrd also starts plymouth i ran an extra initrd update:

 

update-initramfs -u

 

Ok, now you should be done. Reboot the system and enjoy the splash boot and loader.

I have tested similar steps for TInkeBoard. u-boot file is working nice after installation with the quiet or splash etc
I used the default patch within the build folder
My goal was to hide most things
Just need to hide the login without the use of the splash
Tx for sharing your steps.

 

On 4/2/2022 at 2:51 PM, 2play said:

@Igor I can see its moved to https://github.com/armbian/build/tree/master/packages/blobs/splash
I changed the pngs and run the `bootsplash-packer` to create a file trying to recreate as per boot.cmd the bootsplash.armbian but file is too small compared to orginal.

Basically I d like to make the bootsplash just black and have only the spinner.
Any tips are welcome

Tx in advance

Ive tested below with success

Added the newly created 1K file (with just black pngs), renamed original to .BAK (for example), added 669 permission as the original and  after running the `sudo update-initramfs -u` next reboot was all black until my custom splashvideo.
Little effort and trial gave me the desired result

 

Hi@Igor Could I have your expertise please?

For the bootsplash-packer what would be the command  to use new bmp files to create a new bootsplash.armbian file
as mentioned above the "cd /build/packages/blobs/splash/ && ./bootsplash-packer bootsplash.armbian" or is it the bmp file specs?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines