add Certus IC1/IC2/IC8 classification + merge experimental-new-pkt#133
Closed
eimann wants to merge 21 commits into
Closed
add Certus IC1/IC2/IC8 classification + merge experimental-new-pkt#133eimann wants to merge 21 commits into
eimann wants to merge 21 commits into
Conversation
add IC1/IC2/IC8 msgtypes on the simplex-DL band to prevent Certus bursts from dropping to the unknown-type bucket. payload bits are not yet decoded - coherent QPSK + Turbo requires a gr-iridium demod path plus interleaver/rate-matching params that are not publicly documented. for now classify by symbol count only so we can measure Certus share of the capture. IridiumCertusMessage + un_deqpsk() helper added for later payload work. FORMAT.md: new IC1/IC2/IC8 section documenting the classifier.
Previously our IC1/IC2/IC8 detectors fired on any simplex-DL frame with matching payload symbol count, including frames using iridium_access sync. That mislabeled legacy IRA/VOC/IME bursts that happened to have 200/432/1824 payload symbols. Now only frames with self.next=True (matched next_access_dl or NC1: prefix) are classified as Certus. Confirmed on a 20k-line sample: former IC2=328 false positives correctly redistribute back to IRA (+95), INP (+72), IME (+9), IRI (+3), RAW (+149).
The 14-bit source_id printed as :NNNNN in the frame header partitions cleanly as [sv_id:8][beam_id:6] across the captures we have looked at (sv_id = source_id >> 6, beam_id = source_id & 0x3f). Expose the split on the pretty() line as "sv?:NNN bm?:NN" (the "?" markers flag the fields as heuristic - some hdr[0] values span many sv_ids, so the formula is not universally validated). FORMAT.md: expand the INP section with H:1 / H:2 layouts and document the source_id split heuristic.
f7ef253 to
3b00dfd
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
what's here
this is based on experimental-new-pkt branch and adds two things:
nothing that touches existing decode paths for Block1 frames. all new detectors are gated by burst length and the
self.nextflag, so they don't steal IRA/VOC/etc.changes
bitsparser.py- newIC1:,IC2:,IC8:frame tags recognised by payload symbol count (200 / 432 / 1824) on Certus UWbitsparser.py- guard against misclassifyingiridium_accessDL frames asIC1/IC2/IC8(was a false-positive source)np_crc8poly 0x12F,np_crc16poly 0x1755B, magic_checksum + reassembler) as mergedwhat INP looks like on-air
based on captures + patent US9733338B1 (Iridium Communications, 2017, "single satellite geolocation systems and methods") this is almost certainly passive-geolocation broadcasts:
:%05d, CRC8 on bits 80-87, tail flags)we can't recover the body contents - descrambling looks to live in PHY silicon rather than anywhere we can touch statically.
Certus IC1/IC2/IC8
payload symbol counts consistent with public Certus documentation:
content is Turbo-FEC + scrambled, body opaque here. the tags just let you slice out these bursts for further work.
stats
parsed two multi-hour captures from two separate sites with
--uw-ec --harder:cross-site consistency on INP header bits is good - same sync/variant/source-id structure, additional 96-bit header variants seen at site B (more beams in view).
open questions / wip
H:2INP header sub-family (hdr_id == 0110 vs 1000/0111) found in site B captures - handled by the existing NP class, just a different sub-population visible at some locationstesting
self.nextguard so it can't steal iridium_access bursts