mckero 38f939bd49 fix(wavelog): resolve the LoTW satellite name from the catalogue number
LoTW refuses a QSO whose SAT_NAME is not spelled as its accepted list has it - its
own help page gives AO7 against AO-7 as a rejection - so the name we upload decides
whether a contact can ever be confirmed. The old code derived it with
substringBefore('('), which returns the descriptive half of a TLE name rather than
the OSCAR designator: measured against live Celestrak amateur data, 0 of 96
satellites resolved to something LoTW accepts. ASRTU-1 went up as ASRTU-1 where
LoTW wants AO-123.

Keying on the name cannot be made to work, because the sources disagree. Of the 49
satellites carried by both Celestrak amateur and AMSAT nasabare, 33 are named
differently - 43017 is RADFXSAT (FOX-1B) in one and AO-91 in the other, 43700 is
ES'HAIL 2 against QO-100 - so which name a QSO got depended on where the operator
fetched their TLE. The catalogue number is identical everywhere, so the table is
keyed on it and OrbitalPass.catNum is now threaded through to the QSO and persisted.

The name path stays as a fallback for contacts logged before the number was
recorded, and got two fixes of its own: it tries either side of the parentheses
rather than assuming the designator is on the left, and tolerates a differing
separator so RADIO ROSTO (RS15) reaches RS-15. Resolution now returns the list's own
spelling, so Arsene is not uploaded as ARSENE and rejected the same way AO7 would be.

Measured on the same data: 3 names resolved before, 20 by name alone now, 30 with
the catalogue number, and no satellite that used to resolve stopped resolving.

The table gained the nine TEVEL-2 satellites after an audit found them missing.
Every source writes those TEVEL2-N while LoTW has TEV2-N, which stripping separators
does not bridge - TEVEL21 is not TEV21 - so they resolved to nothing at all. They
launched in 2025 and are workable now. Their numbering is not sequential: 63217 is
TEVEL2-1 while 63213 is TEVEL2-4.

All 38 entries were cross-checked two independent ways: every catalogue number
appears in the app's own configured sources under a name consistent with the LoTW
spelling, and ARRL's startDate for each name agrees with the launch year in the
TLE international designator - which is what would catch a number pointing at the
wrong object, since a name can match by luck. Nothing here was typed from memory;
an early hand-written draft had AO-123 as 62690 when it is 61781.
2026-08-25 08:38:45 +00:00

Look4Sat: Satellite tracker

Look4Sat CI

Get it on Google Play Get it on F-Droid

Radio satellite tracker and pass predictor for Android, inspired by Gpredict

Track satellite passes with ease!

Thanks to Celestrak and SatNOGS you have access to over 9000 active satellites.
You can search the entire database by NORAD Catalog Number or the satellite's name.

Orbital positions and passes are calculated relative to your location.
To get reliable data make sure to set the station position via the app Settings.

The application is built using Kotlin, Coroutines, Jetpack Compose and Navigation.
It is now and always will be completely ad-free and open-source.

Main features:

  • Predicting satellite positions and passes for up to 10 days
  • Showing the list of currently active and upcoming satellite passes
  • Showing the active pass progress, polar trajectory and transceivers info
  • Showing the satellite positional data, footprint and ground track on the map
  • Custom TLE satellite data import is available via Three Line Element .txt files
  • Offline first: calculations are made offline. Weekly TLE data update is recommended.

License

The Look4Sat application code is licensed under the GNU General Public License v3.0.

The CW decoder in feature/cw bundles the DeepCW neural decoding model, licensed under the GNU Affero General Public License v3.0 only (AGPL-3.0-only). Because the combined work incorporates an AGPL-3.0 component, the combined work is distributed under the GNU Affero General Public License v3.0 — GPL-3.0 Section 13 permits the combination, and AGPL-3.0 Section 13 applies to the combined work as a whole. Model provenance and attribution are documented in feature/cw/licenses/NOTICE.md; the original GPL-3.0 text is preserved at feature/cw/licenses/Look4Sat-GPL-3.0.txt. The CW model runs locally on-device and does not provide services over a network.

Star History

Star History Chart
S
Description
Satellite tracker and pass predictor for Android, inspired by Gpredict
https://play.google.com/store/apps/details?id=com.rtbishop.look4sat
Readme AGPL-3.0
55 MiB
0 Stars 1 Watchers 0 Forks
v4.6.2
Latest
2026-08-27 15:47:20 +00:00
Languages
Kotlin 100%