Sub-Frame-Latenz
Jedes Controller-Event wird in einen 12-byte XUSB-Report verpackt, versiegelt und per raw sendto() inline im Input-Thread verschickt. Keine Queue, kein Async-Hop. Einstellige Millisekunden Ende-zu-Ende in einem normalen Wi-Fi-6-LAN.
Jede Input-Surface eines modernen Controllers, über Wi-Fi mit Sub-Frame-Latenz weitergeleitet.
Jedes Controller-Event wird in einen 12-byte XUSB-Report verpackt, versiegelt und per raw sendto() inline im Input-Thread verschickt. Keine Queue, kein Async-Hop. Einstellige Millisekunden Ende-zu-Ende in einem normalen Wi-Fi-6-LAN.
X25519-Schlüsselaustausch beim Pairing, ChaCha20-Poly1305 IETF auf jedem Paket, monotoner Zähler als Replay-Schutz. Dasselbe AEAD wie TLS 1.3, WireGuard und SSH. Auth-Tags sind 128 Bit, sodass gefälschte Inputs im Empfänger sterben.
Satellite kündigt _satellite._udp via Bonjour an und beantwortet einen Legacy-UDP-Broadcast auf :9879. Dish fügt beide zusammen und markiert jeden Eintrag mit seiner Quelle. Cold-Cache-Discoveries sind meist in unter einer Sekunde fertig.
Beide Seiten feuern alle 2 Sekunden einen Heartbeat. Fünf hintereinander verpasste reapt die Verbindung. Bei einem Aussetzer bringt Dish die Verbindung gegen den gespeicherten Schlüssel wieder her – ohne PIN-Neueingabe. Das virtuelle Gamepad bleibt eingesteckt.
Jedes gekoppelte Dish wählt seine virtuelle Identität. Satellite stöpselt entweder ein Xbox-360-Pad via ViGEmBus oder einen DualShock 4 mit voller DS4-Surface (Motion, Touchpad, Lightbar, Akku) ein – deine Entscheidung pro Controller.
MSG_MOTION (0x000A) streamt 3-Achsen-Gyro und Beschleunigung mit bis zu 250 Hz pro Controller in der Cemuhook-DSU-Konvention. Tilt-Aim, Gyro-Look oder DSU-Pipe zu deinem Lieblings-Emulator auf dem Empfänger.
MSG_TOUCHPAD (0x000C) trägt beide DualSense-Finger, monotone Tracking-IDs und die Click-Pad-Taste. Wähle pro Gerät das Routing auf dem Empfänger: DS4-Surface, Host-Maus oder aus. Hot-Swap-fähig, kein Neu-Pairen nötig.
MSG_LIGHTBAR (0x000D) treibt die DualSense- und DS4-LEDs unabhängig vom Rumble. Spiele, die die Bar passend zum In-World-State färben (Astro's Playroom, GTA V, Returnal), funktionieren Ende-zu-Ende über das LAN.
Wenn ein Spiel auf den Rumble-Output des virtuellen Pads schreibt, sendet Satellite MSG_RUMBLE (0x0009) mit den Magnituden des starken + schwachen Motors zurück an das richtige Dish. Unter Android landet Rumble per Design auf dem/den eigenen Vibrator(en) des Smartphones statt am angeschlossenen Pad – deine Hand fühlt es so oder so.
Controller melden Stand (0–100) und Ladestatus alle 30 Sekunden und bei jedem Übergang. Verkabelte oder unbekannte Pads fallen auf den Akku des Host-Geräts zurück, sodass du in der Slot-Karte immer etwas Sinnvolles siehst.
Dish for Android liefert ein konfigurierbares On-Screen-Layout mit Xbox- und PlayStation-Profilen. D-Pad, Sticks, ABXY, Trigger, alles pro Spiel anpassbar. Acht-Richtungs-D-Pad mit diagonalen Sweet-Spots, Multi-Finger L3/R3.
Dish for Android kann sich auch als Bluetooth-HID-Gamepad registrieren – einmal mit deinem PC, deiner Konsole oder TV-Box koppeln und Inputs weiterleiten, selbst wenn kein Satellite im Netzwerk ist.
Satellite stellt ein Dashboard unter localhost:9877 bereit. Live-RTT pro Verbindung, gekoppelte Geräte, Paketzähler, Loop-Mikrosekunden, Log-Tail und eine Debug-Telemetrie-Ansicht. Alles über reines HTTP, weil die Grenze localhost ist.
Satellite verfolgt GitHub Releases auf einem stable- oder pre-release-Channel, lädt das Plattform-Artefakt herunter, verifiziert die SHA-256 gegen die cosign-signierte Summen-Datei und wendet es via Inno Setup an. Abbrechbar, überspringbar, weglegbar.
Streame Video mit Moonlight und halte dein Android-Smartphone als Controller via Dish. Oder überspring Moonlight komplett und nutze Dish als Wireless-Gamepad am selben Monitor.
Satellite injiziert unter Windows via ViGEmBus. Xbox 360 deckt jedes PC-Spiel ab. DualShock 4 deckt alles, was PlayStation-Tasten bevorzugt oder die volle Touchpad- / Motion- / Lightbar-Surface haben möchte.
Couch-Co-op-Abend? Bis zu 16 Controller pro Satellite-Session, mit unabhängigen virtuellen Pads, Encryption-State, Motion-Streams und Rumble-Pfaden. Ein ausgefallener Spieler reißt die anderen nicht runter.
Jedes ausgehende Paket wird als Expedited Forwarding (DSCP EF / 0xB8) markiert. QoS-fähige Router und APs schieben sie vor Bulk-Traffic. Zusammen mit Thread-Prio-Pinning auf dem Empfänger hält das die Latenz auch auf belegtem WLAN zusammen.
Dish for Android bringt von Haus aus Englisch, Spanisch, Deutsch, Französisch, brasilianisches Portugiesisch und Bosnisch mit. Strings sind ausgelagert, sodass weitere Sprachen ohne Code-Änderung landen können.
Keine Analytics, kein Remote-Logging, kein Account-System. Der einzige ausgehende Datenpfad bei Dish for Android ist opt-out Firebase Crashlytics für Crash- und ANR-Reports – niemals Gamepad-Input, niemals Satellite-IPs, niemals SSIDs. Verifizierbar in den öffentlichen Repos.
Kostenlos, Open Source und zehn Minuten vom Download bis zum ersten Frag.