About SatNOGS
SatNOGS is an integral part of the Libre Space Foundation. The project aims to build a global network of satellite ground stations. It is designed as an open source participatory project.
⚠️ July 2026 Disaster: The "70000 / Alpha-5" Format change
The space tracking ecosystem is a disaster. Due to the massive failure in leadership the traditional 5-digit integer catalog room is exhausted. In response, US Chair Force (Space-Track) announced that before the end of July 2026, new object catalog numbers will cross the legacy boundary threshold, jumping directly past 69999 into a 6-digit integer structure (starting at 100000).
To preserve the fixed-width requirements of the legacy 69-character TLE standard, Space-Track is enforcing the Alpha-5 object numbering schema. This stop-gap solution replaces the first digit of the 5-digit object number column with a letter (e.g., A=10, B=11, through Z=33, skipping letters 'I' and 'O' to protect alphanumeric clarity).
An official Alpha-5 formatted TLE output structures line headers like this:
0 HAWK-15A 1 J2931U 21006CW 26148.66506944 .00003931 00000-0 11826-3 0 99991 2 J2931 097.2338 194.0330 0004500 272.5331 128.7187 15.34417975009998 ^ Alphanumeric 'J2931' replaces standard 5-digit integer parsing rules
Eighty Column Punch card format has been in use for decades and now, with no testing, a major change will be made in July.
The Operational Threat: Because Alpha-5 injects character strings directly into columns that legacy ground software explicitly expects to be strict integers, it causes sudden, terminal execution crashes. Un-patched tracking applications cannot map the data structure. Popular station dependencies—including Orbitron, SatDump, and rotator drivers like PSTrotator—will experience broken telemetry tracking pipelines or fail to parse downstream updates entirely if the string elements pass into their un-updated legacy elset routines.
Understanding TLE & NORAD Catalogs
To accurately point an antenna array at a moving satellite, a ground station must know its exact orbital coordinates. This is accomplished using Two-Line Element (TLE) data sets managed under specific NORAD Catalog IDs.
A NORAD ID (or Satellite Catalog Number) is a unique five-digit number assigned by US Space Command to track every man-made object orbiting Earth. The TLE format encapsulates this tracking data into two standard 69-character lines of text, mapping variables like inclination, eccentricity, and mean motion:
ISS (ZARYA) 1 25544U 98067A 26166.51654311 .00013234 00000-0 23412-3 0 9993 2 25544 51.6412 121.3412 0005432 43.1234 76.5432 15.4981234542312 ^ NORAD ID: 25544
Because the upper atmosphere constantly introduces variable drag and perturbations, a TLE is a highly perishable asset. Without regular updates, calculation drift causes antenna arrays to track empty sky during close satellite passes.
TLE Automation System
To insulate tracking integrity against the impending Alpha-5 catalog structural collapse, the N5ZKK tracking core utilizes an automated programmatic pipeline. This utility maps custom identification matrices from local requirements, targets external data sets, and updates system endpoints using a hybrid caching engine. When multiple conflicting source feeds offer records for an identical NORAD satellite ID within the same runtime window, the pipeline executes a deterministic arbitration sequence within merge-tles.py instead of relying on simple file overwrites.
3.1 True Epoch Comparison
The system actively inspects indices [18:32] of the first line of each candidate TLE string to extract the raw fractional Julian day epoch value. Given an active element buffer, a new incoming record updates the station directory if and only if it boasts a structurally younger timestamp:
{ (Epochnew, Name, Line1, Line2) if SatID ∉ R ∨ Epochnew > Epochcurrent ;
R[SatID] otherwise }
3.2 Advanced Alpha-5 Alphanumeric Decoding
As the global catalog of tracked space objects expands past the traditional 5-digit ceiling (99,999), traditional numerical parsing scripts collapse. The pipeline includes an implementation of the 18th SDS Alpha-5 identifier convention. When the script encounters an alphanumeric character in the leading position of the catalog index field, it decodes it using base ASCII relative transitions to safely scale tracking counters to 6-digit values:
This approach keeps downstream amateur tools compatible with modern space infrastructure tracking parameters without truncating or corrupting identification rows.
4. Reverse-Ephemeris State Vector Re-Compilation
Modern catalog repositories like CelesTrak are moving away from legacy raw text entries toward structured comma-separated values (CSV) containing orbital state vectors. Because traditional rotor applications cannot consume these files natively, celestrak-slow.py includes a custom reverse-ephemeris compiler.
The script reads raw parameters like Mean Motion, Eccentricity, and B-Star drag from the CSV API stream, translates them into the proper string representations, and handles complex formatting quirks like the implicit decimal notation required by legacy syntax:
def format_bstar(bstar_str):
try:
val = float(bstar_str)
if val == 0: return " 00000-0"
sci_str = f"{val:.5e}"
mantissa, exponent = sci_str.split('e')
m_digits = mantissa.replace('.', '').replace('-', '')
exponent = int(exponent) + 1
m_fixed = m_digits[:5].ljust(5, '0')
sign_char = "-" if val < 0 else " "
exp_sign = "-" if exponent < 0 else "+"
return f"{sign_char}{m_fixed}{exp_sign}{abs(exponent):1d}"
except:
return " 00000-0"
Additionally, the module protects data integrity by manually computing the legacy Modulo-10 checksum across each generated 68-character row, ensuring clean integration with tracking controllers:
5. Client Politeness and Network Fault Tolerance
Operating a continuous tracking station requires reliable network logic and considerate client behavior. The ingestion modules implement two defensive strategies:
- Automated Request Gating: The client reads the system's current UTC time before hitting external APIs. If the clock falls within high-load minutes (e.g., the top/bottom of the hour or scheduled catalog refresh points), the script pauses to avoid contributing to server traffic spikes.
- Multi-Tiered Failover Support: In
satnogs-tle.py, the script scans local JSON telemetry dumps first to minimize external bandwidth. If a target payload is missing from the cache, it falls back to a live, out-of-band Space-Track API query with decoupled SSL verification constraints, preventing tracking blackouts due to expired or misconfigured local network certificates.
6. Conclusion and Future Directions
The data-fusion engine described here presents a reliable solution for unifying scattered satellite tracking data. By automating acquisition, verifying timestamps, and handling modern 6-digit formatting constraints on an embedded platform, the pipeline ensures local antennas and SDR decoders always have access to highly fresh orbital data. Future updates will focus on expanding the core parsing architecture to natively decode modern CCSDS Orbit Mean-Elements Messages (OMM) as tracking software begins adopting these advanced formats.
Space-Track TLE download
+-----------------------+
| Start Program |
+-----------+-----------+
|
v
+-----------+-----------+
| Parse CLI Arguments |
+-----------+-----------+
|
v
+-----------+-----------+
| Call download_tles |
+-----------+-----------+
|
v
+-----------+-----------+
| Try Read Input |
| /satellites.txt |
+-----------+-----------+
|
[Does File Exist?]
/ \
No / \ Yes
v v
+--------------------+ +--------------------+
| Log & Print Error | | Parse Lines & |
+--------------------+ | Extract NORAD IDs |
| +---------+----------+
v |
(Return False) [Any IDs Found?]
| / \
| No / \ Yes
| v v
| +--------------------+ +--------------------+
| | Log & Print Warning| | Is High-Load |
| +--------------------+ | Window Active? |<---+
| | +---------+----------+ |
| v | |
| (Return False) | Yes |
| | v |
| | +--------------------+ |
| | | Print Warning, Log |----+
| | | & Sleep 60 Seconds |
| | +--------------------+
| | |
| | | No
| | v
| | +--------------------+
| | | Init Space-Track |
| | | Native Client Call |
| | +---------+----------+
| | |
| | [API Call Success?]
| | / \
| | No / \ Yes
| | v v
| | +--------------------+ +--------------------+
| | | Log & Print | | Split Text into |
| | | Download Exception | | Individual Lines |
| | +--------------------+ +---------+----------+
| | | |
| | v v
| | (Return False) +--------------------+
| | | | Loop Line Groups: |
| | | | Extract ID, Map |
| | | | Name & Write File |
| | | +---------+----------+
| | | |
| | | v
| | | +--------------------+
| | | | Log & Print Success|
| | | | Confirmation Msg |
| | | +---------+----------+
| | | |
| | | v
| | | (Return True)
| | | |
v v v v
+------------------------------------------------------------+
| Check Upload Action |
| [Was --upload flag passed?] |
+------------------------------+-----------------------------+
|
No / \ Yes
/ \
v v
+--------------------+ +--------------------+
| End Program | | Print: Upload flag |
+--------------------+ | functionally hidden|
+---------+----------+
|
v
+--------------------+
| End Program |
+--------------------+
Station Automation Source Registry
Direct configurations and pipeline processing binaries used to normalize tracking feeds for local client arrays.
Station Operations & Modifications
Active Station Array Profile: Multi-band az-el tracking assembly including directional cross-polarized VHF/UHF configurations, helical setup, and secondary parabolic downlinks.
2021: Refurbished the VHF helical antenna setup.
Prototyping and hardware testing.
Mounting the receiver processors into the enclosure.
Finished VHF receiver assembly and processor configuration.
Detailed view of the completed SatNOGS VHF receiver unit.
Satellite dish 1700MHz helical feed
3D printed parts 1700L_5.5T_0.14S_4D_10-90M.stl Frame 1700LNBMount1700.stl lnbmount.stl LNBMount1700.stl
2025: Refurbished helical feed.
Testing on the ground March 2025
Station Observations
Data captures reflecting thousands of successful satellite passes across amateur and meteorological networks.
VHF Band Observations Data
UHF Band Observations Data
Featured Capture: Max Valier
A notable satellite observation named after the pioneer of rocketry. Sadly, Max Valier died while experimenting with liquid-fueled rockets and became the first fatality of the space age.
TNX MANFRED ES CHRISTA FUCHS 73 DE II3MU MIS