{"id":16608832,"url":"https://github.com/sam210723/himawari-rx","last_synced_at":"2025-10-29T16:32:36.961Z","repository":{"id":47491598,"uuid":"296822796","full_name":"sam210723/himawari-rx","owner":"sam210723","description":"📡 Receive images from weather satellite Himawari-8 via HimawariCast.","archived":false,"fork":false,"pushed_at":"2022-05-04T02:17:30.000Z","size":1034,"stargazers_count":45,"open_issues_count":3,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-01-29T17:04:50.433Z","etag":null,"topics":["himawari-8","himawari-satellite","hrit","python","python3","satellite","satellite-imagery","weather","weather-satellite"],"latest_commit_sha":null,"homepage":"https://vksdr.com/himawari-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":"2020-09-19T08:34:59.000Z","updated_at":"2023-11-28T13:04:40.000Z","dependencies_parsed_at":"2022-08-27T19:01:05.046Z","dependency_job_id":null,"html_url":"https://github.com/sam210723/himawari-rx","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fhimawari-rx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fhimawari-rx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fhimawari-rx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam210723%2Fhimawari-rx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sam210723","download_url":"https://codeload.github.com/sam210723/himawari-rx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219857415,"owners_count":16556062,"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":["himawari-8","himawari-satellite","hrit","python","python3","satellite","satellite-imagery","weather","weather-satellite"],"created_at":"2024-10-12T01:27:19.382Z","updated_at":"2025-10-29T16:32:31.618Z","avatar_url":"https://github.com/sam210723.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :satellite: himawari-rx - HimawariCast Downlink Processor\n\n[![GitHub release](https://img.shields.io/github/release/sam210723/himawari-rx.svg)](https://github.com/sam210723/himawari-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/himawari-rx/total.svg)](https://github.com/sam210723/himawari-rx/releases/latest)\n[![GitHub license](https://img.shields.io/github/license/sam210723/himawari-rx.svg)](https://github.com/sam210723/himawari-rx/blob/master/LICENSE)\n\n**himawari-rx** is a decoder for receiving images from geostationary weather satellite [Himawari-8 (140.7˚E)](https://himawari8.nict.go.jp/) via the [HimawariCast](https://www.data.jma.go.jp/mscweb/en/himawari89/himawari_cast/himawari_cast.php) data service operated by [Japan Meteorological Agency](https://www.data.jma.go.jp/mscweb/en/index.html). HimawariCast is a DVB-S2 signal transmitted from [JCSAT-2B (154°E)](https://www.jsat.net/en/contour/jcsat-2b.html) on its [global C-band beam](https://www.satbeams.com/footprints?beam=8542). It can be received with a 2.4m satellite dish and a standard C-band LNB. It may be possible to use a smaller dish however this has not been verified.\n\n**himawari-rx** receives UDP datagrams over a network connection and outputs decoded image files to disk. The UDP datagrams can come from either a DVB-S2 receiver card such as a [TBS5520SE](https://www.tbsdtv.com/products/tbs5520se_multi-standard_tv_tuner_usb_box.html) or a satellite IP receiver such as the [Novra S300D](https://novra.com/product/s300d-receiver). A Software Defined Radio solution using GNU Radio is currently under development.\n\n![Himawari-8 Wavelengths](https://vksdr.com/bl-content/uploads/pages/95f4812a86753b6057b0e37ce4daa5d1/wavelengths.png)\n\n\n## Getting Started\nA (work in progress) guide for setting up the hardware and software components of a HimawariCast receiver is [available on my site](https://vksdr.com/himawari-rx).\n\n\u003ca href=\"https://vksdr.com/himawari-rx\" target=\"_blank\"\u003e\u003cp align=\"center\"\u003e\u003cimg src=\"https://vksdr.com/bl-content/uploads/pages/95f4812a86753b6057b0e37ce4daa5d1/guide-thumb-white.png\" title=\"Receiving Images from Geostationary Weather Satellite Himawari-8 via HimawariCast\"\u003e\u003c/p\u003e\u003c/a\u003e\n\n**In the meantime here is a quick overview of the required setup:**\n\nHimawariCast is a C-band DVB-S2 downlink on geostationary communication satellite JCSAT-2B at 154°E. The downlink frequency is 4148 MHz with a symbol rate of 2586 ksps and horizontal polarisation. On a standard 5150 MHz LO C-band LNB it has an IF of 1002 MHz.\n\nA standard DVB-S2 receiver card/box such as the [TBS6902](https://www.tbsdtv.com/products/tbs6902-dvb-s2-dual-tuner-pcie-card.html) (PCIe) or [TBS5520SE](https://www.tbsdtv.com/products/tbs5520se_multi-standard_tv_tuner_usb_box.html) (USB) can receive this downlink either using Windows or Linux. The downlink carries multicast UDP packets which are wrapped in [DVB-MPE](https://en.wikipedia.org/wiki/Multiprotocol_Encapsulation) and need to be unwrapped with software such as [TSDuck](https://tsduck.io/), the [TBS IP Tool](https://www.tbsdtv.com/blog/tbs-ip-tool-is-updated-to-v3-0-5-0-which-added-tbs5927-support.html) or [TSReader](https://www.tsreader.com/).\n\nFor TSDuck, the following command should work in most cases. \n\n```\ntsp -I dvb --device-name /dev/dvb/adapter0:1  --lnb 5150 --delivery-system \"DVB-S2\" --frequency 4148000000 --modulation QPSK --symbol-rate 2586148 --fec-inner \"3/5\" --roll-off 0.2 --polarity \"horizontal\" -P mpe --pid 0x03E9 --udp-forward --log -O drop\n```\n\nFor TSReader, use ``File -\u003e IP/DVB Mode`` and select PID ``0x03E9 (1001)``, then right click on ``UDP: 239.0.0.1`` in the PID list and select ``Retransmit UDP payload``.\n\nTo install himawari-rx, download the ``himawari-rx.zip`` from the [latest release](https://github.com/sam210723/himawari-rx/releases/latest) and extract it to a new folder. Next, install the required Python packages with ``pip install -r requirements.txt``. Finally, run himawari-rx with ``python himawari-rx.py``.\n\nhimawari-rx will begin decoding images once UDP packets from the downlink are being transmitted onto the local network using TSDuck, the TBS IP Tool or TSReader.\n\nTo generate PNG image files from the received LRIT/HRIT files, use the `tools/xrit-img.py` script. These PNG files can then be combined into a false colour image using the `tools/false-colour.py` script.\n\n## Imaging Bands\nHimawari-8 is capable of capturing Earth in 16 different wavelengths of light, 14 of which are transmitted via the HimawariCast service.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://vksdr.com/bl-content/uploads/pages/95f4812a86753b6057b0e37ce4daa5d1/bands_w.png\" title=\"HimawariCast Bands\"\u003e\u003c/p\u003e\n\n\u003c!--\n| Band | Detail  | Identifier  | Size  | Resolution    |\n| ---- | ------- | ----------- | ----- | ------------- |\n| 3    | 1 km/px | ``VIS``     | 75 MB | 11000 x 11000 |\n| 4    | 4 km/px | ``B04``     | 6 MB  | 2750 x 2750   |\n| 5    | 4 km/px | ``B05``     | 6 MB  | 2750 x 2750   |\n| 6    | 4 km/px | ``B06``     | 6 MB  | 2750 x 2750   |\n| 7    | 4 km/px | ``IR4``     | 6 MB  | 2750 x 2750   |\n| 8    | 4 km/px | ``IR3``     | 4 MB  | 2750 x 2750   |\n| 9    | 4 km/px | ``B09``     | 4 MB  | 2750 x 2750   |\n| 10   | 4 km/px | ``B10``     | 4 MB  | 2750 x 2750   |\n| 11   | 4 km/px | ``B11``     | 6 MB  | 2750 x 2750   |\n| 12   | 4 km/px | ``B12``     | 5 MB  | 2750 x 2750   |\n| 13   | 4 km/px | ``IR1``     | 6 MB  | 2750 x 2750   |\n| 14   | 4 km/px | ``B14``     | 6 MB  | 2750 x 2750   |\n| 15   | 4 km/px | ``IR2``     | 6 MB  | 2750 x 2750   |\n| 16   | 4 km/px | ``B16``     | 5 MB  | 2750 x 2750   |\n--\u003e\n\n## List of options\n#### `rx` section\n| Setting   | Description                                                                   | Options                                                 | Default      |\n| --------- | ----------------------------------------------------------------------------- | ------------------------------------------------------- | ------------ |\n| `path`    | Root output path for received files                                           | *Absolute or relative file path*                        | `\"received\"` |\n| `combine` | Save all images in a single directory (XRIT2PIC compatibility)                | `true` or `false`                                       | `false`      |\n| `format`  | File type to output                                                           | `bz2`: Compressed xRIT files\u003cbr\u003e`xrit`: LRIT/HRIT files | `xrit`       |\n| `ignored` | List of channels (bands) to ignore\u003cbr\u003e(e.g. `\"B09\", \"IR2\"`)                   | \u003ca href=\"#imaging-bands\"\u003eTable of available bands\u003c/a\u003e   | *none*       |\n\n#### `udp` section\nThese two options generally do not need to be changed.\n| Setting | Description                             | Options                         | Default     |\n| ------- | --------------------------------------- | ------------------------------- | ----------- |\n| `ip`    | Multicast IP address of DVB-S2 receiver | `224.0.0.0` - `239.255.255.255` | `239.0.0.1` |\n| `port`  | UDP output port of DVB-S2 receiver      | *Any UDP port number*           | `8001`      |\n\n\n## Acknowledgments\n  - [@yanderen2](https://twitter.com/yanderen2) - Software testing and TS recordings\n  - [tcjj3](https://github.com/tcjj3) - Software testing and scripting\n  - [John Bell](https://twitter.com/eswnl) - Software testing and TS recordings\n  - [@Apsattv](https://twitter.com/Apsattv) - TS recordings\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam210723%2Fhimawari-rx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsam210723%2Fhimawari-rx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam210723%2Fhimawari-rx/lists"}