Funciones Qué hace diferente a Dish.
Todas las superficies de entrada de un mando moderno, reenviadas por Wi-Fi con latencia inferior al frame.
Latencia inferior al frame
Cada evento del mando se monta en un report XUSB de 12 bytes, se sella y se envía con sendto() directo desde el hilo de entrada. Sin cola, sin salto asíncrono. Milisegundos de un solo dígito extremo a extremo en una LAN Wi-Fi 6 normal.
Cifrado autenticado
Intercambio de claves X25519 al emparejar, ChaCha20-Poly1305 IETF en cada paquete, contador monótono como defensa contra repetición. El mismo AEAD que TLS 1.3, WireGuard y SSH. Las etiquetas de autenticación son de 128 bits, así que las entradas falsificadas mueren en el receptor.
Descubrimiento mDNS + UDP
Satellite anuncia _satellite._udp vía Bonjour y responde a un broadcast UDP heredado en :9879. Dish combina ambos y etiqueta cada entrada con su origen. Los descubrimientos en frío suelen terminar en menos de un segundo.
Latidos y reconexión silenciosa
Cada lado lanza un latido cada 2 segundos. Cinco fallos seguidos cierran la conexión. Tras un corte, Dish se restablece contra la clave guardada sin reintroducir el PIN. El mando virtual sigue enchufado.
Xbox o DualSense por slot
Cada Dish emparejado elige su identidad virtual. Satellite conecta un mando Xbox 360 vía ViGEmBus o un DualShock 4 con la superficie DS4 completa (movimiento, touchpad, lightbar, batería). Tú decides por mando.
Reenvío de movimiento (giroscopio + acelerómetro)
MSG_MOTION (0x000A) transmite giroscopio de 3 ejes y acelerómetro hasta a 250 Hz por mando bajo el convenio Cemuhook DSU. Apuntado por inclinación, gyro-look o tubería DSU a tu emulador favorito en el receptor.
Touchpad DualSense de dos dedos
MSG_TOUCHPAD (0x000C) lleva ambos dedos del DualSense, IDs de seguimiento monótonos y el botón clicable. Eliges el ruteo por dispositivo en el receptor: superficie DS4, ratón del host o apagado. Intercambiable en caliente, sin reemparejar.
Control del lightbar RGB
MSG_LIGHTBAR (0x000D) gobierna los LED de DualSense y DS4 independientemente de la vibración. Los juegos que pintan la barra según el estado en el mundo (Astro's Playroom, GTA V, Returnal) funcionan extremo a extremo por la LAN.
Vibración de ida y vuelta
Cuando un juego escribe en la salida de vibración del mando virtual, Satellite emite MSG_RUMBLE (0x0009) con las magnitudes de los motores fuerte y débil de vuelta al Dish correcto. En Android, por diseño, la vibración llega a los vibradores del propio teléfono en vez del mando conectado. Tu mano la siente igual.
Telemetría de batería
Los mandos informan el nivel (0–100) y el estado de carga cada 30 segundos y en cada transición. Los mandos con cable o desconocidos recurren a la batería del dispositivo anfitrión, así que siempre ves algo útil en la tarjeta del slot.
Overlay táctil en Android
Dish para Android incluye un layout en pantalla configurable con perfiles Xbox y PlayStation. Cruceta, sticks, ABXY, gatillos, todo ajustable por juego. Cruceta de ocho direcciones con sweet-spots diagonales, L3/R3 multitáctil.
Passthrough Bluetooth HID
Dish para Android también puede registrarse como mando HID Bluetooth. Empareja una vez con tu PC, consola o TV box y reenvía las entradas incluso cuando no hay Satellite en la red.
UI web local
Satellite expone un panel en localhost:9877. RTT en vivo por conexión, dispositivos emparejados, contadores de paquetes, microsegundos de bucle, cola del log y una vista de telemetría de depuración. Todo por HTTP plano porque la frontera es localhost.
Actualizaciones OTA dentro de la app
Satellite sigue GitHub Releases en canal estable o pre-release, descarga el artefacto de la plataforma, verifica el SHA-256 contra el fichero de sumas firmado con cosign y lo aplica vía Inno Setup. Se puede cancelar, omitir o descartar.
Encaja con Sunshine / Moonlight
Transmite vídeo con Moonlight, usa tu teléfono Android como mando vía Dish. O salta Moonlight por completo y usa Dish como mando inalámbrico en el mismo monitor.
Xbox 360 o DS4 virtual
Satellite inyecta vía ViGEmBus en Windows. El Xbox 360 cubre cualquier juego de PC. El DualShock 4 cubre todo lo que prefiere botones PlayStation o quiere la superficie completa de touchpad / movimiento / lightbar.
Varios mandos por sesión
¿Noche de coop de sofá? Hasta 16 mandos por sesión de Satellite, con mandos virtuales, estado de cifrado, streams de movimiento y rutas de vibración independientes. Si uno se desconecta no arrastra a los demás.
Paquetes etiquetados con DSCP
Cada paquete saliente se marca con Expedited Forwarding (DSCP EF / 0xB8). Los routers y APs con QoS los adelantan al tráfico masivo. Combinado con la fijación de prioridad de hilo en el receptor, esto es lo que mantiene la latencia estable en Wi-Fi congestionado.
Seis idiomas en Android
Dish para Android viene con inglés, español, alemán, francés, portugués brasileño y bosnio de serie. Los strings están externalizados para que se puedan añadir más locales sin tocar el código.
Cero analíticas, cero anuncios
Sin analíticas, sin logging remoto, sin sistema de cuentas. La única ruta de salida en Dish para Android es Firebase Crashlytics opt-out para informes de crash y ANR: nunca entradas de mando, nunca IPs de Satellite, nunca SSIDs. Verificable en los repositorios públicos.