Solo edición Pro

Descripcion general

El Starlink Viewer muestra un globo 3D en vivo con los ~10.000 satelites Starlink animados en tiempo real, la ubicacion de su antena y una conexion inferida con el satelite que mas probablemente esta sirviendo a su terminal.

La herramienta ideal de monitoreo de Starlink le mostraria exactamente que satelite esta comunicandose con su antena en cualquier momento dado, cuando realiza la transferencia a un nuevo satelite y la ruta de la senal desde su antena a traves del satelite hasta la estacion terrestre. Esto requeriria que la antena expusiera la identidad del satelite servidor y la direccion de apuntamiento electronico del haz. SpaceX no expone ninguno de los dos, por lo que Nexus infiere el satelite servidor a partir de los datos disponibles.

Por que es necesaria la inferencia

SpaceX bloquea los datos de identificacion de satelites detras de endpoints gRPC autenticados que son inaccesibles en el firmware de consumidor.

  • dish_get_context contiene un campo initial_satellite_id, pero ha devuelto PermissionDenied en hardware de consumidor desde el firmware 9f4d05a4 (junio de 2021).
  • transceiver_get_telemetry expone lmac_satellite_id y target_satellite_id, pero devuelve UNIMPLEMENTED en todos los terminales de consumidor.
  • La autenticacion PKI de desafio-respuesta con claves controladas por SpaceX significa que no existe ninguna solucion alternativa de la comunidad.
  • La direccion de apuntamiento electronico del haz: que identificaria directamente al satelite servidor; no se expone a traves de ningun endpoint.
  • La antena de matriz en fase de la antena dirige su haz electronicamente hasta ±50° desde el eje de mira (boresight), pero este angulo de direccionamiento es completamente invisible para los consumidores externos del API.

Datos disponibles

Medidos desde la antena

Datos Que nos dicen Tasa de actualizacion
Azimut y elevacion de boresight Orientacion fisica del cuerpo de la antena 1 Hz
Latencia de PoP ping Tiempo de ida y vuelta al punto de presencia 1 Hz
Rendimiento de bajada y subida Rendimiento actual 1 Hz
Temporizador de slot Temporizador de slot de satelite (siempre 0 en hardware probado) 1 Hz
Coordenadas GPS Ubicacion de la antena Bajo demanda
Historial de interrupciones (did_switch) Cambio de satelite confirmado durante una interrupcion del servicio Por evento de interrupcion
Mapa de obstrucciones (cuadricula SNR) Mapa del cielo de 123×123 pixeles; contiene datos de senal de satelite en tiempo real cuando se reinicia en los limites de transferencia (vea Obstruction Map and Satellite Tracking) 1 Hz

Fuentes externas

Datos Que nos dicen
Elementos orbitales TLE para ~10.000 satelites Starlink (CelesTrak / 18th Space Defence Squadron) Azimut, elevacion y distancia oblicua calculados de cada satelite desde cualquier posicion de observador

Que no esta disponible

Datos Por que los queremos Estado
ID del satelite servidor Identificacion directa Bloqueado detras de autenticacion
Angulo de apuntamiento electronico del haz Direccion precisa del haz No expuesto en ningun endpoint
Temporizador de slot funcional Senal de temporizado de transferencia El campo existe pero lee 0 en el firmware de consumidor actual

Como funciona la correspondencia

Correspondencia de satelites

El visor realiza el siguiente calculo a 1 Hz:

  1. Posicion del observador: las coordenadas GPS de la antena de get_location establecen donde se encuentra usted en la Tierra.

  2. Posiciones de los satelites: utilizando la propagacion orbital SGP4 sobre datos TLE de CelesTrak, el visor calcula el azimut, la elevacion y la distancia oblicua de cada satelite Starlink visto desde la ubicacion de su antena.

  3. Filtrado del campo de vision: solo se consideran los satelites por encima de 10° de elevacion. La direccion fisica de boresight de la antena (de alignment_stats) define el centro del cono de campo de vision de ~100° de la matriz en fase.

  4. Seleccion del candidato mas cercano: el satelite con la menor distancia angular desde el centro del boresight fisico se selecciona como el satelite servidor mas probable.

La cruceta de boresight

La cruceta en el grafico polar del cielo representa la orientacion fisica del cuerpo de la antena, no la direccion del haz electronico. La antena de matriz en fase de Starlink es en gran medida estacionaria despues de la alineacion inicial; los valores de boresight cambian en fracciones de grado a lo largo de horas debido al viento o efectos termicos. La antena no se mueve fisicamente para rastrear satelites individuales.

El apuntamiento real del haz ocurre electronicamente dentro de la matriz en fase a nivel RF, barriendo hasta ±50° desde el boresight fisico para rastrear el satelite servidor. Esta direccion de haz electronico no se expone a traves de ningun endpoint de API de consumidor.

Deteccion de cambio de satelite

Cuando el candidato de satelite mas cercano cambia (un ID NORAD diferente se convierte en el geometricamente mas cercano), esto se observa como un cambio de satelite inferido. Estos cambios se correlacionan con, pero no confirman, transferencias reales de la antena. Reflejan la mecanica orbital; a medida que los satelites pasan por encima a ~7,5 km/s, el mas cercano al centro de boresight de la antena cambia naturalmente cada pocos minutos.

Las transferencias reales de satelites en Starlink estan disenadas para ser transparentes (make-before-break), sin producir discontinuidad medible en latencia o rendimiento que pueda usarse como senal de deteccion confiable en el firmware actual.

Puntuacion de confianza

La puntuacion de confianza refleja la probabilidad geometrica de que el satelite emparejado sea el que realmente esta sirviendo:

Confianza Criterios Interpretacion
Alta < 10° desde boresight, ≤ 3 candidatos cercanos Pocos satelites en la vecindad; candidato geometrico fuerte
Media < 25° desde boresight Bien dentro del campo de vision; candidato razonable
Baja < 50° desde boresight Dentro del rango de direccionamiento de la antena pero muchos candidatos cercanos
Sin correspondencia > 50° desde boresight Ningun satelite dentro del rango de direccionamiento electronico de la antena

Estos umbrales estan calibrados para el boresight fisico (direccion del cuerpo de la antena), no para el haz electronico. Debido a que la matriz en fase puede dirigir ±50° desde la cara de la antena, el satelite servidor estara tipicamente a 10-40° del centro del boresight fisico. Una correspondencia de confianza “Alta” significa que hay un unico candidato geometrico fuerte; no significa que la identificacion esta confirmada.

Grado de precision

En que puede confiar

Las posiciones de los satelites en el globo son precisas. Los datos TLE de CelesTrak son autoritativos (provenientes del US Space Force 18th Space Defence Squadron) y la propagacion SGP4 es el metodo estandar utilizado por la comunidad de seguimiento espacial. La precision posicional es tipicamente de unos pocos kilometros para TLE actualizados recientemente.

La ubicacion de su antena es precisa. Proviene directamente del GPS integrado de la antena.

La direccion fisica de boresight es precisa. Se mide con la IMU (unidad de medicion inercial) de la antena con una incertidumbre de ~0,6°.

El conjunto de satelites visibles es preciso. Los angulos de observacion calculados desde su posicion a cada satelite son geometricamente precisos, por lo que el grafico polar muestra correctamente que satelites estan sobre usted y donde se encuentran en el cielo.

Que es inferido

El satelite identificado es una estimacion fundamentada. El satelite mas cercano al centro de boresight es el mejor candidato geometrico, pero la antena puede estar comunicandose con cualquier satelite dentro de su rango de direccionamiento electronico de ±50°. En cualquier momento dado, docenas de satelites pueden estar dentro del campo de vision.

Los cambios de satelite son geometria observada, no transferencias confirmadas. Cuando el candidato mas cercano cambia, esto refleja deriva orbital; un satelite diferente se convierte en el geometricamente mas cercano. Las transferencias reales de la antena pueden o no coincidir con estos cambios geometricos. Algunas transferencias reales seran invisibles para la inferencia (la antena cambia a un satelite diferente pero el geometricamente mas cercano no cambia), y algunos cambios observados seran pura deriva orbital (el geometricamente mas cercano cambio pero la antena en realidad no cambio).

Las puntuaciones de confianza son geometricas, no basadas en senal. Una correspondencia de confianza “Alta” significa buena geometria, no una conexion validada. Sin acceso a la direccion del haz electronico o al ID del satelite servidor, ninguna herramienta basada en firmware de consumidor puede confirmar que satelite esta usando realmente la antena.

Senales que investigamos

Durante el desarrollo, se evaluaron varias senales para la deteccion de transferencias. Todas se probaron en hardware real (rev3_proto2, firmware 2026.02.16.cr74084 y 2026.04.07.mr77639.1).

Senal Hipotesis Hallazgo
seconds_to_first_nonempty_slot Deberia contar regresivamente por slot de satelite y reiniciarse en la transferencia Siempre lee 0 en hardware de consumidor probado; el campo no esta poblado
Discontinuidades en pop_ping_latency_ms La latencia deberia saltar cuando la distancia oblicua cambia durante una transferencia La latencia permanece suave a traves de las transferencias; SpaceX probablemente usa conmutacion make-before-break que absorbe los cambios de ruta
did_switch del historial de interrupciones Indicador de cambio confirmado en registros de interrupciones Solo se activa durante interrupciones del servicio, no en transferencias limpias rutinarias de ~15 segundos
Discontinuidades de boresight El reposicionamiento fisico de la antena podria acompanar las transferencias El cuerpo de la antena apenas se mueve; el apuntamiento electronico del haz maneja el seguimiento de satelites silenciosamente
SNR del mapa de obstrucciones (sin reinicio) Los cambios de SNR por celda deberian rastrear el movimiento del satelite a traves del campo de vision Sin reiniciar el mapa, devuelve una mascara estatica acumulativa de cielo despejado en una antena sin obstrucciones; todas las celdas visibles leen ~1,0 sin variacion entre consultas consecutivas. Los datos acumulados estan completamente saturados, por lo que la diferenciacion entre fotogramas no muestra ningun cambio.
SNR del mapa de obstrucciones (con reinicio) Despues de llamar a dish_clear_obstruction_map, el mapa deberia reconstruirse desde vacio y revelar la posicion del satelite servidor a medida que pinta nuevos pixeles cada segundo Confirmed working. Despues de reiniciar en los limites de transferencia, la consulta a 1 Hz produce trayectorias limpias de satelite de un solo pixel. Vea Obstruction Map and Satellite Tracking.

Obstruction Map and Satellite Tracking

Antecedentes

El estudio SatInView de Ahangarpour, Zhao, and Pan (ACM MobiCom '24 LEO-NET Workshop) demostro que el satelite servidor puede identificarse reiniciando el mapa de obstrucciones de la antena en los limites de transferencia de 15 segundos, consultandolo a 1 Hz y aplicando XOR a fotogramas adyacentes para extraer la trayectoria del satelite mientras se mueve por el campo de vision. La trayectoria observada se coteja entonces con las posiciones de satelite propagadas por TLE para lograr una identificacion casi inequivoca.

Durante el desarrollo inicial del Starlink Viewer, probamos el mapa de obstrucciones sin realizar un reinicio. En una antena sin obstrucciones, el mapa parecia estatico: una mascara de cielo despejado totalmente saturada sin variacion entre fotogramas. Concluimos que los datos no contenian informacion de senal de satelite en tiempo real. Esa conclusion era correcta para el mapa sin reiniciar, pero incompleta: el mapa parecia estatico porque cada pixel que el satelite actual podia pintar ya estaba iluminado por pasadas previas de satelites. Sin borrar primero los datos acumulados, no habia nada nuevo que el XOR pudiera detectar.

Hallazgos actualizados

Tras correspondencia con el equipo de investigacion de SatInView, probamos el enfoque completo basado en reinicio en hardware rev3_proto2 con firmware 2026.04.07.mr77639.1 (abril de 2026). Los resultados confirman que la tecnica funciona en el hardware y firmware actuales:

  • dish_clear_obstruction_map esta disponible y funcional. Su llamada borra los datos SNR acumulados (377 active pixels reducidos a 1 en las pruebas).
  • Tras un reinicio, el mapa se reconstruye a aproximadamente un pixel nuevo por segundo a medida que el satelite servidor se mueve por el campo de vision.
  • Aplicar XOR a fotogramas adyacentes a 1 Hz produce puntos de trayectoria limpios de un solo pixel con dispersion casi nula.
  • La temporizacion de transferencia de 15 segundos (segundos 12, 27, 42 y 57 de cada minuto, sincronizados globalmente) se confirmo en nuestro hardware. Los intervalos consecutivos rastrearon el mismo satelite de forma continua, con un salto claro de trayectoria cuando ocurria una transferencia real.
  • El mapa reporta FRAME_EARTH en antenas activas estacionarias, lo que significa que la cuadricula esta orientada con el pixel central superior correspondiendo al norte verdadero. Las antenas moviles o inactivas pueden reportar FRAME_UT, donde el pixel central inferior corresponde a la direccion de boresight.

Compromiso: por que Nexus no reinicia el mapa por defecto

La llamada dish_clear_obstruction_map es destructiva: borra el perfil de obstrucciones acumulado por la antena. Para usuarios con instalaciones obstruidas (arboles, edificios u otras estructuras), estos datos son valiosos para diagnosticar problemas de senal y se construyen en el tiempo a lo largo de muchas pasadas de satelites. Reiniciarlo cada 15 segundos impide que la antena acumule cualquier dato de obstruccion, y la aplicacion movil de Starlink mostrara un mapa vacio o parcial.

Nexus utiliza actualmente la inferencia geometrica (direccion de boresight + correspondencia TLE) como su metodo predeterminado de identificacion de satelite. Este enfoque no es destructivo: no llama a ningun endpoint de escritura en la antena y no tiene efectos secundarios sobre los datos de obstruccion del usuario.

Estamos utilizando el enfoque basado en trayectoria como herramienta de calibracion para validar y mejorar la precision de nuestra inferencia geometrica. Tambien estamos evaluando si ofrecer el seguimiento de trayectoria como un modo opcional para usuarios avanzados e investigadores, con divulgacion clara sobre el compromiso del reinicio del mapa.

Que podria cambiar esto

Futuras actualizaciones de firmware o revisiones de hardware podrian exponer telemetria adicional que mejoraria la precision de la inferencia:

  • seconds_to_first_nonempty_slot funcional: si este campo se puebla en firmware o hardware mas nuevo, proporcionaria una senal de temporizado confiable por transferencia.
  • Angulos de apuntamiento electronico del haz: cualquier exposicion de la direccion real del haz de la matriz en fase permitiria la identificacion directa del satelite.
  • Autenticacion relajada en dish_get_context: si SpaceX reactivara el campo initial_satellite_id, el problema se resolveria por completo.
  • Datos de senal en tiempo real no destructivos: si un firmware futuro expone informacion de senal por satelite a traves de un endpoint separado o una variante no destructiva del mapa de obstrucciones, el enfoque de correspondencia de trayectorias podria usarse sin reiniciar los datos de obstruccion del usuario.
  • Nuevas generaciones de hardware: SpaceX esta desplegando satelites V3 y nuevo hardware de terminal. Diferentes revisiones de firmware o hardware pueden poblar campos actualmente inactivos o exponer nueva telemetria.

Trabajo previo

Nexus utiliza inferencia geometrica (direccion de boresight + posiciones de satelites propagadas por TLE) para estimar que satelite esta sirviendo a la antena. Se trata de un enfoque heuristico: efectivo y no destructivo, pero limitado en precision.

Para una identificacion de mayor precision, la tecnica SatInView desarrollada por Ahangarpour, Zhao, and Pan en la University of Victoria (ACM MobiCom 2024, LEO-NET Workshop) logra una identificacion de satelite casi inequivoca al correlacionar las trayectorias del mapa de obstrucciones con datos TLE. Su enfoque requiere reiniciar el mapa de obstrucciones en los limites de transferencia, lo cual hemos confirmado que funciona en el hardware y firmware actuales (vea Obstruction Map and Satellite Tracking). Su implementacion esta disponible en github.com/aliahan/SatInView.

Estamos utilizando su tecnica basada en trayectoria como referencia para calibrar y mejorar la precision de la inferencia geometrica usada en el Starlink Viewer.

Datos orbitales

Las posiciones de los satelites provienen del endpoint GP suplementario de CelesTrak, que proporciona efemerides contribuidas por SpaceX fusionadas con datos de catalogo estandar del 18th Space Defence Squadron. Los datos se almacenan en cache localmente por el backend de Rust y se actualizan cada 6 horas, con un respaldo de cache obsoleto de 48 horas si CelesTrak no esta accesible. La barra de estado muestra el recuento actual de satelites y la antiguedad de los datos.

Ubicacion de la antena

El visor utiliza coordenadas GPS del endpoint get_location de la antena cuando estan disponibles. Si los datos GPS no son accesibles, puede ingresar manualmente su latitud y longitud en el panel de configuracion.