Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FT8の話

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 FT8の話

微弱電波を使って地球の裏側とも交信を実現するプロトコルFT8。その仕様の一部をご紹介します。

Avatar for numa08

numa08

July 03, 2026

More Decks by numa08

Other Decks in Technology

Transcript

  1. FT8 ▸ what is it 03 / 12 FT8 とは?

    微弱電波で離れた無線機同士がデジタル信号をやり取りする オープンなプロトコル 77 bit 1回に運べる情報量 UTF-8なら9文字に満たない 数ワット 送信電力 LED電球ほどの小さな電力で 地球の裏側〜宇宙 到達距離 ノイズと減衰でデータは欠ける 「データは欠損する」前提に真っ向から立ち向かう、執念の仕様
  2. FT8 ▸ the problem 04 / 12 普段のネット と 微弱電波

    普段の通信 • 強靭な有線(光・LAN)で常時接続 • 数KB〜数GBを難なく処理 • 5Gも基地局から先は有線の世界 • データはまず欠けない前提 微弱電波の世界 • ケーブル無し。直接ぶつける • 距離で 減衰 → 信号が弱る • 他の電波の影響で かき消される • データは 必ず欠ける → この「欠ける前提」とどう戦うかが FT8 の全て
  3. FT8 ▸ source encoding 05 / 12 無線に最適化した圧縮術 定型文(コールサイン・位置・信号レポート)だから、徹底的に圧縮できる 情報

    中身 ビット数 コールサイン 標準は約2.7億通り (2²⁸) 28 bit 位置 (グリッド) 4文字=32,400通り (<2¹⁵) 15 bit 例:この1メッセージ CQ JK1TUT PM95 UTF-8 (12文字) 96 bit 圧縮後 (実質) 43 bit → 固定77bit枠に余裕 JSONで文字列を投げる日常からすると、ちょっと感動する
  4. FT8 ▸ LDPC · 送信側 07 / 12 送信側:数学で「保険」をかける データ

    77 bit CRC 14 bit パリティ 83 bit 合計 174 bit = LDPC (174, 91) 符号の1ワード ① データ77bit に多項式 0x6757 を当て 14bit CRC(誤り検査用チェックサム)を計算 ② 生成行列 G の 83 行それぞれを 91bit と mod2 内積 → 83bit パリティ(誤り訂正) parity(83) = G(83×91) · m(91) (mod 2) m = データ77 + CRC14 = 91 bit 全部 mod 2(XOR)の世界。数学的に隙のない「保険」をかけてから電波に乗せる
  5. FT8 ▸ LDPC · 受信側 08 / 12 受信側:怪しいビットを「特定」する流れ 届くのは曖昧な値(軟判定)。検査式が

    0 にならない=矛盾 → その矛盾から怪しいビットを絞り込む 検査式 = 事前定義のスパースな 検査行列 H の各行。H × 受信ビット列 の各行がすべて 0 なら正常(0 でない行に誤りの疑い) ① 軟判定ビット ② 検査式で矛盾を探す ③ 容疑者を特定 → → 1 c1 0 c2 ? c3 1 c4 ? c5 0 c6 ノイズで 0/1 を断定できないビット = ? (この例では c3, c5) A c1+c2+c4 → 0 成立 B c2+c3+c5 → 1 矛盾 C c3+c5+c6 → 1 矛盾 各行が 0 = 正常 / 0 でない = 誤りの 疑い 矛盾した B・C に共通 するビット → c3 c5 が容疑者 • 自信のない方を反転して再計算 • 全式が 0 になれば確定 この「確からしさの更新 → 再計算」を高速に反復するのが Belief Propagation(多くは数回で収束 / 弱すぎる時は重い OSD にフォールバック) ※ ビット番号・式は説明用の簡略例(実際は 174bit・83式)
  6. FT8 ▸ the punchline 09 / 12 仕組みは 厳密な線形代数。 解く過程は

    確率論的な交渉。 数学で受け止めて、確率で押し返す。 最後の番人:復元した77bitから CRC を再計算 → 一致すれば確信して表示、ズレたら捨てる
  7. FT8 ▸ timing 10 / 12 15秒に詰め込む「絶対に通信する」意思 送信 受信 送信

    受信 0 15 30 45 60s 実送信 ≈ 12.6 秒 0.16s × 79シンボル 残り ≈ 2.4秒 は時刻同期・デコードの余白(NTP前提) 1回ダメでも、15秒ごとに再挑戦 確率的な復元を、繰り返しで底上げする作戦。
  8. FT8 ▸ state machine 11 / 12 会話の文脈を、機械が状態で持つ Calling ›

    Replying › Report › Roger Rpt › Rogers › Signoff CQ → 応答 → 信号レポート → 受領 → ラジャー → 73(さよなら) を WSJT-X が管理(仕様書にもUML) 状態が分かる → 次のメッセージ型が読める(a priori)→ 探索すべきビットが激減 未知 77 bit → 残り 15 bit (探索 約80%減) ちなみに「完全ロボット運用」は禁止 ── 交信の起点は必ず人間
  9. FT8 ▸ wrap up 12 / 12 「欠ける前提」への、多層的な最適化 ① 数学を確率で解く

    LDPC × Belief Propagation ② 繰り返しで取り返す 15秒サイクルで確率を底上げ ③ 文脈を状態で持つ ステートマシンで探索空間を削る レイヤーは違うのに、全部が「微弱電波でどうにか通信する」一点に向いている。 余談:開発者 Joe Taylor (K1JT) は 宇宙の信号から微弱電波を検出するスペシャリスト(ノーベル物理学賞)。そして LDPC は今や 5G・WiFi・SSD でも当たり前に使われている。 興味が湧いたら後で話しかけてください ── @numa08