Prezentare generală
Vizualizatorul Starlink afișează un glob 3D în timp real cu toți cei ~10.000 de sateliți Starlink animați în timp real, locația antenei dumneavoastră și o conexiune inferată către satelitul care cel mai probabil deservește terminalul dumneavoastră.
Instrumentul ideal de monitorizare Starlink ar arăta exact cu care satelit comunică antena dumneavoastră în orice moment, când are loc transferul către un nou satelit și calea semnalului de la antenă prin satelit până la stația terestră. Acest lucru ar necesita ca antena să expună identitatea satelitului care deservește și direcția de orientare electronică a fasciculului. SpaceX nu expune niciunul dintre acestea, așadar Nexus inferează satelitul care deservește din datele disponibile.
De ce este necesară inferența
SpaceX blochează datele de identificare a sateliților în spatele unor endpoint-uri gRPC autentificate care sunt inaccesibile pe firmware-ul de consum.
dish_get_contextconține un câmpinitial_satellite_id, dar returneazăPermissionDeniedpe hardware-ul de consum din firmware-ul9f4d05a4(iunie 2021).transceiver_get_telemetryexpunelmac_satellite_idșitarget_satellite_id, dar returneazăUNIMPLEMENTEDpe toate terminalele de consum.- Autentificarea PKI de tip provocare-răspuns cu chei controlate de SpaceX înseamnă că nu există nicio soluție alternativă din partea comunității.
- Direcția de orientare electronică a fasciculului: care ar identifica direct satelitul care deservește; nu este expusă prin niciun endpoint.
- Antena cu matrice faseată orientează fasciculul electronic până la ±50° de la axa principală, dar acest unghi de orientare este complet invizibil pentru consumatorii externi ai API-ului.
Date disponibile
Măsurate de la antenă
| Date | Ce ne spun | Rata de actualizare |
|---|---|---|
| Azimut și elevație ale axei principale | Orientarea fizică a corpului antenei | 1 Hz |
| Latența ping PoP | Timpul de dus-întors până la punctul de prezență | 1 Hz |
| Debit descărcare și încărcare | Debitul curent | 1 Hz |
| Temporizator de sloturi | Temporizator de sloturi ale satelitului (întotdeauna 0 pe hardware-ul testat) | 1 Hz |
| Coordonate GPS | Locația antenei | La cerere |
Istoric întreruperi (did_switch) |
Schimbare confirmată de satelit în timpul unei întreruperi de serviciu | Per eveniment de întrerupere |
| Hartă de obstrucții (grilă SNR) | Hartă a cerului de 123×123 pixeli; conține date de semnal satelitar în timp real atunci când este resetată la limitele de transfer (vezi Obstruction Map and Satellite Tracking) | 1 Hz |
Surse externe
| Date | Ce ne spun |
|---|---|
| Elemente orbitale TLE pentru ~10.000 de sateliți Starlink (CelesTrak / Escadronul 18 de Apărare Spațială) | Azimut, elevație și distanță oblică calculate pentru fiecare satelit din orice poziție a observatorului |
Ce nu este disponibil
| Date | De ce le dorim | Status |
|---|---|---|
| ID-ul satelitului care deservește | Identificare directă | Blocat în spatele autentificării |
| Unghiul de orientare electronică a fasciculului | Direcția precisă a fasciculului | Nu este expus în niciun endpoint |
| Temporizator de sloturi funcțional | Semnal de temporizare a transferului | Câmpul există dar citește 0 pe firmware-ul de consum actual |
Cum funcționează potrivirea
Potrivirea sateliților
Vizualizatorul efectuează următorul calcul la 1 Hz:
-
Poziția observatorului: coordonatele GPS ale antenei din
get_locationstabilesc unde vă aflați pe Pământ. -
Pozițiile sateliților: folosind propagarea orbitală SGP4 pe datele TLE de la CelesTrak, vizualizatorul calculează azimutul, elevația și distanța oblică a fiecărui satelit Starlink văzut din locația antenei dumneavoastră.
-
Filtrarea câmpului vizual: sunt luați în considerare doar sateliții deasupra a 10° elevație. Direcția fizică a axei principale a antenei (din
alignment_stats) definește centrul conului de câmp vizual de ~100° al matricei faseate. -
Selecția celui mai apropiat candidat: satelitul cu cea mai mică distanță unghiulară de centrul axei principale este selectat ca satelitul cel mai probabil care deservește.
Crucea de axă principală
Crucea de pe graficul polar al cerului reprezintă orientarea fizică a corpului antenei, nu direcția electronică a fasciculului. Antena cu matrice faseată Starlink este în mare parte staționară după alinierea inițială; valorile axei principale se schimbă cu fracțiuni de grad de-a lungul orelor din cauza vântului sau efectelor termice. Antena nu se mișcă fizic pentru a urmări sateliți individuali.
Orientarea reală a fasciculului se realizează electronic în interiorul matricei faseate la nivel RF, baleiind până la ±50° de la axa principală fizică pentru a urmări satelitul care deservește. Această direcție electronică a fasciculului nu este expusă prin niciun endpoint API de consum.
Detectarea schimbării de satelit
Când cel mai apropiat candidat se schimbă (un alt ID NORAD devine cel mai apropiat geometric), aceasta este observată ca o schimbare de satelit inferată. Aceste schimbări se corelează cu transferurile reale ale antenei, dar nu le confirmă. Ele reflectă mecanica orbitală; pe măsură ce sateliții trec cu ~7,5 km/s, cel mai apropiat de centrul axei principale a antenei se schimbă în mod natural la fiecare câteva minute.
Transferurile reale de satelit pe Starlink sunt proiectate să fie continue (stabilește-înainte-de-a-întrerupe), neproducând nicio discontinuitate măsurabilă în latență sau debit care ar putea fi utilizată ca semnal de detecție fiabil pe firmware-ul actual.
Scorul de încredere
Scorul de încredere reflectă probabilitatea geometrică că satelitul potrivit este cel care deservește efectiv:
| Încredere | Criterii | Interpretare |
|---|---|---|
| Ridicată | < 10° de la axa principală, ≤ 3 candidați apropiați | Puțini sateliți în vecinătate; candidat geometric puternic |
| Medie | < 25° de la axa principală | Bine în câmpul vizual; candidat rezonabil |
| Scăzută | < 50° de la axa principală | În raza de orientare a antenei dar mulți candidați apropiați |
| Fără potrivire | > 50° de la axa principală | Niciun satelit în raza de orientare electronică a antenei |
Aceste praguri sunt calibrate pentru axa principală fizică (direcția corpului antenei), nu pentru fasciculul electronic. Deoarece matricea faseată poate orienta ±50° de la fața antenei, satelitul care deservește va fi de obicei la 10-40° de centrul axei principale fizice. O potrivire cu încredere „Ridicată" înseamnă că există un singur candidat geometric puternic; nu înseamnă că identificarea este confirmată.
Gradul de precizie
În ce puteți avea încredere
Pozițiile sateliților pe glob sunt precise. Datele TLE de la CelesTrak sunt autoritative (provenite de la Escadronul 18 de Apărare Spațială al Forței Spațiale a SUA) iar propagarea SGP4 este metoda standard utilizată de comunitatea de urmărire spațială. Precizia pozițională este de obicei de câțiva kilometri pentru TLE recent actualizate.
Locația antenei dumneavoastră este precisă. Provine direct de la GPS-ul integrat al antenei.
Direcția axei principale fizice este precisă. Este măsurată de IMU-ul antenei (unitate de măsurare inerțială) cu o incertitudine de ~0,6°.
Setul de sateliți vizibili este precis. Unghiurile de observare calculate din poziția dumneavoastră către fiecare satelit sunt geometric precise, astfel încât graficul polar arată corect care sateliți sunt deasupra și unde se află pe cer.
Ce este inferat
Satelitul identificat este o estimare informată. Cel mai apropiat satelit de centrul axei principale este cel mai bun candidat geometric, dar antena poate comunica cu orice satelit din raza sa de orientare electronică de ±50°. La orice moment, zeci de sateliți pot fi în câmpul vizual.
Schimbările de satelit sunt geometrie observată, nu transferuri confirmate. Când cel mai apropiat candidat se schimbă, aceasta reflectă deriva orbitală; un satelit diferit devine geometric cel mai apropiat. Transferurile reale ale antenei pot sau nu să coincidă cu aceste schimbări geometrice. Unele transferuri reale vor fi invizibile pentru inferență (antena trece la un alt satelit dar cel mai apropiat geometric nu se schimbă), iar unele schimbări observate vor fi pură derivă orbitală (cel mai apropiat geometric s-a schimbat dar antena nu a comutat efectiv).
Scorurile de încredere sunt geometrice, nu bazate pe semnal. O potrivire cu încredere „Ridicată" înseamnă o geometrie bună, nu o conexiune validată. Fără acces la direcția electronică a fasciculului sau la ID-ul satelitului care deservește, niciun instrument bazat pe firmware de consum nu poate confirma ce satelit folosește efectiv antena.
Semnale investigate
În timpul dezvoltării, mai multe semnale au fost evaluate pentru detectarea transferurilor. Toate au fost testate pe hardware real (rev3_proto2, firmware 2026.02.16.cr74084 și 2026.04.07.mr77639.1).
| Semnal | Ipoteză | Constatare |
|---|---|---|
seconds_to_first_nonempty_slot |
Ar trebui să numere descrescător per slot de satelit și să se reseteze la transfer | Citește întotdeauna 0 pe hardware-ul de consum testat; câmpul nu este populat |
Discontinuități pop_ping_latency_ms |
Latența ar trebui să sară când distanța oblică se schimbă în timpul unui transfer | Latența rămâne lină prin transferuri; SpaceX folosește probabil comutare stabilește-înainte-de-a-întrerupe care absoarbe schimbările de cale |
did_switch din istoricul întreruperilor |
Flag de comutare confirmată în înregistrările de întreruperi | Se activează doar în timpul întreruperilor de serviciu, nu în timpul transferurilor curate de rutină de ~15 secunde |
| Discontinuități ale axei principale | Repoziționarea fizică a antenei ar putea însoți transferurile | Corpul antenei abia se mișcă; orientarea electronică a fasciculului gestionează urmărirea sateliților silențios |
| SNR hartă de obstrucții (fără resetare) | Schimbările SNR per celulă ar trebui să urmărească mișcarea satelitului prin câmpul vizual | Fără resetarea hărții, aceasta returnează o mască cumulativă statică de cer liber pe o antenă neobstrucționată; toate celulele vizibile citesc ~1,0 fără nicio variație între interogări consecutive. Datele acumulate sunt complet saturate, astfel încât diferențierea cadru cu cadru nu arată nicio schimbare. |
| SNR hartă de obstrucții (cu resetare) | După apelul la dish_clear_obstruction_map, harta ar trebui să se reconstruiască din gol și să dezvăluie poziția satelitului care deservește pe măsură ce pictează noi pixeli în fiecare secundă |
Confirmed working. După resetare la limitele de transfer, interogarea la 1 Hz produce traiectorii satelitare curate la un singur pixel. Vezi Obstruction Map and Satellite Tracking. |
Obstruction Map and Satellite Tracking
Context
Studiul SatInView de Ahangarpour, Zhao, and Pan (ACM MobiCom '24 LEO-NET Workshop) a demonstrat că satelitul care deservește poate fi identificat prin resetarea hărții de obstrucții a antenei la limitele de transfer de 15 secunde, interogând-o la 1 Hz și aplicând XOR cadrelor adiacente pentru a extrage traiectoria satelitului pe măsură ce se mișcă prin câmpul vizual. Traiectoria observată este apoi comparată cu pozițiile sateliților propagate prin TLE pentru a obține o identificare aproape lipsită de ambiguitate.
În timpul dezvoltării inițiale a Starlink Viewer, am testat harta de obstrucții fără a efectua o resetare. Pe o antenă neobstrucționată, harta părea statică: o mască de cer liber complet saturată, fără nicio variație cadru cu cadru. Am concluzionat că datele nu conțineau informații de semnal satelitar în timp real. Această concluzie era corectă pentru harta neresetată, dar incompletă: harta părea statică pentru că fiecare pixel pe care satelitul curent îl putea picta era deja aprins din trecerile anterioare ale sateliților. Fără a șterge mai întâi datele acumulate, nu exista nimic nou pe care XOR să îl detecteze.
Constatări actualizate
În urma corespondenței cu echipa de cercetare SatInView, am testat abordarea completă bazată pe resetare pe hardware rev3_proto2 care rulează firmware 2026.04.07.mr77639.1 (aprilie 2026). Rezultatele confirmă că tehnica funcționează pe hardware-ul și firmware-ul actual:
dish_clear_obstruction_mapeste disponibil și funcțional. Apelul său șterge datele SNR acumulate (377 active pixels reduși la 1 în testare).- După o resetare, harta se reconstruiește cu aproximativ un pixel nou pe secundă pe măsură ce satelitul care deservește se mișcă prin câmpul vizual.
- Aplicarea XOR cadrelor adiacente la 1 Hz produce puncte de traiectorie curate la un singur pixel cu dispersie aproape nulă.
- Temporizarea transferului de 15 secunde (secundele 12, 27, 42 și 57 din fiecare minut, sincronizate global) a fost confirmată pe hardware-ul nostru. Intervalele consecutive au urmărit același satelit continuu, cu un salt clar de traiectorie când avea loc un transfer real.
- Harta raportează
FRAME_EARTHpe antenele active staționare, ceea ce înseamnă că grila este orientată cu pixelul central superior corespunzând nordului adevărat. Antenele mobile sau inactive pot raportaFRAME_UT, unde pixelul central inferior corespunde direcției axei principale.
Compromis: de ce Nexus nu resetează harta în mod implicit
Apelul dish_clear_obstruction_map este distructiv: șterge profilul de obstrucții acumulat al antenei. Pentru utilizatorii cu instalații obstrucționate (copaci, clădiri sau alte structuri), aceste date sunt valoroase pentru diagnosticarea problemelor de semnal și sunt construite în timp de-a lungul multor treceri de sateliți. Resetarea lor la fiecare 15 secunde împiedică antena să acumuleze orice date de obstrucție, iar aplicația mobilă Starlink va afișa o hartă goală sau parțială.
Nexus utilizează în prezent inferența geometrică (direcția axei principale + potrivire TLE) ca metodă implicită de identificare a satelitului. Această abordare nu este distructivă: nu apelează niciun endpoint de scriere pe antenă și nu are efecte secundare asupra datelor de obstrucție ale utilizatorului.
Folosim abordarea bazată pe traiectorie ca instrument de calibrare pentru a valida și îmbunătăți precizia inferenței noastre geometrice. Evaluăm, de asemenea, dacă să oferim urmărirea prin traiectorie ca mod opțional pentru utilizatorii avansați și cercetători, cu dezvăluire clară privind compromisul resetării hărții.
Ce ar putea schimba acest lucru
Viitoare actualizări de firmware sau revizii de hardware ar putea expune telemetrie suplimentară care ar îmbunătăți precizia inferenței:
seconds_to_first_nonempty_slotfuncțional: dacă acest câmp este populat pe firmware sau hardware mai recent, ar oferi un semnal de temporizare fiabil per transfer.- Unghiuri de orientare electronică a fasciculului: orice expunere a direcției reale a fasciculului matricei faseate ar permite identificarea directă a satelitului.
- Autentificare relaxată pe
dish_get_context: dacă SpaceX ar reactiva câmpulinitial_satellite_id, problema ar fi rezolvată complet. - Date de semnal în timp real non-distructive: dacă firmware-ul viitor expune informații de semnal per satelit printr-un endpoint separat sau o variantă non-distructivă a hărții de obstrucții, abordarea de potrivire a traiectoriilor ar putea fi utilizată fără resetarea datelor de obstrucție ale utilizatorului.
- Noi generații de hardware: SpaceX implementează sateliți V3 și hardware nou de terminal. Versiuni diferite de firmware sau revizii de hardware pot popula câmpuri momentan inactive sau expune telemetrie nouă.
Lucrări anterioare
Nexus utilizează inferența geometrică (direcția axei principale + pozițiile sateliților propagate prin TLE) pentru a estima care satelit deservește antena. Este vorba despre o abordare euristică: eficientă și non-distructivă, dar limitată în precizie.
Pentru o identificare de precizie mai mare, tehnica SatInView dezvoltată de Ahangarpour, Zhao, and Pan la University of Victoria (ACM MobiCom 2024, LEO-NET Workshop) atinge o identificare a satelitului aproape lipsită de ambiguitate prin corelarea traiectoriilor hărții de obstrucții cu datele TLE. Abordarea lor necesită resetarea hărții de obstrucții la limitele de transfer, lucru pe care l-am confirmat că funcționează pe hardware-ul și firmware-ul actual (vezi Obstruction Map and Satellite Tracking). Implementarea lor este disponibilă la github.com/aliahan/SatInView.
Folosim tehnica lor bazată pe traiectorie ca referință pentru a calibra și îmbunătăți precizia inferenței geometrice utilizate în Starlink Viewer.
Date orbitale
Pozițiile sateliților provin din endpoint-ul suplimentar GP al CelesTrak, care furnizează efemeride contribuite de SpaceX îmbinate cu datele standard de catalog ale Escadronului 18 de Apărare Spațială. Datele sunt stocate în cache local de backend-ul în Rust și reîmprospătate la fiecare 6 ore, cu un fallback de cache expirat de 48 de ore dacă CelesTrak este inaccesibil. Bara de stare arată numărul curent de sateliți și vârsta datelor.
Locația antenei
Vizualizatorul folosește coordonate GPS de la endpoint-ul get_location al antenei când sunt disponibile. Dacă datele GPS nu sunt accesibile, puteți introduce manual latitudinea și longitudinea în panoul de configurare.