# MeshCore Room Servers

# What is a Room Server?

## What is a MeshCore Room Server?

A **Room Server** is a store-and-forward bulletin board that runs directly on a LoRa node running MeshCore firmware. It acts as a shared message board for the mesh community - any node that can reach the room server can post and read messages without needing internet access or a central server. The whole point of a room server (versus an ordinary channel) is that it **retains message history**: roaming users who were out of range can come back later and pull the messages they missed, much like an email server.

### Key Characteristics

- **Storage:** The room server **retains** message history and pushes it to clients when they connect - a client receives the previous 32 unseen messages on login. (Persistence across a reboot/power cycle depends on your firmware and hardware; do not assume messages survive a power loss without verifying on your firmware version.)
- **Access control:** Two passwords - an **admin** password and a **guest** password - plus a per-companion ACL (`setperm <pubkey> <level>`, with levels Guest / Read-only / Read-write / Admin) and a separate `set allow.read.only` flag for unauthenticated read access.
- **Repeater hybrid:** A room server can also be configured as a repeater with `set repeat on`, but this is a trade-off - room servers benefit from an indoor location for USB/Bluetooth administration, whereas repeaters perform best with a high external antenna.
- **Radio requirements:** The room server's radio preset (frequency/bandwidth/spreading factor/coding rate) must match the rest of the network; otherwise its packets and adverts cannot be received by other nodes.

### Access Control

MeshCore room servers use two passwords plus a per-companion ACL - not a single "three-tier" password ladder:

<table id="bkmrk-roledefault-password"> <thead><tr><th>Mechanism</th><th>Default</th><th>Permissions</th></tr></thead> <tbody> <tr><td>**Admin password**</td><td>`password`</td><td>Full control: manage permissions, delete messages, change all settings</td></tr> <tr><td>**Guest password**</td><td>`hello`</td><td>Read and write messages once authenticated as a guest</td></tr> <tr><td>**Per-companion ACL** (`setperm`)</td><td>per node</td><td>Levels: Guest / Read-only / Read-write / Admin</td></tr> <tr><td>**`set allow.read.only` flag**</td><td>off</td><td>When enabled, allows unauthenticated read-only access; off by default (no automatic no-password read)</td></tr> </tbody></table>

**Warning:** Both default passwords must be changed immediately after first login. The default admin password `password` and guest password `hello` are publicly known.

### Why Room Servers Matter

Room servers enable asynchronous community communication entirely over the mesh. A traveler passing through can read recent area messages, a neighborhood can coordinate during a power outage, or volunteers can leave notes for the next person who checks in - all without any internet connection or cellular infrastructure. Because the server stores and re-pushes missed messages, participants do not all need to be in range at the same time.

# Room Server Setup & Configuration

### Step 1 - Flash Room Server Firmware

<span style="white-space:pre-wrap;">Use the MeshCore web flasher at </span>[flasher.meshcore.io](https://flasher.meshcore.io)<span style="white-space:pre-wrap;">. Select your hardware (e.g., Heltec V3) and choose the </span>**Room Server**<span style="white-space:pre-wrap;"> firmware variant.</span>

### Step 2 - Connect via Serial or Bluetooth

<span style="white-space:pre-wrap;">Connect via USB serial at </span>**115200 baud**<span style="white-space:pre-wrap;"> using a terminal emulator (PuTTY, screen, minicom) or via Bluetooth using the MeshCore companion app.</span>

### Step 3 - Immediate Security: Change Default Passwords

Before anything else, change both default passwords. The defaults are publicly documented and must not remain in production:

```
password yourSecureAdminPassword
set guest.password yourSecureGuestPassword
```

These are the two passwords a room server uses (admin and guest). For finer control you can also assign per-companion permissions with `setperm <pubkey> <level>` (Guest / Read-only / Read-write / Admin), and enable unauthenticated read-only access with `set allow.read.only on` (default off). This is a two-password-plus-ACL model, not a single three-tier password ladder.

### Step 4 - Set Node Identity and Location

```
set name MyRoomServer
set lat 46.879682
set lon -96.789803
```

Accurate coordinates allow the room server to appear correctly on network maps and help users gauge how far they are from it.

### Step 5 - Verify Radio Preset

The room server's radio settings must match the network. The MeshCore USA/Canada preset (as of 2026-06-08) for most North American MeshCore networks ([NoDakMesh](https://wiki.meshamerica.com/books/north-american-networks/page/nodakmesh), [RegionMesh](https://wiki.meshamerica.com/books/north-american-networks/page/regionmesh), etc.) is:

- Frequency: 910.525 MHz
- Bandwidth: 62.5 kHz
- Spreading Factor: SF7
- Coding Rate: CR5

Prefer applying the named USA/Canada preset from the firmware menu or companion app rather than hand-entering these values - that sets them automatically and avoids landing off the network if the preset has changed. Verify against the current MeshCore preset for your region before relying on the numbers above.

### Step 6 - Optional: Enable Repeat Mode

If there is no separate repeater at this location, you can enable packet relay on the room server:

```
set repeat on
```

<span style="white-space:pre-wrap;">See </span>**[Dual Deployment: Repeater + Room Server](https://wiki.meshamerica.com/books/room-servers-gateways/page/dual-deployment-repeater-room-server)**<span style="white-space:pre-wrap;"> for why a dedicated repeater device is preferred over this option.</span>

### Step 7 - Broadcast Presence

Trigger an immediate advertisement so other nodes discover the room server without waiting for the next scheduled broadcast:

```
advert
```

### Complete Configuration Reference

```
set guest.password yourGuestPassword
password yourAdminPassword
set name MyRoomServer
set lat 46.879682
set lon -96.789803
set repeat on # optional: also relay packets
advert # broadcast presence immediately
```

# Dual Deployment: Repeater + Room Server

## Dual Deployment: Separate Repeater and Room Server

The recommended best practice for any fixed site is to deploy **two separate devices** rather than enabling repeat mode on the room server.

### Why Two Devices?

A repeater and a room server have conflicting placement requirements:

<table id="bkmrk-deviceideal-placemen"> <thead><tr><th>Device</th><th>Ideal Placement</th><th>Why</th></tr></thead> <tbody> <tr><td>**Repeater**</td><td>Outdoors, elevated, high external antenna</td><td>Maximum RF range in all directions</td></tr> <tr><td>**Room Server**</td><td>Indoors, near power and USB/BT access</td><td>Easy administration, configuration, and monitoring</td></tr> </tbody></table>

Forcing one device to do both jobs means compromising on placement - either the repeater antenna is too low, or the room server is too hard to access for administration.

### Recommended Hardware

- **Device 1 (Repeater):** Heltec V3 flashed with Repeater firmware + high-gain external antenna (fiberglass omni or directional yagi)
- **Device 2 (Room Server):** Heltec V3 flashed with Room Server firmware + stock indoor antenna

### Cost

Two Heltec V3 units cost approximately **$54** total (roughly $27 each, as of 2026-06-08; pricing is volatile - verify current street price). This is a minimal investment for a significant capability improvement at a fixed site.

### When Single-Device is Acceptable

If budget or space constraints make dual deployment impossible, enabling `set repeat on` on the room server is workable - it simply won't perform as well as a dedicated repeater at height. (`set repeat on` is the documented MeshCore CLI command for the repeater-hybrid mode; confirm against your firmware's CLI help output.) In that case, do your best to place the device near a window or in an elevated location to improve the antenna's line of sight.