Introduction
In previous posts I looked at various aspects of decoding BFSK GMDSS/DSC using GNURadio, SDRangel, Multipsk and Scicos. In the last post I used a BPF Non-Coherent GNURadio FSK decoder to decode random data (Ref.1). In this post I will use the same decoder to examine a short GMDSS/NAVTEX BFSK message (Ref.2).
BFSK BPF Decoder



Figure 1 shows the short NAVTEX message as received in Ref.2 and decoded in FLDIGI. The message was received from Sydney Nova Scotia with B1B2B3B4 parameters=QZ00. Figure 2 shows the GNURadio schematic used to decode the message. The input wav file feeds two Band Pass Filters one tuned to the mark frequency (1085Hz) and the other tuned to the space frequency (915Hz). The outputs are squared and feed two Low Pass Filters. The LPF outputs are subtracted and sampled (Fs=100Hz). Figure 3 shows the BPF outputs for mark=1(red) and space=0(green), the LPF subtraction and the final decoded output.
Decode:
ZCZC QZ00
141439 UTC MAY24
THERE IS CURRENTLY NO MESSAGE FOR TRANSMISSION.
NNNN
It took me a long time to match my GNU decode with the data I expected to receive. At first I thought I should be receiving the code for ZCZC etc. The Klingenfuss Radio Data Code Manual was a great help to get me going (Ref.6). I found the original ITU documents and studied them to understand the operation of the so called FEC Mode B operation. I decided to build an encoder in Scicos to ensure I was doing the right thing.
Message Decoding



Figure 4 shows the NAVTEX frame format (Ref.3) and Figure 5 gives the ITU-R M.476 character set (Ref.4). NAVTEX uses the M.476 character set sitting on top of the SITOR-B coding scheme (AMTOR-B/AMTOR-FEC). Each character is 7bits, all characters have 4×1’s which allows error detection. SITOR-A uses ARQ (send frame again if error detected) and SITOR-B uses FEC forward error correction. This is done by sending the message twice and comparing for error free reception. Figure 6 shows the FEC Mode B transmission scheme (Ref.4).
There are various AMTOR code tables on line, which I found very confusing. They are listed in hex code. Reading M.476 you see directly the mark/space output (the hex codes have to be read LSB out first!). The other key is to imagine the whole NAVTEX frame as the input to the FEC Mode B scheme, not just the message which makes sense, since all characters have to be sent twice. Figure 6 shows the Mode B operation, I used the first column for Station I Dx/Rx to construct my Scicos Encoder.
Scicos Simulation




In order to generate the NAVTEX WAV file I used the procedure that I have followed for all my encoders. I construct the data in ScicosLab, create a structure V and read into Scicos. In this case, the Scicos schematic is a BFSK generator (1000Hz +/-85Hz) which generates the output structure A. This is converted to the output WAV file.
Figure 6 is complicated and takes some time to figure out. The first column are the characters found in odd positions: 1,3,5,7,….etc. The second column are the characters found in even positions: 2,4,6,8…..
So for example the odd characters are: 2,2,2,2,CR,LF,Z,C,Z,C,…. (Navtex frame starts). The even characters are: 1,1,1,1,1,1,CR,LF,Z,C,….(Navtex frame starts). “2” in this case refers to phasing signal 2 and “1” is phasing signal 1. Note there are 4 characters between a character repetition (on line sources say 3!).
Figure 7 shows the ScicosLab code. I define all the characters used, and mimic the Sydney NS transmission. I define two vectors. The first comprise the phasing characters. The next is the combination of the even DX characters with the RX characters inserted between. The Scicos WAV decoded in FLDIGI matches the Sydney NS transmission.
The GNURadio decode shows the first characters: PH2,PH1,PH2,PH1
PH2=[0,1,1,0,0,1,1];
PH1=[1,1,1,1,0,0,0];
GNU Radio Basics Course

Please send your comments, questions and suggestions to:
contact:

References
#1. – “Marine GMDSS/DSC VHF Decoder_b”
https://jeremyclark.ca/wp/telecom/marine-gmdss-dsc-vhf-decoder_b/
#2. – “OpenPlotter3 – Marine Navtex”
https://jeremyclark.ca/wp/telecom/openplotter3-marine-navtex/
#3. – “MSC.1-Circ.1403-2 Navtex Manual”,
https://wwwcdn.imo.org/localresources/en/OurWork/Safety/Documents/Documents%20relevant%20to%20GMDSS/MSC.1-Circ.1403-Rev.2.pdf
#4. – “ITU-R M.476-5 Direct Printing Telegraph Equipment In The Maritime Mobile Service”
https://www.itu.int/dms_pubrec/itu-r/rec/m/R-REC-M.476-5-199510-I!!PDF-E.pdf
#5. – “ITU-R M.625-4 Direct Printing Telegraph Equipment Employing Automatic Identification in Maritime Mobile Service”
https://www.itu.int/rec/R-REC-M.625
#6. – “Radio Data Code Manual”, 18th Edition, Joerg Klingenfuss, p.146/150 & p.169/189
https://www.klingenfuss.org