Skip to content

Troubleshooting

Things that go wrong on real hardware, and what they usually mean.

No devices detected on startup

Check the operating system sees them at all:

bash
ls /dev/ttyACM* /dev/ttyUSB*
lsusb

If the device is missing from lsusb, the problem is below MeshSat: cable, port or power. USB cables are the usual culprit, and a surprising number of them are charge-only with no data lines. Try a different cable before anything else.

If the device appears in lsusb but not as a tty, the kernel has no driver bound for it. On a minimal host install the CH340, CP210x and FTDI modules may not be present.

Meshtastic connects but shows 0 nodes

The configuration handshake takes 5 to 10 seconds. Wait for config complete in the log. If it never arrives, the radio is probably answering on a different baud rate or the port is claimed by another process.

The radio is connected but nothing arrives

Check that both ends share a channel and a pre-shared key. Two radios on the same frequency with different keys look connected and exchange nothing readable.

Iridium shows 0 bars

The antenna needs a genuinely clear view of the sky. A window is not enough, and neither is a skylight at an angle. Check the antenna connector is seated, then take the antenna outside.

For the 9603N, also check the GPIO pins if you have configured any. A sleep pin left asserted holds the modem off.

ZigBee dongle detected as Meshtastic

The SONOFF dongle shares a VID:PID with some Meshtastic boards. Pin it explicitly:

MESHSAT_ZIGBEE_PORT=/dev/ttyUSB1

The full detection cascade is described under Hardware Setup.

A serial device goes silent and a reboot does not fix it

On many single-board computers USB VBUS stays powered across a warm reboot, so the device firmware never resets. The host reboots, the device does not, and it comes back in the same wedged state.

Cut power properly instead. A switchable USB hub, the power switch on the device, or unplugging it. If you have a per-port switchable hub, MeshSat can do this for you as part of the device health ladder.

Messages queue but never leave

Look at the delivery ledger rather than the log. Every outbound message becomes a row with a status, a retry count and a backoff, and the dashboard shows it:

bash
curl -s http://localhost:6050/api/deliveries | jq .

A row stuck at retry usually means the bearer is up but the far side is not acknowledging. A row stuck at queued means the worker for that interface is not running, which is a gateway problem, not a routing one.

A message arrives twice

Check whether two rules match it. Rules do not stop at the first match by design, because fan-out to several bearers is a normal thing to want, so two overlapping rules deliver two copies. Add a filter or an object group to make them exclusive.

The dashboard loads but the API returns 404

The API is served under /api, not /api/v1. There is no versioned prefix.

Nothing in this list matches

Collect the log and the interface state before asking:

bash
docker logs --tail 200 meshsat
curl -s http://localhost:6050/api/interfaces | jq .
curl -s http://localhost:6050/api/devices/health | jq .

Then open an issue on github.com/meshsat/meshsat with the hardware you are using. The supported-devices table is short because it only lists what has actually been run, so a report about untested hardware is useful rather than unwelcome.

Made by MeshSat