New South Wales Meshcore Network & Repeater Configuration Guide
💬 Join the NSW Mesh Discord
Most off-mesh communication happens on Discord — it's the best place to ask questions, get help setting up your node, and connect with the community!
Join Discord Server →📚 Table of Contents
Getting Started
- Getting Started with MeshCore
- Setting Up Your Companion
- Radio Settings
- Channels
- Privacy Considerations
Repeater Setup
Technical Reference
📚 Getting Started with MeshCore
📺 Video Guide: How to get started with MeshCore off grid text messaging — A helpful walkthrough explaining MeshCore, how it works, and how to set it up.
Setting Up Your Companion
Step 1: Flash Your Device
Flash your device using the Meshcore firmware flasher.
⚠️ Before flashing: Choose your connection method now — the firmware only supports one connection type at a time:
- BLE (Bluetooth Low Energy)
- USB (wired connection)
- WiFi (wireless)
💡 First time flashing? Make sure to select "Erase" before flashing MeshCore.
Step 2: Connect and Configure
Connect to your companion using your chosen method, then configure:
Set Name and Radio Settings:
- Tap the ⚙️ icon (top right of the app)
- Configure your name and radio settings:
- Sydney & most NSW regions: Preset
Australia: Narrow - Illawarra region: Preset
Australia: Wide(915.8 MHz, BW 250, SF11, CR8)
- Sydney & most NSW regions: Preset
- Tap ✔️ (top right) to save
- Wait for the green success notification
Add Channels:
- Tap ⋮ (top right) → + Add Channel → Join a Hashtag Channel
- Enter the channel name (e.g.,
test) - Press Join Channel
Step 3: Join the Mesh
Advertise Your Node:
- Tap
Advert(button next to ⚙️) →Send Flood Advert - This broadcasts your node name to the mesh
Discover Nearby Repeaters:
- Tap 🔧 →
Discover Nearby Nodes→Discover Repeaters - Wait for repeaters within range to respond
- Tap + to add them to your contacts
Step 4: Test Your Connection
Send a Test Message:
- Send a greeting to the Public channel (general chat), or
- Send
test,ping, orpathto the #test channel (bots will auto-reply)
Check Your Results:
After sending, look for heard X repeats next to your message:
| Result | Meaning |
|---|---|
heard 1+ repeats |
✅ Success! Your message reached repeater(s) |
heard 0 repeats |
❌ No repeater heard your message |
If you see 0 repeats:
- Double-check your radio settings
- Check the NSW Meshcore Map for nearby repeaters
- Long-press your location on the map to check expected coverage
- Try standing outside with antenna pointing upward
- Find higher ground to clear buildings (line-of-sight is required)
Understanding Adverts
Advertisements are how nodes announce their presence on the mesh. Each advert packet contains:
- Public Key — Your node's unique cryptographic identity (32 bytes)
- Timestamp — When the advert was generated (used for routing and deduplication)
- Digital Signature — Cryptographic proof the advert is authentic (64 bytes)
- Node Type — Whether you're a companion, repeater, room server, or sensor
- Name — Your node's display name
- Location — Latitude/longitude (if sharing is enabled)
| Advert Type | Frequency | Scope | Effect |
|---|---|---|---|
| Local advert | Every 240 minutes | Directly connected repeaters only | Zero-hop broadcast — announces to immediate neighbors without flooding the network |
| Flood advert | Every 24 hours | Entire mesh | Network-wide broadcast — every repeater that receives it will rebroadcast |
| Direct advert | On login/manual | Specific path only | Point-to-point — sent along a known path to a specific node |
| Companion advert | Manual only | When you trigger it | User-initiated flood advert from your companion node |
⚠️ Why 24 hours for flood adverts? Each flood advert is rebroadcast by every repeater on the mesh. With many nodes, frequent flood adverts create substantial traffic that can congest the network and delay actual messages.
⚠️ IMPORTANT: Radio Compatibility
NSW has two mesh networks with different radio presets. You must use the correct preset for your region:
🔷 Australia: Narrow (Sydney & Most Regions)
Uses 916.575 MHz, 62.5 kHz bandwidth, SF7, CR8
- Narrow bandwidth (62.5 kHz) — Maximum receiver sensitivity (~-137 dBm effective), excellent noise rejection, approximately 6 dB better sensitivity than 250 kHz (roughly double the range for the same signal strength)
- Lower spreading factor (SF7) — Fastest transmission times (8-16x faster than SF11-12), reduces collision risk and channel congestion, 128 chirps per symbol
- Higher coding rate (CR8 = 4/8) — Maximum forward error correction (100% redundancy), compensates for the faster SF7 by adding robustness, can recover from burst errors and interference
- Combined effect: Excellent range through narrow bandwidth sensitivity, fast transmissions via low SF, reliable delivery via high CR — messages are short yet robust
🔶 Australia: Wide (Illawarra Region)
Uses 915.8 MHz, 250 kHz bandwidth, SF11, CR8
- Wide bandwidth (250 kHz) — Better signal handling in multipath environments, more tolerant of frequency drift, handles Doppler effects from moving nodes better
- Higher spreading factor (SF11) — 2048 chirps per symbol provides excellent sensitivity (-134.5 dBm), better penetration through obstacles and terrain, ideal for non-line-of-sight paths in mountainous areas
- Higher coding rate (CR8 = 4/8) — Maximum forward error correction provides reliability needed for challenging terrain
- Combined effect: Robust signal handling for difficult terrain (steep escarpments, deep valleys, dense vegetation), trades speed for reliability and obstacle penetration
❌ Not interoperable: Narrow and Wide presets cannot communicate directly. Bridge repeaters connect the Illawarra (Wide) network to the main NSW (Narrow) mesh.
⚙️ Radio Settings
🔷 NSW Mesh — Australia: Narrow (Sydney & Most Regions)
The main NSW mesh uses the Australia: Narrow preset, optimized for high-capacity networks with good line-of-sight coverage.
| Setting | Value | Technical Details |
|---|---|---|
| Frequency | 916.575 MHz | Australian ISM band (915-928 MHz), provides separation from other LoRa networks |
| Bandwidth | 62.5 kHz | Narrowest available — Maximum sensitivity (~-137 dBm), best noise rejection, ~6 dB better than 250 kHz (≈2x range) |
| Spreading Factor (SF) | 7 | Fastest SF — 128 chirps/symbol, 8-16x faster than SF11-12, minimizes airtime and collision risk |
| Coding Rate (CR) | 8 (4/8) | Maximum FEC — 100% redundancy, compensates for faster SF7, recovers burst errors |
Why Narrow Works: The narrow bandwidth provides sensitivity usually requiring higher SF. Combined with SF7's speed and CR8's error correction, messages are ~200-600ms (vs 3-5 seconds at SF11) while maintaining excellent range. Effective bitrate: ~2.7 kbps. Ideal for urban/suburban areas with moderate repeater density.
🔶 Illawarra Region — Australia: Wide
The Illawarra mesh uses the Australia: Wide preset, optimized for challenging terrain with steep escarpments, deep valleys, and dense vegetation.
| Setting | Value | Technical Details |
|---|---|---|
| Frequency | 915.8 MHz | Australian ISM band (915-928 MHz), offset from Narrow to allow bridge repeaters |
| Bandwidth | 250 kHz | Wider channel — Better multipath handling, more tolerant of frequency drift and Doppler effects from moving nodes |
| Spreading Factor (SF) | 11 | High SF — 2048 chirps/symbol, excellent sensitivity (-134.5 dBm), superior obstacle/terrain penetration |
| Coding Rate (CR) | 8 (4/8) | Maximum FEC — 100% redundancy, essential for reliability in difficult RF environments |
Why Wide Works for Illawarra:
- Terrain challenges: Illawarra Escarpment creates steep cliffs (300-500m drops), deep valleys block line-of-sight, dense rainforest absorbs signals
- SF11 benefits: Each doubling of chirps per symbol adds ~2.5 dB sensitivity — SF11 vs SF7 provides ~10 dB advantage for weak signal reception
- Wide BW benefits: Better handling of signal reflections off cliffs (multipath), tolerates timing errors from long propagation paths
- Trade-off: Messages take 3-5 seconds (vs 200-600ms on Narrow), lower network capacity, but reliability is critical in sparse, difficult terrain
Bridge repeaters connect Illawarra (Wide) to the main NSW (Narrow) mesh, allowing cross-network communication.
Comparison Table
| Aspect | 🔷 Narrow (Sydney/NSW) | 🔶 Wide (Illawarra) |
|---|---|---|
| Message airtime | ~200-600ms ✅ | ~3-5 seconds |
| Network capacity | Higher (more msgs/min) ✅ | Lower |
| Receiver sensitivity | ~-137 dBm (via narrow BW) | ~-134.5 dBm (via high SF) |
| Obstacle penetration | Moderate | Excellent ✅ |
| Terrain handling | Good for flat/urban | Excellent for hills/valleys ✅ |
| Multipath tolerance | Lower | Higher ✅ |
| Best for | Urban/suburban, good LOS | Mountainous, NLOS, sparse coverage |
📻 Channels
Core Channels
| Channel | Key | Purpose |
|---|---|---|
| Public | Public Channel | General chat for all mesh users |
| Test | #test |
Connection testing (bots auto-reply to test, ping, path) |
| Emergency | #emergency |
Emergency communications only |
Regional Channels
| Channel | Key | Network |
|---|---|---|
| Sydney | #sydney | 🔷 Narrow |
| NSW Wide | #nsw | 🔷 Narrow |
| Macarthur | #macarthur | 🔷 Narrow |
| Nepean | #nepean | 🔷 Narrow |
| Central Coast | #centralcoast | 🔷 Narrow |
| Illawarra | #illawarra | 🔶 Wide |
💡 Note: Illawarra uses the Wide preset. Messages can still reach between networks via bridge repeaters, but you must configure your radio for the correct preset in your area.
Bot Bridges (Discord Integration)
| Channel | Key | Bot |
|---|---|---|
| RoloJnr | #rolojnr | Discord bridge AI bot |
💡 Tip: All
#channel keys are auto-generated from the channel name.
🔒 Privacy Considerations
⚠️ Important: Anything sent via adverts or on public channels (including publicly known
#channels) is subject to whatever the receiver chooses to do with the data.
What You Should Know
Messages, locations, and other data sent to the mesh should be considered public information.
| Concern | Details |
|---|---|
| 🌐 Internet-accessible tools | Maps and services display packet and location data publicly online |
| 🔓 No guaranteed privacy | Messages are only as private as every person who receives them |
| 💾 Data persistence | Once transmitted, you have no control over storage, sharing, or use |
| 📍 Location precision | Locations are transmitted with high precision |
Location Privacy Tip
You can set an approximate location instead of your exact address:
- Close enough for planning and coverage assessment
- Offset enough to provide a privacy buffer
- Consider using a nearby intersection, park, or general area
Best Practices
✅ Do:
- Use Direct Messages for private conversations (with trusted keys)
- Use Private Channels for group privacy (with trusted participants)
- Set approximate locations for your devices
❌ Don't:
- Share sensitive personal information on public channels
- Broadcast your exact home address
- Assume any public message is private
Encryption
| Feature | Encryption | Privacy Level |
|---|---|---|
| Public channels | AES-256-CTR | 🔓 Public (key is shared) |
# hashtag channels |
AES-256-CTR | 🔓 Semi-public (key derived from name) |
| Private channels | AES-256-CTR | 🔒 Private (if key is secret) |
| Direct messages | AES-256-CTR | 🔒 Private (unique per conversation) |
💡 MeshCore uses AES-256-CTR encryption. With secured keys and trustworthy recipients, your data is cryptographically protected.
🔧 Repeater Naming & Setup
Naming Convention
| Type | Naming | Example |
|---|---|---|
| Fixed repeaters | Name by location (suburb, hill, building) | ⚡️- Mount Colah, 🌱 - Camperdown, Davo - Centrepoint Tower |
| Mobile repeaters | Include "mobile" in name | Johns Mobile |
Setting Up Your Repeater
Step 1: Flash the Firmware
Flash the repeater using Meshcore firmware flasher.
Step 2: Generate a Unique Key Prefix
When flashed, the node will have a random public key. The first two characters of this key are the prefix, which is used to show routing paths for messages. If multiple nodes have the same prefix, it can cause confusion for message routes.
To generate a unique prefix:
- Go to the NSW key generator and configurator
- Tick
Avoid NSW Repeaters— this avoids prefixes already in use on the mesh - Press
Generate Keyand wait for it to finish - Click
Send To Deviceto upload the key to your repeater
Step 3: Configure Radio Settings, Name, and Location
Go to Meshcore USB Config and configure:
- Radio Settings: Set the correct frequency, bandwidth, spreading factor, and coding rate (see Radio Settings)
- Name: Give your repeater a meaningful name
- Location: Set your repeater's location for mesh planning purposes
- Guest Password: Set to
guestto allow other mesh users to query your repeater's status - Send Advert: After configuring, click the
Send Advertbutton to broadcast your repeater to the mesh
Step 4: ⏰ Sync the Clock — REQUIRED STEP
⚠️ CRITICAL: Your repeater will not work properly without syncing the clock first!
Repeaters default to a clock time of 15 May 2024 on every reboot unless connected to a computer.
Why this matters:
- ❌ Your repeater will be invisible — Other nodes won't hear your adverts correctly
- ❌ Messages may not route properly — Time synchronization is critical for mesh routing
- ❌ Your node appears offline — Shows at bottom of contact lists
How to sync the clock:
- Log into your repeater via your companion node
- Go to
Settingstab → Scroll toSync Clock→ Tap it - Wait for green success notification
- Tap
Advertto tell the repeater to send an advert - ✅ Verify: Check that the "Last Heard" time for your repeater is current (not showing May 2024)
💡 Note: You must re-sync the clock after every power cycle or reboot unless your repeater has GPS or remains connected to a computer.
Step 5: Configure Repeater CLI Settings
Once logged in and the clock is synced, configure your repeater via the command line.
How to enter commands:
- Go to the
>_— Command Line tab - Copy each command from your chosen profile
- Paste and send one command at a time
- Wait up to 30 seconds for an
OKresponse - If no response, resend the command
📺 Video Guide: More about repeaters (11:18)
⚙️ Repeater Configuration Profiles
Choose the profile that matches your repeater's role and position in the mesh network.
How to Choose Your Profile
| Profile | Elevation | Neighbors | Typical Location |
|---|---|---|---|
| 🔴 CRITICAL | Highest | 20+ | Hilltop, tower, tall building |
| 🟠 LINK | Mid | 15-20 | Ridge, elevated position |
| 🟡 STANDARD | Average | 5-10 | Suburban roof, elevated home |
| 🟢 LOCAL | Low | 1-3 | Indoor, ground-level, low roof |
📝 MeshCore Defaults:
txdelay=0.5,direct.txdelay=0.2,rxdelay=0,af=1.0All profiles below modify these defaults to optimize for the Sydney mesh.
🔴 CRITICAL — Hilltop/Tower Infrastructure
Role: Highest elevation, most neighbors, backbone of the mesh
When to use: Your repeater is on a tall hilltop, tower, or tall building with clear line-of-sight to many other nodes. You can see 20+ neighbors and are a key link in the network backbone.
set txdelay 2set direct.txdelay 2set rxdelay 3set af 3Why these values:
- High txdelay (2.0): Waits longer before retransmitting, letting smaller nodes serve their local areas first
- rxdelay (3): Standard rxdelay for all Sydney mesh repeaters
- High af (3): Enforces 25% duty cycle to prevent channel hogging
🟠 LINK — Mid-elevation Bridge
Role: Connects critical nodes to local coverage, moderate neighbor count
When to use: Your repeater bridges between tall infrastructure and suburban coverage. You can see some critical nodes and some local nodes (15-20 neighbors typical).
set txdelay 1.5set direct.txdelay 1set rxdelay 3set af 2Why these values:
- Moderate txdelay (1.5): Balances responsiveness with collision avoidance
- rxdelay (3): Standard rxdelay for all Sydney mesh repeaters
- Moderate af (2): 33% duty cycle balances bridging role with fair channel access
🟡 STANDARD — Suburban Coverage
Role: Average positioning, serves local area, moderate neighbors
When to use: Typical deployment. Your repeater is in an elevated position, serving a localized area. You see 5-10 neighbors.
set txdelay 0.8set direct.txdelay 0.4set rxdelay 3set af 1.5Why these values:
- Lower txdelay (0.8): More responsive for local coverage
- rxdelay (3): Standard rxdelay for all Sydney mesh repeaters
- Lower af (1.5): 40% duty cycle, reasonable responsiveness
🟢 LOCAL — Ground-level/Indoor
Role: Low elevation, few neighbors, serves immediate area
When to use: Indoor repeater, low rooftop, or ground-level installation. You only see 1-3 neighbors and primarily serve your immediate area.
set txdelay 0.3set direct.txdelay 0.1set rxdelay 3set af 1Why these values:
- Minimal txdelay (0.3): Maximum responsiveness with low collision risk
- rxdelay (3): Standard rxdelay for all Sydney mesh repeaters
- Low af (1): 50% duty cycle, not creating congestion
⚙️ Common Settings (All Repeaters)
Apply these settings to all repeaters regardless of role.
Commands to Apply
set agc.reset.interval 500set multi.acks 1set advert.interval 240set flood.advert.interval 24set guest.password guestpowersaving onQuick Reference
| Setting | Value | MeshCore Default | What it does |
|---|---|---|---|
agc.reset.interval |
500 | 0 (disabled) | AGC reset every 500 seconds (~8 min) to prevent sensitivity drift |
multi.acks |
1 | 1 | Send redundant ACKs for better delivery reliability |
advert.interval |
240 | 0 | Local advert every 240 minutes (neighbors only) |
flood.advert.interval |
24 | 12 | Network-wide advert every 24 hours |
guest.password |
guest | (none) | Standard guest access password |
powersaving |
on | off | Power saving mode (light sleep between activity) |
📖 Understanding the Settings
This section explains what each setting does and why it matters for mesh performance.
AGC Reset Interval
The Automatic Gain Control (AGC) in LoRa radios adjusts receiver sensitivity automatically. However, AGC can drift in busy environments, reducing sensitivity over time.
⚠️ Known Issue: Loud RF signals can lock up the AGC, preventing the repeater from receiving packets until it's reset.
How it works: The radio periodically re-initializes the receiver to reset AGC to optimal sensitivity. Value is in seconds.
Multiple Acknowledgments
Controls whether redundant ACKs are sent for direct (point-to-point) messages.
- 1 (enabled): Sends two ACK packets: a "multi-ack" first, then the standard ACK
- 0 (disabled): Sends only a single ACK packet
Redundant ACKs significantly improve delivery confirmation reliability.
Advertisement Intervals
Repeaters periodically announce themselves so other nodes can discover them.
- Local advert (240 min): Zero-hop broadcast to immediate neighbors only
- Flood advert (24 hrs): Network-wide broadcast, rebroadcast by all repeaters
Power Saving Mode
Power saving mode puts the repeater into light sleep between periods of activity to reduce power consumption.
- Active period (5 seconds) — Process packets, send adverts
- Light sleep (up to 30 minutes) — Wakes on timer or packet received
💡 Sydney Mesh Recommendation:
powersaving onfor most repeaters to reduce power consumption and heat generation.
🎯 Role-Specific Settings Explained
These settings work together to optimize mesh performance based on your repeater's position and traffic load.
Quick Reference
| Setting | Default | What It Controls | Rule of Thumb |
|---|---|---|---|
txdelay |
0.5 | Wait before retransmitting floods | Higher = let other nodes go first |
direct.txdelay |
0.2 | Wait before retransmitting direct packets | Usually lower than txdelay |
rxdelay |
0 | Signal-based processing priority | Higher = prefer strongest signal |
af |
1.0 | Radio silence after transmitting | Higher = more listening |
Transmission Delay (txdelay / direct.txdelay)
Controls how long a repeater waits before retransmitting a packet it needs to forward.
The Formula:
max_delay = estimated_airtime × txdelay × 5 actual_delay = random(0, max_delay)
Why CRITICAL Nodes Use Higher Values:
Hilltop/tower repeaters typically hear many other repeaters. By using higher txdelay, critical nodes essentially say: "I'll wait and let the smaller nodes go first."
| txdelay | Delay Window | Collision Risk | Propagation Speed |
|---|---|---|---|
| High (2.0) | Wide | ✅ Lower | Slower |
| Low (0.3) | Narrow | ⚠️ Higher | Faster |
Airtime Factor (af)
Enforces a "radio silence" period after each transmission, implementing a duty cycle limit.
The Formula:
silence_period = transmission_time × airtime_factor
| af | Duty Cycle | Best For |
|---|---|---|
| 1.0 | 50% (1:1) | 🟢 Local nodes with few neighbors |
| 1.5 | 40% (1:1.5) | 🟡 Standard suburban repeaters |
| 2 | 33% (1:2) | 🟠 Link nodes bridging regions |
| 3 | 25% (1:3) | 🔴 Critical infrastructure (heavy traffic) |
Receive Delay (rxdelay) — Signal-Based Processing
The rxdelay setting uses signal strength to determine which copy of a packet to process first.
| Signal Strength | Score | Delay | Result |
|---|---|---|---|
| Strong (nearby) | ~0.8 | ~50ms | ✅ Processed first |
| Medium | ~0.5 | ~300ms | Processed after stronger signals |
| Weak (distant) | ~0.3 | ~800ms | ❌ Often discarded as duplicate |
💡 All Sydney mesh repeaters use
rxdelay 3for consistency and optimal performance.