Network Infrastructure
Repeater Build Guide
How to choose hardware, flash firmware, configure and deploy a MeshCore repeater that works with the Northern Arizona MeshCore network. A well-placed repeater on a ridge or rooftop can cover a whole neighborhood or bridge two valleys.
Northern Arizona Network Settings
Every repeater on our mesh must use these settings. A repeater with different radio settings hears nothing from the rest of the network.
| Setting | Value |
|---|---|
| Frequency | 910.525 MHz |
| Bandwidth | 62.5 kHz |
| Spreading factor | SF7 |
| Coding rate | CR7 |
| Path hash size | 2-byte |
| Local advert | Every 60 minutes |
| Flood advert | Every 3 hours |
| Firmware | MeshCore 1.14 or newer, Repeater role |
Our network uses 2-byte path hashes. Repeaters older than firmware 1.14 drop packets that use 2-byte paths, so always flash a current release.
What a Repeater Does
In MeshCore, only devices flashed as repeaters relay traffic. Companions and room servers don’t. A repeater listens for messages from companions and other repeaters and rebroadcasts them to extend coverage. It needs no phone and no user, just power, an antenna and a good location. Think of repeaters as the cell towers of the mesh.
CompanionYour personal device. Sends and receives your messages through the phone app.
RepeaterRelays messages and extends coverage. No personal messaging.
Room ServerStores messages for users who are offline, like a bulletin board. Does not relay.
When to deploy one
- You want to extend coverage to an area that can’t reach existing repeaters.
- You have access to a high location: a ridge, hilltop, rooftop or tower.
- You want to bridge two groups of users separated by terrain.
When to hold off
- You don’t have a companion yet. Get on the air with one first.
- You only have a low location in a valley. A repeater at ground level helps very little.
- The area already has strong coverage. Check the repeater list and ask on Discord before you build.
Hardware
Recommended boards
Heltec V3/V4Affordable and easy to find. Best indoors or where wall power is available, since its ESP32 draws more power than nRF52 boards. The screen shows the name and radio settings.
RAK WisBlockLow-power nRF52840 core. The RAK19007 base board has a 5 V solar connector and battery charger built in. The common choice for off-grid hilltop sites.
Station G2High-power amplifier and low-noise receive amplifier. Not weatherproof, so mount it in an enclosure. Best for fixed sites with power. Its transmit setting differs from plain boards; see Advanced Settings.
Antennas
Use an antenna tuned for 915 MHz, not 868 MHz or a 2.4 GHz Wi-Fi antenna.
- Omni-directional: covers all directions. A 5.8 dBi fiberglass omni is a good all-around choice. An 8 dBi omni reaches farther on flat ground but has a flatter pattern, which can miss users below a high ridge site.
- Directional (Yagi): 10–14 dBi for point-to-point links, such as bridging Prescott and the Verde Valley. Must be aimed precisely.
- Stock antenna: fine for indoor or test setups.
Power
- Wall power: the simplest option. Use a quality 5 V USB supply rated at least 600 mA for a Heltec V3/V4, and 1 A for headroom. High-power boards like the Station G2 need more; check the maker’s spec.
- Battery: runtime is capacity divided by average draw. A board averaging 50 mA empties a 3000 mAh battery in about 60 hours. Good for testing a location.
- Solar: the usual choice for permanent hilltop sites. See Solar Power.
Step-by-Step Setup
Flash repeater firmware- Open the MeshCore web flasher in Chrome or Edge.
- Connect the board by USB.
- Select your device, for example “Heltec V3/V4” or “RAK WisBlock / WisMesh (RAK 4631)”.
- Choose the Repeater role, not Companion.
- Pick the latest version (1.14 or newer), press Flash and wait for it to finish.
Configure the network settingsRepeater firmware doesn’t accept Bluetooth. Do the first setup over USB using the repeater setup option in the web flasher. After that, you can manage it from the MeshCore app on your companion.
A freshly flashed repeater starts on the European default (869.618 MHz, SF8), so it hears nothing here until you change it.
The default is password. Anyone who knows it can change your repeater, so set your own (up to 15 characters). The guest password is blank by default.
Use a site name followed by RPTR, matching the rest of the network (for example SOUTHVIEW RPTR). Set precise GPS coordinates; latitude and longitude both default to 0, which leaves the repeater off every map.
Our network uses a local (zero-hop) advert every 60 minutes and a flood advert every 3 hours. The required commands above set both: set advert.interval 60 (minutes) and set flood.advert.interval 3 (hours).
When setup is done, send one flood advert so the whole mesh learns about the repeater right away instead of waiting for the next 3-hour flood advert.
Each repeater is identified in message paths by the start of its public key. With our 2-byte path hashes, collisions between nearby repeaters are rare. Leave region (flood scope) settings alone unless asked on Discord.
Advanced settingsset tx <dbm> (1–22) sets the LoRa chip’s output. On a plain SX1262 board, 22 dBm is the maximum. Boards with an extra amplifier (Station G2, Heltec V4, E22 30/33 dBm modules) put out more than the number you set, so check the MeshCore FAQ table first. It lists 16 dBm on a US Station G2 for about 35 dBm out. Wrong values can damage the radio.
txdelay (0.5) and direct.txdelay (0.3) keep nearby repeaters from talking over each other. Leave them at the defaults unless the network coordinators suggest otherwise.
For battery and solar sites, powersaving on lets the repeater sleep between radio activity. It works on nRF52 boards right away and on ESP32 boards after 2 minutes.
Not needed for a fixed repeater. Adverts use the set lat / set lon location. On a GPS board, gps on then gps setloc saves its position. GPS costs power, so turn it off afterward.
Mount and deployHeight and a clear view matter more than any setting. In our terrain, a repeater on a ridge with a view of the valley will far outperform a taller mast down in a draw.
- Rooftop: J-mount or chimney mount. Even a single-story roof helps a lot.
- Attic: a reasonable compromise. Avoid metal roofs, and watch summer attic heat.
- Tripod or mast: good for testing a new location before a permanent install.
- Hilltop or ridge: the sites that carry our network, such as Mingus, Granite Mountain and Glassford Hill. Get permission first.
- Tower: if you have one, adding a LoRa repeater is easy and gives excellent coverage.
Verify it works- Check your app: once your companion hears its advert, the repeater shows in Contacts and, with its location set, on the app’s Map tab.
- Test with a companion: drive away from the repeater and send messages. The app’s path viewer shows which repeaters a message went through.
- Check signal: log in to the repeater and open Status for the last RSSI and SNR. SNR tells you more than RSSI; at SF7, LoRa can decode down to about −7.5 dB SNR.
- Ask the community: post on Discord and ask who can hear it.
Solar Power
Northern Arizona has excellent sun, but size for the worst week of the year, not an average day: short December days and multi-day winter storms at higher elevations.
Panel
Size from the repeater’s daily use. A board averaging 20 mA at 3.7 V uses about 1.8 Wh a day; plan for several times that from the panel to recover after cloudy days. Face it south, tilted at about your latitude (34° to 35° across our area) or a little steeper to favor winter sun. NREL’s free PVWatts calculator gives monthly figures for your exact site.
Battery
Use a LiPo, 18650 or LiFePO4 pack big enough to carry several days without sun. Most lithium cells must not be charged below freezing (32°F), and they also have an upper charging limit. Check both on your battery’s datasheet.
Charge controller
Some boards have a solar charger built in, such as the RAK19007. For custom builds, an MPPT controller gets more from the panel than a PWM one.
Enclosure
Use an IP65 or better weatherproof enclosure sized for the board, battery and controller. Add silica gel packs against condensation. A light-colored box, shaded from direct afternoon sun, runs much cooler.
Arizona Deployment Tips
Terrain and line of sight
LoRa works best with a clear line of sight. Our mountains are both the problem and the solution: ridges and hills block signals between valleys, but a repeater on a high point can see across several of them. A quick estimate of the radio horizon in miles is 1.41 × (√h1 + √h2), with both antenna heights in feet above the surrounding terrain. Real links fall short of that when a ridge, trees or buildings are in the way, so test before you commit.
Summer heat
- A sealed box in direct sun can get far hotter than the air. Shade the enclosure and use a light color.
- Batteries age fastest when hot. Keep the pack out of direct sun and away from the panel’s back side.
- Check your battery’s maximum charging temperature; a charger with temperature protection is worth it.
Monsoon season
- July through September brings lightning, high winds and heavy rain. Ground the mast and use a coax lightning arrestor on exposed sites.
- Secure masts and panels for strong gusts, and seal cable entries against driving rain.
Winter at elevation
- Prescott, Williams and Flagstaff-area sites see freezing nights and snow. Most lithium batteries must not charge below freezing, so pick a battery or charger with low-temperature charge protection.
- Insulate the battery, oversize it, and angle panels steeply enough to shed snow.
- If wall power is available, use it.
Coverage strategy
The network grows best along the corridors people actually travel: SR-69, SR-89, I-17 and I-40. Space repeaters by what each pair of sites can reach, and fill shadows behind ridges. Ask on Discord where coverage is thin before choosing a site.
Local uses
Repeaters support backcountry hiking and hunting coordination, emergency communications during wildfire season and monsoon storms, and messaging where cell service is weak or overloaded.
Getting Listed on the Hub
Once your repeater is on the air with its name and GPS position set, post on Discord with the repeater name and site. After it is heard on the network, it will be added to the repeater list with its coordinates and elevation.
Troubleshooting
Repeater not appearing on the map
The app’s Map tab only shows repeaters your companion has heard. The location in the advert is 0,0 until you run set lat and set lon. Set both, then send advert.
Poor range despite a good location
Check the antenna connection; a loose or damaged SMA connector can cut range badly. Confirm a 915 MHz antenna with a clear view, not blocked by metal roofing or siding. If it transmits but hears little, check that radio.rxgain is on and look at the noise floor with stats-radio over USB.
Messages not relaying
Confirm the board has repeater firmware (not Companion) and that get repeat says on. Confirm get radio shows 910.525,62.5,7,7 and get path.hash.mode shows 1. Repeaters older than 1.14 drop 2-byte path packets, so update old firmware.
Battery draining too fast
Lower the transmit power, turn on powersaving if supported, and confirm the panel is sized correctly and in full sun. Watch the battery voltage in the app’s Status screen. Faster drain in winter and in extreme heat is normal.
Repeater keeps rebooting
Usually a power problem. Check the USB cable, supply voltage and battery connections. A failing battery or undersized panel can cause brownouts when transmitting. Reflash the firmware if it continues.
FAQ
Do I need a license or permission?
No FCC license is needed; MeshCore uses the license-free 915 MHz ISM band. You do need the property owner’s permission to mount on someone else’s building, tower or land. Get written permission for shared or commercial structures.
Can one device be a repeater and a room server?
No. Each flash picks one role, and room server firmware doesn’t relay. Some sites run both on separate devices.
Can I manage my repeater remotely?
Yes, over the mesh. Log in to the repeater as admin from the MeshCore app on your companion, wherever the mesh can reach it, and use Status, Command Line and Settings. A repeater plugged into a Raspberry Pi by USB can also be managed with a serial terminal such as picocom.
How long will a solar repeater last?
With a properly sized system it runs unattended. The battery is usually the weak link and wears out with charge cycles and heat. Check the site after severe weather and watch its battery voltage in the app.
Adapted for the Northern Arizona MeshCore network from NoDak Mesh’s MeshCore Repeater Setup guide, checked against MeshCore 1.18.0, and the MeshCore CLI command reference.