Panoramica
Lo Starlink Viewer mostra un globo 3D dal vivo con tutti i ~10.000 satelliti Starlink animati in tempo reale, la posizione della tua antenna e una connessione inferita al satellite che più probabilmente sta servendo il tuo terminale.
Lo strumento ideale di monitoraggio Starlink mostrerebbe esattamente con quale satellite la tua antenna sta comunicando in un dato momento, quando effettua il passaggio a un nuovo satellite e il percorso del segnale dalla tua antenna attraverso il satellite alla stazione a terra. Ciò richiederebbe che l’antenna esponga l’identità del satellite servente e la direzione elettronica di puntamento del fascio. SpaceX non espone nessuno dei due, quindi Nexus inferisce il satellite servente dai dati disponibili.
Perché l’inferenza è necessaria
SpaceX blocca i dati di identificazione dei satelliti dietro endpoint gRPC autenticati che sono inaccessibili sul firmware consumer.
dish_get_contextcontiene un campoinitial_satellite_id, ma ha restituitoPermissionDeniedsull’hardware consumer dal firmware9f4d05a4(giugno 2021).transceiver_get_telemetryesponelmac_satellite_idetarget_satellite_id, ma restituisceUNIMPLEMENTEDsu tutti i terminali consumer.- L’autenticazione PKI challenge-response con chiavi controllate da SpaceX significa che non esiste alcun bypass della community.
- La direzione elettronica di puntamento del fascio: che identificherebbe direttamente il satellite servente; non è esposta tramite alcun endpoint.
- L’antenna ad array fasato dell’antenna dirige il suo fascio elettronicamente fino a ±50° dal boresight, ma questo angolo di puntamento è completamente invisibile ai consumatori esterni dell’API.
Dati disponibili
Misurati dall’antenna
| Dati | Cosa ci dice | Tasso di aggiornamento |
|---|---|---|
| Azimut e elevazione del boresight | Orientamento fisico del corpo dell’antenna | 1 Hz |
| Latenza ping PoP | Tempo di andata e ritorno al point of presence | 1 Hz |
| Throughput in downlink e uplink | Throughput attuale | 1 Hz |
| Timer dello slot | Timer dello slot satellite (sempre 0 sull’hardware testato) | 1 Hz |
| Coordinate GPS | Posizione dell’antenna | Su richiesta |
Cronologia delle interruzioni (did_switch) |
Cambio di satellite confermato durante un’interruzione del servizio | Per evento di interruzione |
| Mappa delle ostruzioni (griglia SNR) | Mappa del cielo da 123×123 pixel; contiene dati di segnale satellitare in tempo reale quando viene resettata ai limiti di passaggio (vedi Obstruction Map and Satellite Tracking) | 1 Hz |
Fonti esterne
| Dati | Cosa ci dice |
|---|---|
| Elementi orbitali TLE per ~10.000 satelliti Starlink (CelesTrak / 18th Space Defence Squadron) | Azimut, elevazione e distanza obliqua calcolati di ogni satellite da qualsiasi posizione dell’osservatore |
Cosa non è disponibile
| Dati | Perché li vogliamo | Stato |
|---|---|---|
| ID del satellite servente | Identificazione diretta | Bloccato dietro autenticazione |
| Angolo di puntamento elettronico del fascio | Direzione precisa del fascio | Non esposto in alcun endpoint |
| Timer dello slot funzionale | Segnale di temporizzazione del passaggio | Il campo esiste ma legge 0 sul firmware consumer attuale |
Come funziona l’abbinamento
Abbinamento dei satelliti
Il visualizzatore esegue il seguente calcolo a 1 Hz:
-
Posizione dell’osservatore: le coordinate GPS dell’antenna da
get_locationstabiliscono dove ti trovi sulla Terra. -
Posizioni dei satelliti: utilizzando la propagazione orbitale SGP4 sui dati TLE di CelesTrak, il visualizzatore calcola l’azimut, l’elevazione e la distanza obliqua di ogni satellite Starlink visto dalla posizione della tua antenna.
-
Filtraggio del campo visivo: vengono considerati solo i satelliti al di sopra di 10° di elevazione. La direzione fisica del boresight dell’antenna (da
alignment_stats) definisce il centro del cono del campo visivo di ~100° dell’array fasato. -
Selezione del candidato più vicino: il satellite con la minore distanza angolare dal centro del boresight fisico viene selezionato come il satellite servente più probabile.
Il mirino del boresight
Il mirino sul diagramma polare del cielo rappresenta l’orientamento fisico del corpo dell’antenna, non la direzione elettronica del fascio. L’antenna ad array fasato Starlink è in gran parte stazionaria dopo l’allineamento iniziale; i valori del boresight cambiano di frazioni di grado nel corso di ore a causa di effetti del vento o termici. L’antenna non si muove fisicamente per inseguire i singoli satelliti.
Il puntamento effettivo del fascio avviene elettronicamente all’interno dell’array fasato a livello RF, spazzando fino a ±50° dal boresight fisico per inseguire il satellite servente. Questa direzione elettronica del fascio non è esposta tramite alcun endpoint dell’API consumer.
Rilevamento dei cambi di satellite
Quando il candidato satellite più vicino cambia (un diverso NORAD ID diventa il geometricamente più vicino), questo viene registrato come un cambio di satellite inferito. Questi cambi correlano con i passaggi effettivi dell’antenna ma non li confermano. Riflettono la meccanica orbitale; poiché i satelliti passano sopra a ~7,5 km/s, quello più vicino al centro del boresight dell’antenna cambia naturalmente ogni pochi minuti.
I passaggi effettivi di satellite su Starlink sono progettati per essere trasparenti (make-before-break), senza produrre discontinuità misurabili nella latenza o nel throughput che possano essere utilizzate come segnale di rilevamento affidabile sul firmware attuale.
Punteggio di confidenza
Il punteggio di confidenza riflette la probabilità geometrica che il satellite abbinato sia effettivamente quello servente:
| Confidenza | Criteri | Interpretazione |
|---|---|---|
| Alta | < 10° dal boresight, ≤ 3 candidati vicini | Pochi satelliti nelle vicinanze; candidato geometrico forte |
| Media | < 25° dal boresight | Ben all’interno del campo visivo; candidato ragionevole |
| Bassa | < 50° dal boresight | Entro il raggio di puntamento dell’antenna ma molti candidati vicini |
| Nessuna corrispondenza | > 50° dal boresight | Nessun satellite entro il raggio di puntamento elettronico dell’antenna |
Queste soglie sono calibrate per il boresight fisico (direzione del corpo dell’antenna), non per il fascio elettronico. Poiché l’array fasato può puntare ±50° dalla faccia dell’antenna, il satellite servente sarà tipicamente a 10-40° dal centro del boresight fisico. Una corrispondenza di confidenza “Alta” significa che c’è un singolo forte candidato geometrico; non significa che l’identificazione sia confermata.
Grado di accuratezza
Di cosa ci si può fidare
Le posizioni dei satelliti sul globo sono accurate. I dati TLE di CelesTrak sono autorevoli (provenienti dalla US Space Force 18th Space Defence Squadron) e la propagazione SGP4 è il metodo standard utilizzato dalla comunità di tracciamento spaziale. L’accuratezza posizionale è tipicamente di pochi chilometri per i TLE aggiornati di recente.
La posizione della tua antenna è accurata. Proviene direttamente dal GPS integrato dell’antenna.
La direzione fisica del boresight è accurata. È misurata dall’IMU (unità di misura inerziale) dell’antenna con un’incertezza di ~0,6°.
L’insieme dei satelliti visibili è accurato. Gli angoli di vista calcolati dalla tua posizione a ciascun satellite sono geometricamente precisi, quindi il diagramma polare mostra correttamente quali satelliti sono sopra di te e dove si trovano nel cielo.
Cosa è inferito
Il satellite identificato è una stima ragionata. Il satellite più vicino al centro del boresight è il miglior candidato geometrico, ma l’antenna potrebbe comunicare con qualsiasi satellite entro il suo raggio di puntamento elettronico di ±50°. In qualsiasi momento, decine di satelliti possono trovarsi nel campo visivo.
I cambi di satellite sono geometria osservata, non passaggi confermati. Quando il candidato più vicino cambia, ciò riflette la deriva orbitale; un satellite diverso diventa geometricamente il più vicino. I passaggi effettivi dell’antenna possono coincidere o meno con questi cambi geometrici. Alcuni passaggi reali saranno invisibili all’inferenza (l’antenna passa a un satellite diverso ma il geometricamente più vicino non cambia), e alcuni cambi osservati saranno pura deriva orbitale (il geometricamente più vicino è cambiato ma l’antenna non ha effettivamente cambiato).
I punteggi di confidenza sono geometrici, non basati sul segnale. Una corrispondenza di confidenza “Alta” significa buona geometria, non una connessione validata. Senza accesso alla direzione elettronica del fascio o all’ID del satellite servente, nessuno strumento basato su firmware consumer può confermare quale satellite l’antenna stia effettivamente utilizzando.
Segnali investigati
Durante lo sviluppo, diversi segnali sono stati valutati per il rilevamento dei passaggi. Tutti sono stati testati su hardware reale (rev3_proto2, firmware 2026.02.16.cr74084 e 2026.04.07.mr77639.1).
| Segnale | Ipotesi | Risultato |
|---|---|---|
seconds_to_first_nonempty_slot |
Dovrebbe decrementare per slot satellite e resettarsi al passaggio | Legge sempre 0 sull’hardware consumer testato; il campo non è popolato |
Discontinuità di pop_ping_latency_ms |
La latenza dovrebbe saltare quando la distanza obliqua cambia durante un passaggio | La latenza rimane liscia attraverso i passaggi; SpaceX probabilmente utilizza commutazione make-before-break che assorbe i cambi di percorso |
did_switch dalla cronologia delle interruzioni |
Flag di cambio confermato nei record delle interruzioni | Si attiva solo durante le interruzioni del servizio, non durante i passaggi puliti di routine di ~15 secondi |
| Discontinuità del boresight | Il riposizionamento fisico dell’antenna potrebbe accompagnare i passaggi | Il corpo dell’antenna si muove appena; il puntamento elettronico del fascio gestisce l’inseguimento dei satelliti silenziosamente |
| SNR della mappa delle ostruzioni (senza reset) | Le variazioni SNR per cella dovrebbero tracciare il movimento dei satelliti attraverso il campo visivo | Senza resettare la mappa, essa restituisce una maschera cumulativa statica di cielo libero su un’antenna priva di ostruzioni; tutte le celle visibili leggono ~1,0 senza alcuna variazione tra interrogazioni consecutive. I dati accumulati sono completamente saturi, quindi la differenziazione fotogramma per fotogramma non mostra alcun cambiamento. |
| SNR della mappa delle ostruzioni (con reset) | Dopo aver chiamato dish_clear_obstruction_map, la mappa dovrebbe ricostruirsi da vuota e rivelare la posizione del satellite servente mentre dipinge nuovi pixel ogni secondo |
Confirmed working. Dopo il reset ai limiti di passaggio, l’interrogazione a 1 Hz produce traiettorie satellitari pulite a pixel singolo. Vedi Obstruction Map and Satellite Tracking. |
Obstruction Map and Satellite Tracking
Contesto
Lo studio SatInView di Ahangarpour, Zhao, and Pan (ACM MobiCom '24 LEO-NET Workshop) ha dimostrato che il satellite servente può essere identificato resettando la mappa delle ostruzioni dell’antenna ai limiti di passaggio di 15 secondi, interrogandola a 1 Hz e applicando XOR ai fotogrammi adiacenti per estrarre la traiettoria del satellite mentre si muove attraverso il campo visivo. La traiettoria osservata viene quindi confrontata con le posizioni dei satelliti propagate dai TLE per ottenere un’identificazione quasi univoca.
Durante lo sviluppo iniziale dello Starlink Viewer, abbiamo testato la mappa delle ostruzioni senza eseguire un reset. Su un’antenna priva di ostruzioni, la mappa appariva statica: una maschera di cielo libero completamente satura senza alcuna variazione fotogramma per fotogramma. Abbiamo concluso che i dati non contenessero informazioni sul segnale satellitare in tempo reale. Questa conclusione era corretta per la mappa non resettata, ma incompleta: la mappa appariva statica perché ogni pixel che il satellite corrente poteva dipingere era già acceso dai passaggi precedenti dei satelliti. Senza prima cancellare i dati accumulati, non c’era nulla di nuovo che l’XOR potesse rilevare.
Risultati aggiornati
A seguito di una corrispondenza con il team di ricerca SatInView, abbiamo testato l’approccio completo basato sul reset su hardware rev3_proto2 con firmware 2026.04.07.mr77639.1 (aprile 2026). I risultati confermano che la tecnica funziona sull’hardware e sul firmware attuali:
dish_clear_obstruction_mapè disponibile e funzionante. La sua chiamata cancella i dati SNR accumulati (377 active pixels ridotti a 1 nei test).- Dopo un reset, la mappa si ricostruisce a circa un nuovo pixel al secondo mentre il satellite servente si muove attraverso il campo visivo.
- L’applicazione di XOR ai fotogrammi adiacenti a 1 Hz produce punti di traiettoria puliti a pixel singolo con dispersione quasi nulla.
- La temporizzazione di passaggio di 15 secondi (12°, 27°, 42° e 57° secondo di ogni minuto, sincronizzati globalmente) è stata confermata sul nostro hardware. Gli intervalli consecutivi hanno tracciato lo stesso satellite in modo continuo, con un chiaro salto di traiettoria quando si verificava un passaggio reale.
- La mappa riporta
FRAME_EARTHsulle antenne attive stazionarie, il che significa che la griglia è orientata con il pixel centrale in alto corrispondente al nord vero. Le antenne mobili o inattive possono riportareFRAME_UT, dove il pixel centrale in basso corrisponde alla direzione del boresight.
Compromesso: perché Nexus non resetta la mappa di default
La chiamata dish_clear_obstruction_map è distruttiva: cancella il profilo di ostruzione accumulato dell’antenna. Per gli utenti con installazioni ostruite (alberi, edifici o altre strutture), questi dati sono preziosi per diagnosticare problemi di segnale e si costruiscono nel tempo attraverso molti passaggi di satelliti. Resettarli ogni 15 secondi impedisce all’antenna di accumulare qualsiasi dato di ostruzione, e l’app mobile Starlink mostrerà una mappa vuota o parziale.
Nexus attualmente utilizza l’inferenza geometrica (direzione del boresight + abbinamento TLE) come metodo di identificazione del satellite predefinito. Questo approccio non è distruttivo: non chiama alcun endpoint di scrittura sull’antenna e non ha effetti collaterali sui dati di ostruzione dell’utente.
Stiamo utilizzando l’approccio basato sulla traiettoria come strumento di calibrazione per convalidare e migliorare l’accuratezza della nostra inferenza geometrica. Stiamo inoltre valutando se offrire il tracciamento della traiettoria come modalità opzionale per utenti avanzati e ricercatori, con una chiara divulgazione riguardo al compromesso del reset della mappa.
Cosa potrebbe cambiare questo
Futuri aggiornamenti firmware o revisioni hardware potrebbero esporre telemetria aggiuntiva che migliorerebbe l’accuratezza dell’inferenza:
seconds_to_first_nonempty_slotfunzionale: se questo campo viene popolato su firmware o hardware più recenti, fornirebbe un segnale di temporizzazione affidabile per passaggio.- Angoli di puntamento elettronico del fascio: qualsiasi esposizione della direzione effettiva del fascio dell’array fasato consentirebbe l’identificazione diretta del satellite.
- Autenticazione rilassata su
dish_get_context: se SpaceX riabilitasse il campoinitial_satellite_id, il problema sarebbe completamente risolto. - Dati di segnale in tempo reale non distruttivi: se un firmware futuro esponesse informazioni sul segnale per satellite tramite un endpoint separato o una variante non distruttiva della mappa delle ostruzioni, l’approccio di abbinamento per traiettoria potrebbe essere utilizzato senza resettare i dati di ostruzione dell’utente.
- Nuove generazioni di hardware: SpaceX sta distribuendo satelliti V3 e nuovo hardware per i terminali. Firmware o revisioni hardware diversi potrebbero popolare campi attualmente inattivi o esporre nuova telemetria.
Lavori precedenti
Nexus utilizza l’inferenza geometrica (direzione del boresight + posizioni dei satelliti propagate dai TLE) per stimare quale satellite sta servendo l’antenna. Si tratta di un approccio euristico: efficace e non distruttivo, ma limitato in precisione.
Per un’identificazione di maggiore accuratezza, la tecnica SatInView sviluppata da Ahangarpour, Zhao, and Pan presso la University of Victoria (ACM MobiCom 2024, LEO-NET Workshop) raggiunge un’identificazione quasi univoca del satellite correlando le traiettorie della mappa delle ostruzioni con i dati TLE. Il loro approccio richiede il reset della mappa delle ostruzioni ai limiti di passaggio, cosa che abbiamo confermato funziona sull’hardware e sul firmware attuali (vedi Obstruction Map and Satellite Tracking). La loro implementazione è disponibile su github.com/aliahan/SatInView.
Stiamo utilizzando la loro tecnica basata sulla traiettoria come riferimento per calibrare e migliorare l’accuratezza dell’inferenza geometrica utilizzata nello Starlink Viewer.
Dati orbitali
Le posizioni dei satelliti provengono dall’endpoint GP supplementare di CelesTrak, che fornisce effemeridi fornite da SpaceX unite ai dati standard del catalogo della 18th Space Defence Squadron. I dati vengono memorizzati localmente nella cache dal backend Rust e aggiornati ogni 6 ore, con un fallback della cache obsoleta di 48 ore se CelesTrak non è raggiungibile. La barra di stato mostra il conteggio attuale dei satelliti e l’età dei dati.
Posizione dell’antenna
Il visualizzatore utilizza le coordinate GPS dall’endpoint get_location dell’antenna quando disponibili. Se i dati GPS non sono accessibili, è possibile inserire manualmente latitudine e longitudine nel pannello di configurazione.