Redeploying LoRa modules

After having ditched Meshtastic, for now at least, I had a fiddle with two of the LoRa modules with a view to repurposing them. And there they are. The first is a LoRa APRS r/o iGate, listening on 439.9125MHz, and the second is a receiver for radiosondes listening around 400MHz.

T-Beam LoRa module set up as a LoRa APRS iGate

Nestled under a 70cm ground plane in the shack is, of course a good way to ensure nothing is ever received unless it is very close! However, it is destined for greater things… although at the end of the day it’s just me fiddling. The LoRa APRS map is at

TTGO device set up as a radiosonde receiver

The radiosonde one stands a better chance of actually receiving something, especially as it is currently connected to the 70cm big wheel antenna in the loft. See

The plan is to connect these two along with the module running TinyGS to a common antenna currently in the loft. They will be connected using a Crosscountry Wireless multicoupler which is due to arrive in a day or so.

Fun while it lasted…

For me, and this is in no way intended to persuade people not to dabble, Meshtastic was the usual ‘new shiny’ that I like to fiddle with, but it was just that. A bit of radio fun for little outlay using devices I can redeploy. In our wider area it seems to have snowballed and become rather congested. While I can see the point, I have many other radio bits and bobs to play with and having yet two more antennas in the loft was rather overdoing things.

I had to seriously think exactly what I had used it for and it came down to occasionally saying ‘good morning’, answering when people ask if anyone is receiving them, and… well, I am struggling to find anything else. Of course I stress that is what I had used it for, not taking away from what others are doing. It is a neat idea.

So both nodes have been switched off.

Meshtastic oddness

Both my 868MHz and 433MHz nodes are being odd today. I had been looking into the data that arrives when ‘–noproto’ is sent to the node and, typically there is a fairly constant stream of data. But today, despite both being power cycled there is no data at all. Odd, because when I ask the 868Mhz node for its nodelist it is being updated. Maybe it’s something in the new firmware but for now I’ve been fiddling enough and it’s time to take a step back. I have not had any successful traceroutes today, I responded to a couple of requests and got no reply. It’s made worse by the fact that, having moved the nodes in the loft they are now out of BLE range. Both are connected to a Raspberry Pi via USB so I can access the nodes that way but for client use I use my mobile node assuming that the node in the loft will relay everything – maybe not. And for 433MHz I only have the one node anyway.

Mind you, it is raining and I suspect that is making a fairly decent shield for 868MHz, and I have yet to see any activity on 433MHz. So maybe it’s just the wrong time…

The other issue, at least around here is the popularity with over 120 nodes in the list, many sending telemetry and position updates all the time.

Getting the antennas outside will help but that will take a while yet unless I mount them low down on the workshop – actually that may not be that daft an idea. If it stops raining…

Current Meshtastic setup

After a lot of fiddling about writing code to look at mesh traffic I am on other projects (like, sorting the house out!)… so here is my current state of play…

I have an 868MHz node in the loft directly connected to a collinear which is hanging off the rafters. This is powered by USB from one of the Pi systems in the shack. It is set to work over wifi, not BLE as it’s just too far away. Its position coordinates are fixed. But I do not need to access it directly, see below. The useful thing here is I have installed the Python CLI on that Pi and can access the node’s data stream directly.

There is one 868MHz node in the shack with the supplied stubby little antenna. There is no way this can see any other nodes in the local area (I’ve tried) but can access the node in the loft. So this one has hops set to 4 as it uses one just to get upstairs. This node is set to read position data from the iPhone and can thus go mobile. Well, ok, it could go mobile anyway but at least this way it says where it is etc. But it will probably never go mobile. With this powered over USB from the Mac Mini I can also access the data stream via the CLI. One issue with this setup is that the shack node reports all nodes seen as having an excellent signal strength as it only sees data from the loft node. In reality only a couple of local nodes have anything approaching a ‘good’ signal strength.

Both 868MHz nodes are Lily T3S3 units with no GPS.

And there is a 433MHz node, this time a T-Beam with GPS on board, directly connected to a 2m/70cm collinear which is hanging from the window blinds in the shack with some bungee cord. This is of course temporary. I have yet to see any other nodes on 433MHz and I suspect I will quietly give up with that.

433MHz node under a 2m/70cm collinear hanging from the blinds...

868MHz-wise there is a lot of local activity. Currently the loft node sees 180 other nodes, although not all will be active. They do tend to stick and clearing the node database then starts afresh, slowly building up a list as data is seen.

Meshtastic app map showing the nodes that can be seen within 3 hops of here

And the use? So far, mainly people asking if they can be heard. There are some private channels, no idea what as they are encrypted, pus there are at least two very well sited nodes acting as routers for the area and beyond. One of those is extremely well made.

More meshtastic

This Meshtastic business seems often very hit and miss. Locally there is an expectation that it will always work and if you can hit one node one day you should always be able to. Or at least that’s what I glean from comments. Of course, just a few mW at 868MHz is not destined for long distance comms, and yet I can get 24 miles provided the path is line of sight. Not bad. But I can’t manage 1.3km to my nearest neighbour who can get out all over the place. There is a hill to consider there, plus many houses, so not surprising really. Oh yes, and there is the small matter of the antenna still being in the loft so it has to punch through wood and concrete, often wet at that, before it gets to air.

For now, at least locally traffic is mostly messages asking if one can be heard.

There is a series side of course. Nodes can be placed in advantageous positions, run off battery and solar recharged, and left as area repeaters (or routers in Meshtastic parlance) forming a mesh with other similarly advantageously placed nodes. We have this locally to some extent. It is very easy then to get into a position where you a reach those nodes, just don’t expect it to work from your basement. Used correctly – and that probably means used as originally proposed – it is certainly neat, potentially ubiquitous, even anonymous. I already have a use for it at ‘work’ where I need data comms across 3km with no line of sight and with little or no money available…

For now, we’re all playing and having fun or getting frustrated. The worry is people will give up and lack of coordination will make that worse.

Of course, it’s early days, the software is still being developed, the boards are hard to come by but that will change as stock moves. It’s quite interesting to be in this now, relatively early on and as it develops further.

More meshtastic ideas

I had a change of plan. I’ve installed the Python API on one of the radio Pi systems, relocated the node that was hanging in the window up into the loft and connected it to the Pi directly. The node has been set back to using Bluetooth. Now I can get the raw(-ish) data via USB using the meshtastic app and also access the node from the phone. The mobile node – or rather the other node that is intended to be a mobile node when I get a battery etc. – is now disconnected. I will run this off a power bank at some stage and do some range testing but my power bank is currently not even in this continent…

The raw(-ish) data is quite interesting and gives some insight into how the device works, although still at quite a high level. Two examples:

DEBUG | 08:33:54 34116 [RadioIf] Lora RX (id=0x2c340449 fr=0x0c to=0xff, WantAck=0, HopLim=2 Ch=0x8 encrypted rxSNR=-13.75 rxRSSI=-130

INFO  | 08:33:54 34116 [Router] Received DeviceTelemetry from=0xda5c870c, id=0x2c340449, portnum=67, payloadlen=24

I am going to code something to work this data into a useful output, just for fun of course.

In other news, apparently the MacOS app has now been updated to fix the missing messages.

Meshtastic progress

It appears that the web client is not full featured – so I am told anyway – so presumably I should not expect it to work the way I had thought. Never mind, now that the iOS app has been updated it appears to receive messages fine, at least through the second T3S3 device I have.

So, my setup so far (so far? It’s not likely to expand…) is this:

  • One T3S3 (Node A) is directly connected to a collinear and is accessed via wifi. For this, the web app will send messages but not receive them.
  • One T3S3 (Node B) with its supplied tiny antenna is powered by USB and accessed via Bluetooth and the iPhone. The MacOS app does not receive messages but the phone does, so all is well.

There are issues here though. Because Node B is getting all of its information from Node A it shows every node in the area as having a good signal strength which is false as only one or two do. Also, when a message is sent it is (presumably) acknowledged by Node A (I am not sure on that) which is not a good indication that the message is actually going anywhere.

For Node A with its wifi connection I have installed the Python API on my Linux box (and also on the Mac but I’d rather it be on Linux) and have a small Python script which reads all data provided by the node and writes to a file – for now. A program then parses this and produces useful output, for example when nodes advertise or messages are sent. The next step for this is to make a database so that nodes can be recorded along with their positions, signal strength and times etc.

This is all just a bit of fun really as I always liked playing with data and transforming it and such – a fair bit of my work (when I did actually work) was related to this. I’m sure that now the iOS app has been updated I can swap Node A over to use Bluetooth and access it directly but this way I get a record of everything in the area too. It does add a hop to messages going out from my Node B but I can always adjust that setting anyway.

All in all Meshtastic is a fun / serious / useful ‘thing’ quite literally able to form ad-hoc networks for very little outlay or even experience. Devices can be put in a weatherproof box with a reasonable antenna, plus a battery and maybe a GPS, and perhaps even a solar charger, and positioned in an area to form an ad-hoc network – just like it says on the tin.

Meshtastic issues

There is an issue I cannot put my finger on. I discovered now that I can send messages to the mesh. I know this because I sent a test and the node displayed an answer, but the app did not (neither iOS or MacOS). I just happened to notice the reply on the tiny screen by chance.

After a lot more fiddling and getting nowhere fast I connected the newly flashed node to wifi. This disabled Bluetooth so the iOS and MacOS apps no longer function. The web app does, and this comes directly from the node itself via a browser. The web app can also successfully send messages, but not receive. However, using the Python API I can see all data coming in and the replies are all there. So there is some disconnect between the node and the higher level methods of access, but not the data coming from the node. Odd.

Others have reported similar and the iOS app was updated yesterday so that is another thing to check but the issue above is rather odd. An update to the app does not update the web app, that needs another firmware update.

For now, more fiddling… but at least I can see the data so I can always write something to handle it rather than relying on the inbuilt web app or client apps. So… Python… been meaning to learn it like forever!

Update: running one node via Bluetooth and the phone I can send and receive messages via my other node. Nothing appears in the web app still, but at least I have it working. That leads me to blame the web app itself so I have reported it as an issue.

More Meshtastic (edited)

The 868MHz node has gained a collinear and both nodes are now in the loft powered over a long USB extension that was already routed up there. I was surprised to see numerous peer messages appearing in the web app and after some fiddling these decoded into names etc. and the web app plotted them on the UK map. At present there are 50 nodes, some as far south as Sheffield, one in and two to the east of York, one in Knaresborough, and a cluster nearby and out to the west as far as Hebden Bridge. Some of these are named after callsigns but of course this is not an amateur radio thing so anything goes. The web app recorded a bunch of messages too between people. Sadly, no-one can hear my node so there is work to do yet, not least putting the antenna outside. I have another 868MHz device on order so I can check that the node in the loft is actually transmitting and if so, do some basic range tests.

Another day… I ordered another T3S3 unit which arrived this morning, less than a day since I ordered it! Anyway, on powering it up it immediately saw nodes and messages. It appears that the node in the loft was just passing messages to it, which is after all what these things do. So I have removed the loft node, brought the collinear down and connected to this new node leaving the other powered off. After resetting the Node database it can see nodes but all with ‘bad’ signals (I did not enable the receive boost). I am using Bluetooth to connect to this, not wifi, so it is a virgin setup. At least this proves as far as I can that it is just this node receiving these others. Perhaps the few local nodes will pipe up later on and I’ll see something other than bad signal strengths. The antenna, with the node directly connected is currently hanging in the window so putting it outside is the next step.

Actually the next step is to re-flash the now-disconnected node and start from scratch because I am convinced I messed something up while fiddling! Then I can use that one for a range test.


I just got two Lily LORA modules with Meshtastic firmware loaded, one on 433MHz and one on 868MHz. Both arrived with old firmware but that is no issue as the firmware is readily available, and anyway the documentation seems to recommend that loading the latest firmware is the first thing to do.

There is a Meshtastic app for the iPhone and Mac (others available) with features replicated between them. 

However, my thoughts of updating fell at the first hurdle. There are three options, use a web flasher, a CLI version or use a serial adapter. The web flasher requires Chrome or Edge and all my PC kit is in bits because of the leaky pipe. The Mac does not have Chrome nor is Chrome getting anywhere near it! There is a CLI option which requires brew and python3 / pip all of which need installing, leaving me to wonder if I (a) install all that on the Mac or (b) fettle the Windows PC together sufficiently to use it. 

So, Windows PC on the floor, monitor resting against it (the monitor lives on a 4x stand so has no feet attached), Edge loaded and the 433MHz unit plugged in… finally found the web flasher which asks which serial port to use. How do I know? Windows seems to imagine devices and change them at will. Ok, unplug the Lily and see what options change. None. Hmmm. Right, get the 868MHz unit… helpfully the flasher info suggests one needs to hold the Boot switch while plugging the unit in, and that indeed made it appear as a known USB / COM combo. All seemed to go well with meaningful messages until it came to downloading the firmware, where it waited… and waited… 10 minutes went by, some confirmation of something happening would be useful…  I gave up after about an hour and decided to go with Plan A and install brew on the Mac. 

That went ok after numerous steps including having to figure out where it had put the key piece of Python code. On went the 433MHz unit and the code to update the firmware all worked fine. Lots of settings sent to the device later I thought I had everything set correctly. However, the app now refused to connect. No amount of coercing, dancing, shouting etc worked. So I progressed to the 868MHz unit which, despite the confusion with the Windows PC had actually received the latest firmware. But again, no connection via Bluetooth. Then finally a nugget of information made me remember that as things had changed I needed to ‘forget’ the devices in the Mac’s bluetooth settings – then both devices connected.

So, two devices, one on 433MHz and one on 868MHz, with the stock teeny antennas are not going to get very far as one would expect. Early days… better antennas needed and I’ll see then if these nodes can find any others nearby. Until then the nodes can be set to report to a central MQTT. They are very able little units and in fact the 868MHz unit is very similar to the one I use for TinyGS.

My writing here is about my own experiences so far. M0AWS has a blog post going into far more detail here and the mothership of information begins at

868MHz Meshtastic module
433MHz Meshtastic module



Recent Posts