Marine GMDSS/DSC VHF Decoder_a


In previous posts I looked at receiving GMDSS/DSC HF & VHF signals using a Windows 10 laptop with SDRangel & Multipsk as well as a RaspberryPi4B with Gqrx & GNURadio (Ref.1/5). I also simulated the VHF DSC signal using Scicos (Ref.2). In this post I will make an initial pass at decoding the VHF DSC signal using Scicos.

Equipment Setup

Fig.1 Receiving Equipment Setup
Fig.2 SDR# NBFM Reception of Marine DSC CH70 I&Q Playback
Fig.3 SDR# Audio Recorder WAV File Over Several Minutes
Fig.4 Expansion of First DSC Burst
Fig.5 First Burst Trimmed & Amplified

Figure 1 shows the reception setup. A nearby coastal station sends transmissions around 18:00hrs local time. I use SDR# tuned to 156.525MHz NBFM with 15KHz BW. I record the transmission starting at 17:59 and go till 18:02 both in IQ and in Audio. Figure 2 shows a Packet being received. Figure 3 shows the audio recording in Audacity over the whole record time (no squelch set). The hash marks are where the packets are sent during this time. Figure 4 shows this area expanded showing the packet. Figure 5 shows the trimmed and amplified packet (also re-sampled to 48000Hz).

Packet Analysis

Fc = VCO Center Frequency
Phase Continuous BFSK
F mark2100Hz
F space1300Hz
F separationFc +/- 400Hz=800Hz
R Data Rate1200bps
Condition 1 for Orthogonal Decoding
of Continuous BFSK (Ref.6 = X)
F1=n x 1/(4Tb)
F2=m x 1/(4Tb)
int x 300Hz
Condition 2 for Orthogonal Decoding
of Continuous BFSK (Ref.6 = X)
F1-F2=n x1/(2Tb)
n x 600Hz
Minimum Frequency Separation1/(2Tb)=600Hz
Decoding (Ref. 6 & 7)Fmrk/Fsp Mixers – No
Fmrk/Fsp BPF or IQ – Yes
Fig.6 DSC VHF BFSK Parameters
Fig.7 BFSK Coherent Detection
Fig.8 BFSK Non Coherent BPF Detection
Fig.9 BFSK Non Coherent IQ Detection

Figure 6 lists the VHF DSC parameters. For coherent BFSK detection, the Fmark & Fspace frequencies have to be in phase when they are inserted giving several conditions. These are not met by the VHF DSC signal. The alternate decoding method is non coherent detection.

Figure 7 shows the block diagram for coherent detection. The essential concept is that the Fmark x Fmark will give a DC component and 2xFmark component and the same for Fsp x Fsp. The Fmark x Fspace will produce a very low DC component. The LPF removes noise and the double frequency. The +DC bumps indicate Fmark and -DC bumps indicate Fsp.

Figure 8 shows the block diagram for non coherent detection. The Fmark BPF produces a bump for an Fmark and nothing for Fsp. The Fsp BPF produces a bump for an Fsp and nothing for Fmrk. The BPF filter outputs are envelope detected and sampled. An alternate to this is shown in Figure 9. Here we use an IQ scheme where the input waveform is multiplied by Fmark/cos&sin as well as Fspace/cos&sin. The idea is that although the sine waves are not in phase, between the sin & cos multiplication for Fmark the sum will be >> than for the sin & cos for Fspace. I found so far that this works best of the two non-coherent methods.

Scicos Decoder Block Diagram

Fig.10 Scicos Non Coherent BFSK IQ VHF DSC Decoder
Fig.11 Scicos Non Coherent Decoder Scope 4 DSC VHF Packet Decode
Fig.12 Scicos Non Coherent Decoder Scope 4 at Packet Decode at End

Figure 10 shows a first pass at a non coherent decoder. The received 0.55 sec WAV file is converted to a structure V and read into the Scicos schematic. This feeds an IQ detector with Fmark_I&Q and Fspace_I&Q. The Fmark and Fspace outputs are averaged, squared and subtracted. So essentially there is positive pulse for Fmark and a negative pulse for a Fspace. The IQ detector feeds a Sample/Hold and threshold comparator.

Figure 11 shows the decoder operation. The top trace is the 0.55msec WAV file, the second trace is the decoded bits, the bottom trace are the IQ decoded pulses. Figure 12 is an expansion of this plot for the end of the packet.

This is a first pass at the decoder and many factors need to be added. The final objective is to have Python code that works on the RaspberryPi4.

Fig.13 GMDSS/DSC VHF Decoder_a

Please send your comments, questions and suggestions to:

YouTube Channel
YouTube Channel


#1. – “RTL-SDR for HF Marine GMDSS/DSC on SDRangel”

#2. – “VHF Marine GMDSS/DSC Decode & Scicos Simulation”

#3. – “RTL-SDR for HF Marine GMDSS/DSC”

#4. – “RTL-SDR for Marine GMDSS/DSC on RaspberryPi4”

#5. – “RTL-SDR for Marine GMDSS/DSC on Multipsk”

#6. – “Digital Modulations using Matlab”, M. Viswanathan,

#7. – “Analog and Digital Communication Systems”, L.Couch, 7the Edition

By Jeremy Clark

Jeremy Clark is a Senior Telecommunications Engineer and Advanced Amateur Radio Operator VE3PKC. He is the author of E-Books on Telecommunications, Navigation & Electronics.