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.