Flywheel: Free and Open Source Phone Integration for Android Auto Compatible Infotainment Systems
Course Instructor
Pramod Gupta
Abstract
Flywheel is a user-installable free and open source alternative to the Android Auto app which doesn’t require Google Mobile Services (GMS). Flywheel communicates over the proprietary Android Auto protocol to enable video, audio, touch, buttons, and more with existing automobile headunits over USB. Flywheel then displays a user interface which can be used to launch any apps from the phone, view and read aloud notifications with TTS, and view battery and network status.
Flywheel’s UI takes advantage of elevated privileges through a daemon running as root or ADB shell. This allows Flywheel to create special virtual displays, launch apps other than itself on them, and inject input events into them. A non-elevated pure screen mirroring mode is theoretically possible, but has not been implemented yet.
Flywheel has been verified to work reliably on an OEM Nissan Kicks headunit. It also works on common third-party Android Auto receiver implementations including OpenAuto and Headunit Reloaded. Common media and navigation apps have been verified to work without issue, including OsmAnd~, Organic Maps, Google Maps, VLC, YouTube Music.
Flywheel shows that it’s possible for an open source project to achieve an acceptable level of car integration without relying on Google’s ecosystem.
Flywheel: Free and Open Source Phone Integration for Android Auto Compatible Infotainment Systems
Flywheel is a user-installable free and open source alternative to the Android Auto app which doesn’t require Google Mobile Services (GMS). Flywheel communicates over the proprietary Android Auto protocol to enable video, audio, touch, buttons, and more with existing automobile headunits over USB. Flywheel then displays a user interface which can be used to launch any apps from the phone, view and read aloud notifications with TTS, and view battery and network status.
Flywheel’s UI takes advantage of elevated privileges through a daemon running as root or ADB shell. This allows Flywheel to create special virtual displays, launch apps other than itself on them, and inject input events into them. A non-elevated pure screen mirroring mode is theoretically possible, but has not been implemented yet.
Flywheel has been verified to work reliably on an OEM Nissan Kicks headunit. It also works on common third-party Android Auto receiver implementations including OpenAuto and Headunit Reloaded. Common media and navigation apps have been verified to work without issue, including OsmAnd~, Organic Maps, Google Maps, VLC, YouTube Music.
Flywheel shows that it’s possible for an open source project to achieve an acceptable level of car integration without relying on Google’s ecosystem.