RTL-SDR Tutorial: Decoding Inmarsat STD-C EGC Messages

Inmarsat is a communications service provider with several geostationary satellites in orbit. They provide services such as satellite phone communications, broadband internet, and short text and data messaging services. Geostationary means that the satellites are in a fixed position in the sky and do not move. From almost any point on earth at least one Inmarsat satellite should be receivable. 

Inmarsat transmits in the L-band at around 1.5 GHz. With an RTL-SDR dongle, a cheap $10 modified GPS antenna or 1-2 LNA’s and a patch, dish or helix antenna you can listen to these Inmarsat signals, and in particular decode one channel known as STD-C NCS. This channel is mainly used by vessels at sea and contains Enhanced Group Call (EGC) messages which contain information such as search and rescue (SAR) and coast guard messages as well as news, weather and incident reports. More information about L band reception is available at UHF-Satcoms page. See the end of this post for a tutorial on modifying a GPS antenna for Inmarsat reception.

Also as a small aside, you might want to use this tutorial to practice your L-band reception since Outernet are planning to begin their L-band broadcasts later this year, which may be possibly be broadcast from Inmarsat or equivalent satellites. These broadcasts will be at a nearby frequency and will contain about 10 megabytes of daily data. The RTL-SDR should also be able to receive these broadcasts if a compatible decoder is written.

Some examples of the EGC messages you can receive on the STD-C NCS channel are shown below:

Military Operations: Live Firing Warning
STRATOS CSAT 4-AUG-2015 03:21:25 436322
SECURITE
FM: RCC NEW ZEALAND 040300 UTC AUG 15

COASTAL NAVIGATION WARNING 151/15

AREA COLVILLE, PLENTY
CUVIER ISLAND (REPUNGA ISLAND), BAY OF PLENTY
1. LIVE FIRING 060300 UTC TO 060500 UTC AUG 15 IN DANGER AREA NZM204. 
ANNUAL NEW ZEALAND NOTICES TO MARINERS NUMBER 5 REFERS.
2. CANCEL THIS MESSAGE 060600 UTC AUG 15
NNNN
Armed Robbery / Pirate Warning
NAVAREA XI WARNING
NAVAREA XI 0571/15
SINGAPORE STRAIT.
ARMED ROBBERY INFORMATION. 301845Z JUL.
01-04.5N 103-41.8E.
FIVE ROBBERS ARMED WITH LONG KNIVES IN A SMALL UNLIT HIGH SPEED BOAT APPROACHED A BULK CARRIER UNDERWAY.  ONE OF THE ROBBERS ATTEMPTED TO BOARD THE SHIP USING A HOOK ATTACHED TO A ROPE. ALERT CREW NOTICED THE ROBBER AND RAISED THE ALARM AND CREW RUSHED TO THE LOCATION. HEARING THE ALARM AND SEEING THE CREW ALERTNESS, THE ROBBERS ABORTED  THE ATTEMPTED ATTACK AND MOVED AWAY. INCIDENT REPORTED TO VTIS SINGAPORE. ON ARRIVAL AT SINGAPORE WATERS, THE COAST GUARD BOARDED THE SHIP FOR INVESTIGATION.

VESSELS REQUESTED TO BE CAUTION ADVISED.
Armed Robbery / Pirate Warning
NAVAREA XI WARNING
NAVAREA XI 0553/15
SINGAPORE STRAIT.
ROBBERY INFORMATION. 261810Z JUL. 
01-03.6N 103-36.7E. 
DUTY ENGINEER ONBOARD AN UNDERWAY PRODUCT TANKER DISCOVERED THREE ROBBERS IN THE ENGINE ROOM NEAR THE INCINERATOR SPACE. THE ROBBER THEIR BOAT. A SEARCH WAS CARRIED OUT. NO ROBBERS FOUND ON BOARD AND NOTHING REPORTED STOLEN. VTIS SINGAPORE INFORMED. COAST GUARD BOARDED THE TANKER FOR INVESTIGATION UPON ARRIVAL AT SINGAPORE PILOT EASTERN BOARDING AREA.VESSELS REQUESTED TO BE CAUTION ADVISED.
CANCEL 0552/15.
Submarine Cable Repair Warning
NAVAREA XI WARNING
NAVAREA XI 0569/15
NORTH PACIFIC. 
SUBMARINE CABLE REPAIRING WORKS BY 
C/V ILE DE SEIN. 05 TO 20 AUG. 
IN VICINITY OF LINE BETWEEN 
A. 21-37.3N 156-11.5W AND 25-03.6N 148-43.2E.
CANCEL THIS MSG 21 AUG.
Search and Rescue – Missing Vessel
ON PASSAGE FROM LAE (06-44S 147- 00E) TO FINSCHHAFEN (06-36S 147-51E), MOROBE PROVINCE. VESSEL DEPARTED LAE AT 310500Z JUL 15 FOR FINSCHAFFEN WITH ETA OF 310800Z JUL 15 BUT FAILED TO ARRIVE. 
ALL VESSELS REQUESTED TO KEEP A SHARP LOOKOUT AND BE PREPARED TO RENDER ASSISTANCE. REPORTS TO THIS STATION OR MRCC PORT MORESBY VIAEMAIL: ******@****.***.**, TELEPHONE +*** *** ****; RCC AUSTRALIA VIA TELEPHONE +*********** INMARSAT THROUGH LES BURUM (POR ***,IOR***), SPECIAL ACCESS CODE (SAC) **, HF DSC *******
NL BURUM LES 204 4-AUG-2015 03:23:14 773980
AMSA_ER 23150928
PAN PAN
FM JRCC AUSTRALIA 030858Z AUG 15 INCIDENT 2015/5086
AUS4602 CORAL AND SOLOMON SEAS
23FT WHITE BANANA BOAT WITH BROWN STRIPES, AND A 40HP OUTBOARD AND 5 ADULT MALES IS OVERDUE ON PASSAGE FROM LAE (06-44S 147- 00E) TO FINSCHHAFEN (06-36S 147-51E), MOROBE PROVINCE. VESSEL DEPARTED LAE AT 310500Z JUL 15 FOR FINSCHAFFEN WITH ETA OF 310800Z JUL 15 BUT FAILED TO ARRIVE. 
ALL VESSELS REQUESTED TO KEEP A SHARP LOOKOUT AND BE PREPARED TO RENDER ASSISTANCE. REPORTS TO THIS STATION OR MRCC PORT MORESBY VIA EMAIL: *******@****.***.**, TELEPHONE +*** *** ****; RCC AUSTRALIA VIA TELEPHONE +************ INMARSAT THROUGH LES BURUM (POR ***,IOR ***), SPECIAL ACCESS CODE (SAC) **, HF DSC *********, EMAIL: ******@****.***.** OR BY FAX +************.
NNNN
Scientific Research Vessel Drilling – Request for wide clearance
NL BURUM LES 204 4-AUG-2015 02:29:41 709950
AMSA_ER 23153978
SECURITE
FM JRCC AUSTRALIA 040224Z AUG 15 
AUSCOAST WARNING 202/15
SPECIAL PURPOSE VESSEL JOIDES RESOLUTION CONDUCTING DRILLING OPERATIONS IN POSITION 28 39.80` S 113 34.60` E
2.5NM CLEARANCE REQUESTED.
NNNN
Weather Warning
PAN PAN
TROPICAL CYCLONE WARNING / ISSUED FOR THE NORTH OF EQUATOR OF METAREA
XI(POR).
WARNING 050900.
WARNING VALID 060900.
TYPHOON WARNING.
TYPHOON 1513 SOUDELOR (1513) 930 HPA
AT 19.9N 133.2E WEST OF PARECE VERA MOVING WEST 12 KNOTS.
POSITION GOOD.
MAX WINDS 95 KNOTS NEAR CENTER.
RADIUS OF OVER 50 KNOT WINDS 80 MILES.
RADIUS OF OVER 30 KNOT WINDS 240 MILES NORTH SEMICIRCLE AND 210 MILES
ELSEWHERE.
FORECAST POSITION FOR 052100UTC AT 20.1N 130.6E WITH 50 MILES RADIUS
OF 70 PERCENT PROBABILITY CIRCLE.
935 HPA, MAX WINDS 90 KNOTS NEAR CENTER.
FORECAST POSITION FOR 060900UTC AT 20.8N 128.1E WITH 75 MILES RADIUS
OF 70 PERCENT PROBABILITY CIRCLE.
935 HPA, MAX WINDS 90 KNOTS NEAR CENTER.

JAPAN METEOROLOGICAL AGENCY.=

Equipment and Software

  • Receivers: An R820T2 or E4000 RTL-SDR dongle (you might try one of our improved R820T2’s with optional bias-tee built in so that powering the LNA’s or GPS antenna is as easy as plugging them in.)
    • However, note that the R820T2 may not receive well above 1.5 GHz if the ambient temperature is too hot – fair warning that RX can be hit or miss at these frequencies with the R820T2. We tested at an ambient temperature of 16 degrees and it worked well, but when run in direct sunlight the RX eventually failed after 30 – 60 minutes. The E4000 should work better at L band frequencies but these tuners are rare and expensive now.
    • If you have an Airspy SDR then this is even better (it has good RX at L band frequencies and has a bias tee). The HackRF and SDRPlay should also work, but note that the SDRPlay has no bias tee.
  • Antennas & LNA’s: An L-band patch antenna with 1 – 2 Low Noise Amplifiers (LNA’s), a Helix antenna OR a modified GPS active antenna. We tested two antennas, one was a prototype air gap L-band patch antenna supplied by Outernet which was used together with one or two 15 dB LNA’s. The second antenna was a modified active GPS antenna. Both worked well, with the Outernet air gap patch antenna being better. (Note that we received this antenna for testing purposes, it is not yet currently on sale)
    • GPS (low SNR): You can use a $3 – 10 shipped, 28 – 30 dB gain modified GPS active antenna. We show you how to modify such an antenna at the end of this post. Note that RX with this antenna is just on the edge of being able to decode the signal properly, but at this price it may be worth a shot. Also note that you will need a bias tee, or bias tee compatible dongle to power a GPS antenna.
    • Patch (medium SNR): The Outernet patch antenna is now for sale on Amazon and on their store. This is the patch we recommend using and it is quite cheap too. If using a patch antenna like the Outernet one, then you will need about 15-30 dB’s of total amplifier gain which is supplied by one or two LNA’s. If a short cable run is used 15 dB should be enough, if a longer coax run is used 30 dB may be needed. Alternative patch antennas that might work include discarded L band devices such as WorldSpace antennas. Also see our new post for information from Adam 9A4QV on dimensions for building a home made patch antenna.
    • Dish/Helix (highest SNR): If you want the highest SNR, then a dish or helix is the antenna to use. You can build at home a RHCP helix antenna with about 25 turns for about 15dBi of passive gain. With this only one LNA should be needed. UHF-Satcoms L-Band page shows some good information on building such an antenna. If you have a TV dish then this can also be used with a smaller LHCP (LHCP as the dish reflects the polarization) helix antenna as the feed. (Thank you Adam for the comment on these antennas.)
    • To power the LNA’s or active GPS antennas you will need a bias tee or external power source near the antenna.
    • For the LNA’s we used an LNA4ALL and a similar prototype LNA provided by Outernet. Note that Outernet now sell an excellent LNA+Filter on Amazon and on their store which is perfect for receiving STD-C.
  • Software: The demo (or paid) version of the Inmarsat decoder from inmarsatdecoder.com. Note that Chrome and many virus detectors class this website and software as a virus, but we believe that it is a false positive. If you don’t want to risk it then an alternative with similar functions is the Tekmanoid Java based STD-C EGC decoder, but we note the first decoder appears to work much better, especially with low SNR.
  • Audio Piping: You will also need to have installed SDR# or similar and Audio piping software like Virtual Audio Cable, VB Cable, or have enabled stereo mix.

The Outernet L band patch antenna is based on air gap dielectric patch antenna designs which have higher gains than ceramic patches (like the smaller ones used in the active GPS antennas). Here is what the prototype they sent us looks like. It has a VSWR of about 1.1 at 1.5 GHz and 1.45 at 1.56 GHz.

The prototype Outernet Patch Antenna
The prototype Outernet Patch Antenna

Tutorial

  1. The first step is to find out where in the sky your local Inmarsat satellites are. We think that the easiest way to do this is to use a free Android app called “Satellite AR“. Simply open this app and search the satellite database for “Inmarsat”. Choose Inmarsat 3-F or 4-F and use the augmented reality camera view to spot the position of these satellites. Note that the satellite position is fixed so the satellite will not move over time – there is no need to do any antenna tracking.
  2. Point the L-band antenna towards the satellite and get it in an unobtructed view of the sky.
  3. Connect the LNA’s near the antenna. We suggest using a few meters of coax to get the RTL-SDR a few meters away from the antenna as it’s own unintentional emissions tend to cause interference at L band frequencies. We recommend using low loss RG6 or similar, but if you have two LNA’s lower quality cable may be acceptable. Another option to prevent the interference is to shield the RTL-SDR with a metal box.
  4. Choose and set your default audio piping method in Windows sound recording properties (e.g. Stereo Mix, Virtual Audio Cable or VB Cable).
  5. Set the audio piping method to have a sample rate of 48 kHz by setting it in the Playback and Recording properties tabs.
  6. Open SDR# and set the output audio dropdown box to the audio piping method that you have chosen to use. 
  7. Start SDR# and tune to 1.541450 GHz. You should see a thin signal that is about 2.5 kHz in bandwidth, this is the STD-C NCS channel. Since the signal is right hand circularly polarized (RHCP) you might try rotating the antenna you are using for best reception.
  8. If the signal is not at the correct frequency due to oscillator drift and PPM offset, then carefully center the signal on your tuning bar using the PPM correction in SDR#. Note that at these L band frequencies a 1 PPM adjustment can be quite large for a narrowband signal like this (1 PPM = 1.5 kHz @ 1.5 GHz). If you cannot exactly center the signal using PPM correction alone, then just manually center the signal with the mouse or tuning bar.
  9. Now set the mode to USB and tune exactly 2 kHz below the center frequency. E.g. in SDR# if the center frequency was exactly 1.541.450.000 kHz then tune to 1.541.448.000 kHz.
  10. Set the bandwidth to about 4 kHz (4000).
  11. Open the Inmarsat decoder demo program called tdma-demo.exe. Watch the QUAL values in the lower left. If it is near zero, turn up the volume in SDR# until you start see a number above zero. Keep adjusting the volume until the QUAL value peaks. (Alternatively open the tekamnoid decoder and adjust the volume so that the volume bar is green).
  12. After a few seconds you should begin to see information in the command window. Check in the Inmarsat decoder folder for automatically saved .txt files of the actual received messages, like the ones in the examples shown above.

Below is an example of what an Inmarsat STD-C NCS channel sounds like when tuned in USB mode, 2 kHz below the center frequency. Also a screenshot showing what running SDR# and Inmarsatdecoder should look like.

SDR# tuned to the Inmarsat STD-C NCS channel with Inmarsat decoder running
SDR# tuned to the Inmarsat STD-C NCS channel with Inmarsat decoder running

Note that if you don’t have a TCXO dongle then the frequency may drift significantly for the first half hour or so. Even with a TCXO a 1 PPM temperature drift at 1.5 GHz is 1.5 kHz which can be large enough to cause enough trouble with decoding a 2.5 kHz narrowband signal like this. We recommend waiting long enough for the temperature drift to settle before tuning, probably 5 to 10 minutes with a TCXO dongle and up to 30 minutes for a non-TCXO oscillator dongle. After the inmarsatdecoder program gets a lock it will continue to track the signal for drifts of about 500 Hz.

The paid version of the Inmarsat decoder can also decode private messages that are sent through the channel. This includes stuff like personal messaging and emails with attachments like office documents. The full version costs 100 euros. Note that decoding these private messages may not be legal in all countries, so please respect your local laws.

How to Modify a GPS Antenna for Inmarsat Reception

A cheap $10 USD active GPS antenna can be modified for Inmarsat reception (though we need to note that it is not a particular good antenna, but it should be enough for STD-C NCS). Note that GPS antennas are active (as in require DC power), so you will need an external bias tee module, or an SDR with a bias tee option, such as our dongles. Active GPS antennas contain a ceramic patch antenna, LNA and bandpass filter which is tuned for 1575 MHz. The bandpass filter prevents reception from signals more than 1-2 MHz away from 1575 MHz. All that is needed to modify a GPS antenna for wide band reception is for the bandpass filter to be removed. Below we show how this is done on a cheap GPS antenna that we bought.

Update: It turns out that not all GPS antennas have a bandpass filter installed. Many very cheap GPS antennas simply don’t have one installed as a cost cutting measure. These ones without filters should be good to go for Inmarsat already. Many GPS antennas will also look different on the inside with different shaped filters used. 

First carefully remove the plastic case. On some antennas this can just be pulled apart with a flat head screwdriver, but on others you may need to cut apart the plastic with pliers. Inside will be the antenna. On the top will be a ceramic patch antenna, and on the bottom will be a metal reflector which will be covering the circuitry.

Inside the antenna case. A ceramic patch antenna.
Inside the antenna case. A ceramic patch antenna.
Reflector on the back of the GPS antenna. Soldered down at the four corners
Reflector on the back of the GPS antenna. Soldered down at the four corners.

Using a soldering iron carefully remove the bottom reflector by desoldering the joints in the four corners. This is all that holds the reflector down. Removing the reflector will reveal the circuit.

You should be able to notice the bandpass filter on the circuit. It should be the largest component on the board and it may be labelled with the number 1575. On our antenna it was labelled with 1575P.

GPS antenna circuit. Bandpass filter visible - marked at 1575P
GPS antenna circuit. Bandpass filter visible – the large white component marked 1575P.

Carefully remove the bandpass filter. If you have the tools you can do it carefully with hot air. If you don’t have the tools you can just rip it from the board by levering and twisting it off. Just note that this will probably pull up some of the PCB pads too. 

Now with the filter removed, bridge together the IN and OUT filter pads by soldering on a wire. These are usually the pads in the center of the filter. If the pads got completely removed when you ripped off the filter, then you can still bridge the gap by soldering to the connected components.

NOTE: Not all GPS antennas are the same! Some may have smaller looking filters and some may require a capacitive bridge instead of a wire bridge. See Adams video for an explanation. If the filter is connected directly between the two amplification transistors (no capacitor block already in place) then you should use a ~100pF capacitor instead of a wire bridge.

Bandpass filter removed and IN and OUT pins connected together with a wire short
Bandpass filter removed and IN and OUT pins connected together with a wire short.

Now solder back on the reflector and put the whole thing back into the plastic case and your done! You may also want to experiment with reducing the length of the lossy RG-174 coax used on most cheap active GPS antennas, or with instead using lower loss coax like RG6.

Solder the reflector back on.
Solder the reflector back on.

The GPS antenna is not as good as the dedicated L-band patch antenna with LNA(s), but it was still good enough to decode the signal. See below for a waterfall comparison between the two antennas. Mouse over to see the GPS antenna waterfall. The STD-C NCS channel is the first thin line to the left of the red tuning bar.

In this setup we used two LNA’s on the Outernet patch antenna, and 3M of extension RG174 (RG174 is very bad at L-band frequencies which is why we needed to use two LNA’s, if you use RG6 cabling or similar then only one LNA should be needed). Without the extension cable only one LNA was needed for similar SNR levels. The GPS antenna used the 3M of RG174 coax that it came with. You can also improve the reception with a GPS antenna by placing it on a large metallic surface, like a cookie tin. Using the metallic surface may be the difference between getting decodes and not.

L Band reception with the air gap patch antenna, two LNA’s and 3M of RG-174 coax. Mouse over to see how the waterfall looks with the GPS antenna.

 What else is at L Band?

Outernet is another signal on L-band which will soon provide public file downloads, and news and weather services. At the moment they are beta testing their service. See our tutorial at rtl-sdr.com/rtl-sdr-tutorial-receiving-and-decoding-data-from-the-outernet. (Due to be released September)

There are many signals at L band frequencies coming from Inmarsat and other satellites like Iridium. You may be interested in Iridium pager decoding which occurs at 1.626 GHz (this is even more difficult to receive with the RTL-SDR, but we think that it should be able to be done without a downconverter). Some YouTube talks and links about decoding Iridium can be found here and here, plus notes by a user on our forum here.

25 comments

    • gnar :3

      I might be wrong, but i guess you gotta remove this big element with “1575P” written on it, and bridge some pads. Just look at the guide, seems to be the same one.

      73

  1. Danny Llama

    I have an excellent signal on L band, and am trying to decode the Sat C messages. I am using both TDMA-DEMO and the Java app Tekmanoid. To say it’s frustrating is an understatement. The TDMA-DEMO app decodes the first frames of many messages, but the Tekmanoid just shows the frames but no EGC messages. I am interested how the author of this article was able to decode the EGC messages. Incidentally I can decode Inmarsat Aero easily.

    • Hicham BELMEJDOUL

      Or you sure you are connected to the good satellite ? From France I’m connect to AOR-E. Verify the direction of your antenna. You can see the ACCARS inmarsat in 1545mhz and not 1541mhz EGC. the difference between 2 sat is some degrees…

    • Alex

      Danny,
      If the frame number on the right keeps incrementing you are doing fine. (and you are on the NCS channel)
      You just have to wait for the EGC messages to appear

      /Alex – tekmanoid

  2. Charles Middleton

    Hi all,

    Am succesfully runnuing piAware on an RTL-SDR stick, and am active in the FlightAware forums, so know a little bit about this area.

    Never done anything with satellite or SDR# like this though.

    I (believe) succesfully removed and bridged the filter from the GPS antenna.

    However, when I tried to follow the tutorial re SDR#, even though I followed each step and matched the settings shown in the screen grab, my frequency graph looked nothing like that shown above.
    Interestingly, JAERO got to the stage where it had a green light on both Volume and Signal, but never got any data – the java tool above also showed activity in the “volume” area, but never got any data.

    I apreciate a blog post like this may not be the ideal place for a full discussion – are there any appropriate forums for such a discussion / support / to get involved with?

    Thanks – looking forward to getting this working! :)

  3. Mario

    I share Bill’s frustration. Can’t get the Tekmanoid program to work, seems there is no option to select the sound card for piping in the audio. The other software, when attempting to download has some severe warnings, sort of like a software armageddon if downloaded. Oh well, maybe it’s me, will keep trying. Great post though.

    • Paul

      You can usually set the audio source, in Windows, from the Mixer application. It usually has the recording device options , so if you do have Virtual Cable installed it should show as a source .

  4. Bill

    Thank god for these posts! I thought I was going nuts! I have been trying to find info on this program, and the virus. is it possible to buy the full version(Happy to pay even double) How , Where, Who?????? I’m Handicapped and in a wheel chair and this is a important hobby for me. Any info on sucsessfully down loading std c decoder would be greatly appreciated!!!!! Thank You! Bill.

  5. Mario Filippi

    Great great article. A few things that might help when building that RHP helical. First off, a spray can of Febreze has the exact diameter needed for making the coil. Next, if you get some plastic straws (I used at least 2) and make holes in the straws (I used a heated wire to melt the holes) at the correct spacing, you can thread the straws through the coil to stabilize the windings. Then you can epoxy the coil at the holes in the straw for a strong fit. For the counterpoise (ground plane) I got a 1 x 1 foot piece of galvanized sheet metal at Home Depot and cut it to size.

    My plan is to use the RHP antenna and a 1 meter satellite dish aimed at 15.4W (Inmarsat F2). Coincidentally, Telstar 12 is a FTA Ku band satellite at 15W, so the plan is to first find that and I should be near F2. Just a note, Invacomm makes a LNB for both linear and circular polarization, the QPH-031 which has outputs for both linear and circular polarization, but as per the specs the output frequency is only up to 1.45 GHz. However it is worth a try to see if it will work. Again a great article, thanks!

    • Don DeGregori

      With the demo decoder, what can one see? Only the header info, or possibly the full message, like the many shown in the 1st post and then in the tutorial post. I think I need the paid version of the decoder to see all of the message. If so, probably the demo is good enough for me.

      • admin

        With the demo (and alternative mentioned) you can see full public safety broadcast messages, like the ones shown in the article. You just cannot see the private messages.

        • Don DeGregori

          Thanks about what I can copy. I live on west coast of Southern California. I’m thinking Inmarsat 4-F3 would be an easy aim, for its azimuth is about 150 degrees and elevation about 45 degrees. Am I correct?

  6. DE8MSH

    Hi,

    what if you put the GPS antenna in the focus of an satellite dish? This should give a plenty amount of power to the antenna. You have to try the real distance / focus where to place the GPS patch thing.

    Good luck.

    73 de DE8MSH

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>