Skip to main content

TinyGS

Google Summer of Code 2026

A Python ground station for the TinyGS satellite network.

Plug in an RTL-SDR dongle and it connects to TinyGS over MQTT, takes the satellite assignments the server sends you, decodes the packets the SDR picks up, and reports them back to the network. A simulator is included, so you can try it without hardware.

This project is in hypercare and needs extensive field testing. It works, but it has not yet run on many antennas, SDRs or sky views. If you deploy it, we would genuinely like to hear how it went, a working station is as useful to us as a broken one. Open an issue, or email info@librecube.org with your setup: SDR, antenna, location, the satellites you caught, and anything that went wrong. Thanks :)

Install

pip install tinygs

That brings the LoRa decoder (softlora) with it. To drive an RTL-SDR dongle, add the hardware backend too:

pip install 'tinygs[sdr]'

Run a station

tinygs-create    # answer some questions once -> station.json
tinygs-run       # go live: connect, receive, report
tinygs-stop      # go offline

tinygs-create asks for your MQTT credentials (send /mqtt to @tinygs_personal_bot on Telegram), your location, and your SDR settings. tinygs-run then keeps the station online.

One catch: the server only assigns satellites to stations with Auto Tune turned on, and that's a setting on the tinygs.com website. The setup guide covers it, along with antennas, credentials and troubleshooting.

Use it from Python

import tinygs
from tinygs.adapters import SimulatorRadio

config = tinygs.StationConfig(
    user="...",              # from the Telegram bot
    password="...",
    mac="AABB11223344",      # any stable 12 hex chars; becomes the MQTT client id
    station_name="my_gs",    # the name shown on tinygs.com
)

tinygs.GroundStation(config, SimulatorRadio(interval=2.0)).run()

StationConfig.from_env() reads the same settings from TINYGS_* variables. For a real station, swap in RtlSdrRadio(sample_rate_hz=250_000.0, gain=30.0).

RtlSdrRadio is just an IQ source plus a decoder, so supporting a different SDR like HackRF, a ZMQ stream, a recorded file, only means a different source.

See tinygs/adapters/, and examples/ for runnable versions of all of this.

Tests

pip install '.[dev]'
python -m pytest

The integration tests run a local MQTT broker, so nothing touches the real TinyGS network.

Docs

About

Developed with LibreCube, an open source initiative for space and earth exploration systems, as a Google Summer of Code 2026 project. The LoRa decoder it builds on, softlora, comes from the same effort.

MIT licensed. See LICENSE.

Metadata

Release files for tinygs 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tinygs 0.1.0
File Size Uploaded Provenance Actions
tinygs-0.1.0.tar.gz 37.1 kB Without provenance Details for tinygs-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tinygs 0.1.0
File Interpreter ABI Platform Actions
tinygs-0.1.0-py3-none-any.whl Python 3 none any Details for tinygs-0.1.0-py3-none-any.whl

Total release size: 78.7 kB

Release files / tinygs-0.1.0.tar.gz

Download URL tinygs-0.1.0.tar.gz
Size 37.1 kB
Tags Source
SHA-256 checksum
How to use checksums
126fe22c1352d14cfbd036264d252c0c8145a50ca45c1def8ea3e1b2d23f8bee
BLAKE2b-256 checksum
How to use checksums
8900006d6b6bdbe0c02563f7ac2200ae61d5181cc9fc00ffc45d09db2250b37c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / tinygs-0.1.0-py3-none-any.whl

Download URL tinygs-0.1.0-py3-none-any.whl
Size 41.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cfcf1f811db5b183e0ccbc5e682eb66ae2bec79505f675733087a95b6abcc158
BLAKE2b-256 checksum
How to use checksums
69f15c6a85d9c23a75f523eb0643ae406698a67bacaa39d76bab46d99c8229f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.11.16

Security for tinygs 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page