I had a spare Moto G34 5G doing nothing in a drawer, and a car with a wired Android Auto head unit that refuses to show anything Google hasn't explicitly whitelisted. This is the log of turning one into a fix for the other — a phone that lives permanently in the glovebox, plugged in, running full apps (YouTube, Netflix, whatever) straight to the car's factory screen.
Why the G34
Cheap, Snapdragon 695, officially bootloader-unlockable through Motorola's own portal, and an active community (Motorola-SM6375-Devs) still shipping fresh LineageOS builds for it. Good bones for a project that's going to live in a hot car and get flashed a dozen times.
Step 1: Unlock and root
Standard Motorola flow: enable OEM unlocking + USB debugging, pull the unlock data with fastboot oem get_unlock_data, submit it to Motorola's unlock portal, get a device-specific code back by email, then fastboot oem unlock <code>. Full wipe, as expected.
From there: identify the exact firmware build running (ro.build.fingerprint), pull the matching stock firmware from the Lolinet mirror, extract boot.img, patch it with Magisk, flash the patched image to both A/B slots. Root confirmed via adb shell su -c id.
One early gotcha worth remembering: Magisk's Superuser access → Automatic response defaults to "Prompt," which is useless for a phone you're scripting against over adb with nobody watching the screen — every request just times out and gets silently denied. Setting it to "Grant" (reasonable for a single-purpose device with no other users) fixed it instantly.
Step 2: Fighting Android Auto's whitelist
Stock Android Auto only shows Google-approved apps. AA AIO Tweaker (root-only, no Xposed needed) patches the whitelist for apps that follow AA's media-player template — think third-party music apps. It does not work for full video apps like YouTube, because those aren't structured as AA-compatible media services at all; AA AIO Tweaker's "Patch Custom Apps" picker won't even list them.
For actual video apps, the real tool is Fermata Auto — open source, on GitHub (AndreyPavlenko/Fermata), not the "official-looking" fermata-auto.com, which the project's own README calls out by name as a 100% scam. Fermata mirrors an app's full video output into the AA canvas rather than pretending to be a media service. Root-optional, but a simple adb shell appops set <package> PROJECT_MEDIA allow gets it projection permission without needing LSPosed at all.
Step 3: Testing without a car
Google's own Desktop Head Unit (DHU) emulator seemed like the obvious way to test without walking out to the driveway. It wasn't: the DHU binary shipped through the Android SDK manager hasn't been meaningfully updated since 2022, and the phone's current Android Auto build is worlds newer. SSL handshake completed fine; the moment the actual data channel opened, the phone hung up (PROTOCOL_IO_ERROR, READER_CLOSE) — a hard protocol-version wall, not a config problem.
The fix was a spare Android tablet running Headunit Revived, a community-maintained, actively-updated AA receiver app — basically turns any Android device into a real head unit over USB. Worked immediately where the official Google tool didn't.
Step 4: From "rooted stock" to "standalone car computer"
Halfway through, the plan shifted: instead of fighting Android Auto's whitelist app-by-app forever, just run a full standalone Android build with a car-styled launcher, so everything is native — no whitelist to fight in the first place.
That meant a full LineageOS install:
- Latest build for
fogos(the G34's codename) from theMotorola-SM6375-Devsreleases repo — LineageOS 23.2, Android 16 base boot.img/vendor_boot.img/dtbo.imgflashed to both slots via fastboot- Boot into LineageOS's built-in recovery,
adb sideloadthe signed OTA zip - A second sideload for MindTheGapps (matching Android 16, arm64) to get Play Store back
- Full data format before first boot — skipping this risks a bootloop when the new OS meets old encrypted userdata
- Re-patch
boot.imgwith Magisk again (a ROM flash wipes root along with everything else) to get back to a rooted state
Revert path, if ever needed: the exact stock firmware zip is saved locally, and since the bootloader is already unlocked, flashing back is the same fastboot process in reverse.
For the launcher: CarWebGuru Launcher — actively maintained, and specifically built with fixes for vertical/portrait "Tesla-style" layouts, unlike some competitors that only support landscape.
Where it stands now
Fermata Auto is mirroring apps into Android Auto successfully. Current tuning work is happening on the Headunit Revived test tablet before the final in-car test:
- Letterboxing: turned out to be Headunit Revived's own resolution/DPI settings not matching the display, not a Fermata problem — its Auto-Optimization Wizard and manual Resolution/Fullscreen-mode settings are the fix.
- Audio delay: Headunit Revived exposes an "Audio Latency Multiplier" — lower values trade stability for less lag, which is what a real-time setup wants.
Worth flagging: the tablet is a test rig, not the target. Headunit Revived is a community emulator approximating a real head unit's behavior — a real, certified AA display negotiates resolution and audio buffering directly with the phone, so some of what's being tuned here may be non-issues once this actually goes into the car.
DIY vs. buying an AI box
Midway through I seriously considered just buying a commercial "Android Auto box" (Ottocast, Portronics Tune Prime, etc.) instead. Worth being clear-eyed about what those actually are: budget Android computers (often weaker silicon than a mid-range phone from the last two years) that use the exact same trick as Fermata — spoofing/casting their own screen through the Android Auto video channel. There's no fundamentally different, "official" way to get a free-form custom UI onto an AA display; casting is the mechanism, whether it's proprietary firmware or a rooted phone doing it.
Given the G34's hardware already outclasses what a ~$140 box would ship, and everything here stays fully under my control (custom ROM, root, real charge management down the line), finishing the DIY route made more sense than paying for something worse.
Still to do
- Finish resolution/audio tuning, then the actual in-car test
- ACC (Advanced Charging Controller) — this phone lives plugged in 24/7 in a glovebox, so capping charge around 60-70% matters for battery longevity
- MacroDroid automation: detect USB power, auto-launch the AA stack, screen off, hotspot on
More once it's actually bolted into the car.