Meshtastic Revisited

7 minute read

You do not have to be a licensed radio amateur to use Meshtastic, anybody can use it, provided you use the correct frequency bands for Europe.

Meshtastic does off-grid text well1. I experimented a year or so ago with Meshtastic, and now I have a practical application in staying in touch with someone who isn’t a licensed amateur. PMR446 worked pretty well for us, but got a little bit marginal in woodland. I have three LORA boards. Two are the very old Lilygo T-Beam 0.7, which I bought because they were cheap, and one is the Lilygo T-Beam 1.1. The typical meshtastic use case is phone/tablet via Bluetooth to the LORA device.

Last time I was a lonely station in the cloud but this time I see loads of local activity on EU_868. There is quite a bit of activity in the Weston-super-Mare region by the looks of it, and you can view public locations with a sort of aprs.fi functionality at the MeshMap. Sadly this isn’t via the RF mesh network.

the local area display on my web app connected to a T-beam board

Switch off MQTT BEFORE you enable networking if you only want to see RF stations

There’s a MQTT module in Meshtastic - which is designed to do this

If your device is connected to Internet via wifi or ethernet, you can enable it to forward packets along to an MQTT server. This allows users on the local mesh to communicate with users on the internet. One or more channels must also be enabled as uplink and/or downlink for packets to be transmitted from and/or to your mesh (See channels). Without these settings enabled, the node will still connect to the MQTT server but only send status messages.

Which is dandy, like aprs.fi for Meshtastic, but it defaults on2. You want to switch this off on a node before you enable WiFi, if you only want to see RF traffic, else as soon as you enable WiFi you will see MQTT stations3 too. Else you will be confuzzled like me and think ‘hey LoRA has gotten a lot more long-range than when I last tried it’. If you goofed and didn’t do this, then go into the app and in the three dots -> Radio config then all the way at the bottom NodeDB reset will clear them out, then reboot your phone or force stop the app to clear the app cache.

RF results

Once I had despatched the MQTT stations I could track the RF performance. I walked this manually and sent messages with the GPS waypoint, hence the random gaps. I checked if I was getting the tick in the cloud on the app that meant an ack had been received.

At the Rx location I had two Meshtastic devices. The 869MHz frequency has a wavelength of 34cm, so when you are walking along you will get a lot of flutter from reflections as you pass through nodes and antinodes. Operators of 70cm rigs or PMR rigs will know this - a shift of only about 30cm can bring a signal from noisy weak readable to loud and clear, this effect is worse at 34cm than 70cm. At the point where I was losing the signal a little, I tried a traceroute to one of the home stations and it was shown as relayed through the other home node about 3m away. The mesh was giving me a form of diversity reception, which was neat.

The RF performance was very similar to last time, which isn’t surprising, I used the same hardware. What has changed in the intervening year is the MQTT trunking through the internet linking up the islands. It doesn’t take away from the original ethos of off-grid messaging, but if you are prepared to tolerate the on-grid linking up then it adds a new dimension.

Initial Use Testing in the field

I tried this on a survey near Wells, using just two units on 869MHz using aftermaket antenna a bit longer than the stock antenna. There’s not a strong aftermarket in EU_868 antennas, whereas 70cm antennas for the EU_443 band are common as muck, you could use your exisiting 2m/70cm collinear. The EU_868 band has the advantage of being half the wavelength of EU_433, which makes directionality eaisier to achieve. Directional antennas are not ultra hiker-friendly, but could work on a relay. A ¼ wave is about 8.6cm long

West Horrington/Pen Hill

On reflection I probably shouldn’t have tested this less than 1 km from Mendip Transmitting Station on Pen Hill putting out 6 x 100kW DTT signal between 562 and 690 MHz, so a rematch may be in order. The map shows my track, the outstation went down towards the stream and in the opposite direction, signal was lost after about 500m. Standard PMR 446 radios - an old Icom IC-446s and a Floureon PMR446 worked better using analogue FM voice. They weren’t perfect and the about 700 distance was broken up, but enough to get through.

Biddle Combe - fairly open woods with oak, ash, hazel, trees were not in leaf

There are a few bits of learning here. One advantage of mestastic is we could have put a node in a tree at the start point and have it work as a repeater, that’s not something you can do with PMR446, and it’s hard enough at 70cm for repeater groups with frequency separation. Despite the LoRA advantage, meshtastic EU_868 isn’t really much better in range compared to PMR 446. You can see the PMR446 results from when I tried APRS over PMR446. Perhaps meshtastic held the signal a little better along the edges, but UHF DX it isn’t.

Take 2 - Loxley wood

Loxley Wood spans about a square kilometre, and I had a similar experience here in a survey team, PMR446 performed better. A bit more detail, however, the 868 MHz antenna seems very susceptible to detuning when it’s stuffed in a bag, more so than the PMR446 radio.

Meshtastic RF config

You have to get several things right for two Meshtatstic nodes to communicate.

Same band - in the UK that’s 433MHz or 868MHz. You choose that when you buy a board. You set this in LoRA config values. You ain’t going anywhere with this until you have set this. Ideally to the same as your board ;)

Within a band you now set a messaging channel, which is a combination of channel name, encryption key and modem preset which is the specific LoRA spreading factor, and applies to all messaging channels on that board.

Within that band you can have several centre frequencies. As it happens on EU_868 there is only one channel, but there are four on EU_433. These radio channels must match - pretty much like channels on 2M FM if one is on V38 (145.475) and the other on V36 (145.450) you won’t hear each other. A gotcha is that on 433MHz the channel is set by a hash of the primary channel name. That’s okay if you set your other station to the same name, but if you want to participate in the mesh relaying with other stations set to default then you need to be on the same frequency, so you have to force the LoRA channel number to be the same as the default listed here. That’s 1 for EU_868 (there is only one channel on this band so it doesn’t matter and the default 0 will be OK) and 4 for EU_433, where this does matter.

Meshtastic setup and privacy

If you don’t want to broadcast your location then set up like this

If you’d like to connect with other Meshtastic users but only share your location with trusted parties, you may create a private PRIMARY channel and use the defaults for a SECONDARY channel.

which is what I did. The other way is to choose a board without GPS . You can also turn off the GPS module of some boards. A lot of the tactical advantage that people want from Meshtastic is situational awareness of where the other stations are, but position is an optional part fo the Meshtatic status.

According to the docs the default channel is 869.525 MHz (from a range of 869.40 to 869.65 MHz) Lilygo is a little bit coy about output power, ~20dBm is mentioned a few times. Meshtastic say the maximum power allowed for Europe is +27 dBm ERP (Effective Radiated Power), so you can have a 7dB of ambition relative to the reference dipole.

Frequency bands

The two bands usable in Europe are 433MHz and 868MHz. 433MHz includes part of the 70cm band and licensed amateurs can use more ERP on 433MHz including the use of directional aerials. You are not permitted to use encryption on the amateur bands, so you lose secure communications if you switch to amateur mode. Meshtastic works well at the default power levels so there is much to be said for sticking with the unlicensed mode, unless you want to make amateur style LoRA data contacts on 70cm.

  1. no speech below 2.4GHz 

  2. They may have changed this now so it defaults off for regions/bands which have a Tx duty-cycle limit, like EU-868 

  3. it seems the ability to tell these apart is in the early/bleeding edge stage and not available on the web interface yet.