Skip to main content

UniClOGS Pass Commander

This software controls the local functions of a UniClOGS for sending commands to the OreSat0 and OreSat0.5 CubeSats.

Major functions

  • Tracks satellites using the excellent Skyfield module
    • Fetches fresh TLEs from celestrak.org
    • Alternatively uses TLEs from a local Gpredict install
    • Calibrates for atmospheric refraction with local temperature and pressure, fetched via API from OpenWeather
  • Adapts tracking information to suit az/el rotator limits
  • Interacts with Alfa Rot2Prog Controller via Rot2prog to command the antenna rotator
  • Interacts with stationd to control amplifiers and station RF path
  • Interacts with the OreSat GNURadio flowgraph to manage Doppler shifting and to send command packets

Installing

git clone https://github.com/uniclogs/uniclogs-pass-commander.git
sudo apt install python3-pip
pip3 install -e uniclogs-pass-commander[dev]

Running pass-commander --template will generate a template configuration file. You should receive instructions for editing it. Go do that now (see below for detailed description).

When your config is all set up, run with pass-commander. See the --help flag for more options. For example pass-commander -s 60525 -m all -a dryrun.

Testing without rotctld, stationd and a running radio flowgraph is partially supported. See the --mock flag, especially -m all.

Testing

To verify that the repo is set up correctly run the tests with pytest

Building

To produce a python package python -m build. The result, a wheel, will be in dist/.

Config file

It's TOML. There are four primary sections, each with a set of mandatory configuration keys:

[Main]

General operation settings.

  • satellite (String, optional) - Default satellite ID, either index into TleCache or NORAD ID.
  • minimum-pass-elevation (Float or Integer, optional) - Minimum elevation that satellite must rise above to be considered for a pass. Default: 15°
  • owmid (String, optional) - An API key from OpenWeatherMap API
  • edl_port (int, optional) - Port to listen for EDL commands. Only open during a pass. Consult oresat-c3-software for more.
  • txgain (Integer) - Gain for transmitting. Usually between 0 and 100.

[Hosts]

IP addresses for external components.

  • radio (String) - IP address or hostname of the flowgraph.
  • station (String) - IP address or hostname of stationd.
  • rotator (String) - IP address or hostname of rotctld.

[Observer]

Physical properties of the ground station.

  • lat (Float or Integer) - Station latitude in decimal notation. For best results use 3 - 4 decimal points. See here for more.
  • lon (Float or Integer) - Station longitude in decimal notation.
  • alt (Integer) - Station altitude in meters.
  • name (String) - station name or callsign.
  • temperature-limit (Float or Integer, optional) - Temperature in Celsius above which stops a pass from being run to protect the hardware. Default: 40°C

[TleCache]

Optional local cache of TLEs. Currently only 3 line TLEs are supported. Format is:

<name>: [
    "<Satellite name>",
    "<TLE line 1>",
    "<TLE line 2>",
]

TLE cache entries may be repeated as long as <name> is unique. Select which entry is active by passing <name> to the --satellite flag.

Release Process

Releases are managed through an automated workflow using Github Actions. The automation is triggered when a release is published on Github.

Creating a Release

  1. Navigate to this project's "Releases" page
  2. Click "Draft a new release"
  3. Click "Tag: Select tag" and click on the "Create new tag" button
  4. Add a tag following the SemVer standard
    • e.g. v1.2.3
  5. Ensure that Target button is pointing at the main branch
  6. Add all necessary details about the release under "Release notes"
  7. Once everything looks good, click the "Publish release" button

Step 7 will trigger the pypi.yml workflow and the new release will be available on pypi.org.

Post-Release

Once a new release has been created and is available on pypi.org, smoke test the release to ensure it runs as expected.

pip install your-package==X.Y.Z

Metadata

Release files for uniclogs-pass-commander 1.0.1

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

Source distribution (sdist)

Source distribution for uniclogs-pass-commander 1.0.1
File Size Uploaded
uniclogs_pass_commander-1.0.1.tar.gz 51.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uniclogs-pass-commander 1.0.1
File Interpreter ABI Platform
uniclogs_pass_commander-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 96.2 kB

Release files / uniclogs_pass_commander-1.0.1.tar.gz

Download URL uniclogs_pass_commander-1.0.1.tar.gz
Size 51.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a7bfdf88848111a8d7c0a16ce851a0fb850584444e09189914bfa73b809535c1
BLAKE2b-256 checksum
How to use checksums
1c00ada4f96c34486ac9af00f54da27870f990033158b27575a02da64872e750
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 13, 2025.

Transparency log

Release files / uniclogs_pass_commander-1.0.1-py3-none-any.whl

Download URL uniclogs_pass_commander-1.0.1-py3-none-any.whl
Size 44.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
848a02e8533a8efddfb94561ff06ae1d52bbab243e7ce739afe1807bddc44ad5
BLAKE2b-256 checksum
How to use checksums
111c9dbb3c532f9e44b76d3df232124eeb6f0d8436b5101752820e40d16cf5db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 13, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release 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