[Android 4.1+] Headunit for Android Auto - 160117 - Self Mode+ other fixes, x86, 720p

Search This thread


New member
Nov 5, 2014
GNU/Linux phones and AA, is it possible?

So I'm looking at migrating away from Android over the next 12 months ultimately hoping to land on a Librem 5 gen 2, but first Ubuntu Touch on my old Nexus 5, and it's occurred to me that my AA head unit is about to become a whole lot less functional.

Now I'm honestly not seeing a lot of talk around this topic so my question to you as an authority on Android Auto's I/O system, or at least someone with a lot better understanding than I of the ins and outs. Do you think that it would be possible to program a way for non-Android based Linux phones or just Linux devices in general, Pi's and the like, to use AA head units as external displays and build custom UI's and the like to provide an AA equivalent on Linux?

I've got a programming background with a decent bit of experience handling API's in a web context so I mean if there are endpoints that can be interfaced with that don't strictly rely on the Android runtime then _think_ I might be able to get at least a basic foundational project setup for better UI programmers than myself to come along and build suitable UI's for it. But I mean. Is this something I should/can be spending time on or is to a fool's errand?

Top Liked Posts

  • There are no posts matching your filters.
  • 61
    "Headunit": The First, Best, and Only Headunit app for Android Auto, Now Open Source & Free ! :)

    Turn an Android tablet into an Android Auto compatible Headunit ! :) (With several limitations at this early time of course...)

    Android N developer preview: http://forum.xda-developers.com/showpost.php?p=65749262&postcount=1165

    If you purchased Headunit on Play before Google removed it: http://forum.xda-developers.com/gen...droid-auto-t3125252/post65015637#post65015637

    160117 January 17: New Self mode & Car mode fix: http://forum.xda-developers.com/gen...droid-auto-t3125252/post64844560#post64844560

    151224 December 24: 1280x720 and X86 support: http://forum.xda-developers.com/showpost.php?p=64466237&postcount=943

    151128 November 28: Voice Input + Audio Output: http://forum.xda-developers.com/showpost.php?p=64045807&postcount=903

    August 28 & 5 Voice Input etc: http://forum.xda-developers.com/showpost.php?p=62548380&postcount=724

    USB OTG Y cables I've had success with: http://forum.xda-developers.com/showpost.php?p=62745966&postcount=792

    Comments welcome: Proposal for a Private Website / Forum for the Headunit app and Automotive Android: http://forum.xda-developers.com/showpost.php?p=62207324&postcount=587

    July 24 APK Immersive mode: http://forum.xda-developers.com/showpost.php?p=62014837&postcount=519

    July 14b APK Standalone mode: http://forum.xda-developers.com/gen...oid-4-1-headunit-android-auto-t3125252/page43

    July 11 APK: http://forum.xda-developers.com/gen...oid-4-1-headunit-android-auto-t3125252/page39

    Quick summary of Google Play bans and final responses; I fixed each time & Google gave a different excuse each time: http://forum.xda-developers.com/gen...droid-auto-t3125252/post61632463#post61632463

    Nexus 9 OTG charging w/ M developer preview & Nexus 7 2013 w/ Timur kernel/mods: http://forum.xda-developers.com/showpost.php?p=61632651&postcount=312

    Nexus 7 2013 OTG charging while running Headunit w/ ElementalX kernel: http://forum.xda-developers.com/showpost.php?p=61593874&postcount=290

    Now Open Source and Free ! :) http://forum.xda-developers.com/gen...droid-auto-t3125252/post61440441#post61440441

    June 16 Release #5 APK: http://forum.xda-developers.com/showpost.php?p=61422602&postcount=163

    Release #2 APK and instructions: http://forum.xda-developers.com/showpost.php?p=60894402&postcount=94

    Thank you "All About Android" for covering the Headunit app in episode 218 ! :) http://forum.xda-developers.com/showpost.php?p=61412309&postcount=152

    Android Auto over WiFi Direct is coming: http://forum.xda-developers.com/gen...oid-4-1-headunit-android-auto-t3125252/page16

    June 16 APK: http://forum.xda-developers.com/gen...oid-4-1-headunit-android-auto-t3125252/page15

    June 12 APK Auto-Start: http://forum.xda-developers.com/showpost.php?p=61321219&postcount=107

    June 11 APK: http://forum.xda-developers.com/gen...unit-android-auto-t3125252/page8#post61287292

    June 9 APK: http://forum.xda-developers.com/gen...roid-4-1-headunit-android-auto-t3125252/page5

    Android Auto is Google's latest and greatest effort to provide automotive navigation, music, phone and other features in an environment that minimizes distraction.

    The Headunit app is intended for 7 inch /17 cm or larger tablets.

    A $100-200 Nexus 7 tablet mounted in the car is MUCH cheaper than $700-$1400 Pioneer devices.

    A $300+ 10 inch/25+ cm tablet provides a much larger & nicer screen than 6 inch double-din units.

    Original XDA Thread: http://forum.xda-developers.com/android-auto/android-auto-general/developer-mode-aa-t3059481

    These are early, experimental releases. They should only be used for testing at this time.

    Please note that Google has NOT released Android Auto specifications required to build a Headunit app such as this, except to headunit and auto OEMs who have paid fees and signed NDAs.

    This app required over 500 hundred hours of painstaking reverse engineering (and many more to come), and another 500 or so as of mid July to build and test the app so far.

    If you wish for apps like this that are professionally engineered, supported and updated, your financial support via Paypal donations is required, especially since Google will not allow Headunit apps on Play.

    Help keep an independent developer working full-time++ on this cool new stuff.

    Thanks for your support ! :)


    What the heck is Android Auto, and why would I want it ?: http://forum.xda-developers.com/showpost.php?p=61114397&postcount=2

    What devices and ROMs are supported ?: http://forum.xda-developers.com/showpost.php?p=61114397&postcount=3

    How do I use the Headunit app?: http://forum.xda-developers.com/showpost.php?p=61114419&postcount=4

    Troubleshooting: http://forum.xda-developers.com/showpost.php?p=61114437&postcount=5

    Supported Phones running Android Auto: http://forum.xda-developers.com/showpost.php?p=61114468&postcount=6

    Business Issues: Open Source & Pricing: http://forum.xda-developers.com/showpost.php?p=61114482&postcount=7

    Feature Requests: http://forum.xda-developers.com/showpost.php?p=61114494&postcount=8

    Coming Features: http://forum.xda-developers.com/showpost.php?p=61114500&postcount=9

    Future of Android Auto: http://forum.xda-developers.com/showpost.php?p=61114532&postcount=10
    What the heck is Android Auto, and why would I want it ?

    Introduction / Different approaches:

    There are many different approaches to running apps in a car, and they each have advantages and disadvantages.

    Many people are happy to just install an Android tablet or Android based headunit and run apps much like they do outside of the car.

    Others may mount their phone on the dash and use Android as they always do. They may plug it in to charge and might pair the phone's Bluetooth with their existing in-car audio system.

    If you are using approaches like these, and you are happy with them, that's great ! I'm not a mission to convince you otherwise if you have decided these methods are best for you.

    Android Auto:

    Android Auto (AA) is Google's latest and greatest effort to provide automotive navigation, music, phone and other features in an environment that minimizes distraction.

    AA was announced in 2014, and it's "app" first publicly released March 19, 2015, after Pioneer starting selling their AA compatible 4100/7100/8100-NEX headunits. Google did not seem ready to launch AA at that point, but Pioneer's early release of headunits seems to have forced this.

    Apple has it's own rough equivalent to AA called Apple Car Play. Many who have seen both prefer AA, but iOS users also appreciate having more or less the same iOS UI they already know in their car.

    How AA works (basic):

    AA is not a mirroring solution like MirrorLink, Miracast or Apple Airplay. Mirroring solutions simply send phone screen video to an external, larger screen and return touch events. Thus the in-car screen is simply a blown-up version of the phone screen.

    Mirroring solutions generally work with all existing apps. AA on the other hand, requires Android apps to have special AA compatible extensions added. Clearly this can be a disadvantage of AA. Few music and messaging apps can be used with AA, and the only mapping/navigation app supported is Google's.

    With AA, Google mostly controls the User Interface (UI) as implemented in their AA "companion app". AA compatible apps CAN modify some of the color scheme and some related minor UI features, but the look and feel are largely Google designed and controlled.

    Google has done this to minimize distraction. Although many of us will not be happy with Google's decisions. we should consider that the last things Google wants are: (1) laws against Android Auto, (2) bad publicity from distracted driving incidents, and (3) expensive lawsuits. Note that Google, Apple and the auto OEMs are reportedly negotiating who takes how much responsibility for the inevitable lawsuits, particularly in the US where multi-million dollar settlements regularly occur.

    Google AA supports two types of AA compatible apps at present, with more (eg maps/navigation ?) coming in future: (1) Audio/music and (2) messaging. For the most part, audio/music AA extensions provide functions for starting/stopping/nexting/etc of the audio as well as functions to determine the music navigation hierarchy. Messaging AA extensions include sending a message to AA to be converted to speech as well as handling spoken replies.

    Video and gaming apps will likely never be supported for the drivers position, at least while driving, for obvious reasons.

    Many app developers are hesitating at this time to add AA extensions. At this time, there is very little revenue to be made by supporting AA (and the same has been seen for watch and TV apps). This should improve as more cars have AA installed, via OEM systems or aftermarket headunits.

    So why would I want AA ?:

    If you need access to ANY Android app, and not just the limited selection of AA compatible apps, then mirroring solutions will work better for you.

    AA is more for people who want a solution that "just works" (although there are still many wrinkles to iron out), is well integrated, and has a common Google specified UI.

    Less technically minded people will appreciate AA or Apple CarPlay, while Android power users may be happier with mounting a tablet or using an Android based (usually Chinese) HU.

    An Android based HU which can run my Headunit app, may offer the best of both worlds. You can run any Android app when you need to, or run my HU app to get AA features. (At present nobody has reported success running my Headunit app on an Android based HU. I hope/presume I'll figure that out.)

    I am personally convinced that AA will be very important for Google going forward. Controlling and getting the treasure-trove of data from connected cars is important to Google. We may not be far from the day when Google will get a commission when it successfully convinces us to pull over for specific fast food or auto maintenance. Want fries with your oil change ?

    Because AA is important to Google, I feel confident it will not be abandoned, and will only get better as the years tick by, bugs are fixed, apps are AA enabled, etc.

    Getting AA working:

    Please, always do your best to drive responsibly and with a safe minimum of distraction. You assume all liability for following any of these or any other instructions.

    First, your phone (or tablet) needs the AA companion app installed. US residents can install the Android Auto app from Play: https://play.google.com/store/apps/details?id=com.google.android.projection.gearhead and those outside the US can find APKs here: http://www.apkmirror.com/apk/google-inc/android-auto/ .

    Next, you need an AA compatible aftermarket or auto OEM headunit. Auto OEM AA headunits (HUs) are just starting to come out for a limited selection of 2016 models. Aftermarket HUs like the Pioneer 4100/7100/8100-NEX devices are a good alternative. If a $500-700 HU is too expensive for you, that's where my Headunit app for tablets comes in, but there are some inherent disadvantages to such an app and a tablet is just one of the costs. More on this further below.

    Ensure that your mobile device running the Google AA companion app is setup with a Google account. Make sure the Google apps are up-to-date, including the AA app, Google Play Services, Google Maps, and Google Play Music.

    Now plug your mobile device USB into the HU. If all goes well you should see a series of prompts and screens on the HU and mobile device. If something complains that it's not safe to configure at this time, ensure your car is in the Park gear (or neutral for manual), that the emergency/parking brake is fully engaged, and press down on the brake pedal. My 4100-NEX is setup for testing, outside of a car, and I simply connect the green wire to ground or 12 volt negative line. I'm not sure that this will work well if your HU is installed such that the green wire is connected to other things.

    Hopefully you will now see the main AA Intro/Google Now Screen. Select functions from the "rail" at bottom of screen: In order: Maps/navigation, Phone, Google Now, Music, and "Other/OEM".

    Your mobile device should show a mostly black AA screen indicating the device is in AA/car mode. You CAN escape this and run other apps, but it is not recommended.

    While your mobile device is connected via USB, it should charge. Turn the device screen off to maximize charging and minimize heat build up. Using Maps/Navigation will use the device GPS (unless the HU provides it) and this contributes to heating of the device and minimizes charging.

    How AA works (technical):

    Basically, the AA app creates a special environment in which it draws to a virtual screen instead of the real screen. The resulting video is encoded as an H.264 stream and sent via USB to the HU. The HU responds with touch-screen events which the AA app interprets similarly to normal Android app operation.

    AA compatible audio apps contain AA audio extensions, which can provide control of audio app playback and provide information about which audio streams or files can be played. The audio app uses it's normal Android audio APIs, which the AA "app" hooks in order to send the audio to the HU, over USB or Bluetooth. I refer to the AA "app" with parentheses, because it has many hooks into Android internals which normal apps do not have access to. Thus, much of the AA "app" is really system level code, though there is a minor UI for some basic configuration and to provide access to AA developer mode functions.

    The AA USB protocol also includes functions for accessing sensors, including parking brake status, gear position, fuel tank level, road speed, engine speed and many more. Only a few sensor functions are fully implemented at this time however, such as parking brake status to determine if it is safe to do configuration.

    Google has referred to AA HU's as "dumb terminals". But IMO a true "dumb terminal" would simply be a touchscreen with a DVI/HDMI like interface. AA HUs DO need to have some "smarts", such as H.264 video decoding, Bluetooth and sensor signal processing.

    Hardware HUs also generally provide many other functions that work standalone with no mobile device, such as AM/FM/HD radio, CD player and vendor specific apps that run on the HU.

    Why would I want your Headunit app ?:

    - For the customization opportunities.

    I haven't seen any 10 inch / 25 cm screens on auto OEM or aftermarket HUs. Large tablets however are readily available with many choices for screens and other hardware.

    - To use or experiment with Android Auto without buying a new car or a $500+ hardware headunit.

    Note however that besides the tablet, you may also need a USB OTG Y cable and a powered USB hub in order to properly charge the mobile device, and tablet, without running down the tablet battery.

    Some devices (for tablets, mostly non-Samsung) may need special kernels in order to charge while acting as a USB host.

    Why can't we just run our phone in an AA standalone mode, without tablet or Headunit ?:

    Mostly because Google does not want that. They consider screens under 7 inches / 17 cm to be distracting. Google seems to eventually want "Android in the car", so Google may be working on something like a standalone mode (for what would essentially be an Android tablet in the car), but this is nothing but rumours so far.

    I know a LOT of people would REALLY like a standalone mode, so I am likely to explore the feasibility of this in the near future. I am sure that Google would disapprove of this and would eventually take measures to sabotage such a thing, so it's a tricky prospect.

    I think an AA standalone mode "app" (more like system mods than an app, same as AA "app" itself) would require a rooted device. It likely would also require Xposed (or similar) to hook and modify various system functions.

    Add it all up and it turns into a very difficult venture with limited returns on time invested.

    A Headunit app running on a 2nd device/tablet is more feasible as Google can not just change the AA protocol overnight, and it does not require root on the tablet (except for charging of non-Samsung tablets, sigh...)

    Are there any other AA compatible Headunit apps ?

    At this time no, my Headunit app is the first and only of it's kind.

    Google has not publicly released documentation or code to build a Headunit app, and may never do so.

    It has so far taken me over 600 hours of work to reverse engineer the AA protocol and build this app. With open docs/code it might have taken only 100-200 hours at most.

    I've read a report that Google must certify AA HU implementations before they are "allowed". This is likely part of the agreement and NDAs that auto and HU OEMs must sign to join Googles "Open Auto" alliance, beyond whatever fees are charged.

    GENIVI appears to have plans to "open source" an AA client implementation. But AFAICT, GENIVI "open source" is not entirely public and open. I suspect Google would want to ensure that any users of such source code adhere to their requirements.

    Pioneer HUs run Android. Their AA client implementation is a binary, so it's somewhat similar to an HU app. But it's specific to their hardware and will not work on general purpose Android tablets or phones.

    There may be other Headunit apps to come, but I have not heard of any, beyond one persons desire to create an open source app in the long term.
    What devices and ROMs are supported ?

    Root is NOT required. (But root and a custom kernel may be needed on non-Samsung tablets in order to allow the tablet to charge while it's in USB host mode.)

    Most Android 4.1+ ROMs should be able to work.

    ICS 4.0 and earlier devices/ROMs do not have the needed video decoder and can never work. (Except by building my own decoder with FFMPeg or whatever, which is way too much work for too little return.)

    A working H.264 video decoder is required, but most quality Android 4.1+ devices should have this. (Chinese/budget devices may use slow and/or buggy implementations.)

    Only devices that support USB host mode are physically capable of working. Many or most tablets released in the last 2 years should support USB host mode.

    Full, official support is limited to devices I own. With sufficient demand for a new device, I may purchase that device and add official support, if possible.

    These are the tablets that I own and test:

    Nexus 7 2012 stock.
    Nexus 7 2013 stock.
    Nexus 9 2014 stock.
    Xperia Z2 Tablet stock. CM12 tested OK too.

    Many other devices will work and I will do my best to support them.

    Phones can work as a headunit, but tablets of 7 inches/17 cm or greater are recommended. Smaller screens are more distracting and can risk your safety.
    I said "Take me home" for the 256th time...

    And Android Auto finally listened, LOL. :)

    Voice Input was the last major piece of the puzzle and it's now cracked.

    WooHoo ! ;)
    Announcing: Headunit for Android Auto is now Open Source & Free ! :)

    Headunit for Android Auto is now free as in "freedom" as well as "free beer" (Do not drink & drive !).

    Headunit is not sold. If you purchased on Play email me at [email protected] if you want the order cancelled.

    I am happy to accept donations via Paypal to http://forum.xda-developers.com/donatetome.php?u=3575078 or [email protected] and offers of sponsorships.

    Latest APK here: http://forum.xda-developers.com/showpost.php?p=61422602&postcount=163

    I have posted the code as GPLv3 Affero here: https://github.com/mikereidis/headunit

    I am considering changing license to BSD or Apache.

    The code is limited, experimental and "quickly hacked together" at this time, but will improve quickly as I focus all of my efforts on it.

    The code could be much more useful if other developers contribute by producing variants, enhancements etc. One person alone is much less powerful than a community.

    I'm happy to hear any thoughts, but I'm pretty sure most of you would be happy to hear this. I myself have said that very few open source projects produce a decent income for developers, but there are many options.

    The auto "infotainment" industry is increasingly co-operating and moving to open source models. Examples include Automotive Grade Linux, and the less open GENIVI.... (And Tizen IVI and Auto Grade Android and....)
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone