slide2
slide3
slide4
slide5
slide6
slide7
slide8
slide9
slide10
slide11
slide12
“One glance at a book and you hear the voice of another person, perhaps someone dead for 1,000 years. To read is to voyage through time.”
― Carl Sagan
GOES-R over the earth

Receiving the digital stream from geostationary satellites.

Geo Stationary Satellite Reception

Updated 7.13.2023
There’s a lot of information here, so I broke it down and listed it in a table of contents.
Table of Contents

After building a system for receiving Polar Orbiting Satellites, I thought I might try and build a system to receive geostationary GOES 16 or 17 and 18 imagery. GOES-18 was launched in January 2022 and is now in orbit. I am posting the preparations necessary for receiving imagery from this GOES-West replacement here: GOES-T 18 Preparing for a new satellite


What is a GOES satellite?

Relative Positions of Earth-Orbiting Satellites

GOES satellites continually view the Western Hemisphere from approximately 22,300 miles above Earth. GOES satellites are designated with a letter prior to launch and renamed with a number once they reach geostationary orbit.

The GOES-R Series is a four-satellite program including GOES-R, GOES-S, GOES-T, and GOES-U. The GOES-R Series Program is a collaborative development and acquisition effort between the National Oceanic and Atmospheric Administration (NOAA) and the National Aeronautics and Space Administration (NASA) to develop, launch and operate the satellites. The locations of the operational GOES-R Series satellites are 75.2⁰ W and 137.0⁰ W. These shifts eliminate conflicts with other satellite systems. NOAA also maintains an on-orbit spare GOES satellite (GOES 15) at 105⁰ W in the event of an anomaly or failure of GOES-East (16) or GOES-West (18). GOES 15 is activated and used twice a year currently to supplement the cooling issue on GOES-17. Only GVAR is used now with GOES 15, not HRIT, but relayed imagery from GOES 15 can be received via GOES 17/18. UPDATE: 01/2022 – GOES 18 is replacing GOES 17, and G17 will become a backup, On-Orbit Spare.

GOES-13 is back again as a fully functional Satellite and it has a new name The Electro-Optical Infrared Weather System – Geostationary, or EWS-G1. It will deliver weather information to the Space Force division of the U.S. Air Force. “The little satellite that could”, propelled itself in a seven-month journey from the skies over New York to the skies over New Delhi, a distance of nearly 40,000 miles along the arc. GOES 13 is now being decoded by other enthusiasts, BUT It will NOT work with the information I present on this page. Information for Decoding EWS-G1 is here

Launch of GOES-R

For the GOES-R system,the new transmission system was accomplished by combining the two services into a single service (HRIT -High Rate Information Transmission) with a data relay capacity of 400Kbps. This compares with the previous LRIT service at 128 Kbps and EMWIN (Emergency Weather Managers Information Network) that transmits at 9.6 kbps on the GOES I-M (8-12) series and 19.2 kbps for the GOES-NOP (13-15) series.
The new service is called HRIT/EMWIN.

Through the technology of Software Defined Radio, the receiver consists of a modest amount of hardware (an antenna, low noise amplifier, RTL-SDR, and a computer interface) at a very low cost. The bulk of the traditional signal processing, error correction decoding, and data recovery and display can be done with a conventional personal computer or, with a Raspberry PI.  Since they are at a fixed point in space, you do not need to track them, however, you will need a dish antenna to receive the 1694.1 MHZ frequency with a 1.205 MHz bandwidth. The Advanced Baseline Imager is the primary instrument for imaging Earth’s weather, oceans, and environment. ABI views Earth with three times more spectral channels, four times the resolution, and five times faster scanning than previous GOES satellites. It is through this ABI system that I decode the imagery.

To amplify and filter the weak satellite signal prior to demodulation and decoding, it’s optimal to have an LNA (low-noise amplifier) placed as close to the antenna feed as possible.  Also, some filtering should be applied to suppress interference from terrestrial transmissions.  Power for the frontend amplifier(s) can be easily provided with DC bias over the coax feedline, or via a separate power supply.

With all that being said, a reminder: You need to be in a location from where you have a direct line of sight to the Satellite! Either GOES 16 or GOES 17/18 (or GK-2A if you’re in the Eastern Hemisphere)

GOES Transmission Details:

Transmission HRIT/EMWIN 400 kbps
Freq 1694.1 MHz
Bandwidth 1.205 MHz
Modulation BPSK (Binary Phase Shift Keying)
Polarization Linear – Vertical offset

Just a note that there are other types of transmissions and imagery from these satellites, GRB, GVAR to name a couple. Because of the complexity and higher cost of receiving these images, I am ONLY focusing on the HRIT Imagery on this page. You can find the other types of reception on other pages on this site.

Transmission from GOES on L-Band

There are a few different software solutions now to obtain data and imagery from geostationary satellites. I am focusing on the tool known as GOESTOOLS. But there are other tools you may find useful as well.

  • Satdump A generic satellite data processing software.
  • USASatcom. XRIT Decoder (HRIT from GOES on L-Band), XView, WX Sandwich Maker. XHRPT Decoder (HRPT from various Weather Satellites on L-Band
  • GOESTOOLS – Shown on this page
  • GOESTOOLS on ODROID rather than a Pi or LINUX

Building and programming the receiver

The first step was gathering the necessary parts.  Since I already had most of the parts and pieces in my repertoire of radio stuff it wasn’t too expensive at all for me, But here is a list of the parts I used

2018-2019 Pricing

  1. Raspberry Pi Model 3 B+  Or PI 4 with a 32 (or larger) Gb MicroSD Card $35-45 (those were 2019 prices….now….Ouch!
  2. An RTL-SDR dongle: $30-$50
    • RTL-SDR.COM V3 ~ or
    • NooElec NESDR SmarTee ~ or
    • NooElec NESDR SmarTee XTR ~ This is what I used since it has always ON bias tee for powering the LNA
  3. NooElec LNA SAWBird+ GOES 1.69GHz $35
  4. A 1.7 GHz parabolic grid antenna $65-$120
  5. N-Male to SMA Male adapter $5
  6. Cable(s) $10
  7. SMA Male to Male $ 2
  8. Right Angle USB 6 inch Jumper $5.99
  9. some SMA connectors $14
  10. Waterproof Box $9
  11. A mast pole or tripod for holding the grid antenna $ 5
  12. Oh, yes, almost forgot, you’ll need at least one of four operational GOES satellites, they are a bargain at about $11.7 Billion US dollars for the operational life of the GOES series. Don’t forget the $449 Million dollar launch cost for GOES 16 and 17. And another $165.7 Million for GOES-18. But you’re in luck, the U.S. funded a portion of your new hobby!

Total Cost $11,900,000,231.99 (Eleven billion nine hundred million two hundred thirty-one dollars- more or less)  Start saving your change! Or consider it ‘Crowd Funded

NEW as of 10/28/2020 Nooelec has a GOES receiver bundle now being offered that contains everything needed. Includes a GOES parabolic reflector 1.9 GHZ antenna which requires no spacer modifications!, NESDR SMArTee XTR SDR receiver, SAWbird+ GOES LNA module, 10m LMR400 cable, and the other cables and adapters required for a full GOES receiver. Just follow my guides, and you are ready to go!

Amazon USA: https://amzn.to/37PNhdQ
Amazon CAN: https://amzn.to/2Je6pIi

Assembly Diagram

[Grid Antenna]--[Adapter]-[(input side) SAWBird+ (output side)]-[6" pigtail]-[Nooelec SmarteeXTR]-[6" USB cable]-[Raspberry Pi]- WIFI Network

Building the Receiver, Setting up the Dish, and Programming your PI

I created a tutorial for programming the Raspberry PI 3 and 4 based on an amalgamation of the many tutorials available, along with my own experiences, the tutorial is here-
Programming your PI for Goestools and Setting up your dish Tutorial

All of these guides use the goestools software developed by Pieter Noordhuis and can be found here GOESTOOLS
Follow the guides step by step. Use copy and paste to set up the Rasberry PI
HINT- if you COPY from the web page, you can paste it into the terminal screen on PI by right-clicking the mouse, or ctrl-shift V

I have some hints for the actual build and pointing and fine-tuning of the grid antenna that worked for me:

  • USE a GOOD manual compass. I have a Note9 Phone, and no matter how I tried, it was off by at least 5-10°.  The app Satellite AR, which is mentioned in the tutorial, actually placed GOES 16 about 15° off of what was correct.  Here’s a PDF on how to sight a bearing with a compass Sighting a compass bearing
  • When sighting in the Grid dish, I used an app for my phone to control and run the PI remotely, The app is called RaspControllerThis way I could monitor the VIT Averages as I adjusted the antenna, first aligning it by Azimuth (mine was 162.4°), then Elevation (mine was 38.4°).  my skew was -14.2°, so I left the dish as it came.
  • If you’re using a laptop or desktop, you could use Googe Remote or TeamViewer to view it on your phone. (Be aware that you might get some RF noise from the laptop or computer)
  • Be sure your antenna mount is STABLE. I found that small movement, less than a 1/4″ would seriously alter the VIT average.
  • I did use the antenna modification by adding to mine 2.8cm for the reflector. It brought my vit down to 480-500. THEN by flattening out the ‘V’ shaped reflector, I got my vit down to 300’s. Then the next day I took the spacer out and my Vertibi dropped to 150-170’s and the rs(sum) dropped from the 200’s to under 60! So my advice is to experiment!

    NOTE, depending on the dish you are using (1.7 GHz or 2.4 GHz), the reflector may or may not need to be flipped. My recommendation is to have the reflector up on the 2.4GHz Dish – so V up. And the reflector down on the 1.7GHZ grid dish so ^ down.
  • Speaking of Experimenting, the GUIDES I listed above get you the basics of GOES imagery, but you can receive more data than what is shown in the guides, and NOAA does add imagery from time to time as well. The EMWIN data stream has relays from HIMAWARI-8, METEOSAT, all sorts of weather data, and graphics as well. Once you have the basics up and running, take a look further down the page for how to modify the .conf files and create your own to receive other data.

13 months after the initial GOES 16 Build- Adding an additional DISH to the existing setup.

The Nooelec company graciously sent me one of their new “GOES Bundles they offer on Amazon to try and test. Since I have only my GOES 16 setup, I decided to run a new system for GOES 17 (and now 18) Reception.

Unboxing of the GOES Bundle offered by Nooelec

GOES 17/18 for my location is a bit low on the horizon for me, at only 20° Elevation. And, on my property, there are not many places where the dish could get a relatively clear line of sight to the satellite. I was hoping it could go in the same location as my GOES 16 dish, but this was not feasible. So I picked a new spot and set about rigging up the system. Using the same setup procedures as outlined on my setup and pointing page I programmed a new PI4 and set up the dish. I did try something new this time. I added a layer of 1/4″ hardware cloth to the backside of the dish, in hopes of increasing reflectivity. It apparently has worked.

Hardware cloth added to the dish

My first initial tests worked surprisingly well, and within about a minute after aligning the dish I was receiving GOES 17 imagery. Now the next step was to change the goesproc-goesr.conf files to allow me to use my custom LUT and enhancements on the new images.

One thing I did edit was the section on GOES Enhancements, as in my other documents the setup was primarily for GOES 16. (NOTE, as of 1/2023 GOES 18 will be taking the place permanently of GOES17). This is the section I added:

# GOES-18 ABI RGB-enhanced
[[handler]]
type = "image"
origin = "goes18"
regions = [ "fd", "m1", "m2" ]
channels = [ "ch07", "ch08", "ch09", "ch13", "ch14", "ch15" ]
directory = "./goes17/{region:short|lower}/{channel:short|lower}_enhanced/{time:%Y-%m-%d}"
filename = "GOES18_{region:short}_{channel:short}_enhanced_{time:%Y%m%dT%H%M%SZ}"
format = "jpg"
json = false

  ## The following gradients are rough approximations of the 
  ## McIDAS RGB enhancements used by NOAA/NESDIS/STAR on their site..
  ##
  ## For more info:
  ##
  ##   https://www.star.nesdis.noaa.gov/GOES/GOES16_FullDisk.php 
  ##   http://cimss.ssec.wisc.edu/goes/visit/water_vapor_enhancement.html
  ##   http://cimss.ssec.wisc.edu/goes/visit/enhanced_v_enhancements.html

  ## Shortwave IR (Channel 7)
  [handler.gradient.ch07]
  points = [
    { units = 400, color = "#000000" },
    { units = 250, color = "#b9b9b9" },
    { units = 249.999, color = "#00ffff" },
    { units = 240, color = "#000080" },
    { units = 230, color = "#00ff00" },
    { units = 220, color = "#ffff00" },
    { units = 210, color = "#ff0000" },
    { units = 200, color = "#000000" },
    { units = 190, color = "#ffffff" }
  ]

  ## Water Vapor (Channels 8 and 9)
  [handler.gradient.ch08]
  points = [
    { units = 276, color = "#000000" },
    { units = 275.9, color = "#ff0000" },
    { units = 258, color = "#ffff00" },
    { units = 250, color = "#000070" },
    { units = 233, color = "#ffffff" },
    { units = 195, color = "#408020" },
    { units = 178, color = "#00ffff" }
  ]
  [handler.gradient.ch09]
  points = [
    { units = 276, color = "#000000" },
    { units = 275.9, color = "#ff0000" },
    { units = 258, color = "#ffff00" },
    { units = 250, color = "#000070" },
    { units = 233, color = "#ffffff" },
    { units = 195, color = "#408020" },
    { units = 178, color = "#00ffff" }
  ]

  ## Longwave IR (Channels 13, 14, and 15)
  [handler.gradient.ch13]
  points = [
    { units = 333, color = "#000000" },
    { units = 238, color = "#b9b9b9" },
    { units = 237.999, color = "#00ffff" },
    { units = 228, color = "#000080" },
    { units = 218, color = "#00ff00" },
    { units = 208, color = "#ffff00" },
    { units = 198, color = "#ff0000" },
    { units = 188, color = "#000000" },
    { units = 178, color = "#ffffff" }
  ]
  [handler.gradient.ch14]
  points = [
    { units = 333, color = "#000000" },
    { units = 238, color = "#b9b9b9" },
    { units = 237.999, color = "#00ffff" },
    { units = 228, color = "#000080" },
    { units = 218, color = "#00ff00" },
    { units = 208, color = "#ffff00" },
    { units = 198, color = "#ff0000" },
    { units = 188, color = "#000000" },
    { units = 178, color = "#ffffff" }
  ]
  
  [[handler.map]]
  path = "/usr/share/goestools/ne/ne_50m_admin_0_countries_lakes.json"

  [[handler.map]]
  path = "/usr/share/goestools/ne/ne_50m_admin_1_states_provinces_lakes.json"

Autostarting the system

I added the ability to have my PI automatically start all of the goestools processes and the syncthing software (which I use to synch the files from the PI to my PC automatically) on boot or after a power glitch.  You can view the Processes running by using the command ‘screen -r goesrev’ or ‘screen -r goesproc’ or, lastly ‘screen -r syncthing’ without the ‘ quotes.  To stop view pres ‘ctrl A then D’.   You can add other goesproc processes if you wish as well. be sure and match the file structure to your own set up!

By editing the rc.local file in the /etc/ directory on the PI as such:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
#
#Start Goestools
#
/usr/bin/sudo -u pi /usr/bin/screen -dmS goesrecv /usr/local/bin/goesrecv -v -i 1 -c /home/pi/goesrecv.conf
#
/usr/bin/sudo -u pi /usr/bin/screen -dmS goesproc /usr/bin/goesproc -c /usr/share/goestools/goesproc-goesr.conf -m packet --subscribe tcp://127.0.0.1:5004 --out /home/pi/goes
#
#
#Start Syncthing
#
/usr/bin/sudo -u pi /usr/bin/screen -dmS syncthing /usr/bin/syncthing
exit 0

If the ‘screen’ app is not on your PI, run

sudo apt update
sudo apt-get install screen
Example Showing where to look for Viterbi count (highlighted)
WINDOWS-BASED SOFTWARE CHOICES

There are just a few Windows-based software packages for HRIT decoding:
The first is from US Satcom using their XRIT Decoder software (about $130.00) as of this writing. 

The Second is SatDump, which is free and can decode many,many satellites, it is in continuous development. I have used it, and it works very well. https://github.com/altillimity/SatDump. It can decode saved signal files, or with some setup, be made to decode live, that is, as the images are received.

Other software is typically written in python or Linux and would need to be run as a virtual machine on your PC.

You will still need the antennas and SDR etc. Personally, I like the PI for letting it do all the processing and decoding. All imagery and manipulation and post-processing I do on my Windows-based system.

Some examples of types of captures:

A note on False Color

GOES is color blind. That is it does not “see” in Red Green Blue (RGB), there is no ‘green’ channel. The ABI has 16 separate bands, and these are used to create a false-color image. The Near-Infrared Band or ‘veggie” (which is referred to because of the strong elected signal from the vegetated surface) can be used to fill in the green wavelength.

A number of methods have been developed to generate true-color images from the
Advanced Baseline Imager (ABI) on the Geostationary Operational Environmental Satellite (GOES)-16. GOES-16 is the first of a series of four spacecraft with the ABI onboard. This is complicated since the ABI does not have a green (0.55 μm) spectral band. Despite this limitation, representative true-color images can be made. Goestools has a method using WXstar within its software package that uses a color lookup table (a CLUT or LUT) to generate a False Color image. Otherwise, all we would get from GOES is a greyscale image. Visible reflectance is represented on the Y axis as color brightness between black and white, while infrared radiance is represented on the X axis as a range of color temperature. A 256×256 pixel two-dimensional CLUT is used to apply color based on visible and infrared radiance with ABI channels 2 and 13. It is in this way that color can be painted onto visible imagery determined by infrared-sensed temperature and visible channel reflectance. The created (False Color) natural color aims to mimic what the human eye would see if one were looking at Earth from a distance. It does have its limitations, in winter, for example, the planet’s land surface becomes more of a bluish tint due to decreasing land surface temps.

NEW as of 7/22/2020 I have created a new CLUT to enhance imagery from GOES satellites using goestools, here is the link- Custom Color Look-Up Table

An example of ‘Enhanced’ False Color.

CONUS imagery from GOES 16

CONUS imagery from GOES-16

Example of the various channels that can be received from the Advanced Baseline Imager (ABI) (Received 4/13/2020-5/10/2020)

In addition to the baseline channels 02, 07, 08, 09, 13,14,15  there are other sets of imagery that can be received if you enable it in the goestools proc.
The High Rate Information Transmission (HRIT) broadcast stream from GOES-16 carries a number of Virtual Channels, each identified with a Virtual Channel ID (VCID).  These channels include all imagery data, EMWIN graphics, text products, and other data products. 

Here is an example of what can be received via EMWIN (Emergency Managers Weather Information Network)  This needs to be enabled in separate scripting.

EMWIN IMAGERY

Non-Cloud Moisture Imagery Products

In addition to the baseline channels 02, 07, 08, 09, 13,14,15  and EMWIN imagery and data, you can also receive Non-Cloud Moisture Imagery Products (Non-CMIP). Again, this needs to be enabled in separate scripting.

How to enable EMWIN, Non-CMIP and More

Goestools receives just about everything available to it sent from the Advanced Baseline Imager, but it does not, or can not decode it all. I would say 99% of goestools users only have their system set for the VC (Virtual Channels) of 02,07,08,09,13,14,15. and then goestools ‘enhances’ those CMI Band images into something like false color or say, channel 15 enhanced.

Within the stream that comes from both current GOES are other pieces of data, like EMWIN,  non-CMIP imagery, and data. But you have to enable the reception of this in goestools.

GOES-13/14/15 carried the GOES Imager having 5 bands of imagery, While GOES 16,17, GOES-T, and GOES-U have 16 bands of imagery with the ABI.

Only 02,07,08,09,13,14,15 are on by default.

CHANNELS/DATA/IMAGERY that can be received:

VCID #Product NameGOES-16
Availability
GOES-17
Availability
GOES-18
Availability
Period-Min(s)FormatResolution
0Admin TextXXX60Text MessagesN/A
1Mesoscale ImageryXXX15HRIT/LRIT0.5km Band
2, 2km for bands
7 and 13
2CMI Band 2XXX30HRIT/LRIT2 km
7CMI Band 7XXX30HRIT/LRIT2 km
8CMI Band 8XXX30HRIT/LRIT2 km
9CMI Band 9XXX30HRIT/LRIT2 km
13CMI Band 13XXX30HRIT/LRIT2 km
14CMI Band 14XXX30HRIT/LRIT2 km
15CMI Band 15XXX30HRIT/LRIT2 km
16G16 CMI Band 13XX180HRIT/LRIT2 km
17G17 CMI Band 13XX180HRIT/LRIT2 km
20EMWIN – PriorityXXXVariableTextN/A
21EMWIN – GraphicsXXXVariableGraphic
(e.g. GIF, JPEG)
N/A
22EMWIN – OtherXXXVariableText and GraphicN/A
24NHC Maritime
Graphics
Products
XXX60Graphic
(e.g. GIF, JPEG)
N/A
25GOES-R/S Level II
Products
60-240HRIT/LRIT2-10 km
30DCS AdminXXXContinuousTextN/A
32DCS Data
New Format
XXXContinuousFormated TextN/A
60Himawari-8XX60LRIT4 km
Listing of available “Virtual Channels” as of 1/2022

GOES-R Series GOES Products

Product NameFormatSourceSchedule
GOES East /
GOES-16/17/18 (ABI)

Full Disk
Spatial Res: 2 Km
HRIT Imagery:
Band 2 Visible
PDA /
HRIT/EMWIN
System from ABI
GOES Schedule
Full Disk
Every 30 Minutes
GOES East /
GOES-16/17
/18 (ABI)
Full Disk
Spatial Res: 2 Km
HRIT Imagery:
Band 7 Infrared (SW IR)*
Band 8 Infrared (IR/WV)
Band 9 Infrared (IR/WV)
PDA /
HRIT/EMWIN
System from ABI
GOES Schedule
Full Disk
Every 30 Minutes
GOES East /
GOES-16/17
/18 (ABI)
Full Disk
Spatial Res: 2 Km
HRIT Imagery:
Band 13 Infrared (LW IR)
Band 14 Infrared (LW IR)
Band 15 Infrared (LW IR)
PDA /
HRIT/EMWIN
System from ABI
GOES Schedule
Full Disk
Every 30 Minutes
GOES East /
GOES-16/17
/18 (ABI)
Full Disk
Spatial Res: 2 Km
HRIT Imagery:
Band 2 Visible
Band 7 Infrared (IR/VW)
Band 13 Infrared (IR)
PDA /
HRIT/EMWIN
System from ABI
GOES Schedule
Full Disk
Every 15 Minutes
GOES West /
GOES-15 (GVAR)

Full Disk
Spatial Res: 4 Km
LRIT Imagery:
1. Infrared
LRIT System
from GVAR
GOES Schedule
Full Disk
Every 3 hours
GOES West /
GOES-15 (GVAR)

North/South
Hemisphere
Spatial Res: 4 Km
LRIT Imagery:
1. Infrared
2. Water Vapor
LRIT System
from GVAR
GOES Schedule
North Hemisphere
Every 1 Hour
Tropical Storm
Products
GraphicsNOAA/NWS
National Hurricane
Center
Hourly
Emergency Manager’s
Weather Information
Network (EMWIN)
Text and GraphicsNOAA/NWS
EMWIN Program
As Received
GOES Data
Collection System
(DCS)
Text(Coded)NOAA /
NESDIS/
OSPO/
SPSD DCS
Program
As Received
Meteosat (MSG –Severi)GraphicNOAA/
NESDIS/
OSPO SPSD
Hourly
Himawari (HBI)GraphicNOAA/
NESDIS/
OSPO /SPSD
Hourly
Administrative
Text Message
(N/A – Manually
entered in response
to events)
TextLRIT System
Administrators
Hourly or
As Needed
Himawari (HBI)Imagery:
1. Visible
2. Infrared.
3. Water Vapor
Japan
Meteorological
Agency and
NOAA/
NESDIS/ OSPO
Hourly
NonCmipRainfall rate/QPE RRQPE
Sea surface temperature (skin) SST
Land surface temperature (skin) LST
Total precipitable water TPW
Derived stability indices DSI
Cloud top height ACTH
Cloud Top Temperature ACHT
1 to 6 hours
Depending on Data complexity,
or As needed
Listing of available Products as of 6/2023

*Note: Band 7 is Infrared (IR) with reflected daytime component
*Note: GOES-15 Imagery only available until GVAR deactivation ~May 2019
*Table 2.1: NOAA GOES-East / GOES-16,17,18 HRIT/EMWIN Content Table (Updated 6/16/2023)


In my case, I made some new config files that can receive that layer of data (all of it is layered).

EMWIN is the Emergency Managers Weather Information Network. Its the easiest to set up, and the command can be added to your goesproc-goesr.conf, but I prefer a separate conf file and run it when I want with a new command, because EMWIN , in addition to Himawari, and Meteosat and a lot of NOAA imagery, also send about 30,000 text messages every24 hours!

NOTE: UPDATE 1/21/2021 Weather Message, a specialized commercial product to decode and process National Weather Service messages now has the ability with version 4.5 to upload the EMWIN feed into its own ingestor allowing it to work seamlessly with goestools. IMPORTANT NOTE: the Goesender and Ingestor installation will change some directories and install some new .conf files that will overwrite your existing files!!!!

NOAA also experiments with other data that is derived from the ABI. And in the case of non-CMIP (which is just NOAA slang for Non-Cloud Moisture Imaging Products) This can be viewed (you’re already receiving it, just goestools is ignoring it, just like EMWIN) by adding code to your gooestools toolbox. Again, I have mine in a separate conf file.

You can also pull DCS data out of the stream by using goes lrit commands. There’s really a lot to experiment with.

I don’t take credit for this, I am just experimenting with the fantastic tool that Pieter Noordhuis developed. I forked his git repository over to mine and have posted some of the custom scripts I have found or have modified into my fork of his repository. https://github.com/creinemann

Just so you know, I did have problems running these concurrently on a PI3, I moved everything over to a PI4 and have not had much of an issue with throttling anymore.

So, now, as an example, this is how I receive non-cmip imagery.

  • On the PI (or in a text editor such as Notepad++) create a file called GOESnoncmip.conf
  • Head over to Taylor Bates github page and copy the script from my GOESnoncmip.conf FILE SCRIPT and paste it into your file.
  • Save that file to your \home\pi\ directory
  • Run the command goesproc -c GOESnoncmip.conf -m packet –subscribe tcp://127.0.0.1:5004 –out /home/pi/goes (or whatever directory you use)
  • You should start seeing imagery come in after a minute or so.

My github repository – use at your own risk. https://github.com/creinemann

You can use the same process to set up EMWIN as well. (you could also add it to your main goesproc-goesr.conf file but I prefer to be able to run it separately)


Since you made it this far, why not join a group! The Geostationary Weather Satellite Group on Facebook is a great group and has lots of experts that can help!


How to get rid of EMWIN text

There is a modified script that will filter out all of the texts from the EMWIN stream- thanks to Taylor Bates who figured out a workaround in goestools that bypasses the ingestion of the 30,000 texts a day that GOES spits out in the EMWIN stream. The patch is here :
https://github.com/tmbates12/goestools/commit/2f54169cabfe05c6bfdc4f68dca0307fe7117df1

After you make the additions to the file listed on Taylors page. You need to recompile the goestools system.

MAKE A BACKUP OF ANY CUSTOM .CONF FILE YOU HAVE INCLUDING THE GOESR-GOESPROC.CONF IT WILL BE OVERWRITTEN AND YOU WILL NEED TO REINSTALL IT!!

cd /home/pi/goestools
cd build 
sudo make 
sudo make install
sudo ldconfig

sudo reboot

My custom goesemwin.conf and handler for text blocking in EMWIN


For information about each image band and how they are used in weather monitoring see the ABI BANDS QUICK INFORMATION GUIDES Everything you wanted to know about every band, but were afraid to ask.


https://usradioguy.com Authors website for NOAA, Meteor and Goes Satellite Reception

https://www.rtl-sdr.com/rtl-sdr-com-goes-16-17-and-gk-2a-weather-satellite-reception-comprehensive-tutorial/ RTL-SDR.COM GOES 16/17 AND GK-2A WEATHER SATELLITE RECEPTION COMPREHENSIVE TUTORIAL

https://gist.github.com/lxe/c1756ca659c3b78414149a3ea723eae2#file-goes16-rtlsdr-md Receive GOES-16 and GOES-17 Images with a Raspberry Pi and RTL-SDR dongle

https://fuzzthepiguy.tech/goessoftware/ Install GOES Software On A Pi

http://pytroll.github.io/ Pytroll is a modular, free and open-source python framework for the processing of earth observation satellite data.

http://cimss.ssec.wisc.edu/goes/goesdata.html The GOTO for all things GOES by the University of Wisconsin – Advanced Satellite Products Branch (ASPB) ~ The Birthplace of Satellite Meteorology ~This site has A LOT of information, data, imagery, etc. Including a section on free software for image manipulation, data analysis, phone apps, and more!

https://www.noaasis.noaa.gov/GOES/HRIT/products.html GOES HRIT Schedules (this is what you can download off your dish.

https://www.ospo.noaa.gov/Operations/GOES/schedules.html GOES GRB Schedules (you’ll need a bigger dish!)

https://www.weather.gov/media/crp/GOES_16_Guides_FINALBIS.pdf A PDF of all the GOES ABI channels and what they mean.

https://gifmaker.me/ This is the site the Author uses to create animations from GOES images (note, I reduce the file size of the images BEFORE uploading.


Receiving GK-2A

I don’t want to leave out the good folks on the other side of this planet from me so…

Sam’s GK2A Imagery from 4/24/2020

Is anyone up for a challenge on the other side of the world from me? Sam down in Australia has developed a free open-source software to receive weather images from geostationary meteorological satellite GK-2A. Looks like his testing of it is successful. It receives it LRIT data from goestools, so you could build a system with a grid dish like those of us pulling GOES imagery, then it pipes that data into his packet demultiplexer and xRIT file processor.

Images downlinked from GK-2A are encrypted by the Korean Meteorological Administration (KMA). Decryption keys can be downloaded from KMA’s website and used with xrit-rx.

Source code and files are here: https://github.com/sam210723/xrit-rx

In addition, Satdump also decodes GK2a


A GRAFANA tool to monitor your goestools system.

Edouard over on github has made a goestool monitor using the Grafana utility to chart out the goestools system.  You can view the results via your web browser by simply entering your pi IP address (such as http://192.168.1.4:3000 (yours of course)).  Instruction and the files to clone into your PI can be found here https://github.com/elafargue/rpi-tig 

NOTE: this package install does require DOCKER be added to your RPI First!! Edouard does have as the first step the DOCKER installation. I could NOT get it to work. So I used this method

  1. Install Docker
    curl -sSL https://get.docker.com | sh
  2. Add permission to Pi User to run Docker Commands
    sudo usermod -aG docker pi

Reboot here or run the next commands with a sudo

  1. Test Docker installation
    docker run hello-world
  2. IMPORTANT! Install proper dependencies
    sudo apt-get install -y libffi-dev libssl-dev
    sudo apt-get install -y python3 python3-pip
    sudo apt-get remove python-configparser
  3. Install Docker Compose
    sudo pip3 install docker-compose
  4. Install the RPI-TIG repository
    Clone this repository, by using Git Clone
    git clone https://github.com/elafargue/rpi-tig.git then
    cd rpi-tig and do a single
    ./start.sh You should be set.
  5. After a few minutes go to you browser and type
    http://your.RPI.IP.address:3000 (like http://192.168.2.20:3000)
    At first the user name and password are both admin, you will be prompted to create your own password. On the left-hand side select dashboards, and then select “goesrecv stats”
    You should start seeing data. If not then goto settings/data sources, then select Telegraf and make sure it is ticked as DEFAULT.

Here is the default version:

And this is the version I made to also monitor some of the PI systems such as temperature and CPU load, as well as the goestools information:

I have a Fahrenheit and Celcius version available. You can copy the JSON file for either below, and the “import” it into Grafana
Fahrenheit Version Here
Celcius Version Here

If you open the port on your router, you can even monitor your system from anywhere there is internet.

Provisioned dashboards on Grafana cannot be saved, so they really should be used as templates, and saved as a new Dashboard if you want to edit/modify them. This is what I did then built the additional graphs and charts onto my own copy.

It will survive a reboot as well, but if you need to shut it down, use this command within the rpi-tig directory:
docker-compose stop


Animation of Imagery

So you’ve gotten a ton of images, cool, what’s next? Well, animated them! There are tools online and that you can download to take a series of images and turn them into an animated gif, like this:

Sure, it looks good, but still kind of jerky, so what to do? I learned to use a program called Imagemagick to refine, crop, animate, enhance, smooth, etc. the imagery I receive from GOES, In addition to that I use FFMPEG to further enhance the video into a smooth mp4 ‘movie as in the example below:

Imagemagick was a tough nut to crack for me. By that I mean it took a lot of trial and error to get the scripts to work right on my Windows 10 machine. Again, I have shared some of my scripts on my Custom Imagery Scripts Page You will, of course, have to modify them to work within your file structure and PC. I used batch files to run all of my scripts, which takes a bit more work than the standard Magick commands.
Lastly, I used FFMPEG to interpolate and smooth the ‘space’ between the frames to render a smoother animation.