Vom Tastendruck zum virtuellen Gamepad.
Du musst nichts davon lesen, um Dish zu nutzen. Es funktioniert einfach. Aber wenn du wissen willst, was dein Input zwischen Daumen und Spiel macht, das ist die ganze Reise – Input, Verschlüsselung, Transport, Injektion und Rückweg.
- 1
Du drückst eine Taste auf Dish
Vielleicht ein Tippen auf dem Touch-Overlay von Dish for Android. Vielleicht ein DualSense-L1, das per Bluetooth mit deinem Smartphone gekoppelt und durch Dish gebrückt ist. So oder so greift Dish das Input-Event vom OS ab, sobald es feuert – nicht beim nächsten Vsync, nicht beim nächsten Frame. Jetzt.
- 2
Dish baut einen 12-byte XUSB-Report
Der Controller-Zustand geht in Satellites kompaktes Wire-Format: zwei Bytes Tasten, ein Byte pro Trigger, zwei Bytes pro Analogstick-Achse. Insgesamt zwölf Bytes. Binärkompatibel zu Windows' XINPUT-Report, sodass der Empfänger nichts übersetzen muss.
- 3
Es verschlüsselt das Paket
Dish stellt einen 4-byte-Session-Token und einen 4-byte-Zähler voran und versiegelt dann die Payload mit ChaCha20-Poly1305 IETF, mit dem 32-byte-symmetrischen Schlüssel, den beide Seiten beim Pairing aus dem X25519-Schlüsselaustausch abgeleitet haben. Der Zähler dient als Nonce und als Replay-Schutz; der Token wird als AAD authentifiziert, sodass er nicht manipuliert werden kann.
- 4
Es wird per UDP gesendet
Dish öffnet einen UDP-Socket auf Port 9876 und ruft
sendtodirekt aus dem Input-Thread auf. Keine Queue, keine Async-Runtime, kein Ringpuffer. Das Paket ist mit DSCP EF (Expedited Forwarding, 0xB8) markiert, sodass jeder QoS-fähige Router oder AP in deinem LAN es vor Bulk-Traffic schiebt. - 5
Satellite empfängt und verifiziert
Auf deinem Windows-Gaming-PC wartet Satellite auf seinem UDP-Socket auf einem Time-Critical-Thread. Sobald ein Paket landet, wird es MAC-verifiziert, entschlüsselt und gegen den höchsten Zähler geprüft, den wir auf dieser Verbindung bereits akzeptiert haben. Alles Veraltete, Gefälschte oder Manipulierte wird stillschweigend verworfen, sodass dein Spiel nie einen korrupten Input sieht.
- 6
Satellite injiziert ein virtuelles Pad
Satellite übergibt den Report mit einem einzigen
DeviceIoControl-Call an den ViGEmBus-Kernel-Treiber. Du entscheidest pro Controller, ob ein Xbox-360-Pad oder ein DualShock 4 eingestöpselt wird. DS4 bekommt die volle Surface: Motion, Touchpad-Finger, Lightbar und Akku, alles wird ans Spiel zurückgemeldet. - 7
Das Spiel reagiert – und antwortet zurück
Das Spiel liest den neuen Pad-Zustand bei seinem nächsten Input-Poll, meist innerhalb eines Frames bei 60 fps. Wenn das Spiel Rumble zurückschreibt oder die Lightbar in einer neuen Farbe malt, verschlüsselt Satellite
MSG_RUMBLEoderMSG_LIGHTBARund schickt es zurück an das richtige Dish, das Haptik und LED in deiner Hand auslöst. Gesamtlatenz vom Finger zum Pixel: eine Handvoll Millisekunden plus die Frame-Time deines Monitors.
Pairing passiert nur einmal
Wenn ein Dish zum ersten Mal auf ein neues Satellite trifft, tippst du im Tray-Menü oder in der Web-UI von Satellite auf „PIN generieren". Satellite zeigt einen vierstelligen Code, der 5 Minuten lebt. Dish postet seinen öffentlichen X25519-Schlüssel zusammen mit dieser PIN an https://<dein-pc>:9443/api/pair. Satellite verifiziert die PIN, berechnet das Shared Secret, schickt seinen öffentlichen Schlüssel zurück, und beide Seiten cachen den resultierenden 32-byte-symmetrischen Schlüssel. Von da an verbindet sich das Pad stillschweigend wieder – keine PIN, keine UI, kein Nachdenken.
„Aber was ist mit Sunshine und Moonlight?"
Sunshine und Moonlight sind weiterhin der Goldstandard für das Streamen von Video von deinem Gaming-PC auf einen anderen Bildschirm wie deinen TV, ein Smartphone oder ein Steam Deck. Sie enthalten Controller-Forwarding, das aber davon ausgeht, dass Controller und Bildschirm auf dem gleichen Gerät leben. Dish behandelt ein anderes Modell:
- Entkoppelter Input. Streame Video mit Moonlight auf den TV, halte dein Smartphone als Controller. Satellite lässt das nativ wirken.
- Couch-Co-op. Mehrere Dish-Clients koppeln sich an ein Satellite, jeder mit eigenem virtuellem Gamepad, selbst wenn nur ein Gerät das Video streamt.
- Gar kein Video. Viele nutzen Dish, um ihren PC am selben Monitor zu spielen, mit dem Smartphone als Wireless-Gamepad. Kein Streaming nötig.
Die Namen verbeugen sich vor derselben Linie. Siehe warum „Dish" und „Satellite".
Probier es selbst aus.
Fünf Minuten von der Installation bis zum ersten Input.
Dish herunterladen