Bridging Meshtastic and HF Radios with Hamtastic

Amateur radio has always been about innovation, and Hamtastic is a fine example of that spirit. Built using Python, Flask, and Node-RED, this open-source project lets you send messages from low-power Meshtastic LoRa radios to HF bands using JS8Call and FLdigi. It’s a fun, flexible integration that combines modern mesh networking with traditional amateur radio communications.

If you’re looking for a way to extend the reach of your LoRa setup into HF frequencies-or just want to tinker with some cool ham tech-Hamtastic is worth exploring.

What Hamtastic Does

At its core, Hamtastic acts as a bridge between Meshtastic (a LoRa-based mesh radio platform) and JS8Call (a weak signal digital mode for HF bands). It uses:

  • Python + Flask for a lightweight web server.
  • Node-RED to manage message routing and flows.
  • pyserial for talking to the Meshtastic device.
  • JS8Net for communicating with JS8Call.

The result: a system that listens for Meshtastic messages, processes them, and transmits them on HF. You can also build a user interface using Node-RED Dashboard if desired.

Setup Overview

You’ll need to clone the Hamtastic GitHub repo, create a Python virtual environment, and install the required libraries. A few highlights:

git clone https://github.com/TheWatchMker/Hamtastic
cd Hamtastic
python -m venv .
. bin/activate
pip install flask pyserial requests json
pip install pip@git+https://github.com/jfrancis42/js8net

For the Node-RED side, you’ll want:

npm install node-red-node-serialport node-red-dashboard node-red-contrib-http-request node-red-contrib-json

Running the Services

Hamtastic comes with two core scripts:

  • MeshtasticImport.py for handling incoming messages from your LoRa device.
  • Node-red-Js8call.py for pushing those messages into JS8Call.

It’s a good idea to run these as systemd services on your Raspberry Pi. Here’s a quick template for that:

[Unit]
Description=Meshtastic Integration Service
After=network.target

[Service]
ExecStart=/usr/bin/python3 /path/to/MeshtasticImport.py
WorkingDirectory=/path/to
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

Enable with:

sudo systemctl enable meshtastic.service
sudo systemctl start meshtastic.service

Node-RED Flow

The project also includes a sample flow file (Node-redFlow.json) that you can import into Node-RED for testing and routing logic. It includes components like inject nodes, function processors, HTTP handlers, and debugging output-everything needed to wire together your message pipeline.

Final Thoughts

Hamtastic is a brilliant DIY solution for hams who want to bridge mesh networks and HF. It’s not plug-and-play, but it’s not overly complex either-perfect for weekend experimentation. If you’re a Raspberry Pi user with an interest in packet radio, JS8Call, or digital comms, this project is definitely worth checking out.

Special thanks to @TheWatchMker and @yNosGR for building and maintaining the project. And also credit to JS8Net by jfrancis42 for the Python-JS8Call glue.

🔗 GitHub Repository: github.com/TheWatchMker/Hamtastic

1 comment

Post Comment