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

FT8の話

 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