Psplash for custom pi gadget device

I have adapted the pi-gadget with some customizations, e.g. a custom splash screen. Currently based on the 18-armhf branch. I want to upgrade this gadget and the device’s model assertion to core20, and probably transition to arm64. Before I start this endeavor, I’d like to ask two questions first to maybe save some trial&error time:

  1. The current psplash commit ref on all branches resolves to this commit from 2017. Is there a reason that newer commits are not included?
  2. There’s an open PR for pi-gadget by @ogra to fix the psplash setup. Is there a reason that this is not yet merged? If I understand @kokoye2007 's comment correctly, building on ARM fixes psplash even without the PR #74. At any rate, the PR drops the kiosk.autoconnect.service which looks correct to me. Are there plans for the mentioned initramfs-based implementation to enable a splash screen for secure boot devices? I found initramfs-splash but haven’t tried it yet.

Pinging @ogra @sil2100 @waveform @pmeulengracht – thanks in advance for any feedback :slightly_smiling_face:

1 Like

psplash is dead and gone… there is a new Plymouth based implementation now… sadly whoever implemented the new systemd based initrd (which made the psplash hack impossible) did not clean up the gadget code, neither did foundations when taking over the gadgets, so the code is still there, even the psplash.img is still being built and shipped despite being useless…

Try the new way:

Oh, good to know! Thanks :slightly_smiling_face:

Splash screen configuration is only available on Ubuntu Core 22 and later.

Is core22 stable enough for production gadget + model builds?

EDIT: by cleaning the gadget code, you mean removing the psplash part and Makefile references?

The most drastic changes in UC happened in UC20, 22 just improved that a bit… we do have quite a few customers running UC22 in production just fine…

the more serious changes in the 22 cycle happened in snapcraft (massively different handling, new snapcraft.yaml syntax, no more local plugins with snapcraft 7 etc)

And yes, I mean the psplash part, any makefile references and indeed the whole psplash source directory.

Good to know, started porting my gadget to core22.

One last question (for now): https://github.com/snapcore/pi-gadget/pull/12 was merged to 18-armhf, but vt.handoff=2 is still in cmdline.txt for 20-arm{hf,64}. @xnox commented that vt.handoff should be dropped altogether – can I safely remove it, or might this cause issues in some constellation? My device uses ubuntu-frame.

i have a device running the plymouth splash over here that still has that option in its cmdline, does not seem to do any harm to have it …

Sounds like I can chop some bits out of the 22-arm* branches…

@waveform Done that in my fork: https://gitlab.com/glancr/mirr-os/gadget-snap-pi-kiosk/-/commit/93b57497d65d5829a03e02e5409f25900778b11f You can download the plain diff as a patch (upper right “Options” button) to save some time as a tiny thanks for maintaining all this as open source :slightly_smiling_face:

1 Like

@ogra @abeato Is my assumption correct that in order to get a custom boot splash screen like documented, I need at least the following:

  • model assertion with core22 base
  • core22 base snap in my model’s snaps list
  • custom gadget snap with splash/vendor-logo.png inside the final snap

That’s how I understand the instructions…

FTR I have now created PRs to remove the psplash left-overs in pi-gadget for UC22:

2 Likes

@abeato @ogra How do I rotate the Plymouth splash? I found this discussion pointing me to the kernel command line video=HDMI-A-1:panel_orientation=right_side_up (for portrait orientation), but that does not seem to do the trick. Tested on an RPi 4, the intermittent blinking cursor was displayed upright. My cmdline addition is in my gadget’s cmdline.extra file. Maybe these options are not passed to the initramfs-based Plymouth splash?

Hi @tobias , reading the discussion you point to it seems that plymouth should not need to be aware of the orientation and it should be the kernel the one caring about this. So for this to work you will need support in the pi kernel. Apparently you would need at least kernel 5.7 for this to work, but not sure if some additional support on the Pi side is needed.

Hi @abeato, thanks getting back to me! From my understanding, the kernel support should be given – my device ships the standard pi-kernel snap from 22/stable, currently at 5.15.0-1023.25. The mentioned command-line parameters do work for e.g. the login prompt, but are not picked up by plymouth. Hence my question if the initramfs-based splash picks up cmdline.extra additions from the gadget, but that may be due to my limited understanding of the boot process.

Anyway: I opened a separate topic for this as it no longer concerns psplash at all :slightly_smiling_face: