Skip to content

fix(modem-provision): heal stale Telit CGDCONT attach context (v0.3.3) - #54

Merged
bobfogg merged 1 commit into
lts_26_07.isofrom
fix/telit-cgdcont-provision
Jul 31, 2026
Merged

fix(modem-provision): heal stale Telit CGDCONT attach context (v0.3.3)#54
bobfogg merged 1 commit into
lts_26_07.isofrom
fix/telit-cgdcont-provision

Conversation

@bobfogg

@bobfogg bobfogg commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

The Telit ECM provisioner returned Done the moment ECM was bound and never checked the attach APN. A recycled Telit carrying a stale CGDCONT CID1 (e.g. internet.cxn baked in from a prior deployment, now with a Kore SIM) binds ECM to the wrong APN and the PDN stays dead through every reboot — the mirror of the Quectel cause-55/33 trap. Bench-proven on a Telit 2026-07-31: a bad context survived a 0.3.2 boot, and 0.3.3 heals it (internet.cxn -> super) at boot, before ModemManager, restoring cellular.

Lift the carrier->APN logic and the CGDCONT-rewrite routine out of QuectelEC25 into the base Modem (provisionAttachApn, chooseApn, isTelenor*, parsers, publishApn); both drivers now share one attach-APN heal, the only family difference being the ICCID query (AT+QCCID vs AT#CCID) via a new iccidQueryCmd() virtual and a prefix-agnostic parseIccid. Telit runs the heal as Stage 3 after the ECM bind. Split at_commands.h into at:: (3GPP-standard)

  • at::quectel:: / at::telit:: vendor namespaces so a cross-vendor command is a visible red flag.

Add recycled-context tests (both directions, correct-context no-op, dry-run, Telit #CCID parse). 86 checks, 0 failures. Bump ctt-modem-provision 0.3.2 -> 0.3.3.

The Telit ECM provisioner returned Done the moment ECM was bound and never
checked the attach APN. A recycled Telit carrying a stale CGDCONT CID1 (e.g.
internet.cxn baked in from a prior deployment, now with a Kore SIM) binds ECM
to the wrong APN and the PDN stays dead through every reboot — the mirror of
the Quectel cause-55/33 trap. Bench-proven on a Telit 2026-07-31: a bad
context survived a 0.3.2 boot, and 0.3.3 heals it (internet.cxn -> super) at
boot, before ModemManager, restoring cellular.

Lift the carrier->APN logic and the CGDCONT-rewrite routine out of QuectelEC25
into the base Modem (provisionAttachApn, chooseApn, isTelenor*, parsers,
publishApn); both drivers now share one attach-APN heal, the only family
difference being the ICCID query (AT+QCCID vs AT#CCID) via a new
iccidQueryCmd() virtual and a prefix-agnostic parseIccid. Telit runs the heal
as Stage 3 after the ECM bind. Split at_commands.h into at:: (3GPP-standard)
+ at::quectel:: / at::telit:: vendor namespaces so a cross-vendor command is a
visible red flag.

Add recycled-context tests (both directions, correct-context no-op, dry-run,
Telit #CCID parse). 86 checks, 0 failures. Bump ctt-modem-provision 0.3.2 ->
0.3.3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@bobfogg
bobfogg merged commit 0ea7200 into lts_26_07.iso Jul 31, 2026
2 checks passed
@bobfogg
bobfogg deleted the fix/telit-cgdcont-provision branch July 31, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant