Headunit Revived is an Android app that allows you to turn your Android tablet or phone into an Android Auto receiver. This project is a revived version of the original headunit project by the great Michael Reid. The original project can be found here:
https://github.com/mikereidis/headunit
Screenshots
How to use
Check out the Wiki for detailed documentation, setup guides and troubleshooting!
Wired USB Connection
Connect your Android device (phone) to the tablet running Headunit Revived via USB cable.
Make sure that Android Auto is installed on your phone.
Set your phone to Host-Mode if nescessary and select Android Auto
Click the USB Button in Headunit Revived, find your phone and click the right button to allow connection
Click on your phone in the list and wait for Android Auto to start
Wireless Helper (Recommended)
This is the most reliable way to connect wirelessly. It uses our companion app on your phone to trigger the connection.
Features: Minimal configuration, supports NSD, Wi-Fi Direct Auto-Connect, and Bluetooth Auto-Start.
Setup:
In Headunit Revived Settings: Set Wireless Mode to Helper Mode.
Ensure both devices are in the same network (Hotspot or WiFi).
Open the Wireless Helper app on your phone and start the service.
The helper will find your headunit and initiate the connection automatically.
Legacy Wireless Options
Wireless Launcher: You can still use the original Wireless Launcher by Emil Borconi.
Manual / Native: Uses the native "Headunit Server" built into Android Auto developer settings (may fail on 10.x.x.x networks).
Connect Wirelessly via Intent (Power Users)
You can trigger a wireless connection attempt using an Android Intent. This is useful for automation tools like Tasker, MacroDroid, or via ADB.
URI Scheme:headunit://connect?ip=<PHONE_IP>
Example ADB Command:
adb shell am start -a android.intent.action.VIEW -d "headunit://connect?ip=192.168.1.25"
Known Issues
Google Maps in Portrait Mode: Touch interactions (searching, scrolling) within Google Maps may not work as expected when using Portrait Mode on some devices. Fix: Try reducing the Pixel density (DPI) setting to below 200 (e.g., 190) in the app settings. This often restores full functionality.
Wireless Connection Drops: If the connection drops frequently, disable "WiFi Assistant" or "Switch between networks" in your phone's WiFi settings to prevent it from killing the connection due to "no internet." Check battery saving options.
Self-mode on Android 10 (Q) and below: Google has disabled the automatic wireless projection startup for Android 10 and below in Android Auto versions 16.4 and higher. While Self-mode still works on newer Android versions, it is normally impossible to trigger projection on Android 10 and below directly with recent Google app updates. Workaround: You can still use Self-mode on these devices by starting the built-in Android Auto Headunit Server and connecting via Wi-Fi mode (loopback). See the Troubleshooting Guide for step-by-step instructions.
Planned
add libusb as alternative to the native usb stack for better compatibility with some devices
more customization options for the UI and the app itself
Changelog
v.3.0.1
Fixed: App Exit on Disconnect
Enhanced: USB Workflow. This will hopefully eliminate some random usb disconnects
Fixed keyboard input on Android < 6 Devices
Enhanced WiFi Direct-Mode
Enhanced File Selector for some devices
Fixed some fatal errors, showing in play console
v.3.0.0
Added: Custom loading screen (image/GIF/video), thanks to @andrecuellar
Added: Settings-Reset Button, if you mess up something in the settings, you can now reset them to default
Removed: Old deprecated ssl library written in C-Code for better maintenance, stability and smaller file sizes
Added: Direct Logging to file without logcat, thanks to @Anton111111
try to fix connection lost on carrier lost again
keep usb disconnection for 8s alive, for maybe restarts of usb dongles
Implement car headlight signal mode (ILL+) for night theme management, thanks to @minhtuanact
Added settings export and import functionality with backup options, thanks to @JanRi3D
Added whitelist to usb connection for not interrupting with iPhones and other usb devices
Added QR Code for easy connection with wireless helper
Fixed: BT auto-connect dragging phone into wireless flow during USB session, thanks to @andrecuellar
Persist Auto-Optimize wizard settings synchronously, thanks to @andrecuellar
Added ability to swipe with two fingers from the right side to switch fullscreen mode and Normal (all bars) mode, thanks to @Anton111111
Improved: usb button auto connect, thanks to @bezprobeloff
Catched an fatal error listed in the play console
Fixed: Audio Stutter on some devices since 2.1.1
Fixed: USB device list duplicates and Android Auto projection launch on Android 10+, thanks to @jeancarloscc
Enhanced: Google Nearby. It was buggy with 2 FPS video
Fixed: Navigation Button mapping now working
v.2.3.1
Fixed a connection lost on for example borders
Binding socket to wifi network if available to prevent connection drops on carrier lost
Added Static Audio Focus Toggle to prevent audio focus loss on some devices
Fixing samsung routines and modes
Fixing wrong orientation on start if holding the phone wrong. Now uses the orientation from settings
Try to fix usb errors with AAwireless Dongles
Added Audio Mixer to mix different audio tracks, thanks to @jeffdapaz for the idea
Added Autostart on BT for multiple devices
Fixed Microphone input source was wrong mapped
Added Vietnamese translation 🇻🇳 thanks to @minhtuanact
Merged PR #549 - implement back key routing and add keymap for back key, thanks to @JanRi3D
v.2.3.0
Added some new buttons for keymap
Fixed 3 Fatal errors
Fixed video decoder settings for allwinner devices
Added new navigation intents
Included PR #456
Added new "Autostart on WiFi" Setting #324
Fixed empty bssid on native AA. Should now work on more devices
Fixed a new fatal with media sessions
Readded fullscreen overlays system icons #351
Remap Enter (66) to Dpad Center (23) for Rotary Knob #459
Debounce multiple key events if key event is the same in 100ms #465
Moved Mic settings to own fragment and added 3 new options for the new mic enhancement from version 2.2.2, which defaults to off for better compatibility
Merged PR #481 - Apply MediaTek 60fps and audio optimizations, thanks to @mrkontrast-coder
Some rewrite of the AudioTrackWrapper, to enhance stability and minimize stutters
Merged PR #502 - Navigation Broadcast Updates. Thanks to @Bastel2020
v.2.2.2
Fixed: Exit on disconnect now stops the carmode too
Fixed: Exit intent not closing the app
Fixed: Orientation not working great on app switch, if you have "auto or sensor" enabled
Again: Steering Wheel and Keymapping got some changes, maybe this will work on more devices
Extend mic debugging and add NoiseSuppressor, AutomaticGainControl and AcousticEchoCanceler for better voice quality
Fixed an issue where the Android USB system prompt wouldn't appear for phones. The prompt is now enabled by default and can be separately disabled for USB thumb drives. It calls "Listen for USB Devices" setting and it decouples the system USB prompt from the Auto-Start behavior. This will bring back the old functionality for all and can be disabled for those who are annoyed of the popup for non Android Auto devices
Fixed: Rescale and UpdateUI if the useable area differs from the one negiotated. This happens on devices which lie about their navbars.
Fixed: Fatal Crash on devices below lollipop on disconnection
Fixed: Auto-Night mode over 3 hours of in the UK and other countries, thanks to @BinarySimple17
Add separate audio streams setting and update related functionality thanks to @Anton111111
Enhanced: When audio sink is off, the app no longer tries to get media focus at all
v.2.2.1
Fixed a fatal error in UBS conncetions since 2.2.0. This is important so releasing this version while not fixing all planned issues
Google Nearby Connection is now auto connecting if auto connect is enabled
UI: Added Error Message for Android 10 and below for selfmode
New Approach for scaling and touch to prevent offset
Fixing App appears multiple times in App-Drawer
Fixing Routines and intents not working
v.2.2.0
Added: Native AA. 🎉 Warning! This will only work on a limited amount of headunits! Most Android devices do not support connecting 2 Android devices via Bluetooth which is essential for this to work.
Added: Google Nearby Support as connection method. Needs Wireless Helper 1.6.0 or later
Added: Pip-Support
Added: 4K in select
Try to fix connection problems on WiFi
Added: Intent and routine for starting the app directly to self mode
Added: Force Scale Option for older devices on surface view
Added: New Immersive Fullscreen with avoided notch area. This should fix problems for eg. Pixel Phones
Enhanced: Video Decoder Error Handling
Added: 2 new WiFi-Options for a WiFi-Direct. Thanks to @andrecuellar
Added Japanese language 🇯🇵 thanks to @mattyann87
Enhanced: Media Session Announcement. Thanks to @irwanrhmn
New App-Icon without text for better visibility
Fixed: USB modal appearing for non-Android Auto devices thanks to @andrecuellar
Added: Create configurable audio queue and audio buffer in settings thanks to @irwanrhmn
v.2.1.1
Fixed: Layout crash on Android 4.2
Added: Enable Hotspot option. Note: This will not work on every device. Especially after Android 13!
Added: Fake VPN Handler for new Android Auto in offline mode. It is no longer possible to send a network to AA, so we need this hack, if your device is offline
Enhanced: Audio-Focus is now more aggressive to hopefully fix the audio is not coming from my tablet/headunit errors
Added: Auto-Boot Functionality. Thanks to @andrecuellar
Attention: Needed to split Github and Playstore Release. Google does not allow using Fake VPN for offline selfmode. This is now not included in the playstore release!
v.2.1.0
Fixed: Exit Intent not working. Thanks to benyjr
Added: Rotary Support
Fixed: Crash in Android < 5
Fixed: Double Button fire and enter/knob click as dpad center mapping
Enhanced: Android Auto start for selfmode now tries all methods always and catches errors
Fixed: Auto start, connection lost overlay, toasts and API17 Bluetooth crash. thanks to @andrecuellar
Added: Exit App on disconnect feature/setting thanks to @Tilak-03 and @andrecuellar
Enhanced: Wi-Fi Setting redirect is gone. Now only a toast message
Fixed: styling errors
v.2.0.2
Fixed: 60FPS never applied
Fixed: SSL Handshake fix for truncated messages
Added: dark mode and xtreme dark mode setting for the app itself thanks to @andrecuellar!
Removed: App category="maps" so nav buttons recognize the app again
Fixed: Multiple Button Events and double/tripple skips
Fixed: USB Permission Request thanks to @Bastel2020
Added: Setting for Disable stretch to fit. This will fix wrong rendering on some devices @thanks to tsabaia
Fixed: Touch screen accuracy when not in full screen mode for older devices
Fixed: Big Icon-Button on main screen when the dpi is small and the screen is wide
v.2.0.1
Fixed: Multiple volume sliders appearing on modern devices (Pixel 9 fix)
Added: Support for Media Button emulation (SWC improvement for MacroDroid etc.)
Added: App shortcut and deep link for full app exit (headunit://exit)
Added: Improved Wi-Fi Direct reliability with recursive discovery and ping handoff
Added: Romanian translation 🇷🇴, thanks to @LeeWiu
Merged PR #189: Adding navigation message handling, thanks to @Bastel2020
Merged PR #215: Fix USB reconnect race and stale dongle data after AA exit, thanks to @andrecuellar
Merged PR #205: Fix wireless dongle disconnect on network changes, thanks to @andrecuellar
Merged PR #216: Add Bluetooth SCO microphone support, thanks to tgigli
v.2.0.0
Added Wi-Fi Direct (P2P): Support. Connect your phone to the headunit without a shared network or hotspot. The headunit now automatically becomes visible as a P2P peer.
Refactored Connection Core: Complete rewrite of the internal connection handling using the new CommManager. Improved stability, faster handshakes, and better coroutine integration.
Enhanced Fullscreen Logic: Choose between "Immersive" (hide all), "Status Only" (keep navigation bars), or "None". Improved compatibility for devices where buttons were previously obscured.
Added Auto-Optimization Wizard: Automatically recommends the best Resolution, DPI, and Codec for your specific hardware.
Added Early MediaSession Initialization: Fixes audio routing issues where the phone would sometimes play sound through its own speakers instead of the headunit.
Added New Logging System: Integrated log level control and file capture for easier debugging.
IMPORTANT Fixing Android Auto 16.4 intents for selfmode. In Wireless Helper too. Please update to 1.2.0
v.1.15.1
New Feature: Added Auto-Optimization Wizard to automatically find the best Resolution, DPI, and Codec settings for your hardware.
Bugfix: Fixed Self Mode failing to start in offline/hotspot scenarios (Network ID 0 fix).
Bugfix: Improved Audio Routing. The phone is now more likely to route audio to the headunit immediately upon connection by using an early-initialized MediaSession with remote playback metadata.
Bugfix: Fixed GPS Speed calculation. Speeds were previously doubled due to an incorrect unit conversion (knots instead of mm/s).
UI: Improved Settings readability on small screens by allowing multi-line descriptions.
v.1.15.0
Added arabic language thanks to A5H0
Added new intent for setting day/night mode for maps
Added new window flags for older devices to finally fix fullscreen issues
Added new intents to make the headunit recognize the app as navigation app
Added LegacyOptimizer which will handle things directly and faster for single core cpus. Should improve the performance on Android 4.1 - 4.4 Devices
Fixed BT Permission Bug
Changed the Twilight-Calculator for better switch to day/night on auto mode to prevent to bright display
Added more mediasession logic to gain audio focus and audio routing
Merged Retry Button on connect screen, thanks to @andrecuellar
Merged auto connect usb feature, thanks to @andrecuellar
v.1.14.3
Automation: Added App Shortcuts for Samsung Modes & Routines support.
Navigation: Officially registered as a navigation provider (compatible with NAV buttons).
Stability: Fixed rare app freezes by improving internal data handling and memory hygiene.
Compatibility: Improved hardware support for Amazon Fire Tablets and GPS-less devices.
v.1.14.2
Bugfix: Notification and Exit Button do not close the app
Improvement: Removed old legacy Invisible Bluetooth Setting to prevent Bluetooth from start on the whole time
v.1.14.1
Improvement: Integrated USB Auto-Connect into "Auto-Connect Last Session". App now behaves like a native headunit and connects automatically on startup or USB plug-in.
New Feature: Added USB Soft-Reset logic. Automatic recovery from USB "stalls" without needing to replug the cable.
Major Improvement: Audio focus and routing overhaul. Added MediaSession support and immediate focus response to phone. Fixes issues where background apps on the tablet would block Android Auto audio.
Improvement: Robust Task Switching. Leaving the app via Home button or clicking the Launcher icon no longer breaks the connection. Music continues in background, and clicking the icon/notification correctly returns to the projection.
New Feature: Enhanced Key Debugger ("Key-Sniffer"). Prominent display of all key events, including special characters (ö, ü, ß) and proprietary steering wheel intents (MTC, FYT).
New Feature: Official Navigation App Registration. HURev is now recognized as a navigation provider (geo:, google.navigation:, android.intent.action.NAVIGATE). Compatible with hardware "NAV" buttons.
Bugfix: Removed redundant "Already connected" and "Reconnection required" alerts for a smoother user experience.
Localization: All new strings translated into 10 languages.
v.1.14.0
Added Separate volume setting #91
Added Auto-Start on Bluetooth Option
Merged PR #134 - Fixing Connection on Mediathek Headunits
Added PR #66 - Add conscrypt to fix error 7 on lower Android versions 🚀, thanks to @JanRi3D
The old jni files and c code can maybe be removed when PR #66 is performing great. So we can get rid of that again :)
v.1.10.0
New Feature: Portrait Mode Support (Dashboard & Projection) with smart resolution scaling Known Bug is, that map is unresponsive to touch. That is in all HU apps
New Feature: Redesigned Keymap Screen (easier configuration)
New Feature: Right Hand side driving setting (#63)
New Feature: Auto-Connect last session (Thanks to @JanRi3D) (#21)
New Feature: Auto-Selfmode if enabled in settings
New Feature: Allow sideloaded apps (#57)
Localization: Added German Translation 🇩🇪 Other translations are highly appreciated
Improvement: TextureView is now the default renderer (better compatibility for most devices)
Improvement: Fixed Dashboard layout rotation
Rewrite: Completly Rewrite the Video-Decoder as it was undebuggable. Removed the async mode and more
v.1.9.0
New Feature: GLES20 Video Renderer (Fixes black screen/artifacts/scaling on older Head Units)
New Feature: In-App Log Export (Save to file/Share) for easier debugging
Improvement: Audio Sink Logic fixed (System Audio always advertised) -> Fixes black screen when Audio Sink is disabled
Improvement: Video Decoder optimized for legacy devices (Buffer size adjustments, Overflow handling)
Fixed critical screen flickering during startup and fullscreen transitions
Resolved video decoder freezing issues on tablets and older devices
Improved system bar handling for a more stable projection experience
v.1.6.1
Added "About" page with version info, changelog, and license
Added "Force Legacy Decoder" (synchronous mode) setting to fix issues on some devices (e.g., Mediatek)
Improved surface handling to prevent crashes on decoder reconfiguration
Fixed "Unsaved changes" dialog in settings
Updated UI with consistent back arrows and theming
Fixed black screen issues on some devices by optimizing decoder initialization
v.1.6.0
Fixed the selfmode not working outside the wifi bug
Redesign of App, Look and feel with modern Material 3
Better Settings
Huge Android Auto Protocol Updates
Clicking Exit in Android Auto now closes the projection
v.1.5.0
Complete Rewrite of the Video decoder for better Video-Performance
Updated Android-Auto Protocol with the latest available codecs (h265 for example)
Added 1440p Video-Option(Note this only works with h265!)
Added FPS-Setting
Added Codec-Setting
Added Force to Use Software decoder Setting
Merged the Android Native SSL Library and get rid of the old jni files
v.1.4.1
Fixing Touch-Events for devices with higher resolutions
Removing file-log and logging is only enabled if debug is on
v.1.4.0
Added Selfmode
Better Close App
v.1.3.0
Changed the Settings Layout Look and feel
Added DPI Option
Added full screen option
Fixing Keymap Changes and button recognition
v.1.2.1 - Resolution enhancement
Just a minor enhancement for the resolution. Not yet perfect in my opinion but better than before
The is the last release for this year. Happy Holidays to all and a happy new year
v.1.2.0 - Bugfix Release
Added Exit button to app
Added resolution settings back for better compatibility with different screen sizes
Added Option for which texture to use. Some devices perform better on SurfaceView, some on TextureView
Fixed keymapping
Fixed a lot of color issues
Fixed a bug where the app crashed on startup on some devices
Fixed Layout on wider screens
Some rewrite, and small bugfixes
v1.1.0 - New Design
Changed the basic design to a modern look and bigger buttons
Hopefully fixed audio-stutters with audio thread and some logs
Removed some deprecations
v1.0.0 - Initial Revived Release
Updated dependencies to latest versions.
Improved compatibility with newer Android versions.
Added Multitouch-Support
Some sort of wireless support with Headunit-Server on Phone
Contributing
Creating release apk needs a keystore file. You can create your own keystore file using the following command in root folder:
keytool -genkey -v -keystore headunit-release-key.jks -alias headunit-revived -keyalg RSA -keysize 2048 -validity 10000
After that you need to set the env variables depending on your OS:
MAC:
open ~/.zshrc or ~/.bashrc
sudo nano ~/.zshrc or sudo nano ~/.bashrcexport HEADUNIT_KEYSTORE_PASSWORD="YOUR_KEYSTORE_PASSWORD" export HEADUNIT_KEY_PASSWORD="YOUR_KEY_PASSWORD"
Original Headunit
Headunit for Android Auto (tm)
A new car or a $600+ headunit is NOT required to enjoy the integration and distraction reduced environment of Android Auto.
This headunit app can turn a Android 4.1+ tablet supporting USB Host mode into a basic Android Auto compatible headunit.
Android, Google Play, Google Maps, Google Play Music and Android Auto are trademarks of Google Inc.