Summary of Improvements to WAV Creation @ChatGPT
SLEDGE
Launch: 7 Oct 2026, 03:23:00 UTC
OnB Space, South Korea
401.775 MHz, 19k2_GFSK
1. Correctly created the AX.25 frame.
Destination : SLEDGE-0
Source : TEST-0
Control : 03
PID : F0
Payload : SLEDGE TEST 19200 G3RUH
FCS : 50B5
2. Correctly added the FCS.
The AX.25 CRC/FCS was calculated and B5 50 was appended to the end of the frame.
3. Implemented AX.25 bit stuffing.
0 is inserted after five consecutive 1s:
11111 -> 111110
This was applied only to the frame data, and not to the 0x7E Flag.
4. Correctly placed the AX.25 Flags.
For this test, the structure was:
128 x 0x7E -> AX.25 frame -> 160 x 0x7E
This gave SoundModem.exe enough time to synchronize.
5. Correctly implemented NRZI.
In other words, for AX.25 bit -> NRZI:
0 = transition
1 = no transition
The initial NRZI state was also corrected to 0.
6. Corrected the position of the G3RUH scrambler.
The final processing order was:
AX.25 -> bit stuffing -> NRZI -> G3RUH scrambling -> waveform
The G3RUH polynomial is:
1 + x^12 + x^17
7. Correctly handled 19,200 baud / 96 kHz
96 kHz / 19.2 kHz = 5 samples / symbol
Thus, there is a very clean relationship of:
1 bit = 5 samples
8. Did not generate the G3RUH waveform as a simple square wave.
In the final version, the waveform was changed to a direct G3RUH waveform
generation method based on the approach used by Dire Wolf:
G3RUH -> phase control -> direct sine waveform
In Dire Wolf, the initial value of the NRZI output is 0, followed by:
0 = transition
1 = no transition
The G3RUH scrambling is then performed on that NRZI output.
This produced a natural-sounding GFSK signal in Audacity.
9. Corrected the DC offset.
fixed5c had a large DC offset in its waveform.
After the subsequent improvements, fixed5d.wav was reduced to:
Mean value = +44
RMS = approximately 28,359
10.Finally, successful decoding was achieved.
fixed5d.wav
-> Audacity
-> SoundModem FSK G3RUH 19200bd
-> SLEDGE TEST 19200 G3RUH
-> SUCCESS!
This was the point at which actual decoding was finally achieved.
Current Status:
Correct G3RUH WAV was generated with Python and successfully decoded by SoundModem as AX.25.
SLEDGE_AX25_GFSK_19200_test_fixed5b_float32.dat
SLEDGE_AX25_GFSK_19200_test_fixed5d.wav
Original Goal:
AX.25 bits
-> GNU Radio
-> G3RUH modulation
-> WAV
-> SoundModem
-> AX.25 decode
-> SUCCESS!
From now on, whenever something is changed in GNU Radio,
the WAV generated by GNU Radio can be tested against one simple criterion:
Can the WAV be decoded by the same SoundModem in the same way as fixed5d.wav?
[Update]
The following processing chains were successfully operated on GNU Radio 3.10.12.0.
The generated "fixed6.wav" file uses a temporary test address of "From:SLEDGE" for
AX.25 frames created during testing. This temporary test address must be replaced
with the official address once the satellite's official callsign has been confirmed.
TX side:
AX.25 -> bit stuffing -> NRZI -> G3RUH -> 19.2 kbaud G3RUH waveform -> WAV
SLEDGE_AX25_GFSK_19200_TX_GNURadio31012_fixed6.grc
SLEDGE_AX25_GFSK_19200_TX_GNURadio31012_fixed6.wav
RX side:
WAV -> FSK Demod -> G3RUH descramble -> AX.25 Deframer
SLEDGE_GFSK_19200_RX_GNURadio31012_fixed6_direct.grc
SLEDGE_GFSK_19200_RX_GNURadio31012_fixed6_direct.png
GNU Radio RX Decode Result:
************************************
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
The payload bytes are:
> 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
or simply: SLEDGE TEST 19200 G3RUH
Final Result:
The following two paths were both successfully verified in this series of experiments,
establishing a complete basic TX/RX system.
GNU Radio TX fixed6.grc
|
|
fixed6.wav
/ \
/ \
hs_soundmodem GNU Radio RX
| |
| |
SLEDGE TEST 19200 SLEDGE TEST 19200
G3RUH G3RUH