Skip to content

EmComm Field Node Provisioner v1.0.2

Pre-release
Pre-release

Choose a tag to compare

@stevejun1986 stevejun1986 released this 17 Sep 21:27
· 60 commits to main since this release
62ac21d

EmComm Field Node Provisioner v1.0.2

Adds mesh peer positions on the map, makes the dock automation's untested status
impossible to miss, and fixes an SDR tool that was missing on exactly the nodes
that needed it.

What's changed

New: Meshtastic → GPX bridge. When both Meshtastic and QMapShack are installed,
a user service (emcomm-mesh-gpx.service) polls the node database every 120s and
writes EMCOMM_Data/Meshtastic/mesh_nodes.gpx for import into a QMapShack project.
Peer positions reach the map as a file, not a live feed — gpsd's client protocol
carries no waypoint object, so $GPWPL peer sentences cannot get there, and
QMapShack reads TCP NMEA rather than gpsd. Installed only when QMapShack is present;
skipped with a message otherwise. It never holds the serial port: each poll opens,
reads and closes, and skips a cycle if something else has the radio, so it cannot
block an interactive meshtastic command.

Meshtastic CLI now installs to the user site. python3 -m pip install --user --break-system-packages meshtastic replaces the virtualenv. The meshtastic console
script lands on ~/.local/bin and is importable by the system python3 the bridge
runs under.

rtl-sdr is installed by either SDR step. rtl_test is the command this node's
own documentation tells you to run when checking dongle contention, and it was absent
on a node that selected SatDump or dump1090 without system packages — the check the
docs prescribe was "command not found". Verification now asserts rtl_test is on
PATH, not merely that a package is installed.

Dock-triggered autostart is stated as a future feature. It is being designed for a
Panasonic CF-30 in a Havis DS-PAN-111 dock; that is a design target, not a tested
configuration. The step still installs and stays selectable, but it now says what it
is at the moment it runs, the options-screen label carries the mark, and verification
carries a row that warns rather than four rows that pass. A run with that step selected
therefore finishes as "complete — review warnings".

Corrected: what claims the Meshtastic USB port. Earlier guidance said gpsd matches
USB-serial bridge chips and would take the port. On Debian and Mint it does not — the
generic PL2303/FTDI/CP210x rules in /usr/lib/udev/rules.d/60-gpsd.rules are commented
out. Measured on a Seeed Wio Tracker L1 Pro: nothing claims the port. ModemManager flags
the board and declines it. NMEA output still stays off, but because the integration it
exists for does not work, not because of contention.

One login gates three things

PATH, group membership and user services are all read at login, so a fresh node needs a
logout or reboot before any of this works — and each symptom points away from the shared
cause: meshtastic reads as "command not found" (~/.local/bin joins PATH from
~/.profile only if it existed at login), the CLI hits permission errors (dialout not
yet in effect), and the GPX service has not started (enabled, deliberately not started).
The verification screen now says so on the way out.

Verified on hardware

  • SatDump 1.2.2 builds under the provisioner; RTL-SDR visible in the recorder, live spectrum
  • dump1090 tracking live traffic — 61 aircraft, 198 msg/sec — startable on demand and
    releasing the dongle cleanly
  • DVB-T blacklist survives an unplug/replug: the device comes back unclaimed and ready
  • Reboot leaves the dongle usable — confirmed on a Toughbook, bare metal, cold boot with
    the dongle attached
  • Meshtastic CLI reaches a Wio Tracker L1 Pro first try, no service contending for the port

Not verified

  • Dock-triggered autostart has never been observed firing — on any hardware, including
    the reference Toughbook and dock. It installs and verifies present; whether a dock event
    launches anything is unknown. Opt-in, and nothing else depends on it.
  • The GPX bridge has never been driven by a radio. Its GPX output, conditional install
    and failure paths are tested against recorded node data; a live mesh has not been in the
    loop. Whether QMapShack notices the file changing on disk is assumed false and documented
    as an assumption.
  • The user-site Meshtastic install has not been through a provisioning run. PEP 668
    enforcement is a distro patch; confirm the console script lands at
    ~/.local/bin/meshtastic on first use.
  • Anything needing a radio on the air. Verification checks the filesystem, not RF.

Upgrading from v1.0.1

Re-running the Meshtastic step replaces the old virtualenv wrapper with pip's own console
script at the same path. The previous EMCOMM_Apps/meshtastic-venv/ directory is not
removed and is no longer used — delete it by hand if you want the space back. A node that
does not re-run that step is unaffected and keeps working.

Before you deploy a node

configs/ ships empty by design — supply your own profiles, and read the placeholder
contract in configs/README.md first. Then work the Pre-Deployment Config Checklist.

Issues and field reports welcome. GPL-3.0-or-later.