Repository navigation
EmComm Field Node Provisioner v1.0.2
Pre-releaseEmComm 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/meshtasticon 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.