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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tinygs-0.1.0.tar.gz (37.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tinygs-0.1.0-py3-none-any.whl (41.6 kB view details)

Uploaded Python 3

File details

Details for the file tinygs-0.1.0.tar.gz.

File metadata

  • Download URL: tinygs-0.1.0.tar.gz
  • Upload date:
  • Size: 37.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.11.16

File hashes

Hashes for tinygs-0.1.0.tar.gz
Algorithm Hash digest
SHA256 126fe22c1352d14cfbd036264d252c0c8145a50ca45c1def8ea3e1b2d23f8bee
MD5 2666bb5186599491115157172a5afe69
BLAKE2b-256 8900006d6b6bdbe0c02563f7ac2200ae61d5181cc9fc00ffc45d09db2250b37c

See more details on using hashes here.

File details

Details for the file tinygs-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tinygs-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.11.16

File hashes

Hashes for tinygs-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cfcf1f811db5b183e0ccbc5e682eb66ae2bec79505f675733087a95b6abcc158
MD5 3f387ec5828598ced3c78f40e0731ad5
BLAKE2b-256 69f15c6a85d9c23a75f523eb0643ae406698a67bacaa39d76bab46d99c8229f6

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

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