View on GitHub
MiniNav

Install guide

Turn a Waveshare ESP32-S3 2.8″ board into a small wireless Android Auto screen that shows the Google Maps view from your phone. Hardware, flashing, phone setup and daily use, step by step.

0How it works

No app on the phone, no Bluetooth, no extra hardware.

Android phone Android Auto + Google Maps WiFi video + touch, encrypted phone hotspot or the board's own WiFi MiniNav board decodes the map video itself
The phone runs Android Auto and Maps as usual and streams the map to the board, ~11 frames per second.

Android Auto always runs on the phone: the phone draws the Maps screen and streams it as video to a car's screen (the head unit), which only displays it and sends back touches. MiniNav plays the part of that car screen. Android Auto has a hidden developer option, Start headunit server, that lets a head unit connect to the phone over WiFi; MiniNav connects to it, completes the Android Auto handshake (TLS), receives the H.264 video of the Maps screen and decodes it on the ESP32-S3.

1Hardware

Everything you need on the table.

ItemDetailsNotes
Waveshare ESP32-S3-Touch-LCD-2.8ESP32-S3R8, 16 MB flash, 8 MB PSRAM, 2.8″ ST7789 320×240 LCD, capacitive touch, QMI8658 motion sensor, BOOT buttonBuy on Robu.in. The non-touch "ESP32-S3-LCD-2.8" works too (no touch)
USB-C data cableFor flashing, and to power the board on the bike or in the carMust carry data, not just charge
Android phoneAndroid Auto app, version 17.4 or newer2.4 GHz WiFi / hotspot
ComputermacOS, Linux, Windows or ChromeOS with Chrome or EdgeTo flash once
3D-printed caseSTL files in docs/case/Optional; no printer? A printing service such as Robu.in prints it for about ₹100–200
2.8" screen (320 × 240) touch on the connection screen USB-C flash + power BOOT RESET button positions vary by board revision
BOOT is the only button MiniNav uses on the road (see Ride or drive).

2Flash the firmware

Straight from the browser: nothing to install, about one minute.

  1. Use Chrome or Edge on a computer (they can talk to USB devices; Safari and Firefox can't).
  2. Plug the board into the computer with a USB-C data cable.
  3. Click Install MiniNav and pick the board's port (named like USB JTAG/serial debug unit, usbmodem or COM5). The page erases what's needed, writes the firmware at the right address and checks it.

  4. When it says done, the board restarts and shows the boot animation, then the connection screen. If the screen stays black, unplug the board and plug it back in.
If the port doesn't show up or flashing can't connectUse a data cable (some only charge). Hold BOOT, tap RESET, release BOOT, then click Install again. After flashing in this mode, tap RESET once.
Default WiFi namesThis firmware uses hotspot MiniNavHotspot, board WiFi MiniNav, password mininav123 for both, and right-hand drive. To change them, build from source instead.
Flash the file by hand instead
  1. Download MiniNav.bin.
  2. Open espressif.github.io/esptool-js in Chrome or Edge.
  3. Click Connect and pick the board's port. The file picker only appears after this.
  4. Change Flash Address from the default 0x1000 to 0x0 (the ESP32-S3 starts at 0; at 0x1000 the screen stays black), choose MiniNav.bin, then click Program.
  5. Tap RESET when it finishes.

3Set up the phone (once)

Unlock Android Auto's developer settings and start its headunit server.

  1. Update Android Auto from the Play Store.
  2. Open Android Auto settings: Settings → Connected devices → Android Auto (or search "Android Auto").
  3. Scroll to the bottom and tap Version 10 times, then confirm. Developer settings are now unlocked.
  4. Tap the ⋮ menu (top right) → Start headunit server. A notification shows it is running.
  5. Set Android Auto's battery usage to Unrestricted (Settings → Apps → Android Auto → Battery), so it keeps running with the screen off.
Android Auto Version ×10 scroll to the bottom ⋮ Start headunit server Developer settings Exit developer mode running notification

4Connect the phone and the board

The board offers two ways at the same time. Use A unless you have a reason not to.

A · Phone hotspot (recommended) phone hotspot board board joins phone keeps mobile internet ✓ B · Board's own WiFi phone board "MiniNav" phone joins some phones then lose internet
  1. On the phone: Settings → Connections → Mobile Hotspot (names vary by brand).
  2. Name it MiniNavHotspot, password mininav123 (or what you set in menuconfig), band 2.4 GHz.
  3. Turn the hotspot on. If the phone ever joined MiniNav, tap it in the WiFi list → Forget.
  4. Power the board. Within ~10 s it joins the hotspot and finds Android Auto.
  1. Power the board, then on the phone join WiFi MiniNav, password mininav123, and allow auto-reconnect.
  2. When the phone says the network has no internet, choose to stay connected.
  3. Turn off "WiFi assistant" / "Switch to mobile data" if the phone keeps leaving MiniNav.
Heads upSome phones (seen on Samsung) stop using mobile data while joined to a WiFi without internet, so Maps can't search. If that happens, use mode A.

The connection screen

MiniNav 2/6 Phone found Phone 10.0.0.2 Start the headunit server Touch Off Full screen On Theme Light
The ring fills as the board gets further. The three buttons are tappable on this screen.
StepScreen saysWhat to do
1/6Waiting for phoneTurn on the hotspot (A) or join MiniNav (B)
2/6Phone foundMake sure Start headunit server is running
3–5/6Connecting · Checking version · Securing linkNothing, takes a second or two
6/6Starting AutoFirst time only: unlock the phone and accept any Android Auto prompt

Settings buttons

ButtonWhat it does
TouchSends your taps to Android Auto on the road. Android Auto's app bar then stays on screen (you need it to tap), so it forces Full screen off.
Full screenHides Android Auto's app bar so the map fills the screen. Only while Touch is off.
ThemeLight or dark, for the board and for Maps.

Settings are saved. Changing one while connected makes Android Auto reconnect by itself in ~4 s.

5Ride or drive

  1. Plug the board into the USB port on your bike or in your car. It boots in under a second (the animation plays while WiFi starts).
  2. Turn on the phone hotspot (mode A). Check the headunit server notification is still there.
  3. Start navigation in Google Maps on the phone (or by voice), then lock the phone and put it away.
  4. The map appears on the board. Mount it where you can glance at it.
DoResult
BOOT pressDay / night theme
BOOT BOOT double pressTouch on / off (a banner shows, Android Auto reconnects with the new layout)
BOOT hold 1 sBuilt-in demo drive on / off (works without a phone)
Turn the board overThe picture flips to stay upright

6Print the case

Two parts, in docs/case/. The back panel has slits for a strap, so you can tie it to handlebars or a mount.

No 3D printer?Upload both STL files to a printing service such as Robu.in's 3D printing service; the case costs about ₹100–200. Ask for PETG.
FilePartPrint orientation
MiniNav-Frame-with-button.stlFront frame with strap pockets and a flexible BOOT buttonBack side down
MiniNav-back-panel-with-strap-slits.stlBack panel with two strap slitsOuter face down
  1. Open both STL files in your slicer (PrusaSlicer, Bambu Studio, Cura…).
  2. Material: PETG or ASA for a bike or car (PLA softens in the sun). 0.2 mm layers, 3 walls, 15–20 % infill.
  3. Orient each part as in the table; add supports only if your slicer flags overhangs.
  4. Fit the board, check the USB-C port and BOOT button line up, then close the case.

7Troubleshooting

SymptomFix
Stuck at Checking version / "Phone stuck"The phone's headunit server is stuck on an old session (happens after the board loses power mid-drive). Android Auto ⋮ → Stop headunit server, then Start headunit server.
"Port 5277 refused"The headunit server isn't running: ⋮ → Start headunit server. Reboot the phone if it persists.
Stays at Waiting for phoneHotspot on, 2.4 GHz, correct name and password? In mode B, is the phone joined to MiniNav?
Phone has no internet on MiniNavUse the phone hotspot (mode A).
Map stops when the phone locksAndroid Auto battery usage → Unrestricted.
Flashed, but the screen stays blackFlashed by hand at the wrong address: flash MiniNav.bin again at 0x0, not 0x1000, then tap RESET.
Flashing failsUse Chrome or Edge and a data cable; hold BOOT, tap RESET, release BOOT, flash again.