Retrofitting Retro Rides: How Compose MPP Powers a Custom BMW Infotainment System
Share this article
In an ambitious hardware-software fusion, a developer has transformed a vintage BMW's factory display—complete with retractable screen and cassette deck—into a modern infotainment hub. The system leverages Compose Multiplatform (MPP) cross-compiled to run on a Raspberry Pi with Raspbian, controlled solely through the car's original rotary knob via the IBUS serial protocol. This three-year project, initiated when Compose MPP was at Milestone 2, showcases Kotlin's viability in embedded automotive applications.
Engineering the Interface
At its core, the solution translates physical knob rotations and presses into UI events using a custom Compose MPP state management layer. The knob's IBUS signals are parsed and mapped to composable functions, enabling navigation through interfaces without touch inputs. The KnobListener interface abstracts hardware interactions, allowing dynamic responses to rotation direction and button presses—critical for a single-input system.
"The only input device is a rotary knob that can be pressed. Knob events are sent via the car's IBUS serial bus, integrated into the Compose MPP UI state."
Feature-Rich Customization
Beyond basic controls, the developer built a native Matrix chat client and an OpenStreetMap viewer from scratch. The Matrix implementation handles real-time messaging within the constrained interface, while the map renderer provides navigation capabilities. A bench-top car surrogate demonstrates the system's functionality, highlighting how Compose's declarative UI simplifies rendering dynamic content on low-res displays.
Why This Matters
- Cross-Platform Prowess: Proves Compose MPP's flexibility beyond mobile/desktop, extending to resource-constrained embedded environments
- Legacy Hardware Revival: Demonstrates how vintage automotive interfaces can integrate modern apps via serial protocol hacking
- Input Innovation: Solves UX challenges for touchless systems through creative event mapping
- Long-Term Viability: Developed alongside Compose MPP's evolution since 2021, validating Kotlin's stability for hardware projects
The project exemplifies how modern frameworks can retrofit aging technology, offering a blueprint for automotive hobbyists and embedded Kotlin adopters. As vehicles become software platforms, such experiments highlight the blurred lines between consumer tech and industrial systems.
Explore the full system, including source code and demo videos, on the project homepage.