SatsDecoder
SatsDecoder copied to clipboard
Image and Telemetry decoder for some amateurs satellites (geoscan, sputnix platforms...)
Satellites decoder
Image and Telemetry decoder for some amateurs satellites (geoscan, sputnix platforms...)
First, download, setup and run soundmodem
https://r4uab.ru/settings-soundmodem/
To start decoding, run SatsDecoder, select protocol tab and press Connect button. Play FM demodulated signal
and wait for result.
Options
Out DirDirectory to store result images and telemetryServerHostname or IP-address of soundmodemPortPort of soundmodem (see in File -> Devices -> AGWPE Server Port)Merge modeWhen enabled, all new images data will store to one fileNew ImageForce a new image
Hotkeys
Ctrl-QQuitF1Show About window, check if newer version available
Protocols
The following protocols are currently supported:
GEOSCAN- Geoscan platformUSP- Unified SPUTNIX protocolAX.25CSP- Cubesat Space ProtocolCubeBel-2D-Star ONE- D-Star ONE ProtocolCitGardens-02- CIT Gardens-02 projectGreenCube- GreenCubeLedsat- LEDSATLucky-7- Lucky-7 Satellite protocolRoseyCubeSatSamSat-Ionosphere- SamSat-Ion2 beacon structureSharjahSatSnuglite- SNUGLITE-I beacon structureSonate-2- Sonate-2 protocolWTCSimba- WildTrackCube-SIMBARAW- Any raw data
Data Sources
Various data source types are available in the Conn combobox:
AGWPE Client- to connect to soundmodemsHEX values- per-line decoding of data transmitted as a HEX stringHEX values from files- same as theHEX values, but from filesTCP Client- TCP socket as clientTCP Server- TCP socket as server- ATTENTION!!! For TCP types, the data provider ensures that the header is sent before the main data:
Byte order: Network (big-endian)struct header { uint32_t len; // data length }
- ATTENTION!!! For TCP types, the data provider ensures that the header is sent before the main data:
KISS files- read KISS-filesSatDump frm files- read SatDump frm files (only for AX.25 and Geoscan)

Run from source
Required at least Python 3.7
I recommend to use a virtual environment
Install required packages:
pip install -r requirements.txt
To run:
python -m SatsDecoder
Build from source
Required at least Python 3.7
I recommend to use a virtual environment
-
Pyinstaller
pip install -r requirements.txt pip install pyinstaller pyinstaller -y decoder.spec -
Nuitka
pip install -r requirements.txt pip install nuitka python -m nuitka python -m nuitka --python-flag=-m --onefile --standalone \ --assume-yes-for-downloads --output-dir=dist --script-name=SatsDecoder \ --enable-plugins=tk-inter --windows-icon-from-ico=res/icon.png \ --include-data-dir=res=res --noinclude-data-files=res/*.txt
The result build can be found in the dist folder
Licensing
SatsDecoder is licensed under GPL-3.0-or-later. It contains third-party code licensed as GPL-3.0-or-later, but the majority of the codebase is licensed as MIT
Contributing
Contributions to SatsDecoder must be licensed as MIT.
The "main" branch is the release branch.
New branches must be created from "dev".
All PRs must be into "dev".
Python code must be compliant or close to the PEP-8.