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:
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.
When the elevation crosses the horizon mask, it narrows the crossing down to under a second to find AOS and LOS.
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:

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 ( |
Firewall Considerations¶
For normal operation, allow outbound:
HTTPS (443) to
celestrak.organdu.topbytes.netNTP (123) to
pool.ntp.org/time.google.comDNS (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:
|
List the commands |
|
Firmware, time, WiFi, catalogue, selected satellite and memory |
|
Every predicted pass in UTC: AOS / TCA / LOS times, azimuths and maximum elevation |
|
The orbital elements in use for the tracked satellites |
|
Download fresh orbital data now |
|
Select a tracked satellite by NORAD number (e.g. |
|
Set the home location from a grid square |
|
Show a test alert banner |
|
Auto-select at AOS: |
|
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¶
Use a WPA2/WPA3 WiFi network; avoid open networks.
Keep firmware up to date — the OTA check runs hourly.
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?¶
Hardware and network specifications: Technical Specifications
Regulatory and safety information: Compliance
Return to daily operation: Operation