Apenas edição Pro

Visão geral

O Visualizador Starlink apresenta um globo 3D em tempo real com todos os ~10 000 satélites Starlink animados em tempo real, a localização da sua antena e uma ligação inferida ao satélite que mais provavelmente está a servir o seu terminal.

A ferramenta ideal de monitorização Starlink mostraria exatamente qual satélite a sua antena está a comunicar em qualquer momento, quando ocorre a transferência para um novo satélite e o caminho do sinal desde a antena, passando pelo satélite, até à estação terrestre. Isto 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 destes dados, pelo que o Nexus infere o satélite servidor a partir dos dados disponíveis.

Por que é necessária a inferência

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_context contém um campo initial_satellite_id, mas retorna PermissionDenied no hardware de consumo desde o firmware 9f4d05a4 (junho de 2021).
  • transceiver_get_telemetry expõe lmac_satellite_id e target_satellite_id, mas retorna UNIMPLEMENTED em 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 através de nenhum endpoint.
  • A antena de matriz faseada da antena direciona o seu feixe eletronicamente até ±50° do eixo principal, mas este ângulo de direcionamento é totalmente invisível para os 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é ao ponto de presença 1 Hz
Débito de download e upload Débito 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 A pedido
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 (grelha 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 (ver 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 Porque os queremos Estado
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 funciona a correspondência

Correspondência de satélites

O visualizador efetua o seguinte cálculo a 1 Hz:

  1. Posição do observador: as coordenadas GPS da antena a partir de get_location estabelecem onde se encontra na Terra.

  2. Posições dos satélites: utilizando 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.

  3. Filtragem do campo de visão: apenas os 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° da matriz faseada.

  4. 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 matriz faseada 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 seguir satélites individuais.

O direcionamento real do feixe acontece eletronicamente dentro da matriz faseada ao nível RF, varrendo até ±50° do eixo principal físico para seguir o satélite servidor. Esta direção do feixe eletrónico não é exposta através de nenhum endpoint da API de consumo.

Deteção de mudança de satélite

Quando o candidato mais próximo muda (um ID NORAD diferente torna-se o geometricamente mais próximo), isto é observado como uma mudança de satélite inferida. Estas mudanças correlacionam-se com, mas não confirmam, transferências reais da antena. Refletem a mecânica orbital; à medida que 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 concebidas para serem contínuas (estabelecer-antes-de-interromper), não produzindo nenhuma descontinuidade mensurável na latência ou débito que pudesse ser utilizada como sinal de deteção fiá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 está efetivamente a servir:

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

Estes limiares são calibrados para o eixo principal físico (direção do corpo da antena), não para o feixe eletrónico. Como a matriz faseada 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 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 utilizado 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. Provém 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, pelo que o gráfico polar mostra corretamente quais satélites estão sobre a sua posição e onde se encontram no céu.

O que é inferido

O satélite identificado é uma estimativa informada. O satélite mais próximo do centro do eixo principal é o melhor candidato geométrico, mas a antena pode estar a comunicar com qualquer satélite dentro do seu alcance de direcionamento eletrónico de ±50°. Em qualquer momento, dezenas de satélites podem estar dentro do campo de visão.

As mudanças de satélite são geometria observada, não transferências confirmadas. Quando o candidato mais próximo muda, isto reflete a deriva orbital; um satélite diferente torna-se geometricamente o mais próximo. As transferências reais da antena podem ou não coincidir com estas 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 efetivamente).

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 ligaçã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á efetivamente a utilizar.

Sinais investigados

Durante o desenvolvimento, vários sinais foram avaliados para deteçã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 Conclusão
seconds_to_first_nonempty_slot Deveria fazer contagem decrescente por slot de satélite e reiniciar na transferência Lê sempre 0 no hardware de consumo testado; o campo não está 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 mantém-se suave durante as transferências; a SpaceX provavelmente utiliza comutação estabelecer-antes-de-interromper que absorve as mudanças de percurso
did_switch do histórico de interrupções Sinalizador de mudança confirmada nos registos de interrupções Apenas 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 trata do seguimento de satélites silenciosamente
SNR do mapa de obstruções (sem reinício) As alterações de SNR por célula deveriam seguir o movimento do satélite através do campo de visão Sem reiniciar o mapa, ele devolve uma máscara cumulativa estática de céu limpo numa antena sem obstruções; todas as células visíveis leem ~1,0 sem qualquer variação entre consultas consecutivas. Os dados acumulados estão totalmente saturados, pelo que a diferenciação quadro a quadro não mostra qualquer alteração.
SNR do mapa de obstruções (com reinício) Após chamar dish_clear_obstruction_map, o mapa deveria reconstruir-se a partir de vazio e revelar a posição do satélite servidor à medida que 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. Ver 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 à medida que este se move pelo campo de visão. A trajetória observada é depois 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, testámos o mapa de obstruções sem efetuar um reinício. Numa antena sem obstruções, o mapa parecia estático: uma máscara de céu limpo totalmente saturada, sem variação quadro a quadro. Concluímos que os dados não continham informação 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 detetar.

Resultados atualizados

Na sequência de correspondência com a equipa de investigação SatInView, testámos a abordagem completa baseada em reinício em hardware rev3_proto2 com 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_map está disponível e funcional. A sua chamada limpa os dados SNR acumulados (377 active pixels reduzidos a 1 nos testes).
  • Após um reinício, o mapa reconstrói-se a aproximadamente um novo pixel por segundo à medida que 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. Os intervalos consecutivos seguiram o mesmo satélite de forma contínua, com um salto claro de trajetória quando ocorria uma transferência real.
  • O mapa reporta FRAME_EARTH em antenas ativas estacionárias, o que significa que a grelha está orientada com o pixel central superior correspondendo ao norte verdadeiro. Antenas móveis ou inativas podem reportar FRAME_UT, onde o pixel central inferior corresponde à direção do eixo principal.

Compromisso: por que o Nexus não reinicia o mapa por predefinição

A chamada dish_clear_obstruction_map é destrutiva: apaga o perfil de obstruções acumulado pela antena. Para utilizadores com instalações obstruídas (árvores, edifícios ou outras estruturas), estes 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 quaisquer dados de obstrução, e a aplicação móvel Starlink mostrará um mapa vazio ou parcial.

O Nexus utiliza atualmente a inferência geométrica (direção do eixo principal + correspondência TLE) como método predefinido de identificação de satélite. Esta abordagem não é destrutiva: não chama quaisquer endpoints de escrita na antena e não tem efeitos secundários sobre os dados de obstrução do utilizador.

Estamos a utilizar a abordagem baseada em trajetória como ferramenta de calibração para validar e melhorar a precisão da nossa inferência geométrica. Estamos também a avaliar se devemos oferecer o seguimento por trajetória como modo opcional para utilizadores avançados e investigadores, com divulgação clara sobre o compromisso do reinício do mapa.

O que poderia mudar isto

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_slot funcional: se este campo for preenchido em firmware ou hardware mais recente, forneceria um sinal de temporização fiável por transferência.
  • Ângulos de direcionamento eletrónico do feixe: qualquer exposição da direção real do feixe da matriz faseada permitiria a identificação direta do satélite.
  • Autenticação relaxada em dish_get_context: se a SpaceX reativasse o campo initial_satellite_id, o problema ficaria totalmente resolvido.
  • Dados de sinal em tempo real não destrutivos: se firmware futuro expuser informação de sinal por satélite através de um endpoint separado ou uma variante não destrutiva do mapa de obstruções, a abordagem de correspondência de trajetórias poderia ser utilizada sem reiniciar os dados de obstrução do utilizador.
  • Novas gerações de hardware: a SpaceX está a implementar 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 utiliza inferência geométrica (direção do eixo principal + posições de satélites propagadas por TLE) para estimar qual satélite está a servir 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 ao correlacionar as trajetórias do mapa de obstruções com dados TLE. A sua abordagem requer o reinício do mapa de obstruções nos limites de transferência, o que confirmámos que funciona no hardware e firmware atuais (ver Obstruction Map and Satellite Tracking). A sua implementação está disponível em github.com/aliahan/SatInView.

Estamos a utilizar a sua técnica baseada em trajetória como referência para calibrar e melhorar a precisão da inferência geométrica utilizada 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 fundidas 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 recurso de cache obsoleto de 48 horas se o CelesTrak estiver inacessível. A barra de estado mostra a contagem atual de satélites e a idade dos dados.

Localização da antena

O visualizador utiliza coordenadas GPS do endpoint get_location da antena quando disponíveis. Se os dados GPS não estiverem acessíveis, pode introduzir manualmente a sua latitude e longitude no painel de configuração.