- Replaced sqflite with shared_preferences for local key-value storage in README.md - Updated gradle.properties to include builtInKotlin and newDsl flags - Enhanced translation feature documentation in additional-features.md - Modified BLE protocol documentation to include new command and response codes in ble-protocol.md - Clarified channel management details in channels.md - Improved chat and messaging documentation, including message path viewing and translation options in chat-and-messaging.md - Updated contacts management details in contacts.md - Revised map and location documentation for inferred locations and user interface changes in map-and-location.md - Adjusted navigation flow in navigation.md to reflect changes in screen transitions - Updated notification system details in notifications.md - Enhanced repeater management documentation in repeater-management.md - Clarified scanner and connection process in scanner-and-connection.md - Reorganized settings documentation for better clarity and added new node and location settings in settings.md
9.7 KiB
Repeater Management
Overview
Repeater Management provides tools for administering MeshCore repeater and room server nodes. It includes device status monitoring, CLI access, telemetry reading, neighbor discovery, and remote configuration.
How to Access
From the Contacts screen:
- Long-press a Repeater or Room contact
- Select "Manage Repeater" or "Room Management"
- Enter the admin password in the login dialog
- Navigate to the Repeater Hub Screen
Login Dialog
- Password field with show/hide toggle
- "Save password" checkbox (persists for future logins). If a saved password exists, it is pre-filled and the checkbox is pre-checked, making login one-tap
- Routing mode selector and "Manage Paths" link are available directly in the dialog (configure routing before login)
- Auto-retries up to 5 times on timeout, showing progress ("Attempt 2 of 5"). A wrong password (explicit failure response) stops immediately — only timeouts trigger retries
- If auto-clock-sync is enabled for this repeater (configured in Repeater Settings), a
clock synccommand is sent automatically on successful login
Repeater Hub Screen
The central management screen showing:
- Header card: Repeater name, short public key, path label, GPS coordinates (if known)
- Battery chemistry selector: NMC / LiFePO4 / LiPo (saved per repeater)
- Management tool cards (full-width cards with chevron arrows, not a grid). Title dynamically shows "Repeater Management" or "Room Management" (admin) or "Repeater Guest" / "Room Guest" (guest) based on contact type and login result:
| Card | Destination | Visibility |
|---|---|---|
| Status | Repeater Status Screen | All users |
| Telemetry | Telemetry Screen | All users |
| Neighbors | Neighbors Screen | All users |
| CLI | Repeater CLI Screen | Admin only |
| Settings | Repeater Settings Screen | Admin only |
The battery chemistry selector and CLI/Settings cards are hidden from guest users.
Repeater Status
What the User Sees
Three information cards:
System Information:
- Battery percentage and voltage (e.g. "85% / 3.95V"), using the battery chemistry set in the hub screen
- Clock at login time
- Uptime (days/hours/minutes/seconds)
- Queue length
- Debug flags (error event count)
Radio Statistics:
- Last RSSI and SNR
- Noise floor
- TX airtime and RX airtime
Packet Statistics:
- Packets sent and received, each broken down by flood vs. direct
- Duplicates, broken down by flood vs. direct
- Channel utilization (% of uptime used by TX + RX)
Key Interactions
- Auto-queries the repeater on open; shows a loading spinner until data arrives
- On timeout: red snackbar error. On success: data appears in-place (no extra snackbar)
- Pull-to-refresh or refresh button in the app bar to re-query
- Routing mode popup and path management dialog in app bar (these controls appear on all management sub-screens, not just Status)
- Accepts both binary
RESP_CODE_STATUS_RESPONSEframes and legacy JSON text responses
Repeater CLI
A terminal-style interface for sending commands directly to the repeater.
What the User Sees
- Quick-command bar (horizontal scroll): Shortcut buttons for 9 common commands (advert, get name, get radio, get tx, discover.neighbors, neighbors, ver, clock, clock sync)
- Command history list: Sent commands in primary color, responses in secondary color
- Input bar: Up/down history arrows, monospace text field with
>prefix, send button
Key Interactions
- Type a command and press send (or Enter on desktop)
- Up/down arrows navigate through command history
- Quick-command buttons populate and send common commands
- Overflow menu (three-dot icon): "Debug next command" option shows raw frame debug info for the next typed command (shows error snackbar if input field is empty)
- Help icon: Opens a scrollable reference of all known CLI commands. Tapping any command populates the input field immediately
- Clear icon: Wipes the command/response history
- Failed/timed-out commands are automatically retried once
Available CLI Commands
The in-app help reference (help icon) documents all known commands. Categories:
General: advert, advert.zerohop, reboot, clock, clock sync, password, ver, clear stats, erase, poweroff, shutdown, clkreboot, start ota, time, board, discover.neighbors, powersaving, stats-packets, stats-radio, stats-core
Get: get name, get role, get public.key, get prv.key, get repeat, get tx, get freq, get radio, get radio.rxgain, get af, get dutycycle, get int.thresh, get agc.reset.interval, get multi.acks, get allow.read.only, get advert.interval, get flood.advert.interval, get guest.password, get lat, get lon, get rxdelay, get txdelay, get direct.txdelay, get flood.max, get owner.info, get path.hash.mode, get loop.detect, get acl, get bridge.*, get adc.multiplier, get bootloader.ver
Set: set name, set af, set tx, set repeat, set allow.read.only, set flood.max, set int.thresh, set agc.reset.interval, set multi.acks, set advert.interval, set flood.advert.interval, set guest.password, set lat, set lon, set freq, set radio, set rxdelay, set txdelay, set direct.txdelay, set radio.rxgain, set dutycycle, set loop.detect, set path.hash.mode, set owner.info, set prv.key, set bridge.*, set adc.multiplier, tempradio, setperm
Bridge: get bridge.type
Logging: log start, log stop, log erase
Neighbors: neighbors, neighbor.remove
Power Management: get pwrmgt.support, get pwrmgt.source, get pwrmgt.bootreason, get pwrmgt.bootmv
Sensors: sensor get {key}, sensor set {key} {value}, sensor list [start]
GPS Management: gps, gps {on|off}, gps sync, gps setloc, gps advert, gps advert {none|share|prefs}
Region Management: region, region load, region get, region put, region remove, region allowf, region denyf, region home, region save, region default, region list allowed, region list denied
Telemetry
What the User Sees
A list of Cayenne LPP sensor channel cards:
- Channel 1 (special): Battery voltage (shown as percentage or raw mV) and MCU temperature
- Other channels: Raw sensor values with appropriate labels
Shows "No data" until a response arrives from the repeater.
Key Interactions
- Auto-queries on open
- Pull-to-refresh
- Temperature respects metric/imperial setting
- Battery readings are stored for the repeater's battery snapshot
Neighbors
What the User Sees
A card titled "Repeater's Neighbors - N" listing each neighbor as:
- Repeater name (or hex key prefix if unknown)
- Time since last heard
- SNR quality icon with color coding and label
Key Interactions
- Auto-queries up to 15 neighbors on open
- Matches public key prefixes against known contacts to show names
- Pull-to-refresh
Repeater Settings
What the User Sees
Nine configuration cards, each with its own per-field refresh button(s):
1. Basic Settings
- Name field
- Admin password field (write-only; always sent when non-empty)
- Guest password field (write-only; always sent when non-empty)
2. Radio Settings
- Frequency (MHz)
- TX Power (dBm) — has its own independent refresh button
- Bandwidth dropdown (kHz)
- Spreading Factor (SF5–SF12)
- Coding Rate (4/5–4/8)
- RX Gain boost toggle
3. Location Settings
- Latitude and longitude fields, each with an independent refresh button
4. Features
- Packet forwarding toggle (
set repeat) - Guest access toggle (
set allow.read.only) - Multi-ACKs toggle (
set multi.acks) - Auto clock sync after login toggle (local app setting only, not sent to repeater)
5. Network Health
- Loop detection dropdown (off / minimal / moderate / strict;
set loop.detect) - Duty cycle slider (1–100%;
set dutycycle)
6. Advertisement Settings
- Local advert interval slider (60–240 minutes) with enable/disable toggle
- Flood advert interval slider (3–168 hours) with enable/disable toggle
- Flood max hops slider (0–64;
set flood.max)
7. Owner Info
- Multi-line text field for operator contact info (
set owner.info); newlines sent as|
8. Actions (one-tap, no save needed)
- Send Advertisement (
advert) - Send Zero-Hop Advertisement (
advert.zerohop) - Clock Sync (
clock sync)
9. Advanced (collapsed by default)
- Path hash mode dropdown (0–2;
set path.hash.mode) - TX delay field (
set txdelay) - Direct TX delay field (
set direct.txdelay) - Interference threshold field (
set int.thresh) - AGC reset interval slider (0–240s in multiples of 4;
set agc.reset.interval)
Danger Zone (red-styled card)
- Reboot repeater (sends
rebootwith confirmation dialog) - Erase filesystem (serial-only; shows a confirmation dialog, then an informational snackbar — no command is sent over the air)
Key Interactions
- Settings are NOT auto-fetched on open. Name is pre-filled from cached contact data. Each section has its own refresh button to fetch live values from the repeater
- TX Power, RX Gain, latitude, longitude, and advanced fields each have independent inline refresh buttons
- Save button in app bar appears when any change is detected; failed commands keep those fields dirty for retry
- Settings are sent sequentially with 200ms delays between commands; firmware responses are checked and partial failures are reported in a snackbar
- Some changes (e.g. radio frequency) require a reboot; the firmware response triggers an orange "reboot needed" snackbar
- Advertisement interval sliders reset to defaults when re-enabled (local: 60 min, flood: 3 hours)
- Erase Filesystem does NOT send any command over the air — tapping it only shows a snackbar explaining the operation requires physical serial access