Apenas edição Pro

Starlink Viewer

Visão geral

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

A ferramenta ideal de monitorização Starlink mostraria exatamente com 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 Telemetry 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 todas as antenas 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 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
Dados orbitais de cada satélite Starlink: os dados GP suplementares do CelesTrak, as efemérides próprias da SpaceX fundidas com o catálogo do 18.º Esquadrão de Defesa Espacial A posição de cada satélite, incluindo satélites lançados demasiado recentemente para constarem do catálogo público; azimute, elevação e distância oblíqua calculados 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
Nenhuma > 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

Em 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 rastreio 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 Funcionamento confirmado. 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 e 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 pixels ativos 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 Telemetry 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 Telemetry 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 antena. Versões de firmware ou revisões de hardware diferentes podem preencher campos atualmente inativos ou expor nova telemetria.

Trabalho anterior

O Nexus Telemetry 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 e 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.

O globo

Bandas orbitais

Os satélites são agrupados por inclinação orbital, lida a partir dos elementos orbitais de cada satélite. Cada banda contém todas as camadas Starlink próximas da sua inclinação.

Banda Camadas Starlink no registo da FCC
97° Primeira geração: 560 km, 97,6°. Segunda geração: 360 km, 96,9°
70° Primeira geração: 570 km, 70°
53° Primeira geração: 550 km, 53° e 540 km, 53,2°. Segunda geração: 525, 480 e 340 km, 53°
48° Segunda geração: 345 km, 48°
43° Segunda geração: 530, 485 e 355 km, 43°
38° Segunda geração: 350 km, 38°
30° Segunda geração: 365 e 475 km, 28° ou 32°, e 535 km, 33°

As camadas de primeira geração do Starlink estão numeradas na decisão da FCC de 2021 (FCC 21-48). As suas camadas de segunda geração não estão numeradas (FCC 22-91, DA 26-36), pelo que cada banda é designada pela sua inclinação. O botão de cada banda mostra o seu número de satélites catalogados e ativa e desativa a banda. Uma banda sem satélites catalogados fica oculta.

Novos lançamentos

Novos lançamentos mostra os satélites que ainda não constam do catálogo público, identificados como [NEW]. As suas posições provêm das efemérides próprias da SpaceX nos dados suplementares do CelesTrak. Um novo satélite tem um número de catálogo temporário igual ou superior a 799 500 000, não é contabilizado em nenhuma banda e junta-se à sua banda quando é catalogado.

Seguir um lançamento

Selecionar Novos lançamentos leva a vista ao lançamento mais recente que ainda tem números de catálogo temporários e segue o seu comboio. A legenda mostra a designação do lançamento, o número de satélites, a sua inclinação média e a sua altitude atual. Lançamento seguinte passa para o comboio seguinte quando há mais do que um lançamento novo. Durante o seguimento, o deslocamento aplica zoom e a rotação fica bloqueada. Deixar de seguir, Esc ou Centrar na antena termina o seguimento. Sem nenhum lançamento novo nos dados, a legenda indica Nenhum lançamento novo nos dados atuais.

Modo de desfoque

Modo de desfoque oculta a antena no globo: o seu marcador, a sua etiqueta e a linha do feixe. As coordenadas da antena no painel ficam desfocadas.

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 de satélites, o número de lançamentos novos 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.