Plymouth boot splash on Edge

I am really struggling to get Plymouth to work on the Khadas Ubuntu firmware. After spending hours I’m no closer. Has anyone managed to get Plymouth working?

So far I have:

  • Added “quiet splash plymouth:debug” to the kernel command line arguments
  • Created the missing plymouth environment variables

It seems as if the graphics drivers are not loaded and the kernel boot messages shown like normal. Even when testing with plymouth show-splash only boot messages are shown.

Hello @recre8

Can you tell me what’s Plymouth ? I do a quick search with google,I just found it is a city…

I know nothing about Plymouth, but I assume recre8 means this.

Plymouth is the application which provides the graphical splash" screen when booting and shutting down an Ubuntu system.

1 Like

Hello @recre8

I have no idea about the Plymouth, and the image has some difference with the standard ubuntu image for PC. So I’m not sure whether Plymouth can work on Edge…

Hi @numbqq

Yes, Plymouth is the standard way in which the boot messages are suppressed in replaced by a logo during boot. The Rockchip wiki also makes reference to Plymouth as if it should be able to work. As far as I can tell, the Mali drivers are DRM compatible so I think something in the image isn’t configured correct maybe. Oddly, the Firefly RK3399 board seems to be able to handle Plymouth.

EDIT: I’ve also noticed that both fbi and fim give the following error (mmap: Invalid Argument) when used in a terminal environment. It’s almost as if the frame buffer isn’t properly initialized.

1 Like

Any luck getting Plymouth to work? I am planning on customizing it too if I successfully replace the android on my Edge-V to Ubuntu Server.

@numbqq Plymouth is the default splash screen that displays the ubuntu logo during the ubuntu-desktop boot process. I understand the Khadas-Ubuntu-Server is a modified version, but based on my research, the RockChip3399 with it’s bootloader can very well handle Plymouth succesfully: http://blog.iotwrt.com/tips/2017/06/15/rockchip-linux-logo-display/
In fact, it’s the recommended way to do it.
Please talk to your team members with in-depth ubuntu knowledge to put some effort to address this issue. My intention is to use the Edge-V in a professional environment and not for hobby-- I hope I am in the right place?

I did actually get it to work - the problem is relatively simple, but the solution is arduous. It required using Khadas’s fenix build tool to rebuild the entire uboot. Basically, plymouth decides not to show the boot screen because it detects a serial console. You can force plymouth to ignore the serial consoles using a boot argument, but this requires the bootargs of the uboot to be modified which can only be done by building uboot. Maybe the khadas team can include the arguments as standard in future distros?

In anycase, I wrote up a document for myself on how I did it, so it’s not very detailed. Hopefully you an understand it.

https://gist.github.com/riaancillie/d17cf385db6e94fac7b7250ed64a39ec

2 Likes

Thanks, @recre8. Hopefully, I can make sense of it. I’m still a novice with Linux config scriptings and may need your kind assistance if necessary.
by the way, did you replace your Khadas boot logo? If yes, how did you successfully do it?

Yes, I managed to do change the boot logo. Here is a document for that. https://gist.github.com/riaancillie/c97af871a4ba6556e7d8558da6c88da6

1 Like

Hi @recre8,

Following your instruction on how to enable Plymouth on Edge-V, I broke it into two parts for clarification:
-------------------------------------------------------------------------------------
EDIT 1
-------------------------------------------------------------------------------------
on fenix edit
~/fenix/config/bootscripts/rk3399_autoscript.cmd
Search for line containing setenv condev
and console=FIQ0
Remove: console=tty1
Add: splash quiet plymouth.ignore-serial-consoles vt.handoff=7

-------------------------------------------------------------------------------------
EDIT 2
-------------------------------------------------------------------------------------
Also edit ~fenix/config/functions/build-board-deb and comment the following at the end of the file to keep the built files
# rm -rf ${pkgdir}.deb
# rm -rf $pkgdir
make board-deb
cd ~/fenix/build/images/.tmp/linux-board-package-bionic-edge_0.7_arm64/boot
copy and replace boot.scr to /boot on the target Khadas
-------------------------------------------------------------------------------------

In “EDIT 1”, the console=tty1 is not available. Instead, it’s been replaced by console=tty0:

setenv condev "earlyprintk console=ttyFIQ0,1500000n8 console=tty0"

So, I replaced console=tty0 to get:

setenv condev "earlyprintk console=ttyFIQ0,1500000n8 splash quiet plymouth.ignore-serial-consoles vt.handoff=7"

“EDIT 2” seem to be necessary if you already have a working Ubuntu without Plymouth installed on your Edge board. If my assessment is correct, I can as well skip this phase since I’m just building Ubuntu with Fenix and haven’t installed it yet, right?

Hi @uzosky

If you are building a complete distribution image then you don’t need to perform Edit 2 since it will be integrated into the build.
If you want to patch an existing installation on your Edge, you will need to do Edit 2. Reason being, the changes made in Edit 1 are compiled to a binary (boot.scr).
Tip: You can verify that the command line arguments you modified in Step 1 is applied on the target by checking checking the contents of /proc/cmdline (e.g. cat /proc/cmdline).

2 Likes

Thanks for your response, I get:

~$ cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-5.0.0-37-generic root=UUID=5dcd5181-70db-4af6-9c3a-d2c183ee4469 ro quiet splash vt.handoff=1