-
released this
2026-09-29 14:35:54 +02:00 | 10 commits to main since this releaseSkyView v0.0.13 - Correct Beast Decoding and Stability Fixes
This release fixes the Mode S / ADS-B decoder. Before it, Beast sources placed some aircraft hundreds of kilometres off, reported roughly half the real altitude, and discarded more than half of all messages. Output now matches dump1090 on the same feed. The release also includes a security fix and a set of database, configuration and packaging fixes.
If you switched to a VRS JSON source because Beast data looked wrong, you can switch back.
Measured against dump1090 (same live Beast feed)
v0.0.12 v0.0.13 Messages decoded ~42% 99.7% Positions more than 5 km off yes (one aircraft ~680 km off) none Positions rejected by validation 13 in 3 min 0 Altitude roughly half the real value median 25 ft from dump1090 Squawk almost never available 17/17 matching Decoder fixes
- CPR position decoding (#35, #24)
- Odd frames used the even-frame zone size, which shifted positions by about 110 km at Nordic latitudes.
- Negative zone indices were discarded.
- Pairs that straddle a longitude-zone boundary or are too old to pair are now rejected.
- The position is taken from the newest frame.
- Surface positions now use the 90° surface grid, resolved against the receiver location.
- ADS-B altitude was decoded with the wrong bit layout, which roughly halved it (18,800 ft instead of 38,000 ft).
- Mode S surveillance replies (DF0/4/5/16/20/21) (#24)
- These replies were all discarded as CRC failures.
- The aircraft address is now recovered from the CRC residue. A reply is accepted only if its address was recently confirmed by a message with a clean CRC, so corrupted replies cannot create phantom aircraft.
- Mode S altitude (AC13) and squawk (ID13) are now decoded correctly.
- Beast framing: escaped
0x1Abytes in the timestamp and signal fields misaligned frames. This affected about 0.3% of frames. - Memory: CPR state for aircraft that stopped transmitting is now released.
Position validation (#24)
- Positions from different receivers a few milliseconds apart are no longer rejected as "impossible speed", and slightly out-of-order timestamps are no longer rejected either.
- A bad first position no longer blocks all correct positions after it. Three consistent positions replace it.
Security
- All dynamic values inserted into the page with
innerHTMLare now sanitized to prevent XSS.
Database
- SQLite pragmas were never applied: WAL, synchronous mode, cache size and foreign keys were all off. The driver ignored the parameter format in the connection string.
auto_vacuumand page-size changes now take effect.- The server now runs schema migrations on startup. Previously a database not prepared by
skyview-datahad no tables, and every history write failed.
Configuration
settingsare now applied.history_limit,stale_timeoutandupdate_ratewere read but never used. Defaults followdocs/CONFIGURATION.md: 1000 history points and a 60 s stale timeout. Out-of-range values are adjusted, with a warning in the log.- A missing or invalid
-configfile is now fatal. Previously the server silently started with a defaultlocalhost:30005source. - IPv6 source addresses now work.
Build and packaging
cmd/skyview/main.goandupdate-database.shwere never committed, because an over-broad.gitignorepattern hid them. A fresh clone can now build all binaries.- The container build works again. Previously it built from the repository root, which has no Go files. Images now carry OCI labels and
/etc/build-infowith the build date and git revision. skyview -versionreports the build version.- WebSocket compression is enabled.
Upgrade notes
- The effective stale timeout changes from 15 s to 60 s unless
stale_timeoutis set. - Services started with a wrong
-configpath will now fail to start instead of running with defaults. The Debian service uses/etc/skyview-adsb/config.json, which the package installs.
Known limitations
- Altitude in Gillham (100 ft) coding, used by old transponders and above 50,175 ft, is reported as unknown.
- ADS-B GNSS-height positions (TC 20-22) may show an incorrect altitude.
- The man page for
skyviewstill lists-portand-debug. The actual flags are-server,-sources,-verboseand-version.
Package
- Debian package:
skyview-adsb_0.0.13_amd64.deb(7.5 MB, amd64) - SHA-256:
e1287e272b72c040ce1a0fb1292fd692c32d4c93142afa6820d05a986eefebbc
sudo dpkg -i skyview-adsb_0.0.13_amd64.debContainer image:
BUILDAH_FORMAT=docker podman build \ --build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ --build-arg GIT_REVISION=v0.0.13 \ -t skyview:v0.0.13 .🤖 Generated with Claude Code
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- CPR position decoding (#35, #24)