Defects
| ID | Sev | Defect | Status | Root cause |
|---|---|---|---|---|
| BUG-001 | S2 | SD card fails under ESP-IDF (err=0x107) but works under Arduino Mount SD_MMC with pins CLK=5, CMD=4, D0=6 → Attempt CMD0/CMD8/CMD55/ACMD41 initialisation → All commands return err=0x107 | OPEN | UNKNOWN. Not yet diagnosed. Candidates: clock configuration, pin drive strength, marginal card socket contact, or a difference in the IDF SDMMC driver initialisation sequence. |
| BUG-002 | S1 | tracker MQTT CONNECT never confirmed; CIPSEND prompt and CONNACK unreadable by line parser Flash tracker.ino → Observe +CIPOPEN: 0,10 (socket opens successfully) → Observe that MQTT-CONNECT sent is never logged → Note that MARK-CONNECTED is printed unconditionally regardless of outcome | FIXED | Two defects. (1) AT+CIPSEND emits a '>' prompt that is not reliably newline-terminated, so the line-based reader blocks until its deadline expires and gives up before the prompt is seen. (2) Broker CONNACK bytes (20 02 00 00) are not newlin |
| BUG-003 | S2 | tracker GNSS wait loop exits after seconds instead of the intended 15 minutes Flash tracker.ino with no GNSS fix available → Observe TRACKER-DONE-NOFIX after a few seconds → The loop condition reads t < 900000UL && !haveFix, with t += 1000 per iteration | FIXED | The loop counter is incremented by 1000 per iteration as a stand-in for milliseconds, but each iteration does not actually take one second. The counter is a fiction; it does not represent elapsed time. |
| BUG-004 | S3 | PRD FR-3.1 specifies a non-existent AT command Issue AT+CGNSINF → Receive +CME ERROR | OPEN | The PRD was written without validation against the actual module command set. |
| BUG-005 | S2 | Misdiagnosis: a modem in PPP data mode was read as a dead, latched-off modem | RESOLVED | Diagnostic error, not a modem fault. The probes assumed that AT silence implied a powered-down module, and never established whether the module was still in data mode. Two independent confirmations: (1) adding a guarded +++ escape before an |
| BUG-006 | S1 | lwIP PPP could not negotiate with the A7670E: three independent defects | RESOLVED | The Arduino ESP32 core's lwIP is configured for a hosted, WiFi-oriented model: the core is initialised by the network stack, and the core lock is mandatory. A bare-metal PPP client that skips WiFi has to take responsibility for both. The tw |
| BUG-007 | S1 | Calling tcpip_init() after the WiFi stack has started aborts in esp_vfs_lwip_sockets_register | RESOLVED | Exactly one thing per process may initialise lwIP, and which thing that is depends on whether WiFi has started. BUG-006's guidance was stated as an absolute rule and was therefore misapplied. |
| BUG-008 | S1 | softAPConfig() netmask argument made the DHCP server silently never start | RESOLVED | The API takes three addresses that read identically at the call site, so the mistake is invisible in review. softAPConfig's return value was discarded, which is the only signal that the configuration was rejected. |
| BUG-009 | S1 | AT+CLBS returns ret_code 10 (close network error) for all modes; worked on 2026-09-29, fails from 2026-09-30 | OPEN | LIKELY SERVER-SIDE, NOT FIRMWARE. The modem data plane is proven healthy at the time of the failure: NETOPEN returns OK, IPADDR yields a valid address (100.x), CIPOPEN TCP to mqtt.easyiothings.com:80 succeeds, and CIPOPEN TCP to lbs-simcom. |
| BUG-010 | S1 | GNSS sees 0 satellites from 2026-09-30 18:37 onward, after a confirmed fix at 17:46 the same day | OPEN | RF / sky-view, not firmware. The engine is powered, NMEA is streaming, and C/N0 tracking never starts, which rules out a dead engine, a wrong serial mode and the BUG-003 deadline bug. The distinguishing signal is that this began at a specif |