{"id":13586403,"url":"https://github.com/sam210723/xrit-rx","last_synced_at":"2025-03-16T21:30:58.757Z","repository":{"id":37695337,"uuid":"197934985","full_name":"sam210723/xrit-rx","owner":"sam210723","description":"📡 Receive images from weather satellite GEO-KOMPSAT-2A (GK-2A).","archived":false,"fork":false,"pushed_at":"2021-11-04T12:54:32.000Z","size":4575,"stargazers_count":86,"open_issues_count":5,"forks_count":18,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-02-14T21:27:34.903Z","etag":null,"topics":["airspy","coms-1","geo-kompsat-2a","gk-2a","hrit","lrit","python","python3","rtlsdr","satellite","satellite-imagery","weather","weather-satellite","xrit-rx"],"latest_commit_sha":null,"homepage":"https://vksdr.com/xrit-rx","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sam210723.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-20T13:36:12.000Z","updated_at":"2023-12-25T08:01:04.000Z","dependencies_parsed_at":"2022-08-27T06:02:58.569Z","dependency_job_id":null,"html_url":"https://github.com/sam210723/xrit-rx","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fxrit-rx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fxrit-rx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fxrit-rx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fxrit-rx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sam210723","download_url":"https://codeload.github.com/sam210723/xrit-rx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830949,"owners_count":20354854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airspy","coms-1","geo-kompsat-2a","gk-2a","hrit","lrit","python","python3","rtlsdr","satellite","satellite-imagery","weather","weather-satellite","xrit-rx"],"created_at":"2024-08-01T15:05:33.011Z","updated_at":"2025-03-16T21:30:58.227Z","avatar_url":"https://github.com/sam210723.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# :satellite: xrit-rx - LRIT/HRIT Downlink Processor\n\n[![GitHub release](https://img.shields.io/github/release/sam210723/xrit-rx.svg)](https://github.com/sam210723/xrit-rx/releases/latest)\n[![Python versions](https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8-blue)](https://www.python.org/)\n[![Github all releases](https://img.shields.io/github/downloads/sam210723/xrit-rx/total.svg)](https://github.com/sam210723/xrit-rx/releases/latest)\n[![GitHub license](https://img.shields.io/github/license/sam210723/xrit-rx.svg)](https://github.com/sam210723/xrit-rx/blob/master/LICENSE)\n\n***\n**⚠️ This software is now outdated. Receiving imagery from GK-2A via LRIT and HRIT is now possible with [SatDump](https://www.satdump.org/).**\n***\n\n**xrit-rx** is a packet demultiplexer and file processor for receiving images from geostationary weather satellite [GEO-KOMPSAT-2A (GK-2A)](https://nmsc.kma.go.kr/enhome/html/base/cmm/selectPage.do?page=satellite.gk2a.intro). It is designed for use with [**goesrecv**](https://github.com/sam210723/goestools) (originally by [Pieter Noordhuis](https://twitter.com/pnoordhuis)), or [**xritdecoder**](https://github.com/opensatelliteproject/xritdemod/releases/tag/1.0.3) by [Lucas Teske](https://twitter.com/lucasteske).\n\n**xrit-rx** receives [Virtual Channel Data Units (VCDUs)](https://nmsc.kma.go.kr/resources/homepage/pdf/GK2A_LRIT_Mission_Specification_Document_v1.0.pdf#page=27) over the network from either **goesrecv** or **xritdecoder** and demultiplexes them into separate virtual channels, each containing a different type of image data.\nThe demultiplexed packets are assembled into complete files which are output as images such as the ones below.\n\n![GK-2A Wavelengths](https://vksdr.com/bl-content/uploads/pages/5fdcbf35a5231fc135c274ac17ca50c8/wavelengths.png)\n\n## Getting Started\nA guide for setting up the hardware and software components of a GK-2A LRIT receiver is [available on my site](https://vksdr.com/xrit-rx). It also covers the types of images that can be received, image post-processing techniques and data decryption.\n\n\u003ca href=\"https://vksdr.com/xrit-rx\" target=\"_blank\"\u003e\u003cp align=\"center\"\u003e\u003cimg src=\"https://vksdr.com/bl-content/uploads/pages/5fdcbf35a5231fc135c274ac17ca50c8/guide-thumb-light.png\" title=\"Receiving Images from Geostationary Weather Satellite GEO-KOMPSAT-2A\"\u003e\u003c/p\u003e\u003c/a\u003e\n\nThe [RTL-SDR Blog](https://www.rtl-sdr.com) has also [written a guide](https://www.rtl-sdr.com/rtl-sdr-com-goes-16-17-and-gk-2a-weather-satellite-reception-comprehensive-tutorial/) 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**.\n\n### Installing xrit-rx\nDownload the [latest version of **xrit-rx**](https://github.com/sam210723/xrit-rx/releases/latest) (``xrit-rx.zip``) from the Releases page, then unzip the contents to a new folder.\n\n[`numpy`](https://pypi.org/project/numpy), [`pillow`](https://pypi.org/project/Pillow/), [`colorama`](https://pypi.org/project/colorama/) and [`pycryptodome`](https://pypi.org/project/pycryptodome/) are required to run **xrit-rx**. Use the following command to download and install these packages:\n```\npip3 install -r requirements.txt\n```\n\nImages downlinked from GK-2A are encrypted by the [Korean Meteorological Administration](https://nmsc.kma.go.kr/enhome/html/main/main.do) (KMA). Decryption keys can be downloaded from KMA's website and used with **xrit-rx**.\nMore information is [available in the setup guide](https://vksdr.com/xrit-rx#keys).\n\n### Configuring xrit-rx\nAll user-configurable options are found in the [`xrit-rx.ini`](src/xrit-rx.ini) file. The default configuration will work for most situations.\n\nIf **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**.\n\n## List of options\n\n#### `rx` section\n| Setting | Description | Options | Default |\n| ------- | ----------- | ------- | ------- |\n| `spacecraft` | Name of spacecraft being received | `GK-2A` | `GK-2A` |\n| `mode` | Type of downlink being received | `lrit` or `hrit` | `lrit` |\n| `input` | Input source | `goesrecv` or `osp` | `goesrecv` |\n| `keys` | Path to decryption key file | *Absolute or relative file path* | `EncryptionKeyMessage.bin` |\n\n#### `output` section\n\n| Setting | Description | Options | Default |\n| ------- | ----------- | ------- | ------- |\n| `path` | Root output path for received files | *Absolute or relative file path* | `\"received\"` |\n| `images` | Enable/Disable saving Image files to disk | `true` or `false` | `true` |\n| `xrit` | Enable/Disable saving xRIT files to disk | `true` or `false` | `false` |\n| `channel_blacklist` | List of virtual channels to ignore\u003cbr\u003eCan be multiple channels (e.g. `4,5`) | `0: Full Disk`\u003cbr\u003e`4: Alpha-numeric Text`\u003cbr\u003e`5: Additional Data`\u003cbr\u003e | *none* |\n\n#### `goesrecv` section\n\n| Setting | Description | Options | Default |\n| ------- | ----------- | ------- | ------- |\n| `ip` | IP Address of a device running **goesrecv** | *Any IPv4 address* | `127.0.0.1` |\n| `vchan` | Output port of **goesrecv** | *Any TCP port number* | `5004` |\n\n#### `osp` section\n\n| Setting | Description | Options | Default |\n| ------- | ----------- | ------- | ------- |\n| `ip` | IP Address of a device running Open Satellite Project **xritdecoder** | *Any IPv4 address* | `127.0.0.1` |\n| `vchan` | Output port of Open Satellite Project **xritdecoder** | *Any TCP port number* | `5001` |\n\n#### `udp` section\n\n| Setting | Description | Options | Default |\n| ------- | ----------- | ------- | ------- |\n| `ip` | IP Address to bind UDP socket to | *Any IPv4 address* | `127.0.0.1` |\n| `vchan` | Port number to bind UDP socket to | *Any UDP port number* | `5002` |\n\n#### `dashboard` section\n\n| Setting | Description | Options | Default |\n| ------- | ----------- | ------- | ------- |\n| `enabled` | Enable/Disable dashboard server | `true` or `false` | `true` |\n| `port` | Port number for server to listen on | *Any TCP port number* | `1692` |\n| `interval` | Update interval in seconds | `integer` | `1` |\n\n\n## Dashboard\n**xrit-rx** includes a web-based dashboard for easy monitoring and viewing of received data.\nThe current GK-2A LRIT schedule is also displayed on the dashboard (retrieved from [KMA NMSC](https://nmsc.kma.go.kr/enhome/html/main/main.do)).\n\n![Dashboard](https://vksdr.com/bl-content/uploads/pages/5fdcbf35a5231fc135c274ac17ca50c8/dashboard.png)\n\nBy default the dashboard is enabled and accessible on port \u003cabbr title=\"Comes from the COMS-1/GK-2A LRIT frequency: 1692.14 MHz\"\u003e1692\u003c/abbr\u003e via HTTP (no HTTPS). These settings can be changed in the ``[dashboard]`` section of ``xrit-rx.ini``.\n\n\n## HTTP API\n**xrit-rx** has a basic API accessible via HTTP primarily to support its web-based monitoring dashboard.\nThis may be useful for integrating **xrit-rx** with other applications.\n\nThe API only supports `GET` requests and will return either a `200 OK` or `404 Not Found` status.\nThe root endpoint is located at `/api` which returns information about the current xrit-rx configuration (example below).\n```json\n{\n  \"version\": 1.1,\n  \"spacecraft\": \"GK-2A\",\n  \"downlink\": \"LRIT\",\n  \"vcid_blacklist\": [\n    4,\n    5\n  ],\n  \"output_path\": \"received/LRIT/\",\n  \"images\": true,\n  \"xrit\": false,\n  \"interval\": 1\n}\n```\n\nThe 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``).\n\nFor 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.\n\n### List of Endpoints\n| URL | Description | Example | MIME |\n| --- | ----------- | ------- | ---- |\n| `/api` | General configuration information | *see above* | `application/json` |\n| `/api/current/vcid` | Currently active virtual channel number | `{ \"vcid\": 63 }` | `application/json` |\n| `/api/latest/image` | Path to most recently received product | `{ \"image\": \"received/LRIT/[...].jpg\" }` | `application/json` |\n| `/api/latest/xrit` | Path to most recently received xRIT file | `{ \"xrit\": \"received/LRIT/[...].lrit\" }` | `application/json` |\n\n\n## Acknowledgments\n  - [Lucas Teske](https://twitter.com/lucasteske) - Developer of [**Open Satellite Project**](https://github.com/opensatelliteproject) and writer of [\"GOES Satellite Hunt\"](https://www.teske.net.br/lucas/2016/10/goes-satellite-hunt-part-1-antenna-system/)\n  - [Pieter Noordhuis](https://twitter.com/pnoordhuis) - Developer of [**goestools**](https://github.com/pietern/goestools)\n  - [John Bell](https://twitter.com/eswnl) - Software testing and IQ recordings\n  - [\"kisaa\"](https://github.com/kisaa) - GK-2A HRIT debugging and packet recordings\n  - [@Rasiel_J](https://twitter.com/Rasiel_J) - IQ recordings\n\n\n## libjpeg\n**xrit-rx** uses [**libjpeg**](https://github.com/thorfdbg/libjpeg) for converting JPEG2000 (J2K/JP2) images to Portable Pixmap Format (PPM) images.\nA compiled 32-bit binary for Windows is included in **xrit-rx** releases along with the **libjpeg** [LICENSE](https://github.com/sam210723/xrit-rx/blob/master/src/tools/libjpeg/LICENSE) (GPLv3) and [README](https://github.com/sam210723/xrit-rx/blob/master/src/tools/libjpeg/README).\n\nThe source code for **libjpeg** can be found at https://github.com/thorfdbg/libjpeg.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam210723%2Fxrit-rx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsam210723%2Fxrit-rx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam210723%2Fxrit-rx/lists"}