Why Wi-Fi UDP beats Bluetooth for gamepad streaming
If you’ve used a Bluetooth gamepad for any length of time, you’ve probably noticed something subtle but real: it doesn’t feel as crisp as a wired controller. There’s a fraction-of-a-frame lag that’s hard to put your finger on, and once in a while a button press just… feels delayed.
That’s not in your head. The Bluetooth HID profile, which is what gamepads use, has some real architectural disadvantages compared to a USB or wired connection. Once you understand them, it’s clear why we built Dish to use Wi-Fi UDP instead. Even on the same physical PC, the Dish path is significantly snappier.
The Bluetooth budget
Let’s break down a Bluetooth gamepad button press, end to end:
| Stage | Time |
|---|---|
| Button event surfaces in controller MCU | ~1 ms |
| Wait for next BT polling slot | 4–8 ms (avg) |
| Air time + decode on host | ~2 ms |
| Host stack delivers HID report to OS | ~1 ms |
| OS delivers to game | ~1 ms |
| Game polls → applies state | 0–4 ms |
| Total to game logic, before render | 9–17 ms |
That polling slot is the killer. Bluetooth Classic gamepads usually poll at 125 Hz (every 8 ms). Your button press might be ready 0.1 ms after the last poll, in which case you wait nearly a full 8 ms for the next slot. Average case: 4 ms of pure waiting.
USB-wired controllers poll at 250 Hz (every 4 ms), half the worst-case Bluetooth wait, and they don’t share radio time with anything.
The Dish budget
Dish’s path is structurally different:
| Stage | Time |
|---|---|
| Button event surfaces on Dish device | ~1 ms |
| Dish builds + encrypts + sends UDP | < 0.1 ms |
| Wi-Fi airtime to gaming PC | 1–3 ms |
| Satellite receives + verifies | < 0.5 ms |
| Satellite injects via ViGEmBus | < 0.5 ms |
| Game polls → applies state | 0–4 ms |
| Total to game logic, before render | 3–9 ms |
The big win is “no scheduled poll.” UDP sends fire when you tell them to, and modern Wi-Fi 6 or 6E delivers small packets to the AP in 1 to 3 ms with very low jitter. Nothing waits for a scheduled slot.
In practice, the difference between Dish and a wired USB gamepad is usually within measurement noise. Bluetooth, even on a good day, is reliably 8 to 10 ms slower than both.
What about Bluetooth LE / GIP?
Bluetooth Low Energy gamepad profiles do better. Apple’s MFi profiles can poll at 250 Hz on iOS, and the latest Xbox Wireless / GIP devices on Windows can hit similar rates. Two caveats:
- The polling rate gain only helps when the radio isn’t congested. As soon as you’re sharing the 2.4 GHz band with Wi-Fi (and most laptops use the same chip for both), the delivered rate sags.
- Range is still range. Bluetooth radio power is regulated. Wi-Fi gets bigger antennas and more power, especially on the AP side, and the modulation schemes are dramatically more efficient.
So even “modern Bluetooth” beats older Bluetooth, but it still loses to Wi-Fi UDP for the use case of “controller is somewhere not on the gaming desk.”
Range is where Wi-Fi really wins
Bluetooth gamepad pairings degrade fast through walls. A typical drywall plus insulation interior wall costs you 6 to 10 dB of signal, which is the difference between “stable connection” and “intermittent.” Two walls is usually game over.
Wi-Fi has the same physics, but two big advantages:
- The AP has way more transmit power and a way better antenna than your gaming PC’s Bluetooth radio. So the hard leg (controller to PC) becomes easy: your phone talks to the AP, the AP talks to your PC over Ethernet. Your phone’s connection to the AP is the only Wi-Fi hop.
- Mesh networks just work. If you have a Wi-Fi mesh, your phone’s signal hops through whichever node is closest. You can be anywhere in the house and still hit your gaming PC with single-digit-millisecond latency.
I’ve gotten Dish to work cleanly in a friend’s two-story house, in a basement office, with the gaming PC on the second floor. Bluetooth wouldn’t even pair across that distance.
Multi-controller is the unsung hero
Bluetooth has a hard cap on how many gamepads a single PC will accept, usually 4 in theory and often less in practice depending on the radio. The pairing UX is also famously cranky, especially when every controller shows up as “Wireless Controller” to the OS.
With Dish, the PC sees up to 16 virtual Xbox 360 or DualShock 4 controllers per Satellite session, each backed by a separate Dish client over Wi-Fi. They don’t fight, they don’t share airtime in any meaningful way, and re-pairing one doesn’t disturb the others.
This is the killer feature for couch co-op. Four phones in four hands, no extra hardware, no Bluetooth conflicts. You’ve got slack to spare if you want to bring in a few more.
Power-save: the one thing Bluetooth does better
Honest moment. Bluetooth Low Energy is genuinely lower-power than Wi-Fi for keep-alive traffic. A BLE gamepad sipping at 30 µA is impossible to match with a Wi-Fi link.
Dish for Android idles at about 0.5 to 1% battery per hour with the screen off. That’s fine for a couple hours of couch gaming but it’s not BLE-good. We’ve experimented with putting Dish into a deeper sleep state when no inputs are happening, but the wake-up cost (re-acquiring the AP, re-establishing the session) is too high to be worth it.
If you’re playing for 6+ hours straight on a road trip, plug your phone into a power bank. That’s the trade.
When Bluetooth still makes sense
To be even-handed about it:
- Single-room, sitting at the desk. Bluetooth is fine. The latency penalty over wired is small and the convenience is high.
- No Wi-Fi network. Obviously. Bluetooth is point-to-point. Dish needs an AP.
- Tiny indie 2D games. A 17 ms button-press latency in Hollow Knight is invisible. In Street Fighter 6 it’s a missed parry.
- A premium Bluetooth gamepad like an Xbox Wireless using the proprietary GIP protocol. That can hit 4 ms polling at close range.
For everything else (across the room, across the house, with multiple controllers, with Sunshine and Moonlight, on the Android phone you already own) Wi-Fi UDP is dramatically better. (Dish for Windows, macOS, and Linux is in active development, so “laptop you already own” will soon be on the menu too.)
That’s why we built Dish.
Try it
Download Dish, take five minutes to set it up, play a quick round of whatever your “I can feel the latency” game is, and you’ll feel the difference.
If it works well for you, donations keep the project alive.
Gefällt dir, was du liest?
Dish und Satellite sind kostenlos und Open Source. Spenden sorgen dafür, dass es so bleibt.