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.pyfor handling incoming messages from your LoRa device.Node-red-Js8call.pyfor 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