Visão geral
O Visualizador Starlink exibe um globo 3D ao vivo com todos os ~10.000 satélites Starlink animados em tempo real, a localização da sua antena e uma conexão inferida com o satélite que mais provavelmente está servindo seu terminal.
A ferramenta ideal de monitoramento Starlink mostraria exatamente com qual satélite sua antena está se comunicando a qualquer momento, quando ocorre a transferência para um novo satélite e o caminho do sinal da sua antena, passando pelo satélite, até a estação terrestre. Isso exigiria que a antena expusesse a identidade do satélite servidor e a direção do direcionamento eletrônico do feixe. A SpaceX não expõe nenhum desses dados, então o Nexus infere o satélite servidor a partir dos dados disponíveis.
Por que a inferência é necessária
A SpaceX bloqueia os dados de identificação de satélites atrás de endpoints gRPC autenticados que são inacessíveis no firmware de consumo.
dish_get_contextcontém um campoinitial_satellite_id, mas retornaPermissionDeniedno hardware de consumo desde o firmware9f4d05a4(junho de 2021).transceiver_get_telemetryexpõelmac_satellite_idetarget_satellite_id, mas retornaUNIMPLEMENTEDem todos os terminais de consumo.- Autenticação PKI de desafio-resposta com chaves controladas pela SpaceX significa que não existe nenhuma solução alternativa da comunidade.
- Direção do direcionamento eletrônico do feixe: que identificaria diretamente o satélite servidor; não é exposta por nenhum endpoint.
- A antena de arranjo faseado direciona seu feixe eletronicamente até ±50° do eixo principal, mas esse ângulo de direcionamento é totalmente invisível para consumidores externos da API.
Dados disponíveis
Medidos a partir da antena
| Dados | O que nos dizem | Taxa de atualização |
|---|---|---|
| Azimute e elevação do eixo principal | Orientação física do corpo da antena | 1 Hz |
| Latência de ping PoP | Tempo de ida e volta até o ponto de presença | 1 Hz |
| Throughput de download e upload | Throughput atual | 1 Hz |
| Temporizador de slots | Temporizador de slots de satélite (sempre 0 no hardware testado) | 1 Hz |
| Coordenadas GPS | Localização da antena | Sob demanda |
Histórico de interrupções (did_switch) |
Mudança de satélite confirmada durante uma interrupção de serviço | Por evento de interrupção |
| Mapa de obstruções (grade SNR) | Mapa do céu de 123×123 pixels; contém dados de sinal de satélite em tempo real quando é reiniciado nos limites de transferência (veja Obstruction Map and Satellite Tracking) | 1 Hz |
Fontes externas
| Dados | O que nos dizem |
|---|---|
| Elementos orbitais TLE para ~10.000 satélites Starlink (CelesTrak / 18º Esquadrão de Defesa Espacial) | Azimute, elevação e distância oblíqua calculados de cada satélite a partir de qualquer posição de observador |
O que não está disponível
| Dados | Por que queremos | Status |
|---|---|---|
| ID do satélite servidor | Identificação direta | Bloqueado atrás de autenticação |
| Ângulo de direcionamento eletrônico do feixe | Direção precisa do feixe | Não exposto em nenhum endpoint |
| Temporizador de slots funcional | Sinal de temporização de transferência | O campo existe mas lê 0 no firmware de consumo atual |
Como a correspondência funciona
Correspondência de satélites
O visualizador realiza o seguinte cálculo a 1 Hz:
-
Posição do observador: as coordenadas GPS da antena a partir de
get_locationestabelecem onde você está na Terra. -
Posições dos satélites: usando a propagação orbital SGP4 nos dados TLE do CelesTrak, o visualizador calcula o azimute, a elevação e a distância oblíqua de cada satélite Starlink visto a partir da localização da sua antena.
-
Filtragem do campo de visão: apenas satélites acima de 10° de elevação são considerados. A direção física do eixo principal da antena (de
alignment_stats) define o centro do cone de campo de visão de ~100° do arranjo faseado. -
Seleção do candidato mais próximo: o satélite com a menor distância angular do centro do eixo principal é selecionado como o satélite servidor mais provável.
A mira do eixo principal
A mira no gráfico polar do céu representa a orientação física do corpo da antena, não a direção do feixe eletrônico. A antena de arranjo faseado Starlink é em grande parte estacionária após o alinhamento inicial; os valores do eixo principal variam frações de grau ao longo de horas devido ao vento ou efeitos térmicos. A antena não se move fisicamente para rastrear satélites individuais.
O direcionamento real do feixe acontece eletronicamente dentro do arranjo faseado no nível RF, varrendo até ±50° do eixo principal físico para rastrear o satélite servidor. Essa direção do feixe eletrônico não é exposta por nenhum endpoint da API de consumo.
Detecção de mudança de satélite
Quando o candidato mais próximo muda (um ID NORAD diferente se torna o geometricamente mais próximo), isso é observado como uma mudança de satélite inferida. Essas mudanças se correlacionam com, mas não confirmam, transferências reais da antena. Elas refletem a mecânica orbital; conforme os satélites passam a ~7,5 km/s, aquele mais próximo do centro do eixo principal da antena muda naturalmente a cada poucos minutos.
As transferências reais de satélite no Starlink são projetadas para serem contínuas (estabelecer-antes-de-interromper), não produzindo nenhuma descontinuidade mensurável na latência ou throughput que pudesse ser usada como sinal de detecção confiável no firmware atual.
Pontuação de confiança
A pontuação de confiança reflete a probabilidade geométrica de que o satélite correspondido seja o que realmente está servindo:
| Confiança | Critérios | Interpretação |
|---|---|---|
| Alta | < 10° do eixo principal, ≤ 3 candidatos próximos | Poucos satélites nas proximidades; candidato geométrico forte |
| Média | < 25° do eixo principal | Bem dentro do campo de visão; candidato razoável |
| Baixa | < 50° do eixo principal | Dentro do alcance de direcionamento da antena, mas muitos candidatos próximos |
| Sem correspondência | > 50° do eixo principal | Nenhum satélite dentro do alcance de direcionamento eletrônico da antena |
Esses limiares são calibrados para o eixo principal físico (direção do corpo da antena), não para o feixe eletrônico. Como o arranjo faseado pode direcionar ±50° a partir da face da antena, o satélite servidor estará tipicamente a 10-40° do centro do eixo principal físico. Uma correspondência de confiança “Alta” significa que há um único candidato geométrico forte; não significa que a identificação está confirmada.
Grau de precisão
O que você pode confiar
As posições dos satélites no globo são precisas. Os dados TLE do CelesTrak são autoritativos (provenientes do 18º Esquadrão de Defesa Espacial da Força Espacial dos EUA) e a propagação SGP4 é o método padrão usado pela comunidade de rastreamento espacial. A precisão posicional é tipicamente de poucos quilômetros para TLE recentemente atualizados.
A localização da sua antena é precisa. Vem diretamente do GPS integrado na antena.
A direção do eixo principal físico é precisa. É medida pelo IMU da antena (unidade de medição inercial) com uma incerteza de ~0,6°.
O conjunto de satélites visíveis é preciso. Os ângulos de observação calculados da sua posição para cada satélite são geometricamente precisos, então o gráfico polar mostra corretamente quais satélites estão acima e onde estão no céu.
O que é inferido
O satélite identificado é um palpite informado. O satélite mais próximo do centro do eixo principal é o melhor candidato geométrico, mas a antena pode estar se comunicando com qualquer satélite dentro do seu alcance de direcionamento eletrônico de ±50°. A qualquer momento, dezenas de satélites podem estar dentro do campo de visão.
Mudanças de satélite são geometria observada, não transferências confirmadas. Quando o candidato mais próximo muda, isso reflete a deriva orbital; um satélite diferente se torna geometricamente o mais próximo. As transferências reais da antena podem ou não coincidir com essas mudanças geométricas. Algumas transferências reais serão invisíveis para a inferência (a antena muda para um satélite diferente mas o geometricamente mais próximo não muda), e algumas mudanças observadas serão pura deriva orbital (o geometricamente mais próximo mudou mas a antena não mudou de fato).
As pontuações de confiança são geométricas, não baseadas em sinal. Uma correspondência de confiança “Alta” significa boa geometria, não uma conexão validada. Sem acesso à direção do feixe eletrônico ou ao ID do satélite servidor, nenhuma ferramenta baseada em firmware de consumo pode confirmar qual satélite a antena está realmente usando.
Sinais investigados
Durante o desenvolvimento, vários sinais foram avaliados para detecção de transferências. Todos foram testados em hardware real (rev3_proto2, firmware 2026.02.16.cr74084 e 2026.04.07.mr77639.1).
| Sinal | Hipótese | Resultado |
|---|---|---|
seconds_to_first_nonempty_slot |
Deveria fazer contagem regressiva por slot de satélite e reiniciar na transferência | Sempre lê 0 no hardware de consumo testado; o campo não é preenchido |
Descontinuidades em pop_ping_latency_ms |
A latência deveria saltar quando a distância oblíqua muda durante uma transferência | A latência permanece suave durante as transferências; a SpaceX provavelmente usa comutação estabelecer-antes-de-interromper que absorve as mudanças de caminho |
did_switch do histórico de interrupções |
Flag de mudança confirmada nos registros de interrupções | Só dispara durante interrupções de serviço, não durante transferências limpas de rotina de ~15 segundos |
| Descontinuidades do eixo principal | O reposicionamento físico da antena poderia acompanhar as transferências | O corpo da antena mal se move; o direcionamento eletrônico do feixe cuida do rastreamento de satélites silenciosamente |
| SNR do mapa de obstruções (sem reinício) | As mudanças de SNR por célula deveriam rastrear o movimento do satélite pelo campo de visão | Sem reiniciar o mapa, ele retorna uma máscara cumulativa estática de céu limpo em uma antena sem obstruções; todas as células visíveis leem ~1,0 sem variação alguma entre consultas consecutivas. Os dados acumulados estão totalmente saturados, então a diferenciação quadro a quadro não mostra nenhuma mudança. |
| SNR do mapa de obstruções (com reinício) | Após chamar dish_clear_obstruction_map, o mapa deveria se reconstruir a partir do vazio e revelar a posição do satélite servidor conforme pinta novos pixels a cada segundo |
Confirmed working. Após o reinício nos limites de transferência, a consulta a 1 Hz produz trajetórias de satélite limpas de um único pixel. Veja Obstruction Map and Satellite Tracking. |
Obstruction Map and Satellite Tracking
Contexto
O estudo SatInView por Ahangarpour, Zhao, and Pan (ACM MobiCom '24 LEO-NET Workshop) demonstrou que o satélite servidor pode ser identificado reiniciando o mapa de obstruções da antena nos limites de transferência de 15 segundos, consultando-o a 1 Hz e aplicando XOR a quadros adjacentes para extrair a trajetória do satélite conforme ele se move pelo campo de visão. A trajetória observada é então comparada com as posições de satélite propagadas por TLE para alcançar uma identificação quase inequívoca.
Durante o desenvolvimento inicial do Starlink Viewer, testamos o mapa de obstruções sem executar um reinício. Em uma antena sem obstruções, o mapa parecia estático: uma máscara de céu limpo totalmente saturada, sem variação entre quadros. Concluímos que os dados não continham informações de sinal de satélite em tempo real. Essa conclusão estava correta para o mapa sem reinício, mas era incompleta: o mapa parecia estático porque cada pixel que o satélite atual podia pintar já estava aceso por passagens anteriores de satélites. Sem limpar primeiro os dados acumulados, não havia nada de novo para o XOR detectar.
Resultados atualizados
Após correspondência com a equipe de pesquisa SatInView, testamos a abordagem completa baseada em reinício no hardware rev3_proto2 rodando o firmware 2026.04.07.mr77639.1 (abril de 2026). Os resultados confirmam que a técnica funciona no hardware e firmware atuais:
dish_clear_obstruction_mapestá disponível e funcional. Chamá-la limpa os dados SNR acumulados (377 active pixels reduzidos a 1 nos testes).- Após um reinício, o mapa se reconstrói a aproximadamente um novo pixel por segundo conforme o satélite servidor se move pelo campo de visão.
- Aplicar XOR a quadros adjacentes a 1 Hz produz pontos de trajetória limpos de um único pixel com dispersão quase nula.
- A temporização de transferência de 15 segundos (12º, 27º, 42º e 57º segundos de cada minuto, sincronizados globalmente) foi confirmada no nosso hardware. Intervalos consecutivos rastrearam o mesmo satélite continuamente, com um salto claro de trajetória quando ocorria uma transferência real.
- O mapa reporta
FRAME_EARTHem antenas ativas estacionárias, o que significa que a grade está orientada com o pixel central superior correspondendo ao norte verdadeiro. Antenas móveis ou inativas podem reportarFRAME_UT, onde o pixel central inferior corresponde à direção do eixo principal.
Compromisso: por que o Nexus não reinicia o mapa por padrão
A chamada dish_clear_obstruction_map é destrutiva: apaga o perfil de obstruções acumulado pela antena. Para usuários com instalações obstruídas (árvores, edifícios ou outras estruturas), esses dados são valiosos para diagnosticar problemas de sinal e são construídos ao longo do tempo em muitas passagens de satélites. Reiniciá-los a cada 15 segundos impede que a antena acumule qualquer dado de obstrução, e o aplicativo móvel Starlink mostrará um mapa vazio ou parcial.
O Nexus atualmente usa inferência geométrica (direção do eixo principal + correspondência TLE) como método padrão de identificação de satélite. Essa abordagem não é destrutiva: não chama nenhum endpoint de escrita na antena e não tem efeitos colaterais sobre os dados de obstrução do usuário.
Estamos usando a abordagem baseada em trajetória como ferramenta de calibração para validar e melhorar a precisão da nossa inferência geométrica. Também estamos avaliando se devemos oferecer o rastreamento por trajetória como modo opcional para usuários avançados e pesquisadores, com divulgação clara sobre o compromisso do reinício do mapa.
O que poderia mudar isso
Futuras atualizações de firmware ou revisões de hardware poderiam expor telemetria adicional que melhoraria a precisão da inferência:
seconds_to_first_nonempty_slotfuncional: se esse campo for preenchido em firmware ou hardware mais recente, forneceria um sinal de temporização confiável por transferência.- Ângulos de direcionamento eletrônico do feixe: qualquer exposição da direção real do feixe do arranjo faseado permitiria a identificação direta do satélite.
- Autenticação relaxada em
dish_get_context: se a SpaceX reativasse o campoinitial_satellite_id, o problema seria totalmente resolvido. - Dados de sinal em tempo real não destrutivos: se firmware futuro expuser informações de sinal por satélite por meio de um endpoint separado ou de uma variante não destrutiva do mapa de obstruções, a abordagem de correspondência de trajetórias poderia ser usada sem reiniciar os dados de obstrução do usuário.
- Novas gerações de hardware: a SpaceX está implantando satélites V3 e novo hardware de terminal. Versões de firmware ou revisões de hardware diferentes podem preencher campos atualmente inativos ou expor nova telemetria.
Trabalho anterior
O Nexus usa inferência geométrica (direção do eixo principal + posições de satélites propagadas por TLE) para estimar qual satélite está servindo a antena. Trata-se de uma abordagem heurística: eficaz e não destrutiva, mas limitada em precisão.
Para uma identificação de maior precisão, a técnica SatInView desenvolvida por Ahangarpour, Zhao, and Pan na University of Victoria (ACM MobiCom 2024, LEO-NET Workshop) alcança uma identificação de satélite quase inequívoca correlacionando as trajetórias do mapa de obstruções com dados TLE. A abordagem deles requer o reinício do mapa de obstruções nos limites de transferência, o que confirmamos funcionar no hardware e firmware atuais (veja Obstruction Map and Satellite Tracking). A implementação deles está disponível em github.com/aliahan/SatInView.
Estamos usando a técnica baseada em trajetória deles como referência para calibrar e melhorar a precisão da inferência geométrica usada no Starlink Viewer.
Dados orbitais
As posições dos satélites são obtidas a partir do endpoint suplementar GP do CelesTrak, que fornece efemérides contribuídas pela SpaceX mescladas com dados padrão do catálogo do 18º Esquadrão de Defesa Espacial. Os dados são armazenados em cache localmente pelo backend em Rust e atualizados a cada 6 horas, com um fallback de cache obsoleto de 48 horas se o CelesTrak estiver inacessível. A barra de status mostra a contagem atual de satélites e a idade dos dados.
Localização da antena
O visualizador usa coordenadas GPS do endpoint get_location da antena quando disponíveis. Se os dados GPS não estiverem acessíveis, você pode inserir manualmente sua latitude e longitude no painel de configuração.