SatNOGS Client Development

From SatNOGS Wiki
Revision as of 21:55, 12 August 2022 by Kerel+satnogs (talk | contribs) (Setting up a gr-satnogs development environment)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


This page describes the setup of a development environment for the SatNOGS ground station reference setup based on satnogs-client-ansible. It is assumed you have already setup your ground station as explained in SatNOGS_Client_Setup.


For each Satellite Transmitter Mode there is a specific flowgraph in this package. There are generic (e.g. CW) and satellite-specific flowgraphs. The Satellite-Transmitter-Mode-to-flowgraph mapping is defined in satnogs-client. This package is using gr-soapy for SDR hardware support and gr-satnogs for required GNURadio blocks.


The gnuradio Out-Of-Tree module gr-satnogs provides blocks required by satnogs-flowgraphs. The gitlab-CI automatically builds the package in docker containers, configured by the .gitlab-ci.yml. The built packages for releases are pushed to the librespace:satnogs package repository, the built package for the latest development version on master is pushed to the librespace:satnogs-unstable package repository.

To use a modified gr-satnogs module on a SatNOGS ground station, it’s recommended to clone your fork on your station, build the patched gr-satnogs packages and install it.

To install the latest development version of gr-satnogs on your station, set experimental=True or configure in satnogs-setup.

Setting up a gr-satnogs development environment

OUTDATED since satnogs-client-ansible@336a320!

  • Fork gr-satnogs
  • Fork gr-satnogs-package
  • Adjust the repository url of gr-satnogs in gr-satnogs-package/debian/debian/rules#L22
  • Adjust the repository url in the version detection in gr-satnogs-package/.gitlab-ci.yml#L13 ,#L30 ,#L47
  • Wait for the gitlab-CI to build your first version of gr-satnogs-package (~45 min)
  • Install your freshly built gr-satnogs-package by pointing the SATNOGS_RADIO_GR_SATNOGS_PACKAGE in satnogs-setup to the built artifact/debian package of your architecture (e.g. armhf, amd64). The build artifacts are available in your gr-satnogs-package fork by clicking CI/CD, selecting there the latest pipeline, the latest build-job and then in the right column Browse, path build/debian/output/$your_arch/gr-satnogs_$your_arch.deb


The satnogs-client is a python package, and gets installed by satnogs-setup in a python virtual environment using pip. The development is done in the master branch.

Please note that satnogs-client and satnogs-flowgraphs must be installed in compatible versions, due to (frequent) changes in the arguments available in the demodulation scripts, see Compatibility.

Setting up a satnogs-client development environment

  1. Fork satnogs-client
  2. Clone the repository on your development machine
  3. Create a new branch (e.g. station123) with your changes & push it
  4. Run satnogs-setup and change the value of SATNOGS_CLIENT_URL to point to your repository and branch as described in SatNOGS_Client_Setup#Advanced_Setup
  5. Hit "Apply" in satnogs-setup to finally install your satnogs-client version
  6. Profit.

Miscellaneous development notes