Automating Meteor-M N2 reception
I recently started playing with Meteor-M N2 reception. The lack of country
boundaries was annoying, so I tried writing my own program to overlay
boundaries, but it wasn't as accurate as I would like. Then I mentioned
this to Douglas Deans (@GM4VZY on Twitter) who pointed me to this site http://happysat.nl/Setup_Meteor/Setup.html
where all is explained, including completely automated reception. However, like others I found the information
rather overwhelming at first scan, and it took a little while to get it all
working. And the day after it stopped, after I made one small
change. Arrgh! Working now, though. Apply the well-known
advice - "If it works, leave it!".
These are my own notes, with my own errors. Please help me to
You need an antenna, a 137 MHz SDR receiver compatible with SDR#, and a
PC. With PCs these days I suggest at least 8 GB memory and a quad-core
processor. All the below is based on Windows 10.
SDR#, the Meteor plug-in, the Tracking DDE Client plug-in, tracking software
such as WXtrack (or Orbitron), LRPT Decoder, MeteorGIS. All free (although
there are extra facilities in the registered version of WXtrack). Ensure
that you can use your dongle with SDR# to receive on 137.1 MHz. Set
up the DDE plug-in according to the instructions on the HappySat site.
Processing operation - the steps involved
I found this one of the more poorly explained aspects. It's not complicated,
and perhaps I simply haven't yet found the best Web site. Graham Hunter,
has kindly provided some additional notes included below in edited versions and
tweaks throughout the description.
- WXtrack provides a DDE output which says whether the Meteor-M N2 satellite
is visible or not. You should also update your Keplers at least ever
week so that the pass times are reasonably accurate.
Note that the Doppler-shifted frequency from the DDE is not used,
just the satellite name and elevation.
[GH] SEND_TRACKING_FREQUENCY_ON (and itís companion OFF command) is used
only by Meteor satellites when decoding LRPT signals. This does NOT change the received frequency of SDR# but provides the
Doppler-corrected frequency to the Meteor Demodulator plug-in. If the tracking checkbox is checked, the
plug-in now uses the corrected frequency to help the PLL lock quicker!!
- [GH] RADIO_TRACKING_FREQUENCY_ON (and itís companion OFF command) is used for all other satellites, eg NOAA, ISS, FOX, SPROUT etc to provide doppler corrected frequency to SDR# which then changes frequency to follow the
Doppler shift as the satellite passes. The two commands are mutually exclusive, use one
or the other.
- When the DDE output from WXtrack shows that the elevation threshold (set
in the Tracking DDE client plug-in) is exceeded, it starts the receive
function in SDR#, and runs a
command script (.BAT file) which in turn starts the MeteorGIS program, which
looks for a lock indication from the Meteor Demodulator plug-in. By
now you should see the waterfall start scrolling in SDR#.
- As the signal level and SNR increases, eventually the Meteor Demodulator
plug-in will lock, and communicate this via the TCP link to the
- Once MeteorGIS recognises that the Meteor Demodulator is locked, it will
start the LRPT Decoder program, with parameters written by the MeteorGIS
[GH] The MeteorGIS program has its own configuration program which
contains several tabs.
- General relates to the basic program: your ground station location,
map text, and which enhancements you require.
- M2_LRPT_Decoder includes settings for its path, image find and save
locations, and satellite time etc.
- Treatment controls replacement of blank lines.
- Shapes controls the GIS part, mapping, shapes and parameters etc.
- You will then see the incoming signal decoded in real-time, as it comes
- Once lock is lost, the decoding will continue.
- When the satellite drops below the elevation threshold, this is
communicated to the LRPT Decoder, which the saves its resulting image files.
- The LRPT Decoder generates a list of Ground Control Points (.gcp files),
giving the predicted sub-satellite points for each image line, and for each
sensor location along the scan. To save computation time and file
size, only each tenth line and tenth pixel are processed. Somehow this
information is saved, either by the LRPT Decoder program or by
MeteorGIS. It's visible as plain text in the panel there the 125 image
has been created, in the Status tab.
- The MeteorGIS program can then combine multiple images into geo-located
data such as the image at the start of this page. You will see lots of
operations in the command window, and this can take several minute.
While waiting for a pass....
Configuring the software
WXtrack must be running, and if your PC runs continuously, you need to stop
and restart WXtrack and SDR# over midnight, e.g. at 01;20 UTC. You can
create a script to do this and schedule it to run at a convenient time.
REM Job to restart WXtrack and SDRsharp overnight
TaskKill /IM SDRSharp.exe
waitfor neverhappens /t 15
TaskKill /IM SDRSharp.exe
waitfor neverhappens /t 15
TaskKill /IM WXtrack.exe
waitfor neverhappens /t 10
start "Running WXtrack" /D C:\Tools\SatSignal\WXtrack\ WXtrack.exe
waitfor neverhappens /t 15
start "Running SDR#" /D C:\Tools\sdrsharp-x86-1732\ SDRSharp.exe
Set WXtrack so that has just Meteor-M 2 is in the active list, and that orbit
prediction is for 7 days ahead. Tracker set to CX6DD WiSPDDE Client, and
check the DDE Uppercase and DDE always options. I suggest Minimum pass
duration be set to 150 seconds and 5 degrees elevation.
In the screen-shot below I have also included NOAA-19, as that transmits on
the same 137.1 MHz as Meteor-M N2 and it is useful to know whether there might
be a conflict. As I'm using the registered version of WXtrack the
auto-switch and satellite prioritising are active but not used in this
application. I've included a screen-shot while waiting for a
pass. Note the Large Text option designed for reading from a distance, the
font and location are adjustable to suit your requirements, and I set the
program's map origin to +90 degrees so that my region of interest is to the left
of centre. Mercator projection is used here.
Set up the DDE plug-in according to the instructions on the HappySat
site. There are two items to set, the Config which defines the DDE communication
parameters, and the Options which define what satellite to expect,
and what happens at start and end of the pass. The effect of the skinning
of SDR# means that the labels may be difficult to read, at least until the
plug-in is updated. Style over substance?
First I suggest setting the DDE source - here set to WXtrack:
With this extended DDE plug-in there is a scheduling option which requires
configuring. I set the required elevation to 6.9 degrees as I do get a lot
of interference (see the SDR# picture!) so my usable passes are shorter than
might be expected. These are commands which work. There's nothing
after the "start_program" line it's just an artefact of the
scroll-box. I haven't yet configured for Meteor-M2-2 as the satellite was
in a non-operational state at the time, and it was difficult enough to get one
satellite working! I did include a M2_Decoder_ini_Line, although MeteorGIS
generates or modifies the .INI file for the LRPT Decoder. So any changes
you make to the .INI file there may, or may not, get overwritten.
Note: The satellite name in the Keplers may contain a space (e.g.
Meteor-M 2) but some DDE software cannot accept a satellite name containing a
space, so the DDE string will have METEOR-M-2 for compatibility. You can
see that in the screenshot below. Other software may use different
[GH aside] The current versions of Tracking DDE Client, MeteorGIS and LRPTv56 allow some degree of AUTOMATION by setting some parameters in the Schedule config to AUTO or automatically presenting the value to the required
program - for example:
The last two lines (more can be used) allow you to just change parameters in the one spot, rather than in different programs.
The settings above will start the MeteorGIS program, configured as mentioned
on the HappySat web site. You could instead start the LRPT Decoder program
if you don't need all the processing offered by MeteorGIS, or even start no
program if you want to process the .S files yourself.
[GH] Should you have an SDR which has a central spike, you may wish to
set the radio_center_frequency away from the nominal satellite frequency. I
would set the bandwidth a little larger at 120 kHz, and set the
M2_decoder_init_Line to <rgb=125> as the satellite normally produces
either 123 or 125.
Be sure that the TCP Socket box is checked, without it the decoder won't get
the received data from SDR#. You can check the File button as well if you
want to save the .S files for further processing.
There are a large number of options to the MeteorGIS program, so many that a
special MeteorGIS_Configurator.exe program is also supplied.
No different to a Setup tab, I suppose. There is a zipped copy of the .INI
from my own working system here, and it
should be renamed default.ini - ensure your Explorer is set to show file
extensions, and that after download you right-click, Properties, Unblock the
file before use. Please note that the file is rewritten during use of the
You will see many of the options in the two .INI files I supply are set by
the configurator program. Directory structure will obviously be different.
Aside: With an SSD system disk I would normally recommend a separate
HDD data disk, however that's not possible with the system I am using.
After editing the configuration, be sure to save it, otherwise your changes
will be lost!
LRPT Decoder program
The LRPT decoder .INI file is also rewritten by the MeteorGIS program, so I
can supply a zipped copy of my own .INI file
for guidance. Again you will recognise the elements which can be set by
the automatic running of the MeteorGIS.exe program.
There is nothing fixed about the directory structure, but I've tried to stick
to that used on the HappySat web page. I found the information there a
little ambiguous possibly as the result of typos or changes in preferred
structure which happened over time. Remember the Tree command? And
Tree /F? I've provided a tree listing and an edited tree /F with the files
listed. It may help when studying the .INI files.
│ └───02 etc.
│ │ comp-UTM-2020-1-19-9-49-45-771_IR.jpg
│ │ comp-UTM-2020-1-19-9-49-45-771_IR_rainfall.jpg
│ │ comp-UTM-2020-1-19-9-49-45-771_RGB.jpg
│ │ comp-UTM-2020-1-19-9-49-45-771_RGB_rainfall.jpg
│ │ comp-UTM-2020-1-19-9-49-45-771_thermal.jpg
│ │ thumb_comp-UTM-2020-1-19-9-49-45-771_IR.jpg
│ │ thumb_comp-UTM-2020-1-19-9-49-45-771_IR_rainfall.jpg
│ │ thumb_comp-UTM-2020-1-19-9-49-45-771_RGB.jpg
│ │ thumb_comp-UTM-2020-1-19-9-49-45-771_RGB_rainfall.jpg
│ │ thumb_comp-UTM-2020-1-19-9-49-45-771_thermal.jpg
│ │ thumb_UTM-2020-1-19-8-10-33-710_IR.jpg
│ │ thumb_UTM-2020-1-19-8-10-33-710_IR_rainfall.jpg
│ │ thumb_UTM-2020-1-19-8-10-33-710_RGB.jpg
│ │ thumb_UTM-2020-1-19-8-10-33-710_RGB_rainfall.jpg
│ │ thumb_UTM-2020-1-19-8-10-33-710_thermal.jpg
│ │ thumb_UTM-2020-1-19-9-49-45-771_IR.jpg
│ │ thumb_UTM-2020-1-19-9-49-45-771_IR_rainfall.jpg
│ │ thumb_UTM-2020-1-19-9-49-45-771_RGB.jpg
│ │ thumb_UTM-2020-1-19-9-49-45-771_RGB_rainfall.jpg
│ │ thumb_UTM-2020-1-19-9-49-45-771_thermal.jpg
│ │ UTM-2020-1-19-8-10-33-710_IR.jpg
│ │ UTM-2020-1-19-8-10-33-710_IR_rainfall.jpg
│ │ UTM-2020-1-19-8-10-33-710_RGB.jpg
│ │ UTM-2020-1-19-8-10-33-710_RGB_rainfall.jpg
│ │ UTM-2020-1-19-8-10-33-710_thermal.jpg
│ │ UTM-2020-1-19-9-49-45-771_IR.jpg
│ │ UTM-2020-1-19-9-49-45-771_IR_rainfall.jpg
│ │ UTM-2020-1-19-9-49-45-771_RGB.jpg
│ │ UTM-2020-1-19-9-49-45-771_RGB_rainfall.jpg
│ │ UTM-2020-1-19-9-49-45-771_thermal.jpg
│ │ About_.s.txt
│ │ ChangeLog.txt
│ │ CLUT.png
│ │ default.ini
│ │ default.ini.bak
│ │ defaultENG_configurator.mgis
│ │ EGIS.ShapeFileLib.dll
│ │ geomutil_lib.dll
│ │ geomutil_libx64.dll
│ │ LemonMilk.otf
│ │ logs.txt
│ │ manual.ini
│ │ manual.ini.bak
│ │ Manual_M2_GIS.bat
│ │ MeteorGIS-default.ini.zip
│ │ MeteorGIS.exe
│ │ MeteorGIS_Configurator.exe
│ │ MeteorGIS_x86.exe
│ │ ne_10m_geography_regions_elevation_points.dbf
│ │ ne_10m_geography_regions_elevation_points.shp
│ │ ne_10m_geography_regions_elevation_points.shx
│ │ ne_110m_graticules_10.dbf
│ │ ne_110m_graticules_10.shp
│ │ ne_110m_graticules_10.shx
│ │ ne_50m_admin_0_boundary_lines_land.dbf
│ │ ne_50m_admin_0_boundary_lines_land.shp
│ │ ne_50m_admin_0_boundary_lines_land.shx
│ │ ne_50m_coastline.dbf
│ │ ne_50m_coastline.shp
│ │ ne_50m_coastline.shx
│ │ ne_50m_lakes.dbf
│ │ ne_50m_populated_places.dbf
│ │ ne_50m_populated_places.shp
│ │ ne_50m_populated_places.shx
│ │ ne_50m_rivers_lake_centerlines.dbf
│ │ passList.txt
│ │ RAIN.png
│ │ README.txt
│ │ thermal.ini
│ │ therm_pal.jpg
│ │ watermark.txt
[GH] I use separate folders for each program under a main level folder.
\Wxtrack (or Orbitron)
Iíve even included WXtoImg and its sub folders so all weather satellite
programs for automatic decoding are in the one main folder etc. The
advantage of this Iíve found is that with the release of a new version of
program, thereís relatively little changes to be made in configurations to
have the new version active, yet if it fails miserably, itís easy enough to
revert back! Caveat Emptor!