Autotrack - Or automated satellite tracking


Automated satellite tracking (usually referred to as “Autotrack”, for AUTOmated-TRACKing) in SatDump is meant to provide a solution to design (more or less) fully automated satellite reception stations. Such a system will usually consist of an antenna (either omnidirectional or directional), optionally a rotator, and a computer running SatDump with some SDR hardware. The design and assembly of such a system will not be described here as it is not within the scope of this documention.

SatDump will handle the scheduling, tracking, live-processing/recording and final post-processing of the data via different main components :

  • The Scheduler

  • The Satellite Tracker

  • The Recorder / other signal processing

All of these features are available both in the GUI and CLI versions of SatDump.

Disclaimer : This is NOT a tutorial, rather a description of the capabilities and configuration options. If you wish to see a more specific tutorial there are better resources available.

The Scheduler

The scheduler is the core part of the autotrack system, its role is to predict upcoming satellite passes for the station, filter them to generate a realistic list of what the hardware can actually do and triggering other events to actually start recording/processing each pass.

Operating Modes

As outlined in the introduction, 2 type of antennas exist : omnidirectional and directional. In the case of a directional installation the antenna has to be steered toward the satellite during the pass. Meanwhile, an omnidirectional setup is technically capable of receiving any satellite currently above the horizon at the same time given they do not interfere with each other and the SDR hardware used has enough bandwidth to cover both frequencies at the same time. While it is possible to keep such a system operating in the more widespread “single-satellite” mode, for many common systems (such as a 137Mhz station) not being affected by passes overlapping is desirable. This is why such a capability is present in SatDump.

By default, SatDump will operate in single-satellite mode. In this case predicted satellite passes will be filtered as to eliminate or minimize overlap as the station can - obviously - only follow a single one at a time. For each, the frequency of the SDR will be set accordingly to the downlink frequency set in the scheduler’s configuration, or if you set more than one the average of all frequencies will be set instead in an attempt to cover them all (this is meant to be used in case of satellites with several downlinks closeby in frequency) - if your SDR allows. Additionally the satellite tracker, which will both display the ongoing pass if in UI mode and control a rotator if setup will also be set upon AOS / LOS.

If Multi Mode is enabled, no pass filtering will be done at all. Instead, all passes will always be selected as it is left assumed the system is always capable of handling any visible satellite. It is also left up to the user to setup the SDR properly as the frequency or banwidth will never be changed. Therefore, the satellites and frequency configuration has to be set by the user to match what the hardware is capable of handling within the SDR’s bandwidth and center frequency.

Note : It is planned to automate this process further later as to not make these assumptions and cover more usecases

CLI Configuration

    // This is the general parameters block, holding SDR configuration options and a few others
    "parameters": {
        // SDR Options
        "source": "rtlsdr", // The type of SDR Device you wish to use. See SDR Options for more info
        "samplerate": 2.4e6, // The samplerate of the SDR device in use
        "initial_frequency": 137.5e6, // The initial frequency the SDR device will be tuned at. If in Multi-Mode, that's also where it will be staying forever
        "gain": 49, // Other SDR options (see SDR Options), such as gain
        // FFT Options
        "fft_enable": true, // Whether the FFT in the WebUI should be enabled or not - enabling can lead to higher CPU usage, but it will be disabled dynamically if unused
        "fft_size": 65536, // The size of the FFT to use - 1:1 identical to the GUI
        "fft_rate": 30, // The rate at which to run the FFT - 1:1 identical to the GUI
        "fft_avgn": 1 // Number of FFTs to average 
    "finish_processing": true, // Enables post-processing of the data. Eg, decoding the .cadu or .frm down to images
    "output_folder": "./test_auto_cli", // Output folder, where all basebands, decoded data, etc will be present
    // QTH Configuration. In degrees and meters ASL (Above Sea Level)
    "qth": {
        "lat": 50, // Latitude
        "lon": -70, // Altitude
        "alt": 123 // Altitude
    // If present, enables the integrated HTTP server with a Web interface showing various information
    // as well as an API (JSON) server to pull information about the autotrack status.
    "http_server": "",
    // Tracking configuration. This covers the "Satellite Tracker" part
    "tracking": {
        // Rotator configuration. This can be ommited if not required
        "rotator_config": {
            // For now, only Hamlib's Rotctl is supported
            "rotctl": {
                "address": "", // Address of the rotctld server to connect to
                "port": 4533 // Port of the server to connect to
        // Configuration of the rotator tracking. This can be ommited if not required
        "rotator_algo": {
            // This section is also optional, and sets the rotator to
            // park itself to a specific position when no satellites are in sight,
            // for example setting a prime-focus dish to Zenith in order to
            // reduce wind load
            "park_while_idle": true, // Enables this feature
            "park_position": {
                "az": 0.0, // Azimuth to set the rotator to when IDLE
                "el": 90.0 // Elevation to set the rotator to when IDLE
            "unpark_at_minus": 60.0, // How manys seconds before a pass the rotator should un-park at prior to a pass
            // Other general parameters
            "update_period": 0.1 // How often the rotator position should be updated, in seconds
        // Configuration of the scheduler
        "autotrack_cfg": {
            "autotrack_min_elevation": 0, // Minimum elevation (at TCA!) of passes to select, for all satellites.
            "stop_sdr_when_idle": false, // Whether to stop the SDR when no satellites are in sight
            "multi_mode": true // Puts the scheduler in "Multi" mode - meant for omnidirectional setups
    // This is the list and configuration of objects autotrack should be following.
    // Do note everything except *norad* and for *downlinks*, *frequency*, *record* 
    // and *live* is fully optional.
    "tracked_objects": [
            "norad": 25338, // NORAD ID of the satellite to track
            // Enumeration of downlinks to record. Usually one, but can be more than one
            "downlinks": [
                    "frequency": 137620000, // Frequency of the downlink, in Hz
                    "record": false, // Whether to record baseband or not
                    "live": true, // Enables live-processing with a SatDump pipeline
                    "pipeline_name": "noaa_apt", // ID of the pipeline, to be found in the "pipelines/*.json" files
                    // Parameters fo the pipeline, which vary depending on the pipeline
                    "pipeline_params": {
                        "autocrop_wedges": false,
                        "satellite_number": "15",
                        "sdrpp_noise_reduction": true
                    "frequency": 137350000,
                    "record": false,
                    "live": true,
                    "pipeline_name": "noaa_dsb",
                    "pipeline_params": {} // Many pipelines will not require any parameters, this can be left empty safely
            "norad": 58023,
            "downlinks": [
                    "frequency": 137.77e6, // You can also use exponent notation!
                    "record": true,
                    "baseband_format": "ziq2", // Baseband format to record in
                    "baseband_decimation": 6 // Decimation to be applied to the recording, this effectively divides the samplerate of the SDR

GUI Configuration

Most of the GUI configuration is covered in the Satellite Tracker section of this documentation. Please refer to it for rotator configuration, setting your QTH and similar.

Otherwise, everything will be done the following 2 menus :


  • Satellite Selector : This is the menu in the top part of the window. By selecting a satellite in either and clicking the buttons in the center you can select the satellites you wish to track. The right panels is those currently selected.

  • Minimum Elevation : This filters passes to be above a specific minimum elevation at TCA

  • Multi Mode : Puts the scheduler in multi-satellite mode, for omnidirectional installations

  • Stop SDR When IDLE : Stops the SDR when no satellites are being tracked

  • Timetable : The “timetable” graph shows upcoming passes for each satellites, and highlights those selected in white when Autotrack is engaged

  • Update Passes : Refreshes upcoming passes now. This is done automatically if engaged

  • Engage Autotrack : Enables/Disables autotrack. Configuration is locked out when enabled

  • Satellite List : Lets the user configure the satellites being tracked. The frequency can be set in the 2nd column, baseband recording/live-processing can be set in the 3rd column and furhter configuration in the last. The “+” and “-” buttons in the left column let you add/delete downlinks if more than one frequency is needed per satellite