Liberty Hill Mesh

Carry a radio. Text without towers.

A small long-range radio, called a LoRa radio, and the free MeshCore app on your phone is all it takes to use Liberty Hill Mesh. No internet, no cell service, no subscription: just a radio passing messages to its neighbors. Here is the short path from nothing to talking on the mesh.

What you need

One radio
A companion node: the one you carry and message from, paired to your phone over Bluetooth. If you want an answer rather than a decision, get the Seeed Wio Tracker L1 Pro, about $40, which arrives in a case with GPS and a screen and needs nothing else.
The MeshCore app
Free on iOS and Android. It is where you read and write messages, see who is nearby, and set your name. No account, no sign-up.

From box to first message

  1. Flash it and set it up

    Plug the radio into a computer over USB and open flasher.lhtx.org in Chrome or Edge. It finds the board, shows you which firmware file it will write and checks the file's hash before writing anything, then puts the Liberty Hill settings on for you. Two questions, a name for your node and whether it has GPS. No command line. Rather flash it another way? The same page lists every setting to type in by hand.

  2. Pair it to your phone

    Install the MeshCore app and connect to the radio over Bluetooth. If you used the tool above, the radio settings and your node name are already on it, so there is nothing to type. If you flashed it somewhere else, choose the USA/Canada Recommended preset, leave the radio numbers alone, and set your name. Either way, send a flood advert so the network learns you are there.

  3. Say hello

    Send a message on the public channel. It hops radio to radio with no towers or internet in between. Give it time: contacts can take a day or two to fill in as adverts propagate.

  4. Join #lhtx

    The public channel carries traffic from across Central Texas. #lhtx is ours, and it is where the Liberty Hill talk happens. It takes about a minute to add.

Talk to Liberty Hill on #lhtx

Two channels matter here. The public channel is the one every radio can already see, and it carries traffic from across Central Texas. #lhtx is ours: what is happening in town, which roads are wet, who just got a node up, what people are hearing on the air.

QR code that adds the #lhtx channel to the MeshCore app.

Scan it and the channel is added. Point another phone's camera at this code, or hold it up at a meetup and let people scan it off your screen.

Reading this on the phone that has MeshCore on it? You cannot scan your own screen, so add it by hand with the three steps below. It takes about as long.

meshcore://channel/add?name=%23lhtx&secret=2d273ad2cb27cc1dd8578ffe174b60c2

  1. Open the channel list

    In the MeshCore app, tap the + button where your channels are listed.

  2. Choose to join a hashtag channel

    Type the name exactly as #lhtx, with the hash and in lower case. The app works out the key from the name, so there is nothing to copy and nobody to ask for permission.

  3. Say hello

    Post where you are, roughly. A channel is only worth having if the people on it know who else is out there.

Then set its region. However you added #lhtx, open the channel's settings and set its region to lhtx, without the #. That keeps what you post on Liberty Hill repeaters instead of sending it across Central Texas. Where to find the setting, and what a region is.

If your app is old enough to ask for a key instead of a name, it is 2d273ad2cb27cc1dd8578ffe174b60c2: the first 16 bytes of the SHA-256 hash of the channel name, which is how every MeshCore hashtag channel works.

#lhtx is not private. Because the key comes from the name, anyone who knows or guesses the name can read everything on it, and plenty of people outside Liberty Hill will. Treat it exactly like the public channel: fine for road conditions and radio talk, wrong for anything personal.

What is private: direct messages are encrypted end to end, so only you and the person you sent to can read them. You can also make your own channel with a random key instead of a name, and share that key only with the people you want on it, which is how families and neighbors keep a group conversation to themselves. Only the hashtag channels like #lhtx derive their key from their name, and that is what makes those readable by anyone.

Ask LibertyHillBot

LibertyHillBot is a node on the mesh that answers a handful of commands. It is the quickest way to check that your radio reaches the mesh, and to see which repeaters your messages pass through on the way.

Send a command as an ordinary message, starting with the !, in any of three places:

It never answers on the public channel, so commands sent there only take up airtime.

!ping
Replies with how many hops your message took to reach the bot and how long it was in flight, worked out from your radio's clock. A ? for the time means your radio's clock is not set.
!path
The route your message took: the hop count, then a short code for each repeater it passed through, in order from you to the bot.
!whois 03b9
Turns one of those codes into the names of the nodes it could be, up to three. Use it on the codes !path gives you.
!seen and a name
When the bot last heard that node. Use the name as it appears in your contacts.
!stats
How many nodes and repeaters the bot has heard, and how many messages in the last day. It counts only what its own radio hears.
!wx and a place
The forecast for a ZIP code, a town or a latitude and longitude, anywhere: !wx 78642, !wx Leander or !wx 30.66,-97.92.
!help
Lists the commands it answers.

No answer? In #lhtx, check the channel's region first. Then wait a minute before trying again: the bot ignores the same command from the same person if it comes too soon, so it does not fill the air with repeats. If a first direct message goes unanswered, send it again. By then your radio has usually learned the route to the bot.

Replies are one short message each. The bot keeps what it hears on its own node: messages for a week, and each command with the name of who asked for a year, so we can see what gets used. Forecasts come from Open-Meteo.com (CC BY 4.0), and places are looked up with OpenStreetMap Nominatim, © OpenStreetMap contributors.

Being a good neighbor on the air

Get in touch

Questions, or a radio you want help with? Email hello@lhtx.org. Or find us on the mesh itself: say hello on the public channel and someone will answer.