Skip to content

ThinkNode M1: USB CDC serial drops (serial_disconnect) when forwarding received packets #3193

Description

@tgaguy

Describe the bug

The ThinkNode M1's USB CDC serial connection drops repeatedly while connected to a host, a few seconds after the node receives any mesh packet (advert, REQ, GRP_TXT, PATH, etc.) and forwards it to the host over USB serial. Drops occur at irregular intervals (3–30 s), sometimes immediately after a successful reconnect.

The device itself does not reboot — its clock stays monotonic through the drops and it answers device/battery queries as soon as the link is re-established. Only the USB CDC session drops.

To Reproduce

  1. Flash a ThinkNode M1 with v1.17.0 (build 09-Aug-2026).
  2. Connect via USB CDC-ACM (/dev/ttyACM0, VID 239a:4405) to a Linux host running the meshcore Python library (or meshcore-packet-capture).
  3. Generate any mesh traffic from a second node (advert, message, request).
  4. Observe serial_disconnect / "Serial connection lost" followed by host reconnect cycles.

Expected behavior

The serial connection remains stable while the node receives and forwards packets.

Environment

  • Hardware: Elecrow ThinkNode M1 (nRF52840, native USB CDC-ACM)
  • Firmware: v1.17.0-727fc05 (build 09-Aug-2026)
  • Host: Linux, kernel 6.14.0-37-generic, cdc_acm driver
  • Client: agessaman/meshcore-packet-capture, meshcore Python library 2.3.8

Diagnostics already ruled out

  • Two different ThinkNode M1 units — both drop identically.
  • Different USB cable and different USB port — still drops.
  • Host reboot (fresh USB stack) — still drops.
  • USB autosuspend disabled (power/control = on) — not power management.
  • ModemManager never probes the device; only the analyser process opens the port.
  • Device stays alive (no reboot); battery healthy (4.16 V).

Possible relation

May be related to #2819 ("kiss modem fixes for stalls under USB backpressure") — the drop persists on v1.17.0 despite that fix.

Example log excerpt

INFO  Captured packet #7: D type 4, 123 bytes, SNR: 11.75, RSSI: -44 (MQTT: 3/3)
INFO  Captured packet #8: F type 7, 57 bytes,  SNR: 12.5,  RSSI: -63 (MQTT: 3/3)
INFO  Captured packet #9: F type 0, 29 bytes,  SNR: 11.75, RSSI: -63 (MQTT: 3/3)
INFO  Captured packet #10: D type 4, 123 bytes, SNR: 12.0, RSSI: -48 (MQTT: 3/3)
WARNING  Disconnect event received: serial_disconnect
ERROR    Serial connection lost - cable may be disconnected

thinknode-packet-capture-log.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions