Reliability

Steady as a wire, even on flaky Wi-Fi.

Wi-Fi is a hostile place. Microwaves, neighbors, dropped beacons, roaming events. Dish is built to ride out every one of them without yanking you out of your game.

Heartbeats

Both Dish and Satellite fire a small heartbeat packet every 2 seconds even when no buttons are being pressed. Two reasons:

Automatic reconnect

Satellite reaps a connection after five missed heartbeats in a row, i.e. roughly 10 seconds of silence. Long before that, Dish starts a lightweight rejoin loop against the cached session key. No PIN re-entry needed. The pairing key persists across reboots and across the rejoin.

Critically, the virtual Xbox 360 or DualShock 4 controller stays plugged in on the gaming PC during the dropout. Most games won't eject the player. From the game's perspective the pad just sat still for a moment.

Roaming and multi-AP networks

On a mesh network, your phone might roam from one AP to another mid-match. The source IP changes, the old NAT mapping quietly resets. Dish spots the new source IP on the next packet and Satellite re-validates the session against the encrypted token. Usually with no visible glitch in-game.

Out-of-order and duplicate packets

Wi-Fi can deliver packets out of order on busy networks. Satellite's receiver tracks the highest counter it has accepted on each connection and drops anything stale. Newer packets always win, older packets are discarded silently. You never feel a stick snap back.

What happens during a real outage

If your Wi-Fi actually disappears for more than ten seconds, say a router reboot, Satellite reaps the connection and unplugs the virtual pad cleanly. The instant connectivity comes back, Dish auto-discovers Satellite again via mDNS and re-establishes against the saved key. Sticks centre, the pad re-appears, and the rest is up to the game.

No panicked unpairing. No "please re-add your gamepad" dialog. No re-typing a PIN.

Display sleep stays off while you play

Dish for Android holds a wake lock plus the connectedDevice foreground service required by Android, so the OS sees a connected gaming session and never decides to dim out on you mid-fight. Other Dish platforms in development use the equivalent power-assertion API (IOKit on macOS, the freedesktop ScreenSaver D-Bus inhibitor on Linux, SetThreadExecutionState on Windows).

Multi-controller per session

Couch co-op night? Up to 16 controllers per Satellite session, with independent virtual pads, encryption state, motion streams, and rumble routes. One player dropping out doesn't drag the others down. A single phone can drive several controllers against the same Satellite if you really want to.

Battery life

The hot path is a few lines of code. Dish for Android idles near zero CPU between input events. Heartbeats are the only ongoing work, and a tiny UDP packet every 2 seconds is basically free on a modern radio.

In our own testing, Dish for Android pulls noticeably less battery than a Bluetooth audio call.