Skip to main content

Android Client

Your Android phone or tablet is a client for the ground station. Join the WiFi hotspot or plug in a USB-C cable, and you have live video and telemetry on your phone. Chrome works today with no install. The ADOS Android app is in development and will add native decoding and auto-discovery; the feature notes below describe the planned client.

Three connection paths

App latencies are targets for the in-development client. Browser figures reflect what works today.

WiFi AP connection

1

Join the hotspot

Open your phone WiFi settings. Look for ADOS-GS-XXXX. Enter the passphrase printed on the ground station case (default for bench builds: ados-ground).
2

Handle the no-internet warning

Android will show a “No internet” notification because the ground station is a local network. Tap “Stay connected” or “Use without internet.” The ground station is working, it just does not provide internet access.
3

Open the browser

Chrome browser (today): Navigate to http://192.168.4.1:4000 (Mission Control) or http://setup.ados.local/ (setup webapp).ADOS Android app (planned): The app will discover the ground station automatically via mDNS so video and telemetry start in a few seconds. It is not yet available as a download.
4

Fly

Pilot with touch controls (virtual sticks overlay) or pair a Bluetooth gamepad to your phone. The first device with stick input claims pilot-in-command.

USB-C tether connection

Android 11 and later supports CDC-NCM USB Ethernet natively.
1

Plug in the cable

Connect a USB-C data cable from your phone to the ground station. Your phone shows a notification: “USB device detected. Allow ADOS Ground Station network access?”
2

Approve the connection

Tap “Allow.” Android creates a USB Ethernet interface and assigns your phone the IP 192.168.7.2.
3

Open the browser

In Chrome, navigate to http://192.168.7.1:4000. The planned ADOS Android app will detect the USB connection and switch to it automatically.
USB-C tether may charge your phone while streaming when the hardware supports it. Power the Ground Agent from its own wall adapter or USB-C power bank for longer field sessions.

ADOS Android app (planned) vs Chrome

The table below compares Chrome, which works today, with the ADOS Android app that is in development. App rows describe planned behavior. Chrome is the path that works today. You do not need to install anything. Open the browser and navigate to the ground station URL. The ADOS Android app aims to use native MediaCodec for hardware H.264 decoding, for less power draw and lower latency than the browser’s WebRTC decoder. It is not yet available as a download.

Video codec

The ground station serves H.264 high profile level 4.1 (avc1.640029) over WebRTC WHEP. This profile is universally supported on Android devices going back to Android 5.0.

Android captive portal behavior

Android 11+ aggressively checks for internet on newly joined WiFi networks. If the ground station does not respond to probe URLs quickly, Android:
  • Marks the network as “no internet”
  • Disables automatic data routing through it
  • Shows a persistent “use mobile data” notification
The ground station handles this by serving 204 No Content responses to Google’s connectivity check URLs (connectivitycheck.gstatic.com/generate_204) within 100 ms. This satisfies Android’s probe and prevents the network from being flagged.
On USB tether, Android does not fire the captive portal probe. No special handling is needed.

Internet sharing

By default, the ground station WiFi AP is a local-only network. Your phone cannot use the ground station’s internet connection (4G modem or WiFi client uplink) for background app data. If you want your phone to have internet through the ground station, enable “Share uplink with AP clients” in the setup webapp Network page or the ground-station panel in Mission Control. Be aware that background app data will consume the ground station’s data cap if it has a 4G modem.

Bluetooth gamepad on Android

You can pair a Bluetooth gamepad to your phone. The planned ADOS Android app will receive stick inputs via the standard Android gamepad API and send them as MANUAL_CONTROL MAVLink messages at 50 Hz. Today, use the Web Gamepad API in Chrome as described below. In Chrome, the Web Gamepad API works but has some restrictions:
  • Use Chrome full browser, not an in-app WebView
  • The site must load from http://192.168.* (private IP, insecure-origin permitted)
  • Press any button to register the controller

Touch fallback

When no gamepad is connected, Mission Control in Chrome shows a virtual sticks overlay on screen (the planned ADOS Android app will do the same). Two touch zones on the left and right sides of the display act as throttle/yaw and pitch/roll sticks. Not ideal for precision flying, but good enough for basic control.

Supported Android versions

What is next