25 satellites, typed by hand and never revisited. Eight of them were the
first-generation Tevel constellation, which re-entered in 2024; four more had
come down too; and the nine Tevel-2 satellites that replaced them, the Chinese
space station, AO-27, AO-123 and twenty others were simply absent. So: 44
satellites now, and a generator instead of a memory.
cmd/satgen joins three public sources on the NORAD catalog number — Celestrak's
amateur group and PE0SAT's mirror for which birds OpsLog can actually get
elements for, and SatNOGS DB for the transmitters. It is a one-shot tool, run by
hand, the same arrangement as cmd/cntygen, and it is deliberately conservative:
- It never destroys a curated entry. The hand-written plans hold things
SatNOGS does not reliably carry — a CTCSS tone, the QO-100 passband as
operators describe it — so an existing bird keeps its data and only gains
its catalog number.
- It prunes on the re-entry date, which is a fact SatNOGS publishes rather
than a judgement about which of the missing satellites are missing for good.
- It refuses a digital uplink that does not say what it is. A GMSK uplink is a
command channel far more often than a digipeater, and shipping the wrong one
invites somebody to transmit on a control frequency. An analog uplink with
both ends is a contact by construction, which is what catches the repeaters
that describe themselves only as "Mode V/U FM".
- Its output is deterministic. One satellite can hold two catalog entries —
GreenCube is 53106 in one feed and 53109 in the other — and iterating a map
picked a different one each run.
A bird now carries its NORAD number, and that is how its elements are found.
Names were the only join before, and they are written differently by every party
involved: "TIANYAN 01" and "TO-108" are one satellite that had never once met,
so TO-108 tracked nothing at all.
And the plan now reaches a station that has already run OpsLog. The editable
copy was written on the first launch and was the operator's list for ever after,
so a release adding nine satellites reached nobody who had opened the tab. It is
merged on each load instead: a satellite they already have is untouched, edits
and corrections included, and only the ones they have never seen are added.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
707 lines
13 KiB
JSON
707 lines
13 KiB
JSON
[
|
|
{
|
|
"name": "AO-123",
|
|
"norad": 61781,
|
|
"aliases": [
|
|
"ASRTU-1 (AO-123)"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transceiver",
|
|
"mode": "FM",
|
|
"down_lo": 435400000,
|
|
"up_lo": 145850000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "AO-27",
|
|
"norad": 22825,
|
|
"aliases": [
|
|
"EYESAT A (AO-27)"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U FM",
|
|
"mode": "FM",
|
|
"down_lo": 436795000,
|
|
"up_lo": 145850000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "AO-7",
|
|
"norad": 7530,
|
|
"aliases": [
|
|
"AMSAT-OSCAR 7",
|
|
"OSCAR 7"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Mode B linear (inverting)",
|
|
"mode": "SSB",
|
|
"down_lo": 145925000,
|
|
"down_hi": 145975000,
|
|
"up_lo": 432125000,
|
|
"up_hi": 432175000,
|
|
"inverting": true
|
|
},
|
|
{
|
|
"label": "Mode A linear",
|
|
"mode": "SSB",
|
|
"down_lo": 29400000,
|
|
"down_hi": 29500000,
|
|
"up_lo": 145850000,
|
|
"up_hi": 145950000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "AO-73",
|
|
"norad": 39444,
|
|
"aliases": [
|
|
"FUNCUBE-1",
|
|
"FUNCUBE 1"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Linear (inverting)",
|
|
"mode": "SSB",
|
|
"down_lo": 145950000,
|
|
"down_hi": 145970000,
|
|
"up_lo": 435130000,
|
|
"up_hi": 435150000,
|
|
"inverting": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "AO-91",
|
|
"norad": 43017,
|
|
"aliases": [
|
|
"RADFXSAT",
|
|
"FOX-1B",
|
|
"RADFXSAT (FOX-1B)"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "FM voice repeater",
|
|
"mode": "FM",
|
|
"down_lo": 145960000,
|
|
"up_lo": 435250000,
|
|
"ctcss": 67
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "BEESAT-1",
|
|
"norad": 35933,
|
|
"transponders": [
|
|
{
|
|
"label": "Digipeater (Mobitex, idle mode: 10 sec interval)",
|
|
"mode": "DATA",
|
|
"down_lo": 435950000,
|
|
"up_lo": 435950000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "CO-65",
|
|
"norad": 32785,
|
|
"aliases": [
|
|
"CUTE-1.7+APD II (CO-65)"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Mode L/U Digipeater",
|
|
"mode": "DATA",
|
|
"down_lo": 437475000,
|
|
"up_lo": 1267600000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "CROCUBE",
|
|
"norad": 62394,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode U/U - GFSK9k6 - Digipeater - AX.25",
|
|
"mode": "DATA",
|
|
"down_lo": 436775000,
|
|
"up_lo": 436775000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "CSS",
|
|
"norad": 48274,
|
|
"transponders": [
|
|
{
|
|
"label": "3A V/V digipeater AFSK-FM 1200",
|
|
"mode": "DATA",
|
|
"down_lo": 145825000,
|
|
"up_lo": 145825000
|
|
},
|
|
{
|
|
"label": "1A V/V crew voice NFM",
|
|
"mode": "FM",
|
|
"down_lo": 145985000,
|
|
"up_lo": 145850000
|
|
},
|
|
{
|
|
"label": "2B U/V FM repeater NFM",
|
|
"mode": "FM",
|
|
"down_lo": 145985000,
|
|
"up_lo": 435075000
|
|
},
|
|
{
|
|
"label": "4A V/V imaging SSTV-FM",
|
|
"mode": "FM",
|
|
"down_lo": 145985000,
|
|
"up_lo": 145850000
|
|
},
|
|
{
|
|
"label": "1B U/U crew voice NFM",
|
|
"mode": "FM",
|
|
"down_lo": 436510000,
|
|
"up_lo": 435050000
|
|
},
|
|
{
|
|
"label": "2A V/U FM repeater NFM",
|
|
"mode": "FM",
|
|
"down_lo": 436510000,
|
|
"up_lo": 145875000
|
|
},
|
|
{
|
|
"label": "4B U/U imaging SSTV-FM",
|
|
"mode": "FM",
|
|
"down_lo": 436510000,
|
|
"up_lo": 435050000
|
|
},
|
|
{
|
|
"label": "3B U/U digipeater AFSK-FM 1200",
|
|
"mode": "DATA",
|
|
"down_lo": 437550000,
|
|
"up_lo": 437550000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "ESEO",
|
|
"norad": 43792,
|
|
"transponders": [
|
|
{
|
|
"label": "FM",
|
|
"mode": "FM",
|
|
"down_lo": 145895000,
|
|
"up_lo": 1263500000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "FLORIPASAT-1",
|
|
"norad": 44885,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode U/U GFSK2k4 Repeater",
|
|
"mode": "DATA",
|
|
"down_lo": 436100000,
|
|
"up_lo": 436100000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "FO-29",
|
|
"norad": 24278,
|
|
"aliases": [
|
|
"JAS-2",
|
|
"FUJI-OSCAR 29"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Linear (inverting)",
|
|
"mode": "SSB",
|
|
"down_lo": 435800000,
|
|
"down_hi": 435900000,
|
|
"up_lo": 145900000,
|
|
"up_hi": 146000000,
|
|
"inverting": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "FORESAIL-1P",
|
|
"norad": 66778,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode U/U - GMSK9k6 - Digipeater - Skylink",
|
|
"mode": "DATA",
|
|
"down_lo": 437125000,
|
|
"up_lo": 437125000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "GRBBETA",
|
|
"norad": 60237,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/V - GFSK9k6 - Digipeater - AX.25",
|
|
"mode": "DATA",
|
|
"down_lo": 145935000,
|
|
"up_lo": 145935000
|
|
},
|
|
{
|
|
"label": "Mode U/U - GFSK9k6 - Digipeater - AX.25",
|
|
"mode": "DATA",
|
|
"down_lo": 436785000,
|
|
"up_lo": 436785000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "IO-117",
|
|
"norad": 53109,
|
|
"aliases": [
|
|
"GREENCUBE",
|
|
"MEZTLI"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Digipeater (1200 bd GMSK)",
|
|
"mode": "DATA",
|
|
"down_lo": 435310000,
|
|
"up_lo": 435310000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "IO-86",
|
|
"norad": 40931,
|
|
"aliases": [
|
|
"LAPAN-A2",
|
|
"LAPAN-ORARI"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "FM voice repeater",
|
|
"mode": "FM",
|
|
"down_lo": 435880000,
|
|
"up_lo": 145880000,
|
|
"ctcss": 88.5
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "ISAT",
|
|
"norad": 43879,
|
|
"transponders": [
|
|
{
|
|
"label": "MODE U/U DSTAR VOICE",
|
|
"mode": "FM",
|
|
"down_lo": 435525000,
|
|
"up_lo": 437325000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "ISS (ZARYA)",
|
|
"norad": 25544,
|
|
"aliases": [
|
|
"ISS",
|
|
"ZARYA",
|
|
"ARISS"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "FM voice repeater",
|
|
"mode": "FM",
|
|
"down_lo": 437800000,
|
|
"up_lo": 145990000,
|
|
"ctcss": 67
|
|
},
|
|
{
|
|
"label": "APRS digipeater",
|
|
"mode": "DATA",
|
|
"down_lo": 145825000,
|
|
"up_lo": 145825000
|
|
},
|
|
{
|
|
"label": "SSTV",
|
|
"mode": "FM",
|
|
"down_lo": 145800000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "JO-97",
|
|
"norad": 43803,
|
|
"aliases": [
|
|
"JY1SAT",
|
|
"JY1-SAT"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Linear (inverting)",
|
|
"mode": "SSB",
|
|
"down_lo": 145855000,
|
|
"down_hi": 145875000,
|
|
"up_lo": 435100000,
|
|
"up_hi": 435120000,
|
|
"inverting": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "KNACKSAT-2",
|
|
"norad": 67683,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/V - FSK9k6 - Digipeater - AX.25 G3RUH",
|
|
"mode": "DATA",
|
|
"down_lo": 145825000,
|
|
"up_lo": 145825000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "KOSEN-1",
|
|
"norad": 49402,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode HF/U - Onboard SDR",
|
|
"mode": "DATA",
|
|
"down_lo": 435525000,
|
|
"up_lo": 21125000,
|
|
"up_hi": 21150000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "LASARSAT",
|
|
"norad": 62391,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode U/U - GFSK9k6 - Digipeater - AX.25",
|
|
"mode": "DATA",
|
|
"down_lo": 436925000,
|
|
"up_lo": 436925000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "LILACSAT-2",
|
|
"norad": 40908,
|
|
"transponders": [
|
|
{
|
|
"label": "APRS Digipeater",
|
|
"mode": "DATA",
|
|
"down_lo": 144390000,
|
|
"up_lo": 144390000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "NO-44",
|
|
"norad": 26931,
|
|
"aliases": [
|
|
"PCSAT (NO-44)"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/V APRS AFSK",
|
|
"mode": "DATA",
|
|
"down_lo": 145825000,
|
|
"up_lo": 145825000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "PO-101",
|
|
"norad": 43678,
|
|
"aliases": [
|
|
"DIWATA-2",
|
|
"DIWATA-2B"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "FM voice repeater (scheduled)",
|
|
"mode": "FM",
|
|
"down_lo": 145900000,
|
|
"up_lo": 437500000,
|
|
"ctcss": 141.3
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "QB50P1",
|
|
"norad": 40025,
|
|
"transponders": [
|
|
{
|
|
"label": "Linear Transponder",
|
|
"mode": "SSB",
|
|
"down_lo": 145935000,
|
|
"down_hi": 145965000,
|
|
"up_lo": 435047000,
|
|
"up_hi": 435077000,
|
|
"inverting": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "QMR-KWT-2",
|
|
"norad": 67291,
|
|
"transponders": [
|
|
{
|
|
"label": "V/U FM Transponder CTCSS 67.0 Hz",
|
|
"mode": "FM",
|
|
"down_lo": 436950000,
|
|
"up_lo": 145920000,
|
|
"ctcss": 67
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "QO-100",
|
|
"norad": 43700,
|
|
"aliases": [
|
|
"ES'HAIL 2",
|
|
"ESHAIL 2",
|
|
"ES'HAIL-2"
|
|
],
|
|
"geostationary": true,
|
|
"transponders": [
|
|
{
|
|
"label": "Narrowband linear",
|
|
"mode": "SSB",
|
|
"down_lo": 10489550000,
|
|
"down_hi": 10489800000,
|
|
"up_lo": 2400050000,
|
|
"up_hi": 2400300000
|
|
},
|
|
{
|
|
"label": "Wideband (DATV)",
|
|
"mode": "DATA",
|
|
"down_lo": 10491000000,
|
|
"down_hi": 10499000000,
|
|
"up_lo": 2401500000,
|
|
"up_hi": 2409500000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "RS-44",
|
|
"norad": 44909,
|
|
"aliases": [
|
|
"DOSAAF-85"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Linear (inverting)",
|
|
"mode": "SSB",
|
|
"down_lo": 435640000,
|
|
"down_hi": 435680000,
|
|
"up_lo": 145965000,
|
|
"up_hi": 146005000,
|
|
"inverting": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SO-50",
|
|
"norad": 27607,
|
|
"aliases": [
|
|
"SAUDISAT 1C",
|
|
"SAUDISAT 1C (SO-50)"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "FM voice repeater",
|
|
"mode": "FM",
|
|
"down_lo": 436795000,
|
|
"up_lo": 145850000,
|
|
"ctcss": 67
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SONATE-2",
|
|
"norad": 59112,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/V - APRS digipeater",
|
|
"mode": "DATA",
|
|
"down_lo": 145825000,
|
|
"up_lo": 145825000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TAURUS-1",
|
|
"norad": 44530,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U FM 67.0 PL",
|
|
"mode": "FM",
|
|
"down_lo": 436760000,
|
|
"up_lo": 145820000,
|
|
"ctcss": 67
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-1",
|
|
"norad": 63217,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-2",
|
|
"norad": 63219,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder - Beacon",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-3",
|
|
"norad": 63218,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-4",
|
|
"norad": 63213,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-5",
|
|
"norad": 63214,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-6",
|
|
"norad": 63215,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-7",
|
|
"norad": 63238,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-8",
|
|
"norad": 63239,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder - Beacon",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TEVEL2-9",
|
|
"norad": 63237,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U - FM Transponder",
|
|
"mode": "FM",
|
|
"down_lo": 436400000,
|
|
"up_lo": 145970000
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "TO-108",
|
|
"norad": 44881,
|
|
"aliases": [
|
|
"CAS-6",
|
|
"TIANQIN-1"
|
|
],
|
|
"transponders": [
|
|
{
|
|
"label": "Linear (inverting)",
|
|
"mode": "SSB",
|
|
"down_lo": 145915000,
|
|
"down_hi": 145935000,
|
|
"up_lo": 435270000,
|
|
"up_hi": 435290000,
|
|
"inverting": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "UKUBE-1",
|
|
"norad": 40074,
|
|
"transponders": [
|
|
{
|
|
"label": "Inverting linear transponder",
|
|
"mode": "SSB",
|
|
"down_lo": 145930000,
|
|
"down_hi": 145950000,
|
|
"up_lo": 435074300,
|
|
"up_hi": 435094300,
|
|
"inverting": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "XIWANG-1 (HOPE-1)",
|
|
"norad": 36122,
|
|
"transponders": [
|
|
{
|
|
"label": "Mode V/U FM",
|
|
"mode": "FM",
|
|
"down_lo": 435675000,
|
|
"up_lo": 145825000
|
|
}
|
|
]
|
|
}
|
|
]
|