Skip to content

Add a PLYMOUTH place to rotate-screen for the DRM panel orientation - #91

Merged
eliasbakken merged 1 commit into
mainfrom
fix/plymouth-rotation
Aug 10, 2026
Merged

Add a PLYMOUTH place to rotate-screen for the DRM panel orientation#91
eliasbakken merged 1 commit into
mainfrom
fix/plymouth-rotation

Conversation

@eliasbakken

Copy link
Copy Markdown
Contributor

Problem

Companion fix to Rebuild#70 (installing Plymouth for a real boot splash). The splash showed up, but wasn't rotated - Plymouth's DRM renderer ignores fbcon=rotate: entirely, since that only affects the legacy fbcon text console.

Fix

Plymouth reads the kernel's DRM panel orientation instead, set via video=<connector>:panel_orientation=<value> on the kernel command line - a mechanism none of the other four rotate-screen places (FBCON/XORG/CMDLINE/WESTON) touch.

  • Fills in the ROT_PLYMOUTH variable that was already sitting there unused in each rotation case.
  • Adds update_plymouth(), mirroring update_cmdline()'s mount/sed/umount pattern against armbianEnv.txt.
  • Wires PLYMOUTH into the PLACES array and dispatch.
  • server.go now calls cmdRotateScreen(..., "PLYMOUTH") alongside the existing CMDLINE/XORG/WESTON calls in runInstallFinishedCommands.

Caveat: only 0->normal and 270->left_side_up are empirically confirmed on real hardware. 90->right_side_up and 180->upside_down are inferred by elimination from the four DRM panel-orientation values and flagged as such in comments - worth validating on hardware before fully trusting those two.

Test plan

  • Ran the actual updated script live on real hardware (rotate-screen 270 PLYMOUTH), confirmed it correctly writes/updates video=HDMI-A-1:panel_orientation=left_side_up
  • Confirmed idempotent - re-running with a different rotation updates the value in place rather than duplicating the parameter
  • go build passes with the server.go change
  • Confirmed end-to-end on a real reboot: splash now shows in the correct orientation

Note: go test ./... currently fails on a pre-existing, unrelated crash in TestHandleSerialCommand - confirmed present on clean main before this change, not something introduced here.

🤖 Generated with Claude Code

Plymouth's DRM renderer ignores fbcon=rotate: entirely - that only
affects the legacy fbcon text console. It reads the kernel's DRM
panel orientation instead, set via
video=<connector>:panel_orientation=<value> on the kernel command
line - a mechanism none of the other four places (FBCON/XORG/CMDLINE/
WESTON) touch.

Fills in the ROT_PLYMOUTH variable that was already sitting there
unused in each rotation case, adds update_plymouth() (mirrors
update_cmdline()'s mount/sed/umount pattern against armbianEnv.txt),
and wires PLYMOUTH into the PLACES array and dispatch. server.go now
calls cmdRotateScreen(..., "PLYMOUTH") alongside the existing CMDLINE/
XORG/WESTON calls in runInstallFinishedCommands.

Only 0->normal and 270->left_side_up are empirically confirmed on
real hardware. 90->right_side_up and 180->upside_down are inferred by
elimination from the four DRM panel-orientation values and flagged as
such in comments - worth validating before fully trusting those two.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@eliasbakken
eliasbakken merged commit ba36b33 into main Aug 10, 2026
2 checks passed
@eliasbakken
eliasbakken deleted the fix/plymouth-rotation branch August 10, 2026 18:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant