MeshTNC is a tool for piping LoRa data to and from consumer grade radios.
- Code - github.com/datapartyjs/MeshTNC
- Releases - github.com/datapartyjs/MeshTNC/releases
- Support - ko-fi/dataparty
- Simple serial cli built into the firmware
- Transmit raw bytes (hex) over LoRA using serial CLI
- LoRA packet logging to serial (hex)
- KISS-TNC mode
- Install PlatformIO in Visual Studio Code.
- Clone and open the MeshTNC repository in Visual Studio Code.
- See the example applications you can modify and run:
Download precompiled firmware releases - github.com/datapartyjs/MeshTNC/releases
We haven't built a flashing tool yet. You can flash builds using the meshcore flasher, the OEM provided flashing tools or using the developer instructions to flash using VS Code.
- Flash using your platform's OEM flashing tool
- Use the meshcore flasher - http://flasher.meshcore.co.uk/
MeshTNC is designed for devices supported by MeshCore so check their support list in the MeshCore Flasher. We support most of the same hardware see variants.
The MeshTNC firmware initially starts up in a serial mode which is human readable. You can connect to the serial console using a serial terminal application. You may have to configure the baud rate, which defaults to 115200. The following command uses minicom to connect to the serial port, please replace /dev/ttyACM0 with the proper device node for your serial port:
minicom -b 115200 -D /dev/ttyACM0
It may be helpful on Linux systems to run the following command to set the default baud when interacting with the serial port:
stty -F /dev/ttyACM0 115200
Once connected, the MeshTNC device has a simple CLI. The CLI is largely similar to MeshCore with a few notable additions.
txraw <hex...>- Transmist a packetget syncword <word>- Read the syncword settingset kiss port <port>- Set the KISS device portset radio <freq>,<bw>,<sf>,<coding-rate>,<syncword>- Configure the radioserial mode kiss- Switch to KISS moderxlog on- Output format:
[timestamp],[type=RXLOG],[rssi],[snr],[hex...]\n
- Output format:
set/get txpower- MeshCore'sset/get txhas been renamed appropriately
Existing Commands
rebootclock syncstart otaclocktimetempradioclear statsget afget agc.reset.intervalget nameget latget longet radioget rxdelayget txdelayget freqset afset int.threshset agc.reset.intervalset nameset radioset latset lonset rxdelayset txdelayset freqeraseverlog startlog stoprxlog onrxlog off
KISS mode allows for operating the LoRA radio as a KISS modem, which makes it compatible with a lot of pre-existing radio software, including APRS software, and the Linux kernel.
- Open a serial console and connect to the MeshTNC device
serial mode kiss
- To exit KISS mode and return to CLI mode, you can send a KISS exit sequence like so:
echo -ne '\xC0\xFF\xC0' > /dev/ttyUSBx- For this to work, ensure your serial port's settings and baud rate is set correctly with
stty
- For this to work, ensure your serial port's settings and baud rate is set correctly with
You can use your favorite APRS tools with MeshTNC. Simply select a frequency, place the radio into kiss mode and connect to your APRS tools as a KISS TNC device.
minicom -D /dev/ttyACM0set radio 918.25,500.0,7,5,0x16serial mode kiss
MeshTNC should work with lots of APRS clients, we've tested on the following:
There is a wealth of knowledge and examples available here: https://linux-ax25.in-berlin.de/wiki/AX.25
There's a lot of very interesting things that can be done directly over AX.25 without involving IP, but the following example will demonstrate how to assign an IP address to the AX.25 interface. This can be done on two different machines with two MeshTNC's, and you should be able to ping between them over the air, as long as the radio settings on the MeshTNC's match, the IP addresses assigned on each system are in the same subnet and different from one another, and the callsigns (or at least SSID's) differ on each system. IP routing will also work if configured properly!
- Attach the MeshTNC to a Linux system.
- Assign the proper radio settings on the MeshTNC CLI
- Enter KISS mode on the MeshTNC CLI
- After entering KISS mode, please exit your terminal program to release the serial port.
- On the attached Linux system, edit
/etc/ax25/axports:- Add the following line:
0 AL1CE-1 115200 220 2 AX25 test- Replace
AL1CE-1with your callsign and SSID
- Add the following line:
- Attach the MeshTNC to the AX.25 port using:
kissattach /dev/ttyACM0 0- After running this command, check to see what interface it created:
sudo dmesg | grep mkiss[88447.885556] mkiss: ax0: crc mode is auto.
- After running this command, check to see what interface it created:
- You can assign an IP address by running:
ip addr add 10.10.10.10/24 dev ax0
Run the following on two or more computers, each with a MeshTNC device attached, to create an ethernet over LoRa network.
- Install
tncattachgit clone https://github.com/markqvist/tncattach.gitcd tncattachmakesudo make install
minicom -D /dev/ttyACM0set radio 916.75,500.0,5,5,0x16serial mode kiss
sudo tncattach --mtu=230 -e -noipv6 --ipv4=10.10.10.10/24 /dev/ttyACM0 115200
sudo tncattach --mtu=230 -e -noipv6 --ipv4=10.10.10.11/24 /dev/ttyACM0 115200


