Meshtastic
Using serial for web client
Error observed in browser console when connecting over serial interface:
Uncaught (in promise) NetworkError: Failed to execute 'open' on 'SerialPort': Failed to open serial port.
System logs:
chromium.desktop[117807]: [117807:117807:0203/185442.188970:ERROR:components/device_event_log/device_event_log_impl.cc:198] [18:54:42.188] Serial: serial_io_handler.cc:147 Failed to open serial port: FILE_ERROR_ACCESS_DENIED
chromium.desktop[117807]: [117807:117846:0203/185445.197355:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
The user probably needs to be member of dialout group to access serial port
sudo usermod -aG dialout $USER
For this purpose, using chromium:
sudo flatpak install org.chromium.Chromium
Set the override:
flatpak override --user --filesystem=/run/udev:ro org.chromium.Chromium
Confirm change:
flatpak info --show-permissions org.chromium.Chromium
Close and re-open the browser.
https://client.meshtastic.org/
Using a local TUI
meshtui
Download and install the deb file:
https://github.com/PeterGrace/meshtui/releases
Find the serial port:
ls -la /dev/ttyACM0
Launch the program:
meshtui -s /dev/ttyACM0
Contact
Install from pypi:
pipx install contact
Launch the program:
contact -s /dev/ttyACM0
https://github.com/pdxlocations/contact?tab=readme-ov-file#commands
Meshtastic Cli
Install the tools
pipx install meshtastic
Use the tool
meshtastic -s /dev/ttyACM0 <commands>
Get node list:
meshtastic -s /dev/ttyACM0 --nodes | less -S
Send a traceroute:
meshtastic -s /dev/ttyACM0 --traceroute xxxxx
Traceroute output will look like this:
Connected to radio
Sending traceroute request to 9213c6c5 on channelIndex:0 (this could take a while)
Route traced towards destination:
!b762276c --> !9213c6c5 (9.5dB)
Route traced back to us:
!9213c6c5 --> !b762276c (5.75dB)
Send a message:
meshtastic -s /dev/ttyACM0 --dest xxxxx --sendtext "ping"
Message send output wil look lie this:
Connected to radio
Sending text message ping to 9213c6c5 on channelIndex:0
Meshmonitor web client
Make sure docker is installed first.
sudo apt install docker.io docker-compose
the /opt/meshmonitor/compose.yml file:
services:
serial-bridge:
image: ghcr.io/yeraze/meshtastic-serial-bridge:latest
container_name: meshtastic-serial-bridge
devices:
- /dev/ttyACM0:/dev/ttyACM0
ports:
- "4403:4403"
restart: always
logging:
driver: "journald"
environment:
- SERIAL_DEVICE=/dev/ttyACM0
- BAUD_RATE=115200
- TCP_PORT=4403
meshmonitor:
image: ghcr.io/yeraze/meshmonitor:latest
container_name: meshmonitor
ports:
- "8080:3001"
volumes:
- meshmonitor-data:/data
environment:
- MESHTASTIC_NODE_IP=serial-bridge
- ALLOWED_ORIGINS=http://meshy.local:8080,http://meshy:8080
restart: always
logging:
driver: "journald"
depends_on:
- serial-bridge
volumes:
meshmonitor-data:
Notes:
* On first run, password has to be changed from changeme to something else like meshtastic.
Edit /etc/default/grub and disable usb power management:
GRUB_CMDLINE_LINUX_DEFAULT=" ... usbcore.autosuspend=-1"
Update the initrd.
sudo update-grub
Reboot and check this output - it should be -1 instead of 2 now.
cat /sys/module/usbcore/parameters/autosuspend
Auto-update the container
#!/bin/bash
cd /opt/meshmonitor
docker compose pull
docker compose up -d
Make a systemd unit file:
/etc/systemd/system/meshmonitor-update.service
[Unit]
Description=Update
After=network.target
StartLimitBurst=3
[Service]
Type=oneshot
Restart=on-failure
RestartSec=60s
ExecStart=/opt/meshmonitor/update.sh
Timer unit:
/etc/systemd/system/meshmonitor-update.timer
[Unit]
Description=MeshMonitor Update
After=network.target
[Timer]
OnCalendar=Daily
Persistent=true
[Install]
WantedBy=timers.target
Enable & start the timer:
sudo systemctl daemon-reload
sudo systemctl start meshmonitor-update.timer
Check the status of the timer:
systemctl list-timers
It will now run on a daily basis at midnight.
NEXT LEFT LAST PASSED UNIT ACTIVATES
Tue 2026-03-10 00:00:00 EDT 3h 32min Mon 2026-03-09 00:00:00 EDT 14h ago meshmonitor-update.timer meshmonitor-update.service