Valid targets being filtered out compared to dump1090 #24
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
olemd/skyview#24
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem Description
SkyView is filtering out several valid targets that dump1090 is able to show. This suggests we may have overly strict filtering or decoding problems that are rejecting legitimate ADS-B messages.
Expected Behavior
SkyView should be able to decode and display all valid aircraft that dump1090 can successfully process and display.
Potential Root Causes
Investigation Areas
Steps to Reproduce
Impact
Missing valid targets reduces the effectiveness of SkyView for aircraft tracking and may cause users to miss important aircraft in their coverage area.
Debugging Approach
Additional Information - Position Decoding Errors
Some targets that we do manage to decode are appearing hundreds of kilometers away from their actual position. This suggests serious issues with our CPR (Compact Position Reporting) decoding implementation.
Symptoms
Likely Causes
CPR Global/Local Decoding Issues:
Reference Position Problems:
Implementation Bugs:
Critical Areas to Review
This position error issue is likely related to the filtering problem - we may be rejecting correctly decoded positions as 'impossible' while accepting incorrectly decoded ones.
Fixed in v0.0.13
Several independent causes combined to hide targets that dump1090 shows:
612d65b). DF0/4/5/16/20/21 overlay the CRC with the aircraft address, so the CRC residue is never zero. The decoder required a zero residue and rejected every one of them, which was 58% of all messages in a 30 s capture. Aircraft without ADS-B never appeared, and squawk was almost always missing. The address is now recovered from the residue, and a reply is accepted only if that address was recently confirmed by a message with a clean CRC. The AC13 altitude and ID13 squawk fields were also mis-decoded and are fixed (c4fb68a).30b21e9).42352e1). Reports from different receivers a few milliseconds apart looked like thousands of knots, out-of-order timestamps were rejected, and a bad first position blocked all later ones. This is the "rejecting correctly decoded positions" suspicion in the comment above.33d5beb).0x1Ain the timestamp or signal field, about 0.3% of frames (0dcd913).Live comparison with dump1090 on the same feed:
Released in v0.0.13. Local (single-frame) CPR decoding, which gets positions onto the map faster, follows in a separate commit.
Follow-up: local (single-frame) CPR decoding landed in
fa01e71. Once an aircraft has a position from a global decode, a single frame is decoded relative to it if that position is less than a minute old. This helps when frames are missed at the edge of coverage or when a pair straddles an NL boundary. On the strong test feed it made no measurable difference (183/189 position frames decoded either way), since valid pairs were almost always available.