Silent boot unless the menu is requested (flickerless handoff to Plymouth) #2

Open
opened 2026-08-22 14:54:42 +00:00 by kit · 0 comments
Owner

U-Boot currently prints to the panel on every boot, so the user sees console text before the kernel takes over — which makes a clean Plymouth splash impossible.

Make U-Boot silent by default and only unsilence when the user actually wants the menu or console.

Config

Not currently enabled:

# CONFIG_SILENT_CONSOLE is not set
# CONFIG_DISABLE_CONSOLE is not set

Needs CONFIG_SILENT_CONSOLE=y, plus CONFIG_SILENT_CONSOLE_UPDATE_ON_SET=y so toggling the silent env var takes effect immediately.

Behaviour

  • Default env carries silent=1 → nothing on the panel, straight into the kernel.
  • When vol-up is held (the existing menu trigger), setenv silent before drawing the menu, so the menu is visible.
  • The serial console entry must stay loud unconditionally — it is our debugging lifeline and has already saved us twice this cycle.
  • Keep silent in the persistent UFS env so it is togglable from Linux via gts6l-env without reflashing.

Interaction with the kernel side

For a genuinely flickerless handoff the kernel also needs to not scribble on the framebuffer before Plymouth starts: drop console=tty0 from bootargs (or use quiet loglevel=3) on the normal boot target, while the debug target keeps it. That is much easier once bootargs lives in the env rather than baked into the boot image (see the ext4 boot issue) — right now switching means repacking the image.

Related: the display comes up via handover from the bootloader framebuffer (earlycon=gtsfb,0x9c400000), so whatever we do must not disturb the handover the panel driver depends on.

U-Boot currently prints to the panel on every boot, so the user sees console text before the kernel takes over — which makes a clean Plymouth splash impossible. Make U-Boot silent by default and only unsilence when the user actually wants the menu or console. ## Config Not currently enabled: ``` # CONFIG_SILENT_CONSOLE is not set # CONFIG_DISABLE_CONSOLE is not set ``` Needs `CONFIG_SILENT_CONSOLE=y`, plus `CONFIG_SILENT_CONSOLE_UPDATE_ON_SET=y` so toggling the `silent` env var takes effect immediately. ## Behaviour - Default env carries `silent=1` → nothing on the panel, straight into the kernel. - When vol-up is held (the existing menu trigger), `setenv silent` before drawing the menu, so the menu is visible. - The **serial console** entry must stay loud unconditionally — it is our debugging lifeline and has already saved us twice this cycle. - Keep `silent` in the persistent UFS env so it is togglable from Linux via `gts6l-env` without reflashing. ## Interaction with the kernel side For a genuinely flickerless handoff the kernel also needs to not scribble on the framebuffer before Plymouth starts: drop `console=tty0` from `bootargs` (or use `quiet loglevel=3`) on the normal boot target, while the debug target keeps it. That is much easier once `bootargs` lives in the env rather than baked into the boot image (see the ext4 boot issue) — right now switching means repacking the image. Related: the display comes up via handover from the bootloader framebuffer (`earlycon=gtsfb,0x9c400000`), so whatever we do must not disturb the handover the panel driver depends on.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kit/u-boot-gts6l#2
No description provided.