概要
Starlink Viewer は、約10,000基のすべての Starlink 衛星がリアルタイムでアニメーションするライブ 3D 地球儀、ディッシュの位置、およびターミナルに接続している可能性が最も高い衛星への推定接続を表示します。
理想的な Starlink 監視ツールであれば、任意の時点でディッシュが通信している衛星、新しい衛星へのハンドオフのタイミング、ディッシュから衛星を経由して地上局に至る信号経路を正確に表示できます。これにはディッシュが接続中の衛星の識別情報と電子ビームステアリングの方向を公開する必要がありますが、SpaceX はどちらも公開していないため、Nexus は利用可能なデータから接続衛星を推定します。
推定が必要な理由
SpaceX は、コンシューマーファームウェアではアクセスできない認証済み gRPC エンドポイントの背後に衛星識別データをロックしています。
dish_get_contextにはinitial_satellite_idフィールドがありますが、ファームウェア9f4d05a4(2021年6月)以降、コンシューマーハードウェアではPermissionDeniedを返しています。transceiver_get_telemetryはlmac_satellite_idとtarget_satellite_idを公開していますが、すべてのコンシューマーターミナルでUNIMPLEMENTEDを返します。- PKI チャレンジ・レスポンス認証は SpaceX が管理する鍵を使用しており、コミュニティによるバイパスは存在しません。
- 電子ビームステアリング方向: 接続中の衛星を直接特定できるデータですが、いかなるエンドポイントからも公開されていません。
- ディッシュのフェーズドアレイアンテナはボアサイトから最大 ±50° まで電子的にビームを操向しますが、このステアリング角度は API の外部利用者にはまったく見えません。
利用可能なデータ
ディッシュから測定されるデータ
| データ | わかること | 更新レート |
|---|---|---|
| ボアサイトの方位角と仰角 | ディッシュ本体の物理的な向き | 1 Hz |
| PoP ping レイテンシ | ポイントオブプレゼンスへの往復時間 | 1 Hz |
| ダウンリンクおよびアップリンクスループット | 現在のスループット | 1 Hz |
| スロットタイマー | 衛星スロットタイマー(テスト済みハードウェアでは常に0) | 1 Hz |
| GPS 座標 | ディッシュの位置 | オンデマンド |
障害履歴(did_switch) |
サービス中断中の衛星切り替え確認 | 障害イベントごと |
| 遮蔽マップ(SNR グリッド) | 123×123 ピクセルの空マップ。ハンドオーバー境界でリセットした場合、リアルタイムの衛星信号データを含みます(Obstruction Map and Satellite Trackingを参照) | 1 Hz |
外部ソース
| データ | わかること |
|---|---|
| 約10,000基の Starlink 衛星の TLE 軌道要素(CelesTrak / 18th Space Defence Squadron) | 任意の観測位置からのすべての衛星の計算された方位角、仰角、スラントレンジ |
利用できないデータ
| データ | 必要な理由 | 状態 |
|---|---|---|
| 接続中の衛星 ID | 直接的な識別 | 認証の背後にロック |
| 電子ビームステアリング角度 | 正確なビーム方向 | いかなるエンドポイントでも公開されていない |
| 機能するスロットタイマー | ハンドオフタイミング信号 | フィールドは存在するが、現在のコンシューマーファームウェアでは0を返す |
マッチングの仕組み
衛星マッチング
ビューアーは 1 Hz で以下の計算を実行します:
-
観測者の位置:
get_locationからのディッシュの GPS 座標で、地球上の位置を確定します。 -
衛星の位置: CelesTrak の TLE データに対して SGP4 軌道伝播を使用し、ディッシュの位置から見たすべての Starlink 衛星の方位角、仰角、スラントレンジを計算します。
-
視野フィルタリング: 仰角10°以上の衛星のみが考慮されます。ディッシュの物理的なボアサイト方向(
alignment_statsから取得)がフェーズドアレイの約100°視野コーンの中心を定義します。 -
最近接候補の選択: 物理的なボアサイト中心からの角距離が最も小さい衛星が、最も可能性の高い接続衛星として選択されます。
ボアサイト十字線
極座標スカイプロットの十字線は、電子ビーム方向ではなくディッシュ本体の物理的な向きを表しています。Starlink のフェーズドアレイアンテナは初期アライメント後はほぼ静止しており、ボアサイト値は風や熱の影響で数時間にわたり小数点以下の度数レベルで変化します。ディッシュは個々の衛星を追跡するために物理的に動くことはありません。
実際のビームステアリングは、フェーズドアレイ内で RF レベルで電子的に行われ、物理的なボアサイトから最大±50°まで掃引して接続中の衛星を追跡します。この電子ビーム方向は、いかなるコンシューマー API エンドポイントからも公開されていません。
衛星変更の検出
最近接衛星候補が変わると(異なる NORAD ID が幾何学的に最も近くなると)、推定された衛星変更として記録されます。これらの変更は実際のディッシュハンドオフと相関しますが、確認するものではありません。これは軌道力学を反映しており、衛星が約7.5 km/sで上空を通過するため、ディッシュのボアサイト中心に最も近い衛星は数分ごとに自然に変化します。
Starlink における実際の衛星ハンドオフはシームレスに設計されており(メイク・ビフォア・ブレイク方式)、現在のファームウェアでは信頼性のある検出信号として使用できるレイテンシやスループットの測定可能な不連続性を生じません。
信頼度スコア
信頼度スコアは、マッチした衛星が実際の接続衛星である幾何学的な可能性を反映しています:
| 信頼度 | 基準 | 解釈 |
|---|---|---|
| 高 | ボアサイトから10°未満、近隣候補3基以下 | 付近の衛星が少ない; 幾何学的に強い候補 |
| 中 | ボアサイトから25°未満 | 視野内に十分収まっている; 妥当な候補 |
| 低 | ボアサイトから50°未満 | ディッシュのステアリング範囲内だが、近隣候補が多い |
| マッチなし | ボアサイトから50°超 | ディッシュの電子ステアリング範囲内に衛星がない |
これらのしきい値は、電子ビームではなく物理的なボアサイト(ディッシュ本体の方向)に対して較正されています。フェーズドアレイはディッシュの面から±50°操向できるため、接続中の衛星は通常、物理的なボアサイト中心から10〜40°の位置にあります。「高」信頼度のマッチは、幾何学的に強い単一の候補があることを意味しますが、識別が確認されたことを意味するものではありません。
精度について
信頼できるもの
地球儀上の衛星位置は正確です。 CelesTrak の TLE データは権威あるソース(米国宇宙軍 18th Space Defence Squadron)から提供されており、SGP4 伝播は宇宙追跡コミュニティで使用される標準的な方法です。最近更新された TLE の場合、位置精度は通常数キロメートル以内です。
ディッシュの位置は正確です。 ディッシュ搭載の GPS から直接取得されます。
物理的なボアサイト方向は正確です。 ディッシュの IMU(慣性計測装置)によって約0.6°の不確実性で測定されます。
可視衛星のセットは正確です。 あなたの位置から各衛星への計算された視角は幾何学的に正確であるため、極座標プロットは上空のどの衛星がどこにあるかを正しく表示します。
推定されるもの
識別された衛星は根拠に基づく推測です。 ボアサイト中心に最も近い衛星が最良の幾何学的候補ですが、ディッシュは±50°の電子ステアリング範囲内の任意の衛星と通信している可能性があります。任意の時点で、数十基の衛星が視野内にある可能性があります。
衛星変更は観測された幾何学であり、確認されたハンドオフではありません。 最近接候補が変わった場合、これは軌道ドリフトを反映しています。つまり、異なる衛星が幾何学的に最も近くなったということです。実際のディッシュハンドオフはこれらの幾何学的変化と一致する場合もしない場合もあります。一部の実際のハンドオフは推定には見えず(ディッシュは別の衛星に切り替わるが幾何学的に最も近い衛星は変わらない)、観測された変更の一部は純粋な軌道ドリフトです(幾何学的に最も近い衛星が変わったが、ディッシュは実際には切り替えていない)。
信頼度スコアは幾何学的であり、信号ベースではありません。「高」信頼度のマッチは良好な幾何学を意味し、検証された接続を意味しません。電子ビーム方向や接続中の衛星 ID にアクセスできない限り、コンシューマーファームウェアベースのツールでディッシュが実際に使用している衛星を確認することはできません。
調査したシグナル
開発中、ハンドオフ検出のためにいくつかのシグナルを評価しました。すべて実機(rev3_proto2、ファームウェア 2026.02.16.cr74084 および 2026.04.07.mr77639.1)でテストしています。
| シグナル | 仮説 | 結果 |
|---|---|---|
seconds_to_first_nonempty_slot |
衛星スロットごとにカウントダウンし、ハンドオフ時にリセットされるはず | テスト済みコンシューマーハードウェアでは常に0; フィールドが未設定 |
pop_ping_latency_ms の不連続性 |
ハンドオフ中にスラントレンジが変化するとレイテンシがジャンプするはず | ハンドオフを通じてレイテンシは滑らか; SpaceX はメイク・ビフォア・ブレイク方式を使用して経路変化を吸収している可能性が高い |
障害履歴の did_switch |
障害レコード内の切り替え確認フラグ | サービス中断時のみ発火し、通常の約15秒のクリーンなハンドオフでは発火しない |
| ボアサイトの不連続性 | ディッシュの物理的な再配置がハンドオフに伴う可能性 | ディッシュ本体はほとんど動かない; 電子ビームステアリングが衛星追跡をサイレントに処理 |
| 遮蔽マップ SNR(リセットなし) | セルごとの SNR 変化が視野内の衛星移動を追跡するはず | マップをリセットしない場合、遮蔽のないディッシュでは静的な累積クリアスカイマスクが返される; すべての可視セルが連続するポーリング間で変動なく ~1.0 を返す。累積データは完全に飽和しているため、フレーム間の差分では変化が検出されない。 |
| 遮蔽マップ SNR(リセットあり) | dish_clear_obstruction_map を呼び出した後、マップは空から再構築され、毎秒新しいピクセルを描画することで接続中の衛星の位置が明らかになるはず |
動作を確認。 ハンドオーバー境界でリセット後、1 Hz ポーリングによりクリーンな単一ピクセルの衛星軌跡が得られる。Obstruction Map and Satellite Trackingを参照。 |
Obstruction Map and Satellite Tracking
背景
Ahangarpour, Zhao, and Pan による SatInView 研究(ACM MobiCom '24 LEO-NET Workshop)は、ディッシュの遮蔽マップを15秒のハンドオーバー境界でリセットし、1 Hz でポーリングし、隣接フレームを XOR することで、視野を横切る衛星の軌跡を抽出できることを示しました。観測された軌跡を TLE 伝播による衛星位置と照合することで、ほぼ曖昧性のない識別が実現されます。
Starlink Viewer の初期開発時、私たちはリセットを行わずに遮蔽マップをテストしました。遮蔽のないディッシュでは、マップは静的に見えました。完全に飽和したクリアスカイマスクで、フレーム間の変動はありませんでした。私たちはデータにリアルタイムの衛星信号情報が含まれていないと結論づけました。この結論はリセットされていないマップについては正確でしたが、不完全でした。現在の衛星が描画できるすべてのピクセルは、以前の衛星通過によってすでに点灯していたため、マップが静的に見えたのです。累積データを最初にクリアしなければ、XOR が検出できる新しいデータは存在しませんでした。
最新の知見
SatInView 研究チームとのやり取りを経て、rev3_proto2 ハードウェアでファームウェア 2026.04.07.mr77639.1(2026年4月)を実行して、完全なリセットベースのアプローチをテストしました。結果は、この技術が現在のハードウェアとファームウェアで動作することを確認しています:
dish_clear_obstruction_mapは利用可能で機能します。呼び出すと累積 SNR データがクリアされます(テストでは377アクティブピクセルが1に減少)。- リセット後、マップは接続中の衛星が視野を移動するにつれて、およそ毎秒1新しいピクセルのペースで再構築されます。
- 隣接フレームの XOR を 1 Hz で実行すると、ほぼゼロの広がりを持つクリーンな単一ピクセルの軌跡ポイントが生成されます。
- 15秒のハンドオーバータイミング(各分の12秒、27秒、42秒、57秒、グローバルに同期)は、私たちのハードウェアで確認されました。連続する間隔は同じ衛星を継続的に追跡し、実際のハンドオーバーが発生したときには明確な軌跡のジャンプがありました。
- マップは静止しているアクティブなディッシュでは
FRAME_EARTHを報告します。 これはグリッドが上端中央のピクセルが真北に対応するように方向付けられていることを意味します。モバイルまたは非アクティブなディッシュはFRAME_UTを報告する場合があり、その場合は下端中央のピクセルがボアサイト方向に対応します。
トレードオフ: なぜ Nexus がデフォルトでマップをリセットしないのか
dish_clear_obstruction_map 呼び出しは破壊的です。ディッシュの累積遮蔽プロファイルを消去します。遮蔽された設置環境(木、建物、その他の構造物)のユーザーにとって、このデータは信号の問題を診断する上で貴重であり、多くの衛星通過にわたって時間をかけて蓄積されます。15秒ごとにリセットすると、ディッシュが遮蔽データを一切蓄積できなくなり、Starlink モバイルアプリには空または部分的なマップが表示されます。
Nexus は現在、デフォルトの衛星識別方法として幾何学的推定(ボアサイト方向 + TLE マッチング)を使用しています。このアプローチは非破壊的で、ディッシュのいかなる書き込みエンドポイントも呼び出さず、ユーザーの遮蔽データに副作用を与えません。
私たちは、軌跡ベースのアプローチを、幾何学的推定の精度を検証および向上させるためのキャリブレーションツールとして使用しています。また、マップリセットのトレードオフについて明確に開示した上で、高度なユーザーや研究者向けにオプトインモードとして軌跡追跡を提供するかどうかも検討しています。
今後変わる可能性があること
将来のファームウェアアップデートやハードウェアリビジョンにより、推定精度を向上させる追加のテレメトリが公開される可能性があります:
- 機能する
seconds_to_first_nonempty_slot: このフィールドがより新しいファームウェアやハードウェアで設定されれば、信頼性のあるハンドオフごとのタイミング信号を提供します。 - 電子ビームステアリング角度: フェーズドアレイの実際のビーム方向が公開されれば、衛星の直接識別が可能になります。
dish_get_contextの認証緩和: SpaceX がinitial_satellite_idフィールドを再度有効にすれば、問題は完全に解決します。- 非破壊的なリアルタイム信号データ: 将来のファームウェアが別のエンドポイントまたは遮蔽マップの非破壊的バリアントを通じて衛星ごとの信号情報を公開すれば、ユーザーの遮蔽データをリセットすることなく軌跡マッチングアプローチを使用できるようになります。
- 新世代のハードウェア: SpaceX は V3 衛星と新しいターミナルハードウェアを展開しています。異なるファームウェアやハードウェアリビジョンにより、現在使用されていないフィールドが有効化されたり、新しいテレメトリが公開されたりする可能性があります。
先行研究
Nexus は、ディッシュに接続している衛星を推定するために幾何学的推定(ボアサイト方向 + TLE 伝播による衛星位置)を使用しています。これはヒューリスティックなアプローチであり、効果的かつ非破壊的ですが、精度には限界があります。
より高精度の識別のために、University of Victoria の Ahangarpour, Zhao, and Pan によって開発された SatInView 技術(ACM MobiCom 2024、LEO-NET Workshop)は、遮蔽マップの軌跡を TLE データと相関させることで、ほぼ曖昧性のない衛星識別を実現しています。彼らのアプローチはハンドオーバー境界で遮蔽マップをリセットする必要があり、現在のハードウェアとファームウェアで動作することを私たちは確認しました(Obstruction Map and Satellite Trackingを参照)。彼らの実装は github.com/aliahan/SatInView で公開されています。
私たちは、Starlink Viewer で使用されている幾何学的推定の精度を較正および向上させるためのリファレンスとして、彼らの軌跡ベースの技術を使用しています。
軌道データ
衛星位置は CelesTrak の補助 GP エンドポイントから取得されます。このエンドポイントは、SpaceX 提供のエフェメリスと 18th Space Defence Squadron の標準カタログデータを統合しています。データは Rust バックエンドによりローカルにキャッシュされ、6時間ごとに更新されます。CelesTrak に到達できない場合は、48時間の古いキャッシュフォールバックが使用されます。ステータスバーには現在の衛星数とデータの経過時間が表示されます。
ディッシュの位置
ビューアーは、ディッシュの get_location エンドポイントから取得できる GPS 座標を利用します。GPS データにアクセスできない場合は、設定パネルで緯度と経度を手動入力できます。