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:

StageTime
Button event surfaces in controller MCU~1 ms
Wait for next BT polling slot4–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 state0–4 ms
Total to game logic, before render9–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:

StageTime
Button event surfaces on Dish device~1 ms
Dish builds + encrypts + sends UDP< 0.1 ms
Wi-Fi airtime to gaming PC1–3 ms
Satellite receives + verifies< 0.5 ms
Satellite injects via ViGEmBus< 0.5 ms
Game polls → applies state0–4 ms
Total to game logic, before render3–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:

  1. 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.
  2. 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:

  1. 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.
  2. 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.

Vous aimez ce que vous lisez ?

Dish et Satellite sont gratuits et open source. Les dons permettent qu'ils le restent.

Faire un don Télécharger Dish