NOAA weather satellites broadcast pictures of the Earth using in an Automatic Picture Transmission (APT) signal. I created a program to handle all parts of receiving the APT transmission, from tracking to decoding.
APTbot is designed to be run on a Raspberry Pi and use the RTL-SDR dongle.
Starting this project, I wanted to create a system that would predict, record, and decode NOAA weather satellites so I didn't have to sit outside for half an hour every day to record the satellite passes. There are programs out there that can sort of do this, but they're complicated, lacking, and not completely hands-free. APTbot works extremely well for me.
Tracking the Satellites
APTbot will track the NOAA satellites (15, 18, 19) and determine the intercept that would result in the best signal. Then, it waits until the satellite is in range to begin recording.
After waiting for the satellite to come in range, APTbot will automatically start recording the satellite on the correct frequency.
Once the satellite has gone out of range, APTbot will then transcode the output to a wav file and decode it. noaa-apt and WXtoIMG are used to create enhanced images.
APTbot comes with an optional web UI to display the decoded images and the upcoming intercepts.
- After a pass, the resulting images will be uploaded
- The next intercept is displayed
- Previous intercepts are archived and available for download
APTbot manages updating the prediction program (Predict), where TLE files are downloaded from the internet and added to the database. Predict is very finicky so this helps smooth out the operation.
Start APTbot like this:
./noaa-capture/automated_noaa.py --start fm
This will calculate the next intercept and start the countdown.
I suggest you verify the predictions with gpredict. If your AOS in APTbot don't match gpredict's you need to update the TLEs or your ground station location in Predict is incorrect. If you think the ground station is incorrect, try changing the negative signs of the lat/lon.
TLEs should be updated at least once a week and at most daily.
If you are having trouble, run it with the
--verbose flag to see what its doing.
To enable bias-T:
rtl_eeprom -b y.
APTbot will automatically decode the resulting wav file. What enhancements are used is determined by config values
The only decoder that supports enhancements is WXtoIMG. To set this as the decoder, set the key
To set what enhancements are used, use
wxtoimg_enhancements. The possible values and an explantation of each one are here: WXtoIMG Enhancements.
noaa-apt: Very simple, very reliable. Produces very basic images. Will always try to produce an image regardless of signal strength.
WXtoIMG: Feature packed, produces quality images. Has many enhancements to output fancy images. Will fail to read signal if the strength is too low.
I suggest using both decoders.
setup.sh, which does:
- Installs dependencies
- Installs pip packages
- Installs the RTL-SDR blog drivers for the RTL-SDR v3
- Blacklists unnessesary kernel drivers
- Set up Predict:
- Enter the information Predict tells you to
config.yamland modify these fields:
- If you're using the web ui:
DATABASEDIRneeds to be a www-data writable path for the database file
- Upload the files in
Websiteto a webserver
- Update Predict's kepler database:
- To start on boot:
- Edit file paths in
Other/APTbot.cron.sampleto match your setup
- Add to crontab:
chmod +x /path/to/noaa-apt-automated/Other/APTbot.cron
- Edit file paths in
- Make the program more modular so that it is easy to reconfigure APTbot for other (non-NOAA) satellites.
- Logging to file
- Fancy terminal colors
- Make decoding optional
- Option to enable/disable the basestation location in WXtoIMG
- Better cross-platform, less pi-specific features/settings/code.
- Make this work well in a remote, unattended setup. (send error messages to server, etc)
- Use elevation instead of range
Images recorded with APTbot.