Everything is working fine except wrong orientation of Volumio startup logo, it is strange, because even startup log (visible for short time during startup) is shown in right orientation, only logo is rotated and it is a bit annoying.
The reason the Volumio Plymouth boot splash does not rotate properly on DSI MIPI displays under Volumio (Buster-based) lies in how Plymouth handles rendering and framebuffer rotation in early boot stages.
Why Only the Logo Is Affected
The boot logs (kernel messages) are handled by the Linux kernel using the framebuffer console, which does respect the rotation configuration from config.txt (e.g., display_lcd_rotate=2) or kernel DRM overlays.
However, Plymouth runs later during userspace initialization and uses its own rendering pipeline, often directly accessing the framebuffer (e.g., via DRM or fbdev), and does not inherit the rotation applied earlier by the kernel.
Specific to MIPI DSI Displays
DSI panels are initialized through KMS (Kernel Mode Setting) and typically register under /dev/dri/card0 with hardware-accelerated modes.
On Debian Buster, the version of Plymouth included (0.9.4 or earlier) has limited or no support for rotation on DRM/KMS-based framebuffers.
Plymouth themes like the one used in Volumio do not apply transformation matrices to the rendered bitmap/logo.
There’s no built-in option in Buster’s Plymouth to rotate the splash theme graphics. Newer versions of Plymouth on Bullseye/Bookworm added experimental support, but not in Buster.
Workarounds (but limited on Buster)
Pre-rotate the logo asset used in the theme (i.e., manually rotate volumio-logo.png) – this is crude and hardcoded, but works if rotation is static.
Modify DRM EDID or framebuffer orientation — not practical, and usually ignored by Plymouth.
Custom Plymouth plugin or backport a newer Plymouth version — but this increases maintenance burden and may break other integrations.
Summary
This is a known limitation of Plymouth on Debian Buster. While the DSI display is physically and electrically working fine, the Plymouth theme renderer does not rotate the splash even if other parts of the boot process appear in the correct orientation. This is due to the Plymouth version lacking rotation support for DRM backends on Buster.
If you’re building custom Volumio images, the only realistic workaround on Buster is to rotate the logo image file manually to match the expected orientation.
I tried, even by removing whole content of folder with files for original logo (/usr/share/plymouth/themes/volumio-player/sequence), then I put there my own logo (just rotated original logo) and modified script volumio-player.script by removing whole part for creating animation, instead I wrote as follow:
#------------------------------------------------- LOGO -------------------------------------------------
# Load the logo image (change 'volumio-logo.png' to your own logo image filename)
logo_image = Image("/usr/share/plymouth/themes/volumio-player/sequence/volumio-logo.png");
# Create a sprite for the logo
logo_sprite = Sprite();
# Center the logo on the screen (horizontally and vertically)
logo_sprite.SetX(Window.GetWidth() / 2 - logo_image.GetWidth() / 2);
logo_sprite.SetY(Window.GetHeight() / 2 - logo_image.GetHeight() / 2);
# Set the image for the sprite
logo_sprite.SetImage(logo_image);
Result? Still the same, animated logo. It has to be hardcoded deeper?
The reason your rotated logo changes aren’t taking effect is because the initial splash screen is rendered from volumio.initrd, not from the root filesystem (/usr/share/plymouth/themes/...). This initrd is loaded during early boot, before / is mounted, and contains a minimal Plymouth setup with embedded theme assets and scripts.
Even if you modify volumio-player.script or replace assets on the live system, those changes do not affect the splash shown during initrd execution.
To properly fix the logo orientation:
Option 1: Modify the Live Initrd
Unpack /boot/volumio.initrd
Replace the logo and volumio-player.script inside the embedded Plymouth theme
Repack the initrd and overwrite the original
Note: This must be redone after each kernel/initrd update.
Option 2: Build a Custom Volumio Image with Rotated Logo
This ensures your rotation fix is persistent across updates and is ideal for custom hardware setups using rotated MIPI or DSI displays.
Rotation via config.txt or kernel KMS settings is not honored by Plymouth during initrd, as it initializes its own DRM/fb session independently. Only direct modification of assets in the initrd can resolve this.
Note: This limitation is specific to the current Buster-based Volumio.
The Bookworm-based Volumio (internal alpha in progress, no public ETA) may include updated Plymouth and KMS handling that resolves this cleanly without needing manual patching. If you’re not distributing hardware, consider waiting for that release.
This must be redone after each kernel/initrd update.
And this is also a good reason to stop this discussion at this point. It might just be easier to get used to it, especially since the rotated logo only appears for 2–3 seconds.
A small, very humble request to the Volumio developers: it’s probably obvious that people use all sorts of displays, mounted in all sorts of orientations. Ideally, orientation settings should be applied consistently across the whole system.
And maybe consider allowing users to import their own logo? It could appear after the original one, or even alongside it, if the original logo is needed as a well-deserved credit to the creators of the system (which is understandable). But let’s also give proud users a chance to personalize their own copy.