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.

¿Listo para sentirlo?

Gratis, código abierto y diez minutos desde la descarga hasta tu primer frag.