fix(mesh): plug-and-play radio detection in all situations
Three root causes from the 2026-08-16 framework-pt incident where a replugged radio detected but never connected: - detect_serial_devices scanned a hardcoded ttyUSB0-2/ttyACM0-2 list, so a radio enumerating at index 3+ was permanently invisible. Now scans /dev for all ttyUSB*/ttyACM* nodes (deterministic order, /dev/mesh-radio alias still first and still wins the dedup). - An operator rnode-rf-settings.json port override silently outranked the device_path the user just chose in the detection modal. mesh.configure now clears a stale override when a different device is configured (symlink-resolved compare keeps /dev/mesh-radio aliases intact). - Espressif native-USB boards (303a, ESP32-S2/S3/C3 RNodes) had no udev rule, so they never got the stable /dev/mesh-radio alias and a persisted alias path dangled after a port move. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
c5cd751bcf
commit
809f7649a4
@@ -7,3 +7,8 @@ SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="m
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="mesh-radio", MODE="0660", GROUP="dialout"
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="239a", KERNEL=="ttyACM[0-9]*", SYMLINK+="mesh-radio", MODE="0660", GROUP="dialout"
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="2e8a", KERNEL=="ttyACM[0-9]*", SYMLINK+="mesh-radio", MODE="0660", GROUP="dialout"
|
||||
# Espressif native-USB (ESP32-S2/S3/C3 "USB JTAG/serial debug unit", e.g.
|
||||
# Heltec V3 / T-Deck class RNode boards plugged in via native USB). Without
|
||||
# this a replugged radio has no stable alias and a persisted /dev/mesh-radio
|
||||
# device_path dangles forever (observed live on a fleet node 2026-08-16).
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="303a", KERNEL=="ttyACM[0-9]*", SYMLINK+="mesh-radio", MODE="0660", GROUP="dialout"
|
||||
|
||||
Reference in New Issue
Block a user