Tuesday, September 15, 2026

softlora: a pure-Python LoRa PHY decoder + TinyGS SDR ground station

Hi all,

I wanted to share a project I've been working on this summer as part of
Google Summer of Code 2026 with LibreCube: a pure-Python LoRa physical-layer
receiver (softlora) and an SDR-based TinyGS ground station (tinygs).

softlora decodes LoRa packets from IQ recordings or live SDR streams using
only NumPy/SciPy. Synchronization implements the three-stage CFO/STO estimator in [1], and I ported gr-lora_sdr's frame_sync block as an alternative front-end. It's
tested on synthetic AWGN sweeps, over-the-air captures, and real satellite
passes (SF7-12).

Links:
  Project write-up:            https://studhamza.github.io/hamza-folio/projects/LoRa_tinygs/
  softlora (LoRa PHY decoder): https://gitlab.com/librecube/lib/python-softlora
  tinygs (ground station):     https://gitlab.com/librecube/lib/python-tinygs


Happy to answer questions and get feedback. :)

[1] M. Xhonneux, O. Afisiadis, D. Bol, and J. Louveaux, "A Low-Complexity
    LoRa Synchronization Algorithm Robust to Sampling Time Offsets," IEEE
    Internet of Things Journal, 2021. https://arxiv.org/abs/1912.11344

Cheers,
Hamza Sayed

No comments:

Post a Comment