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

Post Comment

You May Have Missed