Monthly Archives: November 2021

Ahoy! Decoding eight GMDSS Channels in a Convoy

Decoding all GMDSS channels at once: Black Cat System’s groundbreaking GMDSS Decoder.

Chris Smolinski, W3HFU, did it again: after his multi-channel attack to ALE, he now offers this highly innovative concept also for GMDSS – Black Cat GMDSS. In addition to an extraordinary sensitive decoder, it also includes smart processing of the data – from looking up vessel’s complete data from ITU’s Ship Station List (internet connection needed) to saving all data to a fully-fledged database. Welcome aboard! Now let’s set sail!

3000+ Messages a Day – received on HF

The Global Maritime Distress and Safety System is a system of different maritime communications tools on frequencies ranging from as low as 424kHz [NAVTEX] over HF and VHF up to satellite channels in the GHz region. This blog entry focus on Black Cat GMDSS decoder, hence on HF. There, the six main channels range from 2MHz to 16MHz. Reception of both, Coastal Stations and vessels, is from around the world. In this case from Vestmannaeyjar Radio in Iceland to Cape Town Radio in South Africa, and from Valparaiso Playo Ancha Radio in Chile to Taupo Maritime Radio in New Zealand. You may hear vessels of each and every kind, from small ones for pleasure to the biggest oil tankers, and all over the world. Monitoring on all six main channels in parallel, often raises 3000+ messages a day!

Robust FSK mode

Transmission is done in 2-FSK with 170Hz shift and at speed of 100Bd. Waveform is ‘kind of SITOR-B, repeating each character twice with a 400ms spread to enhance proper decoding under adverse propagation (Rec. ITU-R M.493-11). To establish a call, each station has been assigned to an unique MMSI, or Maritime Mobile Security Identity number consisting of now nine digits, in future 10 digits. MMSIs starting with 00 denote a Coastal Station, e.g., 004123100 for Guangzhou Radio/China. There is a set of 127 symbols, with the first numbers 00 to 99 representing numbers, and each of the remaining number specific situations like “110” denoting “Man over board”. The software has to look up those source-coded messages in a codebook to print a readable message, giving some sense.

Smart coding

One message is about 6.4 seconds long. it starts with a short dot-pattern/phasing sequence for automatic tuning, followed by the content. In this live example, JRCC Australia (MMSI 003669991) is calling Merchant Oil tanker Signal Maya (MMSI 248410000) on 12577kHz at 15:59:43 UTC on November 21, 2021.
There are transmitted 23 groups (“Symbols”) in GMDSS :

  • 120 120 021 007 061 000 000 108 000 050 030 000 010 118 126 126 126 126 126 126 126 122 111

and decoded as follows:

  • 120 120 -> Format
  • 021 007 061 000 000 -> Address – MMSI of called station
  • 108 -> Category
  • 000 050 030 000 010 -> Self MMSI – MMSI of calling station
  • 118 126 -> first and second [none in this case, “idling”] telecommand message
  • 126 126 126 -> frequency message [none in this case, “idling”]
  • 126 126 122 -> end of message
  • 111 -> error-check character [ECC]
  • After a look-up in the codebook this turns into:
  • Format: Individual call
  • Address [to]: 210761000
  • Category: Safety
  • Self MMSI [from]: 005030001
  • First telecommand: Test

… even smarter decoding!

Still not much enlightment. But BCS-GMDSS is at your service. It looks up all the cryptic numbers at different sources, even tapping official ITU webpage to enrich the vessel’s MMSI with its stunning mutltitude of information. Wrapping it up, decoding and looking-up in an internal codebook (Coastal Station) as well as in ITU sources (vessels), the above mentioned 23 symbols come out in full glory reading:

[2021-11-21 14:59:43] 12577
Symbols: 120 120 021 007 061 000 000 108 000 050 030 000 010 118 126 126 126 126 126 126 126 122 111
Self MMSI: 005030001 – Australia – JRCC AUSTRALIA 26 20′ 48″ S 120 33′ 52″ E 13669 km, 92 deg
Address: 210761000 – Cyprus
Ship: SALT LAKE CITY | Callsign: C4DS2 | MMSI: 210761000 | Cyprus (Republic of) (CYP) | Vessel ID: 9314129 | EPIRB: BE1 | 06/12/2017
Class: Merchant | Bulk carrier | | 89076 tons | 26 persons | INMARSAT C MINI M INMARSAT M VHF DSC | 24 hr service
Owner: NOBEL NAVIGATION CO LTD POB 50132 LIMASSOL CYPRUS
Misc: Former Name: THALASSINI NIKI | | EPIRB ID: 210761000 | | Telephone Bands: STUV | AAIC: GR14 | | CO | |
Format: Individual call Category: Safety First telecommand: Test

As you have seen, I already mixed some theory with some practice – as you know me.

Now for some features of the software, plus some hints to make the most out of it.

Some basics, you must be tuned to

BCS-GMDSS offers up to 8 channels in parallel which by default are set to the main six GMDSS channels plus two with only rarely traffic observed, also on 2MHz. Those channels are fed by a SDR, ideally covering the whole range from 2MHz to 17MHz, alias-free. In this range you have to place the up to eight channels, RX1 … RX8, and have their output set to VAC1 … VAC8. The inputs of the decoder have to match those VAC numbers – see screenshot.

Here, six GMDSS channels have been set with SDRC software, controlling a Winradio Sigma SDR at 20MHz bandwidth.

Take some care to think about mode, tuned frequency and audio frequencies, and bandwidth. Mode can be USB, CW-U or FSK, whatever your SDR’s software offers. It is, however, mandatory that the center frequency of the audio output must match the centre frequency of the input of the decoder! Otherwise there will be no decoding.

I am using free SDRC software by Simon Brown, G4ELI, easily providing all eight channels via VAC software. I am using CW-U and a bandwidth of 400Hz, giving some room for stations which might deviate by some 10Hz from the assigned channel – the decoder automatically compensates for this. With this setup (see screenshots below), the frequency readout shows the assigned channels, plus centre frequencies of decoder and receiver are matching (here 1700Hz, as ITU recommends). The bandwidth offers a good balance of SNR and tolerance for stations with a slight offset. Your mileage may vary in some aspects, e.g., you may prefer SSB-USB mode, or your software has a BFO if you use CW …
You may also use the wrong sideband (LSB instead of USB) with your receiver – but than you just have to tick “Invert” in the decoder’s Setting menu as it then changes Mark and Space frequencies.

Center frequency set to 1700Hz, low to 1500Hz, High to 1900Hz – resulting in a bandwidth of 400Hz. The signal of Finisterre Radio on 8414,5kHz matches these values.
With center frequency of the audio output (1700Hz) and center frequency of the decoder (1700Hz) matching, a signal falls into both passbands – that of the receiver on the right side with spectrum and spectrogram, and that of the decocoder on the left with spectrum, amplitude and also the Setup menu.

Order! How to cruise through this Ocean of Messages

BCS-GMDSS cleverly combines a most powerful decoder with some extras to calm the rogue waves of decoded information. First, you may reduce (or extend) the degree of information you fetch form the ITU page: Edit -> Settings -> MMSI Lookup. It is very interesting to see the maximum of data (“Most Details”), but with everyday’s monitoring just “Basic” or “Detailed” may run the show. This creenshot is showing the differences:

Five different depth of data output: from “Details: None” to “Details: Most Details” – with all the same audio being decoded.

The second step is to distinguish the vessels from the coastal stations by color. I set the latter ones to show up in blue:

Here, messages from Coastal Stations are printed in blue (Edit -> Highlight Coastal Stations, set color).

Next, BCS-GMDSS offers a Coastal Station’s database. It is a real database which, e.g., each column can be sorted. In the screenshot below, I had sorted them according to their total messages received. Then “Yusa Radio” has been double-clicked to inspect the timestamps of reception:

Coastal Station do have an extra porthole offering some interesting statistics. Each column can be sorted, and a double-click reveals timestamps of one station.

The “Loggings Database Search” is like a supertanker, containing all your logs which can be sorted by a double-click, plus being queried for each column, also combining different criteria. This is the most powerful database any GMDSS decoder has on board. See screenshot below for just one example:

The whole log of 12’590 entries had been queried for messages from Coastal Stations on 2187.5kHz on November 21, 2021 for 24 hours. This answer is of course just a small part of the whole reply from the database.

Addendum: Where are they cruising?

The location of most Coastal stations is openly available, and their geographical coordinates are internally looked up by the software – even calculation of the distances to your location (Edit -> Settings -> Latitude:/Longitude:) is done automatically.
But where are the vessels cruising? They only rarely transmit their location in GMDSS on HF. But if they have an AIS, or Automatic Identification System, you have a fair chance to get the actual location. This system comes in two tastes: AIS and LRTI, or Long Range Identification and Tracking. AIS is using VHF. Propagation restricts the range to some ten kilometers. LRTI is using satellite (INMARSAT). There are some webpages where you get at least AIS for free – just to mention VesselFinder, VesselTracker and MarineTraffic. Their business model is to offer subscriptions for one year at a price of about 1’200 US-$ for LRTI (satellite) data, aimed mainly to the professionals. But most of those companies offer (limited) access to their AIS data for free. The two screenshots below show the difference.

Scattered with vessels: VesselFinder’s professional version listen to all seven oceans via satellite, but offers …
… free acces to AIS data (VHF) which is due to propagation and volunteers feeding this net to those coastal regions.

The example above, bulk carrier Salt Lake City, is only availabe on LRIT. So free data are about one week old. Nevertheless, you get at least a clue where the ship had been. And if time plays no role, just look it up exactly this week later …

For free, we get only a weeks’s old satellite information. At least we can can see the bulk carrier had started from Manila on November 14, heading to Abbot Point in Australia where it is expected on November 29. A rough estimate is that she may have been cruising through the Banda Sea at the time of being called by JRCC Australia.

If you have received the following message, you are lucky:

[2021-11-22 17:02:38] 2187.5
Self MMSI: 229375000 – Malta
Ship: CMA CGM FORT DESAIX | 9HA5478 | 229375000 | MLT | MLT | 9400174 | 229375000 | 04/08/2021
Address: 002275300 – France – MRCC CORSEN 48 40′ 60″ N 2 19′ 0″ W 947 km, 252 deg
Format: Individual call Category: Safety First telecommand: Test

This vessel is covered by AIS (VHF) with its up-to-date data available for free at VesselFinder.

Multi-channel ALE Decoder: Listing and Logging

As if by magic, a file [invoked, marked yellow] completes the decoded messages to a complete and easily readable log. ALE callsign “111111” had no entry in the file, therefore this unidentified USAF aircraft cannot be solved.

Chris Smolinski’s Black Cat Systems ALE Decoder has changed monitoring ALE messages which are widely used onf HF to provide an automatic link establishment. It has set the standard not only by its unsurpassed sensitivity and the option to decode up to 24 channels in parallel, but also with its look-up table for “translating” cryptic ALE callsigns into stations and locations of flesh and blood. Tahnks to this, the usual decoded message of just

  • 7527.0 [Frequency in kHz] USB [mode] 2021-11-10 22:54:24 [date/time] 16 [BER] TO TSC TIS K62

turns into:

  • 7527.0 USB 2021-11-10 22:54:24 16
    TO TSC COTHEN Technical Service Center Orlando FL USA
    TIS K62 USGC MH-65D/E Short Range Recovery Helicopter Dolphin #6562 USA

This blog entry provides a description of the system as well as a list of 3’200+ ALE callsigns as a First Aid Kit.

How Callsigns come into Life

This feature is a major achievement in DXing. And it is, too, that innovative that we have to set our sails into unchartered sea. [Do you remember the completely blank OCEAN-CHART. in Lewis Caroll’s “The Hunting of the Snark” from 1876? You are here!]

The general idea of the software is to look-up each decoded callsign in a list of tab-separated information where you already had collected metadata like organization, station, location, country – anything you consider important.
The software then looks up each callsign – as above TSC and K62 -, introduces all the information in a neat way and prints it all together in the window. Even more, as the software automatically fills a logfile with all this for later inspection, edition and further processing by spreadsheet or database. Smart! And unique!

The callsigns’ document and its quality (extent, reliability, consistency …), of course, plays a pivotal role, see following illustration – shit in, shit out.

Information is circling from your Reference Database into the decoder’s look-up files (folder “ale_callsigns”) and back.

Whatever format your Reference Database may have, it will and must put out a simple tab-separated textfile.

It helps if you think of different type of data (organization, location, country …) as of different fields or cells, each separated by a TAB from each other – see an example with just one entry below.
All data fenced in by TAB can contain arbitrary characters, such as spaces, brackets, commas etc.

ALE CallOrganizationNameLocationTypeITU
HNCUSCGHarriet LanePortsmouth VAWMEC-903USA
Each cell/field is separated by a TAB. “Harriet” and “Lane” are separated by just a blank and as a result handled as one cell/field “Harriet Lane”.

Different output Formats for different Tastes

The decoder may present the same decoded message plus the same information from your callsign file in different ways, controlled by the “Settings” menu of the decoder:

Let us now decline the different Message Formats for a simple message of LNT calling J10 on November 6th, 2021 at 22:19:59 UTC, with data from “ale_callsigns”, see lines 16 to 18 :

Same message and same decode, but different formats and different log entries as well.

The sources for e.g., line 42 are marked in colors:

Divide and conquer

The look-up table(s) must be saved in a directory called “ale_callsigns” (lower case!) in the Documents directory for your user account.

The look-up table must be saved in the Documents directory for your user account.

Above you see not only one callsigns’ file, but many. There is a reason for that: If you have a large callsign file, undoubtedly some one and the same callsign will be valid for two or several stations. If the software detects this case, it prints (original decoded message):

  • 03 5732.0 USB 2021-11-10 22:29:03 31 TWAS J51 Ambiguous – multiple entries

This is because the list contains (in this case) two entries under callsign J51, namely:

  • J51 Royal Moroccan Armed Forces MRC
  • J51 USGC MH-60T Medium Range Helicopter #6051 USA

You can evade this ambiguity by defining different jobs with matching callsigns lists. If you want to check the channels of USCG/COTHEN, you should query your database for USCG only, save this set and invoke just this reduced set of callsigns instead of the complete bunch – divide et impera. This technique in most cases reduces the problem or even avoids it at all.
There maybe also the effect of a “false positive”: if a callsign doubles on two different stations, but you have listed only one under this callsign, being this the wrong one for the given case.

Basic Reference List: Database or Spreadsheet

I keep my data in a very simple FileMaker database with each entry carrying an individual number ALE_ref.

Example for one entry in my FileMaker database

Then you can query the list: “Tell me all USCG entries located in Alaska!”, getting this window out of your database. This must be exported as TAB-separated file (“USCG_ALS”) and put into the “ale_callsigns” folder of your “Documents” directory.

Result after asking for all USCG entries, located in Alaska.

Of course, you may use any type of spreadsheet and/or database.

You can see the content of folder “ale_callsigns” in the dropdown menu “Callsigns” of the decoder. There you have the choice to select one, two or many files or even “all”.

Under “Callsigns” there are listed all available callsigns files. Here I choose file “Full.tab” with 3175 entries of which 2956 are unique – as the decoder tells you under tab ” Channel 1″.

Callsigns: A First Aid Kit, 3’000+ entries

To become a bit acquainted with this new function, I prepared a list of callsigns containing only very few basic data. It must, of course, contain the callsign for looking up. I then provided fields for the organziation (USCG), the station itself, its location and the ITU 3-letter code. All fields/cells mut be separated by a TAB. For each field which is left empty (i.e., if you don’t know the location), you must insert a TAB instead. Otherwise, the other data may be wrongly allocated in your log. I also tried to keep a balance of streamlined data and the obvious desire not to have be a Rear Admiral of the Navy to understand all the acronyms. The list works perfect for the decoder, plus as sink and as source for your by far more flexible reference database/spreadsheet.

I plan to extend the list as well as to correct the mistakes. Your support is welcome!

The list is a first approach in format and content. It surely works fine. As all work in this field, it combines information from many different sources, contributors to UDXF must be named first. The list is also flavored with my own monitoring log of more than 11000 entries, being all different in call/frequency. In addition, there is a lot of information around in the web – surprisingly often from the organizations themselves, but also from flight spotters, vessel spotters etc. I am sure that all information used is “open”, as otherwise I couldn’t had no access to it … got it?

You can download the zipped list here:

If this doesn’t work, drop me a line under dk8ok_at_gmx.net.