Glen to glen, coast to coast, when the signal doesn't reach.
MeshCore is a long-range radio mesh. Cheap LoRa hardware relays messages for everyone nearby, so a note travels hill to hill with no mast, no SIM and no subscription. Every dot on the map is a real node the mesh heard this week, where it says it is.
Scotland right now: nodes heard in the last 5 days, updated 19:00 BST.
Get on the mesh
Four steps, about an evening, roughly £25 of hardware.
-
Step 1
Get a radio
Any supported LoRa board for the UK 868 MHz band. Heltec and RAK boards are what most people here run.
-
Step 2
Flash the firmware
Fresh firmware from meshcore.io for your exact board. Never keep what came pre-installed.
-
Step 3
Set scope and path
Pair over Bluetooth, then set the radio preset,
scoscope and 3-byte path hash, the settings below. -
Step 4
Say hello
Open
#scotland, check its scope issco, and post. Someone will almost always answer.
The settings that matter
Get these four right and you are on the Scottish mesh. Get the scope wrong and your messages go nowhere useful.
Radio preset
UK / EU NarrowRegion & path
Experimental Settings#scotlandscosco set, your traffic may not travel anywhere useful.
Running a repeater? Build your region script Pick where it is and what it genuinely serves; the commands come out in the wiki's order, with ioi and wls included.
Peering with the Island of Ireland (ioi) and Wales (wls) is part of every Scottish repeater and is always included, as are multi ACKs and the 3-byte path hash. Codes with a dotted outline are not agreed on the wiki yet; the script says so, and Discord is where they get agreed.
region put fif scoCreates fif as a child of sco; parents are created first.region allowf fifAllows scoped flood traffic for that region.region denyf *Denies unscoped wildcard forwarding. Never leave this out.region default scoScopes your own adverts. Without it the rest of the mesh rejects them and never learns you exist.region saveKeeps it across a reboot. Check with region and look for OK.Run a MeshCore observer Observers are radios that report what they hear to CoreScope, the map and the alerts. Every dot on the banner came through one. There are four ways to run one.
A repeater that also reports
The MQTT observer build is normal repeater firmware with an uplink. It still repeats on air; it also pushes what it hears to the ScotMesh broker over Wi-Fi.
- Flash the
repeater_observer_mqttfile for your exact board from static.loraproject.ie/mqtt. A_merged.binis a full image and wipes stored settings; use it for the first move onto observer firmware. The plain.binupdates the app and keeps your settings. - After a merged flash, set the radio preset and name again, then the region script above.
- Run the commands on the right on the serial console. Then
reboot. - Check with
get mqtt.status, and look for the node on CoreScope after a minute.
The broker hostname is deliberately the long-standing one. Every existing observer uses it and it will keep working. Later updates can go over the air: start ota on the console brings up Wi-Fi for the upload.
# Wi-Fi to reach the broker set wifi.ssid YourWiFiNetwork set wifi.pwd YourWiFiPassword # where the radio sits (see Site codes) set mqtt.iata EDI # ScotMesh broker on slot 1, MeshCore JWT sign-in set mqtt1.preset custom set mqtt1.server scotmesh-mqtt.mm7roq.compute.oarc.uk set mqtt1.port 443 set mqtt1.audience scotmesh-mqtt.mm7roq.compute.oarc.uk # free the second TLS slot on low-RAM boards set mqtt2.preset none # your own adverts only; "on" = every packet you send set mqtt.tx advert reboot
Already running openHop?
An openHop repeater has a built-in MQTT publisher, so it can report to ScotMesh from its own dashboard with no extra hardware and no plugin.
- Open the repeater dashboard at
http://<repeater-ip>:8000and sign in asadmin. - Go to System, then Configuration, then Access, and open Observer (MQTT).
- Set the site code to the airport code nearest the radio, and add your name as owner.
- Add a broker with the values on the right. Leave the topic root blank so the default applies, and leave neighbour publication off.
- Save. The dashboard shows the broker as connected within a minute; the node then appears on CoreScope.
The repeater signs in with its own MeshCore identity, the same way the observer firmware does. Nothing on the mesh side changes: it keeps repeating exactly as before.
Prefer to edit the config file?
The same settings as a block for /etc/openhop_repeater/config.yaml, under mqtt_brokers. Restart with sudo systemctl restart openhop-repeater afterwards. Field reference: openHop config docs.
mqtt_brokers:
iata_code: "EDI"
status_interval: 300
owner: "Your name or callsign"
email: ""
brokers:
- name: scotmesh
enabled: true
host: scotmesh-mqtt.mm7roq.compute.oarc.uk
port: 443
transport: websockets
audience: scotmesh-mqtt.mm7roq.compute.oarc.uk
use_jwt_auth: true
format: meshcoretomqtt
retain_status: true
neighbors: false
tls:
enabled: true
insecure: false
Report without repeating
A radio on a windowsill with Wi-Fi is a useful observer even where a repeater would not be. Same firmware and broker settings as the first tab, with one extra line so it never relays on air.
- Flash the observer firmware and set Wi-Fi, site code and broker exactly as in the first tab.
- Add
set repeat off. It keeps listening and reporting but never transmits mesh traffic. - Adverts are still sent, so the mesh knows the site exists. Set them to 24 hours like a repeater.
Good for towns with plenty of repeaters already, and for anywhere you want visibility without adding to airtime.
# after the Wi-Fi, site code and broker lines set repeat off set flood.advert.interval 24 set mqtt.tx advert reboot # check get mqtt.status get mqtt.rx
Site codes
The site code is the airport code nearest the radio. It is how CoreScope groups observers, how this site decides what counts as Scotland, and how a repeater gets its area on the analytics page. Any Scottish airport code works, including ones nobody has used yet.
Where it shows up
- CoreScope lists it under Observers within a minute, with everything it hears.
- The live map plots the nodes it reports.
- HopReach turns its received packets into coverage.
- HopReact can claim it and message you on Discord if it goes quiet.
- This page counts it in the Scotland figures once it reports a position inside Scotland.
Set the radio's location 200 to 250 metres off the true spot if you want the site obscured. It still maps correctly, and a walking search of the error circle takes hours.
Tools for the mesh
Everything ScotMesh runs for MeshCore.
CoreScope
What is on the mesh right now — nodes, packets and paths as the observers see them, updated live.
corescope.scotmesh.netLive Map
Where the nodes are. Every node the observers have heard, plotted on a map of Scotland.
map.scotmesh.netHopReach
Where you can actually be heard from. Coverage built from real received packets, not predicted propagation.
coverage.scotmesh.netHopReact
Is your repeater still up? Alerts when one goes quiet, so you find out before the people relying on it do.
alerts.scotmesh.netMeshCore Wiki
Getting started, channels, regions, repeater setup and the FAQ, on the community wiki.
wiki.scotmesh.ukMQTT Endpoint
Feed your observer radio into the Scottish mesh view. Port 443, setup on the wiki.
scotmesh-mqtt.mm7roq.compute.oarc.uk