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
Check out the Wiki for detailed documentation, setup guides and troubleshooting!
- 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
This is the most reliable way to connect wirelessly. It uses a launcher utility on your phone to trigger the connection.
- Option A (New): Use the Wireless Helper app.
- Join the Beta Test here: Google Play Store Beta
- Minimal configuration, supports NSD and Bluetooth Auto-Start.
- Option B: Use the original Wireless Launcher on your phone.
Setup:
- In Headunit Revived Settings: Set Wireless Mode to Helper Mode.
- Ensure both devices are in the same network (Hotspot or WiFi).
- Open the Launcher App on your phone and start the service.
- The Launcher will find your headunit and initiate the connection automatically.
This method uses the native "Headunit Server" built into Android Auto developer settings. Note: This method may fail on some devices/networks (especially mobile hotspots creating 10.x.x.x networks) due to firewall/routing restrictions on the phone side. If this fails, please use the Wireless Launcher method.
- Open Android Auto Settings on your phone
- Click on Version and then on version and permission and click several to enable developer settings
- Go back to Android Auto, click the three dots on the top right and start the infotainment server
- Now you need to bring your phone and headunit(tablet) into the same network (WiFi).
- Go to the WiFi Menu in the Headunit Revive App
- Click scan. If your phone is found, click on the IP to connect.
- Or: manually add your phones ip address via "Add new" button.
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"- Google Maps in Portrait Mode: Touch interactions (searching, scrolling) within Google Maps may not work as expected when using Portrait Mode. While visual feedback (like ripple effects) might appear, the map itself may remain unresponsive. This appears to be an internal Android Auto / Google Maps limitation or bug in vertical orientations.
- Native Wireless Connection on Hotspot: Connecting to the native AA Headunit Server (Port 5277) may fail if the phone creates a mobile hotspot with Carrier-NAT IPs (e.g., 10.x.x.x). Use Wireless Launcher App instead.
- Major Improvement: Wireless Connectivity overhaul (Socket Reuse, better Handshake)
- New Feature: Wireless Mode Switch (Manual, Auto-Scan, Wireless Helper Support)
- Added: Support for Wireless Helper companion app
- Fixed: Android 15 (16KB page size) compatibility for native libraries
- Improvement: 1440p and h265 are now checked both. Some old devices have more than 1080p but no h265 support and android auto crashes with Error 11
- Fixed bug in Kitkat Devices on search for wireless devices
- Merged PR #94 - Fixed blurry icon. Thanks to @nicoruy
- Merged PR #95 - Make Settings own View to apply directly. Thanks to @nicoruy
- New Feature: Advanced Night Mode (Light Sensor, Screen Brightness, separate thresholds, manual time)
- Improvement: Audio Stuttering fixed (Optimized ACK handling)
- Improvement: USB Reconnection stability (Added "Reconnection Required" dialog for stuck sessions)
- Improvement: WiFi Discovery (Added Multi-Interface Scan and NSD/mDNS support)
- New Feature: Enhanced Service Notification (Reduced noise, added Exit button)
- Added: Spanish translation πͺπΈ thanks to @andrecuellar
- Added: Ukraine translation πΊπ¦ thanks to welshi32
- Bugfix: Non-Fullscreen View was stretched, touch could be off
- Bugfix: Wifi with Headunit Server now works with hotspot
- Added: Dutch translation π³π± thanks to safariking
- Several black screen and connection error enhancements
- Bugfix: Crash in Background if not started as foreground service
- Bugfix: Force Software Decoder wasn't getting always the sw decoder
- Added: Russian translation π·πΊ thanks to @prostozema
- Enhancement: Fixing small issues in the video-decoder which should help lower spec devices to render properly (but act a little bit slower perhaps)
- Bugfix - Button Mapping ignored #71
- New Feature: Screen-Orientation Feature to lock to a certain orientation (Landscape/Portrait) #69 thanks to @JanRi3D
- Enhancement: SSL will now attempt multiple times and not break instantly thanks to @MicaelJarniac
- Added: Chinese(Traditional) translation πΉπΌ thanks to @GazCore
- Added: Czech translation π¨πΏ thanks to @teodortomas #75
- Fixed brazilian portuguese folder name
- Bugfix: Added missing 3 Byte startcode which stops some devices to start the projection
- Added PR #68 - Fix Wifi Direct detection thanks to @rakshan-kumr
- Added PR #67 - Brazilian Portuguese translation π§π· thanks to @MicaelJarniac
- 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 :)
- 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
- 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)
- Hopefully Fix: Audio Stuttering resolved (Buffer/Queue logic reverted to stable state)
- Fix: Video Fragmentation on some devices (Support for split frames/Offset 2 headers)
- Fix: Crash on Android 5.1 (NoSuchMethodError)
- Fix: Audio-Sink disable not working
- UI: Consistent Dialog Theme (Teal/Rounded) and improved list buttons
- Compatibility: Verified support for Android 4.1+ (minSdk 16)
- Compatibility: Bring back native SSL Support (JNI) for better performance on older devices (Toggle in Debug Settings)
- Fixed Fullscreen/Non-Fullscreen layout issues (black bars, overlapping)
- Added Audio Sink Setting (Enable/Disable routing audio to HU)
- Added AAC Audio Support Setting (Experimental)
- Fixed audio stuttering issues by reverting buffering logic to v.1.4.1 defaults
- Restored robust video decoder logic (SPS Parsing) to fix black screen/crashes on Mediatek devices
- Fixed visual glitches on navigation bar and fullscreen transitions
- Improved list item UI with better click feedback
- Fixed SSL decryption crash (ArrayIndexOutOfBoundsException)
- Added WiFi Network Discovery (Port Scan) with Auto-Connect
- Added Intent Support (
headunit://connect?ip=...) for automation - Added Wifi-Launcher Support with new setting
- Updated README
- Added mandatory Safety Disclaimer on first start
- Improved audio stability and fixed stuttering issues
- Enhanced full-screen stability with transparent system bars
- Fixed WiFi disconnection synchronization issues (ByeBye request)
- General UI and stability improvements
- 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
- 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
- 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
- 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
- Fixing Touch-Events for devices with higher resolutions
- Removing file-log and logging is only enabled if debug is on
- Added Selfmode
- Better Close App
- Changed the Settings Layout Look and feel
- Added DPI Option
- Added full screen option
- Fixing Keymap Changes and button recognition
- 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
- 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
- Changed the basic design to a modern look and bigger buttons
- Hopefully fixed audio-stutters with audio thread and some logs
- Removed some deprecations
- Updated dependencies to latest versions.
- Improved compatibility with newer Android versions.
- Added Multitouch-Support
- Some sort of wireless support with Headunit-Server on Phone
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 ~/.bashrc
export HEADUNIT_KEYSTORE_PASSWORD="YOUR_KEYSTORE_PASSWORD" export HEADUNIT_KEY_PASSWORD="YOUR_KEY_PASSWORD"
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.

