Press "Enter" to skip to content

Receiving Images from Geostationary Weather Satellite GK-2A

A GK-2A LRIT receiver is made up of two open-source applications: goesrecv and xrit-rx. Demodulation and decoding of the LRIT downlink is handled by goesrecv, while xrit-rx takes care of demultiplexing and decrypting the packets from goesrecv into image files.

vuplex/xrit-webview-example

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

XR Interaction Toolkit WebView Example

This Unity project demonstrates how to use Vuplex 3D WebView with Unity’s XR Interaction Toolkit (XRIT). It includes XRIT and its dependencies, so all you need to do is import 3D WebView into the project. For more information on 3D WebView’s support for XRIT, please see this article.

Steps taken to create this project

  1. Created a new project with Unity 2020.3.24.
  2. Installed the following packages through the Package Manager:
  • XR Interaction Toolkit (v2.1.1)
  • XR Management
  • Oculus XR Plugin
  1. Installed 3D WebView (omitted via .gitignore)
  2. Created the XritWebViewDemo scene, which demonstrates how to use a CanvasWebViewPrefab and CanvasKeyboard.

About

Demonstrates how to use 3D WebView with XR Interaction Toolkit

Receiving Images from Geostationary Weather Satellite GK-2A

GEO-KOMPSAT-2A (GK-2A) is a geostationary weather satellite operated by the National Meteorological Satellite Center of the Korea Meteorological Administration. It is positioned over the equator at 128.2°E longitude which is visible from Australia, New Zealand, Southeast Asia, Japan, Korea, China, India and Eastern Russia.

Near real-time meteorological data from GK-2A is broadcast to users via two L-band downlinks and one X-band downlink.

Downlink Frequency Data Rate
LRIT 1692.14 MHz 64 kbps
HRIT 1695.4 MHz 3 Mbps
UHRIT 8070 MHz 31 Mbps

This guide walks through setting up the hardware and software required to receive images using the Low Rate Information Transmission (LRIT) downlink. It also covers the types of images that can be received, image post-processing and data decryption.

Image Types

Every 10 minutes the Advanced Meteorological Imager (AMI) instrument on-board GK-2A carries out a full disk observation. This process captures Earth in 16 different wavelengths of light, four of which are visible light. The remaining 12 wavelengths are various combinations of near-infrared and medium/long wave infrared.

Advanced Meteorological Imager wavelengths: thermal infrared, visible and water vapour (mid-infrared)

Shortly after the observation completes, the resulting thermal infrared full disk image is transmitted via the LRIT downlink. A total of 144 full disk images are transmitted each day which is more than enough to create smooth animations such as the ones below.

Full Disk thermal infrared animation (22/07/2019)

Images not directly derived from GK-2A sensor data are also transmitted between full disk images. These include synoptic charts (surface pressure), sea temperature charts, swell forecasts and sea ice maps.

Additional images types (synoptic/isobar, sea surface temperature and sea ice charts)

Image Post-Processing

Colour weather satellite imagery requires multiple channels (wavelengths) of data to be combined into one image which is called a false-colour image. Since only one infrared channel is transmitted via GK-2A LRIT we have to compromise by using artificial images in place of the missing wavelengths.

GK-2A LRIT infrared image enhanced by Sanchez

Matt Painter (@nullpainter) has created Sanchez, a cross-platform tool for applying colour underlays and colour lookup tables to imagery from geostationary weather satellites. Sanchez also creates reprojected maps and can blend images from multiple satellites such as GK-2A, Himawari-8 and GOES-16/17.

GK-2A LRIT infrared image re-projected and enhanced by Sanchez

John Bell (@eswnl) has written some plugins for the GNU Image Manipulation Program (GIMP) to apply colour underlays to thermal infrared images. Options for image timestamps, coastline border overlays and latitude/longitude grid overlays are also available.

Full disk with colour underlay (by @eswnl) Colour underlays for creating false-colour images

Another post-processing technique called Infrared Colour Enhancement replaces a portion of the grayscale image with a colour gradient. This reveals hidden details in the brighter and washed-out areas of an image, such as swirling cloud around the eye of a typhoon. I have written another blog post covering this topic:

GK-2A IR Colour Enhancement

Since its commissioning on July 25th 2019, GEO-KOMPSAT-2A (GK-2A) has been downlinking Full Disk images every 10 minutes over LRIT and HRIT. Unfortunately the LRIT downlink only transmits a single Infrared channel called IR105 (10.4μm) due to bandwidth constraints. This means false colour imagery ca…

VKSDR sam210723
Typhoon Krosa near Japan (13/08/2019) in normal and enhanced thermal infrared

Getting Started

A basic GK-2A LRIT receiver is made up of some cheap hardware components and free open-source software. Some familiarity with Linux and RTL-SDRs is required.

Hardware

The RTL-SDR Blog has written a thorough guide for setting up the hardware required for receiving images from GOES-16/17 and GK-2A. An outline of the hardware setup is included in this guide but for full details I recommend following the RTL-SDR Blog guide linked above.

The main hardware components which make up a GK-2A receiver are a parabolic dish antenna with reasonable gain at 1.7 GHz, a low-noise amplifier and a software defined radio (SDR). The Airspy Mini, Airspy R2 and RTL-SDR (also available at NooElec) are all compatible with GK-2A receiver software. NooElec offers an excellent low-noise amplifier solution which also includes a SAW filter centered on 1688 MHz.

Some 2.4 GHz Wi-Fi grid dishes have sufficient gain at 1.7 GHz to be used for a GK-2A receiver. These dishes are available online for around $100 AUD from Access Antennas (AU), Wireless Professional Solutions (AU), Go Wireless (NZ) and Excel Wireless (US).

2.4 GHz WiFi grid dish antenna often used for L-Band weather satellites

Another option is to purchase a small Ku-Band satellite TV dish and attach a DIY feedhorn such as a cantenna. This was the type of antenna used during the development and testing of xrit-rx.

Linear cantenna feed on a 90cm Ku-Band satellite TV dish

Further tips on setting up hardware can be found in the RTL-SDR blog guide.

Software

A GK-2A LRIT receiver is made up of two open-source applications: goesrecv and xrit-rx. Demodulation and decoding of the LRIT downlink is handled by goesrecv, while xrit-rx takes care of demultiplexing and decrypting the packets from goesrecv into image files.

goesrecv

The first software component is goesrecv which was originally written by Pieter Noordhuis as part of the goestools software suite. This software was designed for receiving images from the American GOES weather satellites and has since been modified to support GK-2A LRIT.

Some packages are required to install goesrecv from source on Debian systems. To install these dependencies, run the following apt commands

# Update package index and install dependencies sudo apt-get update sudo apt-get install -y build-essential pkg-config cmake git zlib1g-dev libairspy-dev libusb-1.0-0-dev 

Next, librtlsdr is built from source

# Download, compile, and install librtlsdr git clone https://github.com/steve-m/librtlsdr.git cd librtlsdr mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DINSTALL_UDEV_RULES=ON .. sudo make -j2 install # Load udev rules and blacklist the DVB driver shipped with the OS sudo cp ../rtl-sdr.rules /etc/udev/rules.d/ sudo ldconfig echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf sudo reboot 

Finally, goesrecv can be built from source

# Download, compile, and install goesrecv git clone --recursive https://github.com/sam210723/goestools cd goestools mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local make sudo make install cd ../.. # Copy configuration file and test run goesrecv cp goestools/etc/goesrecv.conf goesrecv.conf goesrecv --version 

After this process, the terminal should show something similar to the following:

goesrecv for GK-2A Originally part of goestools written by Pieter Noordhuis and contributors (https://github.com/pietern/goestools) Modified by sam210723 for compatibility with GEO-KOMPSAT-2A (https://github.com/sam210723/goestools) 

Finally, the configuration file for goesrecv is edited based on the SDR being used. By default, goesrecv is configured for use with an Airspy Mini or R2.

If an RTL-SDR is being used, the source setting must be changed to rtlsdr and the corresponding source settings ( [rtlsdr] and frequency ) must be un-commented (remove # ).

If a bias-tee powered low-noise amplifier is being used in this system (such as the NooElec SAWbird), the bias_tee setting should be changed to true , otherwise this should be left as false to not damage the SDR or other RF devices.

Configuration for Airspy SDRs:

[demodulator] satellite = "GK-2A" downlink = "lrit" source = "airspy" [airspy] frequency = 1692140000 ## 2500000 for the R2, 3000000 for the Mini # sample_rate = 3000000 # gain = 18 # bias_tee = false # [rtlsdr] # frequency = 1692140000 # sample_rate = 1024000 # gain = 30 # bias_tee = false # device_index = 0

Configuration for RTL-SDRs:

[demodulator] satellite = "GK-2A" downlink = "lrit" source = "rtlsdr" # [airspy] # frequency = 1692140000 ## 2500000 for the R2, 3000000 for the Mini # sample_rate = 3000000 # gain = 18 # bias_tee = false [rtlsdr] frequency = 1692140000 # sample_rate = 1024000 # gain = 30 # bias_tee = false # device_index = 0

xrit-rx

The second software component, xrit-rx, was written specifically to support imagery from GK-2A and COMS-1 (predecessor to GK-2A). It is written in Python 3 so does not need to be compiled, however some packages need to be installed before use.

xrit-rx requires Python 3.6 or newer to run correctly. To check which version of Python 3 is installed on your system run python3 –version . Instructions for installing or upgrading Python 3 on Windows or Linux can be found in this tutorial.

The Python package manager pip also needs to be installed. On Windows, the Python installer will include pip by default. For Ubuntu or Raspbian, pip can be installed by running the following commands:

sudo apt-get update sudo apt-get install python3-pip 

Next, xrit-rx.zip is downloaded from the Releases page of the GitHub repo then unzipped into a new folder.

# Download and unzip latest xrit-rx release from GitHub wget https://github.com/sam210723/xrit-rx/releases/latest/download/xrit-rx.zip mkdir xrit-rx unzip xrit-rx.zip -d xrit-rx cd xrit-rx 

Python packages numpy , pillow , pycryptodome and colorama are now installed using pip .

# Install dependencies using pip pip3 install -r requirements.txt 

Some extra packages are required by numpy and pillow on Ubuntu or Raspbian systems. Install these packages by running:

sudo apt-get install libatlas-base-dev libopenjp2-7-dev libtiff-dev 

Next, the GK-2A decryption key list needs to be downloaded so xrit-rx can decrypt received data into normal image files. Users normally have to apply for decryption keys through the Korea Meteorological Administration website. Applications from government departments, research institutes, and large organisations seem to be prefered rather than from individual users.

During the development of software for COMS-1 (predecessor to GK-2A), valid decryption keys were found in code samples provided publicly on the Korea Meteorological Administration website. These keys have continued to work with all GK-2A data to date and are still publicly available on the KMA NMSC website.

To obtain these keys:

  1. Open the COMS Operation page
  2. Click the “HRIT/LRIT Data Decryption samples C code” link to download COMS_Decryption_Sample_Cpp.zip
  3. Extract the key file called EncryptionKeyMessage_001F2904C905.bin
  4. ZIP file can now be deleted
  5. Copy the key file to your xrit-rx folder

This Encryption Key Message file itself is encrypted and needs to be decrypted before use. The second part of the file name is the decryption key for this file: EncryptionKeyMessage_001F2904C905.bin . The keymsg-decrypt.py script in the xrit-rx “tools” folder can decrypt this file and will output the plain-text keys to a new file called EncryptionKeyMessage.bin .

python3 tools/keymsg-decrypt.py EncryptionKeyMessage_001F2904C905.bin 001F2904C905 

Once the script has output the decrypted keys to EncryptionKeyMessage.bin , the original encrypted key file can be deleted. For those interested, I have covered the key decryption process in-depth in a previous post:

COMS-1 LRIT Key Decryption

Like NOAA’s series of GOES meteorological satellites, COMS-1 (128.2°E) operated by the Korea Meteorological Administration (KMA) has both LRIT and HRIT downlinks for disseminating real-time meteorological data. Unlike GOES, these downlinks are encrypted using single-layer DES and decryption keys are…

VKSDR sam210723

Finally, xrit-rx can be configured using the options in the xrit-rx.ini file. A full list of options can be found in the readme on GitHub.

Typically, goesrecv and xrit-rx will be running on the same device but this is not required. The packets output by goesrecv can be received by xrit-rx over a local network connection. If this is the case, the ip option in xrit-rx.ini will need to be updated with the IP address of the device running goesrecv. If goesrecv and xrit-rx are running on the same device, this option should be left as the default value of 127.0.0.1 .

By default, a folder called received will be created inside the xrit-rx folder to store images received from GK-2A. This folder location can be changed using the path option in xrit-rx.ini , however this is typically not necessary.

[output] path = received images = true xrit = false # List of VCIDs to ignore (e.g. '4,5') # - VCID 0: Full Disk # - VCID 4: Alpha-numeric Text # - VCID 5: Additional (non-sensor) data channel_blacklist = [goesrecv] ip = 127.0.0.1 vchan = 5004

Receiving Images

With all the hardware and software components ready we can finally begin receiving images from GK-2A.

Running goesrecv

Run goesrecv by opening a new terminal window in a folder which contains the goesrecv.conf configuration file and run the following command:

goesrecv -v -i 1 -c goesrecv.conf 

Once running, goesrecv will print information to the console similar to the following:

2020-02-10T10:12:57Z [monitor] gain: 61.04, freq: 1200.1, omega: 8.000, vit(avg): 98, rs(sum): 0, packets: 8, drops: 0 2020-02-10T10:12:58Z [monitor] gain: 61.04, freq: 1187.5, omega: 8.000, vit(avg): 104, rs(sum): 0, packets: 8, drops: 0 2020-02-10T10:12:59Z [monitor] gain: 61.04, freq: 1195.7, omega: 8.000, vit(avg): 108, rs(sum): 0, packets: 7, drops: 0 2020-02-10T10:13:00Z [monitor] gain: 61.04, freq: 1180.5, omega: 8.000, vit(avg): 99, rs(sum): 0, packets: 8, drops: 0

If the packets counter shows 7 or 8 and and drops shows zero, goesrecv has locked on to the LRIT downlink from GK-2A. If not, the LRIT signal may be too weak and adjustment of the antenna using goesrecv monitor is required.

goesrecv monitor

An optional but recommended step is to use goesrecv monitor to fine tune the azimuth and elevation of the receiving antenna to get the best signal possible from GK-2A. The signal quality meter and constellation plot give a real-time indication of the signal strength, making it quick and easy to fine tune antenna alignment.

LRIT downlink from GK-2A in goesrecv monitor

Microsoft .NET Framework Runtime v4.8 (direct download) is required to run goesrecv monitor. Once .NET is installed, download the latest release of goesrecv monitor and extract all files inside the ZIP to a new folder.

Finally, run goesrecv-monitor.exe and enter the IP address of a device running goesrecv, then click Connect (or hit enter). The constellation plot and statistics list will start showing data.

Large Viterbi and Signal Quality display in goesrecv monitor

The large statistics window is intended to improve visibility of the Viterbi error count and Signal Quality percentage from a distance. This is useful while while fine tuning the alignment of an antenna. The window background colour changes between red and green to indicate the Signal Lock state.

Viterbi and Reed-Solomon plot in goesrecv monitor

goesrecv monitor can plot the Viterbi and Reed-Solomon error counts in real-time using the Statistics Plot window. The plot has selectable time ranges from 1 minute up to 24 hours. Plot data can be exported to a CSV file using the “Export CSV” button on the lower right of the window.

Running xrit-rx

Run xrit-rx by opening a new terminal window in the xrit-rx folder which was created earlier and run the following command:

python3 xrit-rx.py 

Ensure a message saying DECRYPTION KEYS LOADED appears in the startup information printed by xrit-rx. If not, return to the decryption key configuration steps above and confirm the processed key file is present in the xrit-rx folder.

xrit-rx will connect to goesrecv at the IP address specified in the configuration file and begin receiving packets. Within a few minutes an image will be received from GK-2A and saved to the received folder inside the xrit-rx folder.

Initially xrit-rx may appear to be doing nothing, but if the console output includes ” [VCID 63] GK-2A: IDLE ” then the LRIT downlink is successfully being received and xrit-rx is waiting for an image transmission to start. For precise image transmission times see the LRIT Schedule on the xrit-rx dashboard (see below).

Output of xrit-rx while receiving a full disk image

Dashboard for xrit-rx

Included in xrit-rx is a web-based monitoring dashboard for convenient monitoring of the decoder and viewing of received data. It also displays the LRIT transmission schedule which is downloaded from the KMA website when the dashboard is loaded.

By default the dashboard is accessible via HTTP on port 1692 and will update with new data every second. These settings can be changed in the xrit-rx.ini configuration file (list of options).

Web-based monitoring dashboard for xrit-rx

Setting up Linux services

Optionally, goesrecv and xrit-rx can be configured as Linux systemd services which start automatically when the system boots up.

For goesrecv, download goesrecv.service and edit the -c option to match the location of goesrecv.conf on your system.

[Unit] Description=goesrecv reception chain for GEO-KOMPSAT-2A Documentation=https://github.com/sam210723/goestools Wants=network.target After=network.target [Service] ExecStart=/usr/local/bin/goesrecv -i 10 -c /home/pi/goesrecv.conf StandardOutput=null Type=simple Restart=on-failure RestartSec=30 Nice=-5 [Install] WantedBy=default.target

For xrit-rx, download xrit-rx.service and edit the WorkingDirectory option to match the location of the xrit-rx folder on your system.

[Unit] Description=xrit-rx - LRIT/HRIT Downlink Processor Documentation=https://github.com/sam210723/xrit-rx Wants=network.target After=network.target [Service] WorkingDirectory=/home/pi/xrit-rx ExecStart=/usr/bin/python3 xrit-rx.py StandardOutput=journal Type=simple Restart=on-failure RestartSec=30 Nice=-5 [Install] WantedBy=default.target

Next, copy goesrecv.service and xrit-rx.service to /etc/systemd/system by running the following command:

sudo cp *.service /etc/systemd/system && sudo systemctl daemon-reload 

With the services now installed, run the following commands to start goesrecv and xrit-rx as services:

sudo systemctl start goesrecv.service sudo systemctl start xrit-rx.service 

The status of these services can be checked with the following commands:

systemctl status goesrecv.service systemctl status xrit-rx.service 

To check the xrit-rx has started properly, run the following command to view the console output of xrit-rx and look for any error messages:

sudo journalctl -u xrit-rx.service 

Finally, run the following commands to have goesrecv and xrit-rx start automatically when the system boots.

sudo systemctl enable goesrecv.service sudo systemctl enable xrit-rx.service 

To stay updated on future developments of xrit-rx follow me on Twitter. Feel free to open a new issue in the xrit-rx, goesrecv, or goesrecv monitor repos on GitHub if you come across bugs or have a feature request!

Open Source Pmod Designs

The Pmod Standard developed by Digilent is a peripheral protocol, interconnect and form-factor guideline supported by various FPGA and microcontroller development boards. Digilent manufacture a wide variety of modules which conform to the Pmod standard. Some development boards which support the standard are listed below. Board FPGA Price Purchase MuseLab

Jan 1, 2020 4 min read

GK-2A IR Colour Enhancement

Since its commissioning on July 25th 2019, GEO-KOMPSAT-2A (GK-2A) has been downlinking Full Disk images every 10 minutes over LRIT and HRIT. Unfortunately the LRIT downlink only transmits a single Infrared channel called IR105 (10.4μm) due to bandwidth constraints. This means false colour imagery cannot be created using data

Oct 23, 2019 5 min read

GK-2A Test Week

Between Monday 2nd and Friday 5th of July 2019 the KMA NMSC conducted testing of their new geostationary weather satellite GEO-KOMPSAT-2A (GK-2A). This post is a summary of the testing carried out during this period, as well as some observations regarding new data types and formats. RF Carriers Around 9:

sam210723 / Xrit Rx

Projects that are alternatives of or similar to Xrit Rx

�� Receive images from weather satellite Himawari-8 via HimawariCast.
Stars : ✭ 21 (-54.35%)
Mutual labels: weather , satellite , satellite-imagery
Download and process GOES-16 and GOES-17 data from NOAA’s archive on AWS using Python.
Stars : ✭ 77 (+67.39%)
Mutual labels: satellite , satellite-imagery
deck.gl layers and WebGL modules for client-side satellite imagery analysis
Stars : ✭ 60 (+30.43%)
Mutual labels: satellite , satellite-imagery
Display GeoTIFFs and soon other types of raster on your Leaflet Map
Stars : ✭ 168 (+265.22%)
Mutual labels: satellite , satellite-imagery

Core OSSIM (Open Source Software Image Map) package including C++ code for OSSIM library, command-line applications, tests, and build system

Stars : ✭ 182 (+295.65%)
Mutual labels: satellite , satellite-imagery

Quickly view satellite imagery, hyperspectral imagery, and machine learning image outputs directly in your iTerm2 terminal.

Stars : ✭ 215 (+367.39%)
Mutual labels: satellite , satellite-imagery
�� LRIT demodulator from weather satellite GEO-KOMPSAT-2A (GK-2A).
Stars : ✭ 23 (-50%)
Mutual labels: weather , satellite

A PyTorch implementation of the Light Temporal Attention Encoder (L-TAE) for satellite image time series. classification

Stars : ✭ 43 (-6.52%)
Mutual labels: satellite , satellite-imagery

Google Maps keeps old satellite imagery around for a while – this tool collects what’s available for a user-specified region in the form of a GIF.

Stars : ✭ 93 (+102.17%)
Mutual labels: satellite , satellite-imagery
Blazing Fast JavaScript Raster Processing Engine
Stars : ✭ 80 (+73.91%)
Mutual labels: satellite , satellite-imagery
Decode satellite signals on Raspberry PI or any other 64-bit intel.
Stars : ✭ 125 (+171.74%)
Mutual labels: satellite , satellite-imagery

��TorchSat �� is an open-source deep learning framework for satellite imagery analysis based on PyTorch.

Stars : ✭ 261 (+467.39%)
Mutual labels: satellite , satellite-imagery
Static website for viewing and analyzing GeoTIFF’s in the browser
Stars : ✭ 53 (+15.22%)
Mutual labels: satellite , satellite-imagery
False-colour geostationary satellite image compositor
Stars : ✭ 61 (+32.61%)
Mutual labels: weather , satellite

The largest three-dimensional web-based interactive browser of satellite, weather, climate, and other time-aware geospatial data on the web, built upon NASA’s revolutionary WorldWind technology.

Stars : ✭ 49 (+6.52%)
Mutual labels: weather , satellite
NOAA APT weather satellite image decoder, for Linux, Windows, RPi 2+ and OSX
Stars : ✭ 257 (+458.7%)
Mutual labels: weather , satellite
Python package for earth-observing satellite data processing
Stars : ✭ 679 (+1376.09%)
Mutual labels: weather , satellite
QT skyplot widget to visualize relative satellite positions
Stars : ✭ 10 (-78.26%)
Mutual labels: satellite
Cute weather app built in Electron
Stars : ✭ 32 (-30.43%)
Mutual labels: weather
weather app for the terminal
Stars : ✭ 6,918 (+14939.13%)
Mutual labels: weather

�� xrit-rx – LRIT/HRIT Downlink Processor

xrit-rx is a packet demultiplexer and file processor for receiving images from geostationary weather satellite GEO-KOMPSAT-2A (GK-2A). It is designed for use with goesrecv (originally by Pieter Noordhuis), or xritdecoder by Lucas Teske.

xrit-rx receives Virtual Channel Data Units (VCDUs) over the network from either goesrecv or xritdecoder and demultiplexes them into separate virtual channels, each containing a different type of image data. The demultiplexed packets are assembled into complete files which are output as images such as the ones below.

Getting Started

A guide for setting up the hardware and software components of a GK-2A LRIT receiver is available on my site. It also covers the types of images that can be received, image post-processing techniques and data decryption.

The RTL-SDR Blog has also written a guide for setting up the hardware and software required to receive imagery from GOES-16/17 and GK-2A. Once you are able to receive the GK-2A LRIT downlink with goesrecv, you can begin installing and configuring xrit-rx.

Installing xrit-rx

Download the latest version of xrit-rx ( xrit-rx.zip ) from the Releases page, then unzip the contents to a new folder.

numpy , pillow , colorama and pycryptodome are required to run xrit-rx. Use the following command to download and install these packages:

pip3 install -r requirements.txt 

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. More information is available in the setup guide.

Configuring xrit-rx

All user-configurable options are found in the xrit-rx.ini file. The default configuration will work for most situations.

If xrit-rx is not running on the same device as goesrecv / xritdecoder, the ip option will need to be updated with the IP address of the device running goesrecv / xritdecoder.

List of options

rx section

Setting Description Options Default
spacecraft Name of spacecraft being received GK-2A GK-2A
mode Type of downlink being received lrit or hrit lrit
input Input source goesrecv or osp goesrecv
keys Path to decryption key file Absolute or relative file path EncryptionKeyMessage.bin

output section

Setting Description Options Default
path Root output path for received files Absolute or relative file path “received”
images Enable/Disable saving Image files to disk true or false true
xrit Enable/Disable saving xRIT files to disk true or false false
channel_blacklist List of virtual channels to ignore
Can be multiple channels (e.g. 4,5 )
0: Full Disk
4: Alpha-numeric Text
5: Additional Data
none

goesrecv section

Setting Description Options Default
ip IP Address of a device running goesrecv Any IPv4 address 127.0.0.1
vchan Output port of goesrecv Any TCP port number 5004

osp section

Setting Description Options Default
ip IP Address of a device running Open Satellite Project xritdecoder Any IPv4 address 127.0.0.1
vchan Output port of Open Satellite Project xritdecoder Any TCP port number 5001

udp section

Setting Description Options Default
ip IP Address to bind UDP socket to Any IPv4 address 127.0.0.1
vchan Port number to bind UDP socket to Any UDP port number 5002

dashboard section

Setting Description Options Default
enabled Enable/Disable dashboard server true or false true
port Port number for server to listen on Any TCP port number 1692
interval Update interval in seconds integer 1

Dashboard

xrit-rx includes a web-based dashboard for easy monitoring and viewing of received data. The current GK-2A LRIT schedule is also displayed on the dashboard (retrieved from KMA NMSC).

By default the dashboard is enabled and accessible on port 1692 via HTTP (no HTTPS). These settings can be changed in the [dashboard] section of xrit-rx.ini .

HTTP API

xrit-rx has a basic API accessible via HTTP primarily to support its web-based monitoring dashboard. This may be useful for integrating xrit-rx with other applications.

The API only supports GET requests and will return either a 200 OK or 404 Not Found status. The root endpoint is located at /api which returns information about the current xrit-rx configuration (example below).

 "version": 1.1, "spacecraft": "GK-2A", "downlink": "LRIT", "vcid_blacklist": [ 4, 5 ], "output_path": "received/LRIT/", "images": true, "xrit": false, "interval": 1 > 

The API also supports a special dynamic endpoint for retrieving image files over a network. This endpoint uses the start of the relative decoder output path found in the configuration object at the API root endpoint ( /api ).

For example, if output_path is “received/LRIT” the endpoint will be /api/received/LRIT . From there the URL follows the folder structure created by xrit-rx for saving received images (e.g. /api/received/LRIT/20190722/FD/IMG_FD_047_IR105_20190722_075006.jpg ). The API does not currently support directory listing.

List of Endpoints

URL Description Example MIME
/api General configuration information see above application/json
/api/current/vcid Currently active virtual channel number application/json
/api/latest/image Path to most recently received product < "image": "received/LRIT/[. ].jpg" > application/json
/api/latest/xrit Path to most recently received xRIT file < "xrit": "received/LRIT/[. ].lrit" > application/json

Acknowledgments

  • Lucas Teske – Developer of Open Satellite Project and writer of “GOES Satellite Hunt”
  • Pieter Noordhuis – Developer of goestools
  • John Bell – Software testing and IQ recordings
  • “kisaa” – GK-2A HRIT debugging and packet recordings
  • @Rasiel_J – IQ recordings

libjpeg

xrit-rx uses libjpeg for converting JPEG2000 (J2K/JP2) images to Portable Pixmap Format (PPM) images. A compiled 32-bit binary for Windows is included in xrit-rx releases along with the libjpeg LICENSE (GPLv3) and README.

The source code for libjpeg can be found at https://github.com/thorfdbg/libjpeg.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected]

Comments are closed, but trackbacks and pingbacks are open.