The LoRa mode, designed for low power and long range, can be used as the physical mode for APRS and connected mode packet radio (BBSes, nodes etc.)
There is already a good amount of APRS over LoRa, and it is continuing to grow (see this map for LoRa-only APRS devices for example). It's use for traditional packet radio is less common, but is finding use in some places, notably OK2ZAW's blog.
APRS over LoRa is gaining traction, and is great for getting good range at low power. The popular LoRa boards from manufacturers like Lilygo, Heltec, and RAK that are used in many other LoRa projects work great for this and are widely supported by APRS firmware. They typically offer around 0.1 watts output, which gets you surprisingly far. Remember to get hardware on the 70cm band and not the 868/915 MHz ISM band that is popular with other license free LoRa projects.
While there are a number of other firmware options, people seem to be converging on Ricardo Guzman's (CA2RXU) which incorporates a lot of work done by pervious people. This can be found at:
These work completely standalone, but also offer KISS so external APRS clients can be used (for APRS only, not packet, see below!) The iGate firmware makes KISS available on TCP and/or USB-serial, the tracker firmware can do KISS via bluetooth. The tracker does expose a USB-serial port but it is not for KISS and is only for debug output or flashing the device.
If you do use the CA2RXU firmware, consider adding it to https://lora-aprs.live/ via the syslog output, which provides much more radio-specific information than standard APRS-IS based services/maps.
In the UK, the LoRa APRS frequency and modulation settings are:
439.9125 MHz (note this is different to elsewhere in Europe)
Bandwidth: 125khz
Spreading factor: 12
Coding Rate 4/5 (ie. enter “5” for the CR4 option)
An iGate is a “receiver” and picks up location/messaging/whatever frames from devices in the field, forwards them to the internet, and optionally vice-versa, permitting things like two-way messaging with an internet hop in the middle.
A 433MHz Lilygo LoRa32 V2.1_1.6 makes a good board for an iGate.
There is web flasher, you can find it here. I didn't have much success with it (the web UI didn't like saving settings), so these are the steps I followed instead:
data/igate_conf.json
with one with sensible UK defaults in from herettgo-lora32-v21
(for this board, pick the board you are using)The board should boot and display its IP address from your Wi-Fi on its screen. Navigate to http://that-ip-address in your browser. It should also now appear on aprs.fi and on lora.ham-radio-op.net.
An iGate is best sited up high, connected to a full size 70cm antenna, e.g. a colinear, dipole, or 5/8ths or quarter wave vertical.
NB Sometimes uploading can fail, in this case try re-plugging or swapping USB port, or plug the board in with its RST button held.
NB If you don't use the recommended file with sensible UK defaults then you will need to set more options to be compatible with UK settings (most importantly, the UK LoRa APRS frequency is 439.9125 MHz, with SF=12, BW=125k, CR=4:5). Typical output power is 20dBm or 0.1W.
A tracker is a device you carry around with you and it sends and receives beacons, messages etc. It can optionally be used with a companion smartphone app (via bluetooth) or PC software (via USB or bluetooth) as a TNC.
A 433MHz Lilygo T-Beam Supreme makes a good board for a tracker. Add a single 18650 cell and a 3D printed case for convenience.
Unlike the iGate, at the time of writing, there is no web flasher, so you'll need to follow the steps, which are similar to the iGate.
data/igate_conf.json
, and save the file:lora
as follows:"lora": [{ "frequency": 439912500, "spreadingFactor": 12, "signalBandwidth": 125000, "codingRate4": 5, "power": 20 }],
env
section in the bottom bar of VS Code and pick the appropriate board, e.g. env:ttgo_t_beam_s3_SUPREME_v3
The tracker should boot and start looking for GPS. Your iGate should show a green LED when it receives a frame from your tracker. Your tracker should now show up on https://aprs.fi/aprs.fi and on lora.ham-radio-op.net, separately from your iGate, and if you walk around with it, it should beacon your position, picked up by your iGate, repeated and/or sent to the internet.
APRS.fi have an iPhone app which works with this TNC for beaconing, and also it appears messaging, but this is hidden behind a subscription so I've not tried it.
If you want to run an unattended Digi that may be subject to 3rd party use (ie. digi'd packets from other people) in the UK, you will need to coordinate with the ETCC for a Frequency Assignment Certificate (FAC) and be aware of any license conditions that need to be followed.
This will be an MB7Uxx
callsign, where you get to pick xx
. MB7Ux
is being phased out.
(This is still being investigated by OARC members, so the following is a work in progress)
Unfortunately, the LoRa PRS firmware mentioned above is not suitable for traditional connected mode packet radio, even though KISS is exposed. This is because the on-air format of LoRa APRS is actually a TNC2 style string in the payload of the LoRa packet, and not a full AX.25 packet as would be typical of VFH APRS. This TNC2 string does not represent all the header fields of an AX.25 packet, which is fine for APRS which always uses certain values anyway, but destroys important information needed for packet radio. An AX.25 frame is constructed with hardcoded APRS header values specifically to send to KISS clients.
This means all packets, regardless of how they were sent to the KISS port, will end up looking like UI packets on the other side. It is possible to have a UI-packet chat this way, but it is impossible to “connect” to another station.
There are however other options, though these have not yet been tested by OARC members. These are:
RNode supports many of the same LoRa hardware options as the APRS firmware, but not all (it does seem to be actively worked on though), and even supports home brew hardware builds. It can also do a lot of other things as well as packet radio, not all amateur radio related.
RNode firmware can be installed using the rnodeconf command included in the rns python package, which can be installed with pip:
pip install rns
This provides the rnodeconf command. Install firmware by running:
rnodeconf --autoinstall
This will prompt you to plug in your device to USB, and select the virtual COM port it is on. Select the correct model and variant of the hardware you have when prompted, and it will install firmware.
Note that as of 2024-08-14, 2E0HKD has noticed that selecting “LilyGO T-Beam”, and then “433 MHz (with SX1268 chip)”, does in fact select firmware for the SX1262, which works on a T-Beam v1.2 SX1262. (The SX1268 is a very similar chip so it may simply run on identical firmware).
Once installed, the device can be put into packet TNC mode with a command like (change for your COM port, works with linux ports like “/dev/ttyUSB0” as well):
rnodeconf -T --freq 439912500 --bw 125000 --sf 12 --cr 5 COM8
NOTE: this example is the LoRa APRS frequency, but limit your use of this in the real world so as not to crowd out that frequency with non-APRS traffic. Remember LoRa is spread spectrum and can use a wide bandwidth, although alternative settings can lower this bandwidth requirement.
You can now use the COM port for serial KISS (115200 baud was seen to work on Windows). ACKMODE does not seem to be supported at this time (2024-08).
This command will have to be run each time the device is plugged in to put it back into TNC mode.
It is possible to choose lower bandwidths to fit in narrower channels, but the bitrate drops (or even higher bandwidth and faster!), so creativity in different bandplans is feasible.
OARC's own 2E0ITB is working on an embedded AX.25 implementation ax25embed, so it is entirely possible we could use this with a custom firmware (on either a LoRa dev board, or a custom micro + LoRa module) and make our own.