Fonctionnalités

Ce qui rend Dish différent.

Toutes les surfaces d'entrée d'une manette moderne, transférées en Wi-Fi avec une latence sous la frame.

Latence sous la frame

Chaque événement de la manette est construit dans un rapport XUSB de 12 octets, scellé, et envoyé via sendto() brut directement sur le thread d'entrée. Pas de file d'attente, pas de saut asynchrone. Quelques millisecondes de bout en bout sur un LAN Wi-Fi 6 normal.

Chiffrement authentifié

Échange de clés X25519 à l'appairage, ChaCha20-Poly1305 IETF sur chaque paquet, compteur monotone pour la défense contre le rejeu. Même AEAD que TLS 1.3, WireGuard et SSH. Les tags d'authentification font 128 bits, donc les entrées forgées meurent dans le récepteur.

Découverte mDNS + UDP

Satellite annonce _satellite._udp via Bonjour et répond à une diffusion UDP héritée sur :9879. Dish fusionne les deux et étiquette chaque entrée avec sa source. Les découvertes à froid se terminent généralement en moins d'une seconde.

Battements de cœur et reconnexion silencieuse

Chaque côté émet un battement toutes les 2 secondes. Cinq battements manqués d'affilée coupent la connexion. En cas de coupure, Dish se rétablit sur la clé sauvegardée sans ressaisie du PIN. La manette virtuelle reste branchée.

Xbox ou DualSense par emplacement

Chaque Dish appairé choisit son identité virtuelle. Satellite branche une manette Xbox 360 via ViGEmBus ou une DualShock 4 avec toute la surface DS4 (mouvement, pavé tactile, barre lumineuse, batterie). À vous de décider par manette.

Transfert du mouvement (gyro + accéléromètre)

MSG_MOTION (0x000A) diffuse le gyroscope 3 axes et l'accéléromètre jusqu'à 250 Hz par manette dans la convention Cemuhook DSU. Visée par inclinaison, vue gyroscopique, ou redirection DSU vers votre émulateur préféré sur le récepteur.

Pavé tactile DualSense à deux doigts

MSG_TOUCHPAD (0x000C) transporte les deux doigts DualSense, des IDs de suivi monotones, et le bouton-clic du pavé. Choisissez le routage par appareil sur le récepteur : surface DS4, souris hôte, ou désactivé. Permutable à chaud, sans réappairage.

Contrôle de la barre lumineuse RGB

MSG_LIGHTBAR (0x000D) pilote les LED de la DualSense et de la DS4 indépendamment des vibrations. Les jeux qui colorent la barre selon l'état du jeu (Astro's Playroom, GTA V, Returnal) fonctionnent de bout en bout sur le LAN.

Aller-retour des vibrations

Lorsqu'un jeu écrit sur la sortie de vibration de la manette virtuelle, Satellite émet MSG_RUMBLE (0x0009) avec les magnitudes des moteurs fort et faible vers le bon Dish. Sur Android, par conception, les vibrations atterrissent sur le ou les vibreurs du téléphone plutôt que sur la manette connectée. Votre main les ressent dans tous les cas.

Télémétrie de batterie

Les manettes rapportent leur niveau (0–100) et leur état de charge toutes les 30 secondes et à chaque transition. Les manettes filaires ou inconnues retombent sur la batterie de l'appareil hôte, pour que vous voyiez toujours quelque chose de pertinent dans la carte de l'emplacement.

Overlay tactile sur Android

Dish pour Android propose une disposition à l'écran configurable avec profils Xbox et PlayStation. Croix directionnelle, sticks, ABXY, gâchettes, tous ajustables par jeu. Croix directionnelle à huit directions avec sweet-spots diagonaux, L3/R3 multi-doigts.

Passthrough HID Bluetooth

Dish pour Android peut aussi s'enregistrer comme manette HID Bluetooth. Appairez-le une fois à votre PC, console ou box TV et transférez les entrées même quand il n'y a pas de Satellite sur le réseau.

Interface web locale

Satellite expose un tableau de bord sur localhost:9877. RTT en direct par connexion, appareils appairés, compteurs de paquets, microsecondes de boucle, queue de logs, et vue de télémétrie de debug. Le tout en HTTP simple car la frontière est localhost.

Mises à jour OTA in-app

Satellite suit les Releases GitHub sur un canal stable ou pré-version, télécharge l'artefact de la plateforme, vérifie le SHA-256 contre le fichier de sommes signé par cosign, et l'applique via Inno Setup. Annulable, ignorable, refusable.

Intégration directe avec Sunshine / Moonlight

Diffusez la vidéo avec Moonlight, tenez votre téléphone Android comme manette via Dish. Ou ignorez complètement Moonlight et utilisez Dish comme manette sans fil sur le même écran.

Manette virtuelle Xbox 360 ou DS4

Satellite injecte via ViGEmBus sur Windows. Xbox 360 couvre tous les jeux PC. DualShock 4 couvre tout ce qui préfère les boutons PlayStation ou veut toute la surface pavé tactile / mouvement / barre lumineuse.

Multi-manettes par session

Soirée coop canapé ? Jusqu'à 16 manettes par session Satellite, avec manettes virtuelles, état de chiffrement, flux de mouvement et routes de vibrations indépendants. Un joueur qui décroche n'entraîne pas les autres.

Paquets marqués DSCP

Chaque paquet sortant est marqué Expedited Forwarding (DSCP EF / 0xB8). Les routeurs et AP compatibles QoS les font passer avant le trafic massif. Combiné à l'épinglage de priorité de thread sur le récepteur, c'est ce qui maintient la latence sur un Wi-Fi congestionné.

Six langues sur Android

Dish pour Android livre l'anglais, l'espagnol, l'allemand, le français, le portugais brésilien et le bosnien dès le départ. Les chaînes sont externalisées pour que d'autres locales puissent arriver sans modification de code.

Zéro analyse, zéro pub

Pas d'analyse, pas de journalisation à distance, pas de système de compte. La seule sortie de données sur Dish pour Android est Firebase Crashlytics, optionnelle, pour les rapports de plantage et d'ANR. Jamais les entrées de manette, jamais les IP de Satellite, jamais les SSID. Vérifiable dans les dépôts publics.

Prêt à en faire l'expérience ?

Gratuit, open source, et dix minutes entre le téléchargement et le premier frag.