SLEDGE Test WAV Creation on Windows






 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



Back to Top
Back to Home Page