Advanced Features

This section explains how SatTracker predicts passes and calculates Doppler, where its data comes from, firmware updates, network administration and the serial console — for users who want to understand what's happening under the hood.

How Pass Prediction Works

Orbital Elements

A satellite's orbit is described by a two-line element set (TLE) published by the US Space Force and distributed by CelesTrak. SatTracker downloads the CelesTrak amateur radio group (about 95 satellites):

  • about 30 seconds after the device first comes online, then once a day

  • retried every 15 minutes if a download fails

  • stored in flash memory, so the latest set is available immediately after a restart and survives an internet outage

Until the first successful download the device uses a copy of the elements built into its firmware. The ORBITAL DATA row in settings shows how old the current set is.

Elements are a snapshot of the orbit at one moment (the epoch); predictions slowly lose accuracy as the epoch gets older — typically a few seconds per day for low-orbit satellites, faster for those in very low or decaying orbits. Daily refresh keeps the error small.

The Orbit Model

Positions are calculated with SGP4/SDP4, the standard model the elements are designed for (the SparkFun SGP4 Arduino Library, a port of David Vallado's reference implementation). SDP4, the deep-space variant, is used automatically for high orbits such as QO-100's.

Once a second the device calculates, for every tracked satellite, its position over the Earth and its azimuth, elevation and range from your home location. The selected satellite's range is calculated half a second either side to get the range rate used for Doppler.

Finding Passes

In the background, SatTracker searches the next 24 hours (from 30 minutes ago, so a pass in progress is included) for each tracked satellite:

  1. It steps through time checking the satellite's elevation — every minute when the satellite is near your horizon, and in larger strides when it is far below it.

  2. When the elevation crosses the horizon mask, it narrows the crossing down to under a second to find AOS and LOS.

  3. Between them it searches for the highest point — the time of closest approach (TCA) and the maximum elevation.

A full run for 12 satellites takes about ten seconds and runs on its own processor core, so the display is never held up. Passes are recalculated every 15 minutes, and straight away when the orbital data, your location, the horizon mask or the tracked satellites change.

Accuracy

SatTracker's predictions have been checked against the reference implementation (Skyfield) using the same orbital elements: over 79 passes, AOS, TCA and LOS times agreed to within about one second and maximum elevations to within 0.05°.

The real-world accuracy is limited mainly by the age of the orbital elements and by the device clock, which is why SatTracker refuses to predict until its clock has been set over the internet.

Note

Very short, low passes (under about a minute, grazing the horizon) can occasionally be missed. They are rarely workable.

Doppler Correction

A satellite in low orbit moves at about 7.5 km/s, so the frequency you receive is shifted by the Doppler effect. With ṙ the range rate (km/s, negative when the satellite is approaching) and c the speed of light:

f_{\text{receive}} = f_{\text{downlink}} \left(1 - \frac{\dot r}{c}\right)
\qquad
f_{\text{transmit}} = f_{\text{uplink}} \left(1 + \frac{\dot r}{c}\right)

The transmit correction is chosen so that the satellite hears your signal on its nominal uplink frequency.

Typical maximum shifts for a low-orbit satellite:

Band

Maximum shift

145 MHz

about ±3.5 kHz

435 MHz

about ±10 kHz

2.4 GHz

about ±57 kHz

For linear transponders the centre of the passband is shown. On an inverting transponder, remember that the uplink and downlink move in opposite directions within their passbands.

Frequency Data

Transmitter data is built into the firmware:

  • A curated list for the core amateur satellites (the ISS, SO-50, AO-91, AO-123, PO-101, AO-7, FO-29, RS-44, AO-73, JO-97 and QO-100), checked against operator and AMSAT information and including CTCSS tones and inverting-transponder details.

  • For other satellites, active transmitters from the SatNOGS DB that lie in the amateur-satellite bands (21, 28, 144, 435, 1260, 2400 and 10450 MHz).

Only satellites with at least one usable transponder, repeater or digipeater appear in the WORKABLE list. Frequency data is updated with firmware updates.

Note

Satellite operators sometimes change modes, switch transponders off, or run special events. Check current status with AMSAT before relying on a schedule.

Over-The-Air (OTA) Firmware Updates

SatTracker checks for firmware updates automatically and installs them securely over HTTPS from the TopBytes update service.

How OTA Works

  • About 30 seconds after WiFi comes up, the device asks the update service whether a newer release is available for this unit (identified by its Device ID).

  • After the first check, it re-checks every hour for the rest of uptime.

  • Released units automatically install only strictly newer released firmware.

Manual Update Check

In Settings → ABOUT / UPDATE, tap CHECK UPDATE to check immediately. While checking it shows CHECKING...; if you're already up to date it shows UP TO DATE briefly.

Beta / Pre-Release Builds

If the update service offers a pre-release beta build for your unit, installing it is never automatic. SatTracker shows a confirmation page first:

⚠  Beta version X.Y.Z

This is a pre-release beta build and may be unstable. Install it now?

[ CANCEL ]   [ INSTALL ]

Only if you tap INSTALL does the beta firmware download.

The Update Progress Screen

During an update, a full-screen page shows a download progress bar with the percentage and the warning Do not power off. The device restarts when done.

On success the device shows Update complete. Restarting... and reboots into the new firmware. If the download fails it shows Update failed. Resuming. and returns to normal operation — your existing firmware is untouched. Settings, tracked satellites and the orbital-data cache are kept across updates.

Warning

Do not remove power during an update. The previous firmware is only replaced once the new image has fully downloaded, so a power loss mid-download leaves the existing firmware running — but it's still best to let it finish.

Device Registration

SatTracker checks in with the TopBytes service (u.topbytes.net) to confirm the unit is registered. This is the same check that drives OTA.

  • The check runs about 30 seconds after coming online and hourly thereafter.

  • If the service can't be reached, the device assumes it is registered and keeps working — a network outage never locks a unit.

  • If the service explicitly reports the unit as not registered, a full-screen page asks you to contact support@topbytes.net quoting the Device ID shown, with a copy of your sales receipt. Once the unit is registered, the next check clears the page automatically.

Network Administration

Ports Used

Port

Protocol

Purpose

80

TCP (HTTP)

Web setup page (inbound, AP setup mode only)

53

UDP (DNS)

DNS resolution (outbound; also the captive-portal DNS in AP mode)

123

UDP (NTP)

Time synchronisation (outbound)

443

TCP (HTTPS)

Orbital data (celestrak.org) and OTA + registration (u.topbytes.net) — all outbound

Firewall Considerations

For normal operation, allow outbound:

  • HTTPS (443) to celestrak.org and u.topbytes.net

  • NTP (123) to pool.ntp.org / time.google.com

  • DNS (53)

The inbound web page on port 80 only runs while the device is in access-point setup mode; it is not exposed on your home network during normal operation.

Warning

The setup web page has no password protection. Only use it on the device's own SatTracker Setup access point; never expose it to the public internet.

Time Synchronisation

SatTracker sets its clock via NTP shortly after WiFi comes up, from pool.ntp.org and time.google.com. The clock then runs from the processor's crystal, accurate to a fraction of a second over many hours.

Accurate time is essential: an error of one second moves a low-orbit satellite about seven kilometres along its track and shifts every AOS and LOS by a second. Until NTP has succeeded the top bar shows TIME NOT SYNCED and no passes are predicted.

Serial Console

Connect SatTracker to a computer with a USB-C data cable and open a serial terminal at 115200 baud. The boot log looks like this:

SatTracker 0.1.0 booting...
[tle] LittleFS mounted on 'ffat' (24 KB used)
[tle] loaded cache: 95 satellites
UI ready.
[net] online: MyHomeWiFi ip=192.168.1.42 rssi=-63
[clock] NTP synced
[pass] predicted 81 passes for 12 sats in 10527 ms
[tle] downloaded 15960 bytes, 95 satellites
[alert] incoming PO-101 maxEl=66

The console also accepts a few commands, typed followed by Enter:

help

List the commands

stat

Firmware, time, WiFi, catalogue, selected satellite and memory

passes

Every predicted pass in UTC: AOS / TCA / LOS times, azimuths and maximum elevation

tles

The orbital elements in use for the tracked satellites

tle

Download fresh orbital data now

sel <norad>

Select a tracked satellite by NORAD number (e.g. sel 25544)

home <grid>

Set the home location from a grid square

alert

Show a test alert banner

autosel <n>

Auto-select at AOS: 0 off, 1 good passes, 2 all passes

reboot

Restart the device

The tles and passes output can be fed to other software to cross-check predictions.

Power Consumption

  • Typical: ~2–4 W at 5 V (dominated by the LCD backlight)

  • Peak (during an OTA update): up to ~1 A at 5 V

  • Use a quality 5 V / 1 A or higher USB-C supply

  • USB-C power banks work for portable use — handy for field days and portable satellite operation

  • Use Night Mode to switch the backlight off overnight

Security Notes

  1. Use a WPA2/WPA3 WiFi network; avoid open networks.

  2. Keep firmware up to date — the OTA check runs hourly.

  3. The setup web page is unauthenticated by design and only runs in AP setup mode; don't route it to the internet.

What's Next?