In 2015, Google launched Android Auto, a system that enables customers to challenge sure apps from their Android smartphones onto a automobile’s infotainment show. Android Auto’s driver-friendly interface, with bigger touchscreen buttons and voice instructions, goals to make it simpler and safer for drivers to manage navigation, music, podcasts, radio, telephone calls, and extra whereas protecting their eyes on the highway. Android Auto also can run as an app on an Android smartphone, enabling homeowners of older-model automobiles with out trendy head unit shows to benefit from these options.
While there are numerous apps accessible for Android Auto, builders are working so as to add to its catalog. A brand new, open supply software named OpenAuto is hoping to make that simpler by giving builders a strategy to emulate Android Auto on a Raspberry Pi. With OpenAuto, builders can take a look at their purposes in circumstances just like how they’re going to work on an precise automobile head unit.
OpenAuto’s creator, Michal Szwaj, answered some questions on his challenge for Opensource.com. Some responses have been edited for conciseness and readability.
What is OpenAuto?
In a nutshell, OpenAuto is an emulator for the Android Auto head unit. It emulates the pinnacle unit software program and lets you use Android Auto in your PC or on every other embedded platform like Raspberry Pi three.
Head unit software program is a frontend for the Android Auto projection. All magic associated to the Android Auto, like navigation, Google Voice Assistant, or music playback, is completed on the Android system. Projection of Android Auto on the pinnacle unit is achieved utilizing the H.264 codec for video and PCM codec for audio streaming. This is what the pinnacle unit software program principally does—it decodes the H.264 video stream and PCM audio streams and performs them again collectively. Another perform of the pinnacle unit is offering person inputs. OpenAuto helps each contact occasions and onerous keys.
What platforms does OpenAuto run on?
My goal platform for deployment of the OpenAuto is Raspberry Pi three laptop. For profitable deployment, I wanted to implement assist of video acceleration utilizing the Raspberry Pi three GPU (VideoCore four). Thanks to this, Android Auto projection on the Raspberry Pi three laptop could be dealt with even utilizing 1080p@60 fps decision. I used OpenMAX IL and IL shopper libraries delivered along with the Raspberry Pi firmware to implement video acceleration.
Taking benefit of the truth that the Raspberry Pi working system is Raspbian based mostly on Debian Linux, OpenAuto could be additionally constructed for every other Linux-based platform that gives assist for video decoding. Most of the Linux-based platforms present assist for video decoding immediately in GStreamer. Thanks to extremely transportable libraries like Boost and Qt, OpenAuto could be constructed and run on the Windows platform. Support of MacOS is being carried out by the group and must be accessible quickly.
What software program libraries does the challenge use?
The core of the OpenAuto is the aasdk library, which gives assist for all Android Auto options. aasdk library is constructed on prime of the Boost, libusb, and OpenSSL libraries. libusb implements communication between the pinnacle unit and an Android system (through USB bus). Boost gives assist for the asynchronous mechanisms for communication. It is required for prime effectivity and scalability of the pinnacle unit software program. OpenSSL is used for encrypting communication.
The aasdk library is designed to be totally reusable for any functions associated to implementation of the pinnacle unit software program. You can use it to construct your personal head unit software program in your desired platform.
Another essential library utilized in OpenAuto is Qt. It gives assist for OpenAuto’s multimedia, person enter, and graphical interface. And the construct system OpenAuto is utilizing is CMake.
Note: The Android Auto protocol is taken from one other nice Android Auto head unit challenge known as HeadUnit. The individuals engaged on this challenge did a tremendous job in reverse engineering the AndroidAuto protocol and creating the protocol buffers that structurize all messages.
What gear do it is advisable run OpenAuto on Raspberry Pi?
In addition to a Raspberry Pi three laptop and an Android system, you want:
- USB sound card: The Raspberry Pi three does not have a microphone enter, which is required to make use of Google Voice Assistant
- Video output system: You can use both a touchscreen or every other video output system related to HDMI or composite output (RCA)
- Input system: For instance, a touchscreen or a USB keyboard
What else do it is advisable get began?
In order to make use of OpenAuto, it’s essential to construct it first. On the OpenAuto’s wiki web page you could find detailed instructions for tips on how to construct it for the Raspberry Pi three platform. On different Linux-based platforms, the construct course of will look very comparable.
On the wiki web page you may also discover different helpful directions, resembling tips on how to configure the Bluetooth Hands-Free Profile (HFP) and Advanced Audio Distribution Profile (A2DP) and PulseAudio.
What else ought to we find out about OpenAuto?
OpenAuto permits anybody to create a head unit based mostly on the Raspberry Pi three . Nevertheless, you must all the time watch out about security and take into account that OpenAuto is simply an emulator. It was not licensed by any authority and was not examined in a driving atmosphere, so utilizing it in a automobile will not be really helpful.
OpenAuto is licensed underneath GPLv3. For extra info, go to the project’s GitHub page, the place you could find its supply code and different info.