● (No.1197) SLEDGE Test WAV Creation on Windows (2026年9月13日)
--------------------------------------------------------------
SLEDGE
Launch: 7 Oct 2026, 03:23:00 UTC
OnB Space, South Korea
401.775 MHz, 19k2_GFSK
【WAV作成改良点・総まとめ @ChatGPT】
① AX.25フレームを正しく作った
Destination : SLEDGE-0
Source : TEST-0
Control : 03
PID : F0
Payload : SLEDGE TEST 19200 G3RUH
FCS : 50B5
② FCSを正しく付加した。
AX.25の CRC/FCS を計算し、B5 50 をフレーム末尾に付加した。
③ AX.25のbit stuffingを実装した。
5個連続する 1 の後に、0 を挿入。11111 → 111110
これをフレーム部分だけに適用し、0x7E のFlagには適用しないようにした。
④ AX.25のFlagを正しく配置した。
今回のテストでは、128 × 0x7E → AX.25 frame → 160 × 0x7E
という構造にした。そのため SoundModem.exe が十分な同期時間を取れた。
⑤ NRZIを正しく実装した。
つまり、AX.25 bit → NRZI として、
0 = transition
1 = no transition にした。
さらに、NRZI初期状態を 0 に修正した。
⑥ G3RUHスクランブラの位置を修正した。
最終的には、AX.25 → bit stuffing → NRZI → G3RUH scrambling → 波形
という順序にした。G3RUHの多項式は、1 + x^12 + x^17
⑦ 19,200 baud / 96 kHz を正しく対応した。
96 kHz ÷ 19.2 kHz = 5 samples / symbol
つまり、1 bit = 5 samples という非常にきれいな関係にした。
⑧ G3RUH波形を単純な矩形波にしなかった。
最終的には、Dire Wolf系の G3RUH直接波形生成方式を参考にして、
G3RUH → 位相制御 → 直接sin波形に変更した。Dire Wolfでは、
NRZI出力の初期値が 0 で、その後 0 = transition / 1 = no transition。
さらにG3RUHスクランブルは、そのNRZI出力に対して行われる。
これで Audacity でも、自然なGFSK音になった。
⑨ DC偏りを修正した。
fixed5c では波形に大きなDC偏りがあった。その後、fixed5d.wav では、
平均値 = +44 まで改善し、RMSは 約28,359 となった。
⑩ そして最終的に、
fixed5d.wav → Audacity → SoundModem FSK G3RUH 19200bd
→ SLEDGE TEST 19200 G3RUH 成功★
と、実際のデコード成功まで到達した。
【現在】
Python で正しい G3RUH WAV を生成 → SoundModem → AX.25 decode → 成功★
SLEDGE_AX25_GFSK_19200_test_fixed5b_float32.dat
SLEDGE_AX25_GFSK_19200_test_fixed5d.wav
【本来の目標】
AX.25 bits → GNU Radio → G3RUH modulation → WAV → SoundModem → AX.25 decode → 成功★
今後、GNU Radioで何か変更するたびに、
GNU Radioが作ったWAVを、同じSoundModemに入れて、fixed5d.wavと同じようにデコードできるか?
だけを判定基準にできる。
【Update1】
次のラインが、GNU Radio 3.10.12.0 上で正常に動作した。生成した fixed6.wav は、テスト用に
AX.25フレームを作る段階で、送信元を仮に From:SLEDGE としたもので、正式な衛星コールサイン
が確認された時点で、テスト用SLEDGEを正式なアドレスに置き換える必要がある。
TX側
AX.25 → bit stuffing → NRZI → G3RUH → 19.2 kHz波形 → WAV
SLEDGE_AX25_GFSK_19200_TX_GNURadio31012_fixed6.grc
SLEDGE_AX25_GFSK_19200_TX_GNURadio31012_fixed6.wav
RX側
WAV → FSK Demod → G3RUH descramble → AX.25 Deframer
SLEDGE_GFSK_19200_RX_GNURadio31012_fixed6_direct.grc
SLEDGE_GFSK_19200_RX_GNURadio31012_fixed6_direct.png
************************************
message_debug :info: The print_pdu port is deprecated
and will be removed; forwarding to print.
***** VERBOSE PDU DEBUG PRINT ******
()
pdu length = 39 bytes
pdu vector contents =
0000: a6 98 8a 88 8e 8a e0 a8 8a a6 a8 40 40 e1 03 f0
0010: 53 4c 45 44 47 45 20 54 45 53 54 20 31 39 32 30
0020: 30 20 47 33 52 55 48
************************************
>>> Done
> 53 4c 45 44 47 45 20 54 45 53 54 20 31 39 32 30 30 20 47 33 52 55 48
> S L E D G E T E S T 1 9 2 0 0 G 3 R U H
今回の一連の実験で、次の2経路が両方とも成功し、TX/RX双方の基本系が完全に成立した。
GNU Radio TX fixed6.grc
:
:
fixed6.wav
/ \
: :
hs_soundmodem GNU Radio RX
: :
: :
SLEDGE TEST 19200 SLEDGE TEST 19200
G3RUH G3RUH
【Update2】(K)
A: 今回作ったRX_GRC(下記修正版)
SLEDGE_GFSK_19200_RX_GNURadio31012_fixed6_direct_K4KDR_fixed.grc に、19k2_fixed6_48k-AUDIO.wav を入れてRUN。
B: PE0SAT局が示したRX_GRC
SLEDGE_WAV_48k_SIGNAL_CHECK_GNURadio31012_PE0SAT_fixed.grc に、19k2_fixed6_48k-AUDIO.wav を入れてRUN。
C: K4KDR局が示したRX_GRC
sledge--k4kdr_test-file_shared.grc に、19k2_fixed6_48k-AUDIO.wav を入れてRUN。
この3系統すべてデコード成功。(Test address = SLEDGE, Official address = ESGS01)
* 48 kHz WAV
* FSK 19200 baud
* deviation 4800 Hz
* AX.25 G3RUH
* Check AX.25 address = SLEDGE / To
* 39-bytes PDU を完全デコード
* payload = SLEDGE TEST 19200 G3RUH
***** VERBOSE PDU DEBUG PRINT ******
()
pdu length = 39 bytes
pdu vector contents =
0000: a6 98 8a 88 8e 8a e0 a8 8a a6 a8 40 40 e1 03 f0
0010: 53 4c 45 44 47 45 20 54 45 53 54 20 31 39 32 30
0020: 30 20 47 33 52 55 48
************************************
>>> Done
SLEDGE_GFSK_19200_RX_GNURadio31012_fixed6_direct_K4KDR_fixed.grc
19k2_fixed6_48k-AUDIO.wav
トップ へ戻る.
前のページ へ戻る.
次のページ へ移る.
ホームページ(目次) へ戻る.