Connecting a controller to a PC from another room, the right way


You’d be surprised how often people ask this. Their gaming PC is in the basement, the office, the spare bedroom. Their TV (and their actual life) is in the living room. They’d love to play their PC games from the couch, but Bluetooth doesn’t reach, and the cheap “wireless USB extender” they bought on Amazon is flaky.

There’s a much better answer: Wi-Fi UDP, with the controller side of the link as your Android phone running Dish for Android, and the PC side as Satellite for Windows catching the packets and turning them into a virtual Xbox 360 controller. (Dish clients for Windows, macOS, and Linux, plus a Linux Satellite, are in active development for a later release; today’s V1 ships Android-to-Windows.)

This post is about why that’s the right architecture for cross-room wireless control, and the specific trade-offs you should think about before committing to it.

The Bluetooth problem

Bluetooth is fine when the controller is in your hand and the PC is on the desk in front of you. It falls apart for anything else:

  • Range. Bluetooth Class 2 (the standard for gamepads) tops out at about 10 m line-of-sight. One drywall wall takes that down to about 5 m. Two walls and you’re done.
  • Polling rate. Most Bluetooth gamepad profiles poll at 125 Hz. That’s 8 ms between samples in the best case, plus encoding and radio overhead.
  • Coexistence. Bluetooth shares the 2.4 GHz band with Wi-Fi, microwave ovens, and your neighbor’s everything. The radio in your PC has to time-slice between Bluetooth and Wi-Fi airtime.

Add it all up and you’re looking at 15 to 25 ms of latency from a button press to the PC seeing it. You’ll feel every dropped packet as a stick “stuck” until the radio recovers.

The Wi-Fi UDP answer

Wi-Fi has been quietly getting amazing. A modern 5 GHz / 6 GHz Wi-Fi 6 link reliably delivers a small (50-byte) packet in 1 to 4 ms with very low jitter, especially if you’re willing to mark the packet with a QoS tag like DSCP EF.

So instead of pairing a Bluetooth pad to your gaming PC, the Dish architecture pairs a small app on your Android phone to a small app on your Windows gaming PC over your existing Wi-Fi. The controller-side app reads the actual physical inputs (touch overlay, paired Bluetooth gamepad, whatever) and ships them as encrypted 12-byte UDP packets to the gaming PC. The PC-side app authenticates the packets and injects them as a virtual Xbox 360 controller.

You get:

  • Range = your Wi-Fi range. If your phone gets Wi-Fi from the couch, Dish works from the couch.
  • Polling rate = 250 Hz. The same as a wired Xbox controller plugged into USB.
  • Lower coexistence cost. Your phone is already on the same Wi-Fi for everything else. You’re not adding a new radio.
  • Multi-controller for free. Bluetooth gets cranky when you pair more than two controllers to one PC. Wi-Fi has no such limit.

What about across the internet?

Different problem. Dish was built for the LAN. That’s how it gets to single-digit-millisecond latency. Across the internet, you’re looking at 30 to 80 ms of round-trip time even on a great connection, which is fine for slow games but noticeable in anything fast.

If you do want to play across the internet, you can:

  1. Run Dish over a low-latency VPN like Tailscale. It stays UDP, and it’ll pick the best path between your devices.
  2. Pair on the LAN once, then take your phone elsewhere.
  3. Tolerate the ~50 ms of internet latency for non-twitchy games.

For anything competitive, you really do want everyone on the same LAN. That’s the use case Dish was built for.

Practical setup

Walk-through:

  1. Install Dish for Android on the phone you want to use as the controller.
  2. Install Satellite for Windows on your gaming PC. (guide)
  3. Pair once over the LAN.
  4. Pick your control method on the Dish side: built-in touch overlay, or a Bluetooth gamepad you’ve already paired to your phone.
  5. Play.

That’s it. The PC sees a virtual Xbox 360 pad. Every game on the PC sees that pad. You’re holding your phone in another room.

Will it actually feel different than Bluetooth?

Yes, distinctly so. Side-by-side comparison on the same network:

  • A wired Xbox controller plugged into USB: ~6 ms finger-to-pixel @ 60 fps.
  • Dish over 5 GHz Wi-Fi: ~9 ms finger-to-pixel @ 60 fps.
  • Bluetooth gamepad: ~22 ms finger-to-pixel @ 60 fps.
  • Bluetooth gamepad through a wall: ~35 ms with occasional 100 ms+ outliers.

You’ll feel the wall-blocked Bluetooth case the moment you try to land a parry in a fighting game. You will not feel the 3 ms difference between wired USB and Dish.

Caveats

A few honest ones:

  • Your Wi-Fi has to be okay. If your router is from 2014 or you’re in a 200-unit apartment building all on the same channel, results will vary.
  • Power-save on phones is a thing. Some Android OEMs (looking at you, certain Chinese manufacturers) ship aggressive battery savers that delay outbound UDP packets. Exempt Dish from battery optimization and you’re fine.
  • Mesh hops add latency. Each Wi-Fi mesh node hop is 1 to 3 ms. If you have three mesh nodes between your phone and your gaming PC, you’re adding 9 ms. Plug your gaming PC into the main router with Ethernet to skip that.

Where to next

If Dish made your across-the-house gaming actually pleasant, donations keep the project going.

Gefällt dir, was du liest?

Dish und Satellite sind kostenlos und Open Source. Spenden sorgen dafür, dass es so bleibt.

Spenden Dish herunterladen