Currently, the Balena OS splash screen implementation has several limitations that create unprofessional appearance issues for systems where the output display device is not controlled by the manufacturer and its resolution and aspect ratio cannot be predetermined:
-
Fixed aspect ratio scaling: The Plymouth splash screen uses “fit” scaling rather than “fill”, causing white borders when the image aspect ratio doesn’t match the display
-
Non-configurable background color: White borders appear around images that don’t fill the screen, with no option to change the background color
-
API size limitation: Remote splash screen updates via API are limited to 10KB, making it difficult to maintain image quality for modern displays
-
Single preloaded image: Only one splash screen image can be preloaded, preventing adaptive selection based on detected display characteristics
Use Case
Our product is a system where end users connect it to their own display devices - we have no control over what output device they choose. It could be connected to 1080p screens, 4K displays, monitors with various aspect ratios, or even routed through video mixers with different resolutions. Since we cannot predetermine or control the display characteristics, we need a professional, seamless splash screen appearance regardless of the output device the customer connects.
Proposed Solutions
1. Configurable Background Color
-
Add support for setting a custom background color (default to black for professional appearance)
-
Could be implemented as a configuration variable or API parameter
-
This would immediately solve the white border issue for most use cases
2. Increased API Image Size Limit
-
Increase the splash screen image size limit from 10KB to at least 100KB for API updates
-
Modern displays require higher quality images, and 10KB is insufficient for crisp logos on 1080p+ screens
-
Preloaded images already support larger sizes, so the infrastructure exists
3. Multiple Scaling Modes
-
Add a configuration option to choose between scaling modes:
-
“fit” (current behavior - preserve aspect ratio)
-
“fill” (expand to fill screen, may crop)
-
“stretch” (fill screen exactly, may distort)
-
“center” (display at original size with background fill)
-
4. Multiple Preloaded Images Support
-
Allow preloading multiple splash screen images with different aspect ratios
-
Implement automatic selection based on detected display resolution
-
Or allow API/dashboard control to switch between preloaded images
Additional Context
-
Current workaround attempts with 4K preloaded images still show borders
-
Creating quality 1920x1080 images under 10KB is extremely challenging
-
The white borders create an unprofessional appearance for commercial deployments
-
Support ticket reference: #5487