Receiving Weather Satellites on a Raspberry Pi or Linux
by tekmakeruk in Circuits > Raspberry Pi
1401 Views, 4 Favorites, 0 Comments
Receiving Weather Satellites on a Raspberry Pi or Linux
I found it necessary to create this article for a few reasons
- Most of the YouTube/Instructables focus on aerials or only Windows installation
- The ones that are for the Raspberry Pi are out of date
- A url has changed which prevents WxToImg updating
So this article is all done on a Raspberry Pi 4 4Gb with 64 Bit Raspberry OS though it should work on 32 bit and Raspberry Pi 3 versions too with no mods.
The full video to accompany this is at https://youtu.be/23HufpD1cu0 it should work for 32 bit and 64 bit versions.
As so much had changed, and I have never had successful reception of weather satellites. So I spent some time sorting out all the stages to do it and as a bonus and they no longer require building from source code.
Supplies
Here is what you will need -
- A budget SDR such as NooElec SmartSDR or RTL-SDR blog V3 or other clone
- An aerial to receive 137 Mhz to start with
- SDR Software such as GQRX or SDR++ (that does need to be compiled)
- Specific settings on your SDR software for satellites
- WxToImg to decocde the downloaded audio files into images and overlay land and latitude/longitude grids and optionally colour the image in.
- Satellite frequency and location tracking software GPredict, this will show when a satellite is approaching, control the SDR frequency and even auto-record multiple satellites.
- Audacity - I spent hours working this out, it is thanks to Ben Seaton-Klerk in the Facebook APT group for his suggestion. We need to convert the audio files to 11025Hz sampling, details below.
Receive a Satellite Signal
All of this article is UK centric and focussed on orbiting satellites that are visible from out location on VHF 137 Mhz band. It could also work for the ISS for downlinks and Amateur Radio transmissions. Using other frequencies and locations you could monitor many other satellites but may need Microwave antenna and down converters, so it is not covered here. The satellites we will focus on are NOAA 15, NOAA 18 and NOAA 19. You can see where they are by visiting https://www.orbtrack.org/#/?satName=NOAA%2018 and they make several passes each day, though they may not be directly overhead. You may be able to hear their signals but it is harder to get noise free transmission.
Get an Aerial
If you already have an aerial for 144 Mhz or Airband 118-136 Mhz then you can get started. As we are not transmitting it is less important, we can improve this later if we desire.
If not there are many articles such as this https://lna4all.blogspot.com/2017/02/diy-137-mhz-wx-sat-v-dipole-antenna.html which you could built in an hour from a scrap electrical cable or welding rods (1.2metres of) an electrical connector (choccy block) or an SO239 socket, some plastic pipe and wood off-cuts.
To be honest I got best results with my 2m/70cm Diamond X50 clone. This does have an issue that when the satellite is directly overhead the signal nulls out, but it is early days.
I did build a bare bones the V-Dipole but it wasn't very good as I could not place it in an optimum position. I'll try again later.
Remember there is no right or wrong answer with aerials, it is what works within your budget, location and needs. So do not be afraid to experiment or cobble stuff together from scraps rather than spending money. That is half the fun!
SDR Software
I'll assume that you already either have or know how to install GQRX, SDR++ other other SDR software and driver. If you do not have it yet simply follow my guide at
There are enough articles on YouTube and TekMaker http://www.tekmaker.co.uk/p/building-sdr-from-source-code-on.html
Tune in one of the following frequencies
NOAA15 137.62 Mhz
NOAA18 137.9125 Mhz
NOAA19 137.1 Mhz
You may also be able to pick up Meteor M-N2 on 137.1 Mhz, 137.8 Mhz or 137.9125 Mhz, confusing eh? You won't be able to decode Meteor without a QPSK decoder. I also found an unidentified weak one on 137.558 Mhz, anyone know what that is?
Settings, now I thought just treat it as FM Narrow. WRONG!
The signal is 35-38 Khz wide FM so you will have to set the filter manually to this. When you are decoding be sure to set the squelch off or you will have huge bits missing from your images.
Reception - Where's That Satellite?
Before you set up a lot of other software, be sure that you can receive and record the satellites audio, to do that you need to know where it is and when it is coming over your location. Visit https://www.orbtrack.org/#/?satName=NOAA%2018 and try each of the NOAA 15,18,19 satellites and you will soon see how important it is to understand UTC time and Azimuth angles. It is possible to monitor some satellites using a Boafeng hand-held/walkie talkie which is great if you are in a bad location, you will not be able to record the images as the bandwidth is way too narrow to it is satisfying to know they are out there. This web page is just to help you get started. You can now get set up to record the audio, you need about 5 - 10 minutes of clear audio to pass to the image decoder, so listen a few times and see how your aerial responds as the satellite passes over. Save the files where you can find them again.
Decode Recorded Audio - WxToImg
Sadly this software is no longer being maintained, though if you have 64 Bit Raspberry Pi OS it is included in the Raspberry Pi repositories, so simply
sudo apt install wxtoimg
(all lower case).
If you have 32 Bit Raspberry Pi OS, go to https://wxtoimgrestored.xyz/downloads/ and find the entry in Release Notes for beta version 2.11.2
Get this one -
- Linux ARM .deb package – EXPERIMENTAL! for Banana Pi, Raspberry Pi running Wheezy and other ARM computers running Linux with dpkg support (8.34MB)
Simply save the file and double click it once downloaded. It's a deb package and installs easily.
In a terminal type
wxtoimg -G
(yes upper case G)
You will need to find your longitude, latitude and elevation. If you are an amateur radio operator you probably have it on QRZ.com, if not find your location on Google Maps and right click it, then click the latitude and longitude and paste it to a text file so you can split the co-ordinates. If you do not know your elevation then go to Bing Maps,
find your location then click the square in the top right hand corner and select Ordnance Survey, zoom in and behold - contours! Copy the number of the nearest line to your elevation setting. This allows the software to overlay map data on your weather images correctly as the image is not always from the same location as the satellite tracks overhead. At time of writing I still do not have a clear image. One issue is that the frequency changes due to doppler effect as the satellite passes us, just like a Police car or Ambulance siren changes pitch as it passes.
One issue is that wxtoimg tries to downoload keppler files from celestrak.com, now that domain has expired and is not hosting the precious weather.txt file that we need, it is on http://celestrak.org/NORAD/elements/weather.txt now of course you can download it but you have to do this at least once a day, the other issue is putting the file in the right location as the update Keppler file location cannot be changed in the Linux version of the software. There is a fix for the Windows version.
TekMaker to the rescue!
So I did a lot of research and wrote a shell script to automate the whole process, instead of downloading the file, moving and overwriting it to the correct location I wrote the following script called weather.sh, you can download it from https://github.com/TekMaker/weather-satellite.
Here is how it works
## weather.txt auto-downloader by TekMaker ## the issue is that the Weather.txt file from Celestrak has been moved from celestrak.com to celestrak.org ## this will start the download, move it to the right place and start WxToImg all in one easy go. ## This is neccesary as the Linux version of wxtoimg does not have an accessible setting to change the weather.txt file url ## store this file in your /home folder and run it as sh weather.sh cd Downloads wget http://celestrak.org/NORAD/elements/weather.txt ## downloads the updated file sudo mv weather.txt /usr/local/lib/wx/tle -f ## moves and overwrites it in wxtoimg settings wxtoimg -G ## run wxtoimg in graphical mode
everytime you want to decode weather satellites just run the script from the terminal,
sh weather.sh
No sudo is needed.
In WxToImg click file, record, then set up like I have, click ok when done.
Click AutoRecord when done.
The recording will stop and start automatically when the signal is adequate.
The noise bars are due to the satellite passing overhead, my (Diamond X50) antenna is vertical and reduces the signal overhead and the lower one is the signal being obstructed probably by my house or garage. I will be experimenting a lot more with aerials.
Tracking Satellites - GPredict
Like most issues we can solve the doppler effect, tracking and timing with software, GPredict is what we will use and it is also now available from the Raspberry Pi repos so simply
sudo apt install gpredict.
Gpredict is run from the terminal. The first job is to set up your radio, go to Edit, Preferences , Interfaces. Find the port number for your radio's remote or network control and find the port number, there should be no need to change the ports ip address.
Hint: it is 7356 for GQRX and 4532 for SDR++.
Enter this into GPredict - Edit, Preferences, Interfaces either default or create a new one. I have two.
Set up a ground station (your location) by Edit, Preferences, General then either edit the default or create a new one, mine is my callsign.
You could enter the nearest city, but the list is sparse. Enter either your Cambridge locator square or latitude and longitude (no, I do not live really there).
Now we can set up some satellites, or rather groups of satellites. Go to file, then either Open Module, or New Module. Or click the 3 lines on the right hand side of the map and click configure. Name the module, select your ground station and add satellites from the list by entering their name(s) and clicking the button to add them to the right hand list.
Build as many modules as you want, ideally where satellites do not overlap as this will restrict the time you pick them up for later. I recommend NOAA 15, 18 and 19 as they swoop over the UK pretty frequently. You might find some Meteor M2 sats too and I even discovered and unlisted one.
Time to run a module - select a module on the top bar, then go the the three lines menu on the top right hand side of the map and select a satellite, choose until you find one crossing your location soon, NOAA 18 and 19 run a few minutes apart. The ISS has a weird orbit so is hard to find for days on end then its crosses over a lot. From the same menu select Radio Control, on the right hand side in Settings select your device (SDR) and click engage. On the left hand side select a Satellite then click track.
set squelch off on GQRX and your radio will being to tune, the AOS number is the minutes and seconds AOS is arriving overhead sky, and LOS is leaving overhead sky, you can adjust the azimuth that you want to start recording so as to not record hours of audio. Be sure to have APT selected.
To allow control of recording you need to enable this in radio control, edit, references, select a radio, then tick both AOS and LOS boxes.
If you want GPredict to work autonomously, from the top right hand menu select Autotrack and tick it, this should tune and control recording on GQRX or other radio automatically.
If you want to know more about WxToImg then Carl Reinemann has a supberb website at https://usradioguy.com/ and the WxToImg documetation at https://usradioguy.com/noaa-apt-reception/#wxtoimg, thanks Carl!