Explorar el Código

docs: simplify board tables and clean up published markdown rendering

Jared Dohrman hace 4 meses
padre
commit
b29436eb62
Se han modificado 5 ficheros con 95 adiciones y 142 borrados
  1. 6 0
      docs/_stylesheets/extra.css
  2. 44 43
      docs/boards.md
  3. 37 78
      docs/custom-cli.md
  4. 2 7
      docs/releases.md
  5. 6 14
      docs/web-panel.md

+ 6 - 0
docs/_stylesheets/extra.css

@@ -119,6 +119,12 @@ body {
     background: transparent;
 }
 
+@media screen and (min-width: 76.25em) {
+    .md-grid {
+        max-width: 80rem;
+    }
+}
+
 .md-content__inner {
     background: linear-gradient(180deg, var(--web-surface-2), var(--web-surface-1));
     border: 1px solid var(--web-border);

+ 44 - 43
docs/boards.md

@@ -14,7 +14,6 @@ The tables below are built from the repo's PlatformIO board metadata and variant
 - `Target` is the short board name used in this comparison page. Release filenames and local build commands still use the full env names such as `heltec_v4_repeater_mqtt`.
 - `RAM` is the MCU's built-in RAM.
 - `PSRAM` is extra memory on some boards. More PSRAM usually means more headroom for UI, MQTT, and future features.
-- `Web UI` means the local repeater web panel is enabled in that build.
 
 If a board enables PSRAM but the repo does not declare the exact size, it is shown as `Yes (size not declared)`.
 
@@ -32,48 +31,50 @@ If a board enables PSRAM but the repo does not declare the exact size, it is sho
 
 This table includes all repeater MQTT targets currently defined in `variants/eastmesh_mqtt/platformio.ini`.
 
-| Target | CPU | RAM | PSRAM | Flash | LoRa | Display | GPS | Web UI | Notes |
-| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
-| Ebyte_EoRa-S3 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | Yes | more memory headroom |
-| Generic_E22_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | None | No | Yes | headless |
-| Generic_E22_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | None | No | Yes | headless |
-| Heltec_ct62 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | Yes | headless |
-| Heltec_E213 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.13") | No | Yes | low-power display, more memory headroom |
-| Heltec_E290 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.9") | No | Yes | low-power display, more memory headroom |
-| Heltec_T190 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | TFT (ST7789) | No | Yes | richer UI, more memory headroom |
-| heltec_tracker_v2 | ESP32S3 / 240 MHz | 512 KB | No | 8MB | SX1262 | TFT (ST7735) | Yes | Yes | richer UI, GPS |
-| Heltec_v2 | ESP32 / 240 MHz | 520 KB | No | 8 MB | SX1276 | OLED (SSD1306) | No | Yes |  |
-| Heltec_v3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS |
-| heltec_v4 | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS, more memory headroom |
-| heltec_v4_tft | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | TFT (ST7789) | Yes | Yes | richer UI, GPS, more memory headroom |
-| Heltec_Wireless_Paper | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | E-paper (2.13") | No | Yes | low-power display |
-| Heltec_Wireless_Tracker | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | TFT (ST7735) | Yes | Yes | richer UI, GPS |
-| Heltec_WSL3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | Yes | headless, GPS |
-| LilyGo_T3S3_sx1262 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | Yes | more memory headroom |
-| LilyGo_T3S3_sx1276 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1276 | OLED (SSD1306) | No | Yes | more memory headroom |
-| LilyGo_TBeam_1W | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom |
-| LilyGo_TDeck | ESP32S3 / 240 MHz | 512 KB | No | 16MB | SX1262 | TFT (ST7789) | Yes | Yes | richer UI, GPS |
-| LilyGo_Tlora_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless |
-| LilyGo_TLora_V2_1_1_6 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | Yes | GPS |
-| M5Stack_Unit_C6L | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | Yes | Yes | headless, GPS |
-| Meshadventurer_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS |
-| Meshadventurer_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | OLED (SSD1306) | Yes | Yes | GPS |
-| Meshimi | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless |
-| nibble_screen_connect | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SSD1306) | No | Yes |  |
-| RAK_3112 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | Yes | headless, GPS |
-| Station_G2 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom |
-| Station_G2_logging | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom |
-| T_Beam_S3_Supreme_SX1262 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 8MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom |
-| Tbeam_SX1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS |
-| Tbeam_SX1276 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | Yes | GPS |
-| Tenstar_C3_sx1262 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | Yes | headless |
-| Tenstar_C3_sx1268 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1268 | None | No | Yes | headless |
-| ThinkNode_M2 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SH1106) | No | Yes |  |
-| ThinkNode_M5 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | E-paper (GxEPD) | Yes | Yes | low-power display, GPS |
-| WHY2025_badge | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless |
-| Xiao_C3 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | Yes | No | headless, GPS, web panel off |
-| Xiao_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless |
-| Xiao_S3_WIO | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | Yes | headless, GPS |
+| Target | CPU | RAM | PSRAM | Flash | LoRa | Display | GPS | Notes |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| Ebyte_EoRa-S3 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | more memory headroom |
+| Generic_E22_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | None | No | headless |
+| Generic_E22_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | None | No | headless |
+| Heltec_ct62 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | headless |
+| Heltec_E213 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.13") | No | low-power display, more memory headroom |
+| Heltec_E290 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.9") | No | low-power display, more memory headroom |
+| Heltec_T190 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | TFT (ST7789) | No | richer UI, more memory headroom |
+| heltec_tracker_v2 | ESP32S3 / 240 MHz | 512 KB | No | 8MB | SX1262 | TFT (ST7735) | Yes | richer UI, GPS |
+| Heltec_v2 | ESP32 / 240 MHz | 520 KB | No | 8 MB | SX1276 | OLED (SSD1306) | No |  |
+| Heltec_v3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | OLED (SSD1306) | Yes | GPS |
+| heltec_v4 | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | OLED (SSD1306) | Yes | GPS, more memory headroom |
+| heltec_v4_tft | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | TFT (ST7789) | Yes | richer UI, GPS, more memory headroom |
+| Heltec_Wireless_Paper | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | E-paper (2.13") | No | low-power display |
+| Heltec_Wireless_Tracker | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | TFT (ST7735) | Yes | richer UI, GPS |
+| Heltec_WSL3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | headless, GPS |
+| LilyGo_T3S3_sx1262 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | more memory headroom |
+| LilyGo_T3S3_sx1276 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1276 | OLED (SSD1306) | No | more memory headroom |
+| LilyGo_TBeam_1W | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom |
+| LilyGo_TDeck | ESP32S3 / 240 MHz | 512 KB | No | 16MB | SX1262 | TFT (ST7789) | Yes | richer UI, GPS |
+| LilyGo_Tlora_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless |
+| LilyGo_TLora_V2_1_1_6 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | GPS |
+| M5Stack_Unit_C6L | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | Yes | headless, GPS |
+| Meshadventurer_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | GPS |
+| Meshadventurer_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | OLED (SSD1306) | Yes | GPS |
+| Meshimi | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless |
+| nibble_screen_connect | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SSD1306) | No |  |
+| RAK_3112 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | headless, GPS |
+| Station_G2 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom |
+| Station_G2_logging | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom |
+| T_Beam_S3_Supreme_SX1262 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 8MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom |
+| Tbeam_SX1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | GPS |
+| Tbeam_SX1276 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | GPS |
+| Tenstar_C3_sx1262 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | headless |
+| Tenstar_C3_sx1268 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1268 | None | No | headless |
+| ThinkNode_M2 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SH1106) | No |  |
+| ThinkNode_M5 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | E-paper (GxEPD) | Yes | low-power display, GPS |
+| WHY2025_badge | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless |
+| Xiao_C3 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | Yes | headless, GPS, web panel off |
+| Xiao_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless |
+| Xiao_S3_WIO | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | headless, GPS |
+
+Note: all current `repeater_mqtt` boards support the local web panel except `Xiao_C3`, where it is disabled to preserve limited board resources.
 
 ## `companion_radio_wifi` Boards With A Display
 

+ 37 - 78
docs/custom-cli.md

@@ -10,47 +10,29 @@ These commands are available on `*_repeater_mqtt` firmware targets.
 
 ### MQTT Status And Routing
 
-- `get mqtt.status`
-  - shows WiFi, NTP, IATA, endpoint status, status publishing state, and TX state
-- `get mqtt.statuscfg`
-  - shows whether periodic status messages are enabled as a simple `on` or `off` value
-  - most users can just use `get mqtt.status`
-- `get mqtt.iata`
-  - shows the IATA/location code used in MQTT topics
-- `set mqtt.iata <code>`
-  - sets the IATA/location code, for example `MEL`
+- `get mqtt.status`: shows WiFi, NTP, IATA, endpoint status, status publishing state, and TX state.
+- `get mqtt.statuscfg`: shows whether periodic status messages are enabled as a simple `on` or `off` value. Most users can just use `get mqtt.status`.
+- `get mqtt.iata`: shows the IATA/location code used in MQTT topics.
+- `set mqtt.iata <code>`: sets the IATA/location code, for example `MEL`.
 
 ### MQTT Identity
 
-- `get mqtt.owner`
-  - shows the configured owner public key
-- `set mqtt.owner <64-hex-char-public-key>`
-  - sets the owner public key used in JWT metadata
-- `mqtt.owner <64-hex-char-public-key>`
-  - shorthand for setting the owner public key
-- `get mqtt.email`
-  - shows the configured owner email
-- `set mqtt.email <email>`
-  - sets the owner email used in JWT metadata
-- `mqtt.email <email>`
-  - shorthand for setting the owner email
+- `get mqtt.owner`: shows the configured owner public key.
+- `set mqtt.owner <64-hex-char-public-key>`: sets the owner public key used in JWT metadata.
+- `mqtt.owner <64-hex-char-public-key>`: shorthand for setting the owner public key.
+- `get mqtt.email`: shows the configured owner email.
+- `set mqtt.email <email>`: sets the owner email used in JWT metadata.
+- `mqtt.email <email>`: shorthand for setting the owner email.
 
 ### MQTT Message Controls
 
-- `get mqtt.packets`
-  - shows whether packet messages are published
-- `set mqtt.packets on|off`
-  - enables or disables packet publishing
-- `get mqtt.raw`
-  - shows whether raw packet payloads are published
-- `set mqtt.raw on|off`
-  - enables or disables the separate `raw` MQTT topic
-- `set mqtt.status on|off`
-  - enables or disables periodic MQTT status publishing
-- `get mqtt.tx`
-  - shows whether TX packets are included
-- `set mqtt.tx on|off`
-  - enables or disables TX packet publishing
+- `get mqtt.packets`: shows whether packet messages are published.
+- `set mqtt.packets on|off`: enables or disables packet publishing.
+- `get mqtt.raw`: shows whether raw packet payloads are published.
+- `set mqtt.raw on|off`: enables or disables the separate `raw` MQTT topic.
+- `set mqtt.status on|off`: enables or disables periodic MQTT status publishing.
+- `get mqtt.tx`: shows whether TX packets are included.
+- `set mqtt.tx on|off`: enables or disables TX packet publishing.
 
 ### MQTT Endpoints
 
@@ -69,48 +51,31 @@ Legacy dotted aliases are also accepted:
 
 ### WiFi Settings For MQTT Repeaters
 
-- `get wifi.status`
-  - shows SSID, connection state, raw WiFi status code, and IP when connected
-- `get wifi.ssid`
-  - shows the configured WiFi SSID
-- `set wifi.ssid <ssid>`
-  - sets the WiFi SSID
-- `set wifi.pwd <password>`
-  - sets the WiFi password
-- `get wifi.powersaving`
-  - shows the current WiFi power save mode
-- `set wifi.powersaving none|min|max`
-  - sets WiFi power saving mode
+- `get wifi.status`: shows SSID, connection state, raw WiFi status code, and IP when connected.
+- `get wifi.ssid`: shows the configured WiFi SSID.
+- `set wifi.ssid <ssid>`: sets the WiFi SSID.
+- `set wifi.pwd <password>`: sets the WiFi password.
+- `get wifi.powersaving`: shows the current WiFi power save mode.
+- `set wifi.powersaving none|min|max`: sets WiFi power saving mode.
 
 ### Web Panel Controls
 
 - `get web`
-- `get web.status`
-  - shows whether the local HTTPS panel is available
+- `get web.status`: shows whether the local HTTPS panel is available.
 - `set web on|off`
-- `set.web on|off`
-  - enables or disables the local HTTPS panel
+- `set.web on|off`: enables or disables the local HTTPS panel.
 
 ### Runtime Diagnostics
 
-- `memory`
-  - shows current heap and PSRAM usage
-- `stats-core`
-  - shows battery, uptime, sticky error count, and outbound queue depth
-- `stats-radio`
-  - shows radio noise floor, last RSSI, last SNR, and TX/RX airtime
-- `stats-packets`
-  - shows packet receive/send totals, flood/direct breakdown, and receive errors
+- `memory`: shows current heap and PSRAM usage.
+- `stats-core`: shows battery, uptime, sticky error count, and outbound queue depth.
+- `stats-radio`: shows radio noise floor, last RSSI, last SNR, and TX/RX airtime.
+- `stats-packets`: shows packet receive/send totals, flood/direct breakdown, and receive errors.
 
 ### Board Battery Reporting
 
-- `get battery.reporting`
-  - shows whether board battery reporting is enabled
-  - support is board-dependent
-- `set battery.reporting on|off`
-  - enables or disables battery voltage reporting on supported boards
-  - currently useful for Heltec V3 boards where USB-only power can produce misleading battery readings
-  - if your board needs this too, open an issue and support can be added board-by-board
+- `get battery.reporting`: shows whether board battery reporting is enabled. Support is board-dependent.
+- `set battery.reporting on|off`: enables or disables battery voltage reporting on supported boards. This is currently useful for Heltec V3 boards where USB-only power can produce misleading battery readings. If your board needs this too, open an issue and support can be added board-by-board.
 
 ## Web Panel Allowlisted Commands
 
@@ -181,18 +146,12 @@ To enter `CLI Rescue`:
 - long-press the user button within the first 8 seconds after boot
 - wait for `========= CLI Rescue =========`
 
-- `get wifi.status`
-  - shows configured SSID, connection status, raw WiFi status code, and IP when connected
-- `get wifi.ssid`
-  - shows the configured WiFi SSID
-- `get wifi.powersaving`
-  - shows the current WiFi power saving mode
-- `set wifi.ssid <ssid>`
-  - saves a WiFi SSID and immediately retries connection
-- `set wifi.pwd <password>`
-  - saves a WiFi password and immediately retries connection
-- `set wifi.powersaving none|min|max`
-  - changes the WiFi power save mode
+- `get wifi.status`: shows configured SSID, connection status, raw WiFi status code, and IP when connected.
+- `get wifi.ssid`: shows the configured WiFi SSID.
+- `get wifi.powersaving`: shows the current WiFi power saving mode.
+- `set wifi.ssid <ssid>`: saves a WiFi SSID and immediately retries connection.
+- `set wifi.pwd <password>`: saves a WiFi password and immediately retries connection.
+- `set wifi.powersaving none|min|max`: changes the WiFi power save mode.
 
 Companion WiFi builds also still support the existing rescue commands such as:
 

+ 2 - 7
docs/releases.md

@@ -39,9 +39,7 @@ Practical rule:
 
 1. Open the release page and download the file for your board.
 2. Confirm the board name in the filename matches your hardware.
-3. Choose one of the following:
-   - update existing firmware with the normal `.bin`
-   - erase the device first, then flash the `-merged.bin`
+3. Choose one of the following: update existing firmware with the normal `.bin`, or erase the device first and flash the `-merged.bin`.
 4. Reboot the device and complete any post-flash setup such as WiFi, MQTT, or radio settings.
 
 ## Recommended Flasher
@@ -66,10 +64,7 @@ Recommended usage:
 If this is your first time flashing EastMesh firmware, the easiest path is:
 
 1. Open <https://flasher.eastmesh.au/>.
-2. Select the firmware type you want:
-   - `Companion WiFi`
-   - `Repeater MQTT`
-   - or `Custom`
+2. Select the firmware type you want: `Companion WiFi`, `Repeater MQTT`, or `Custom`.
 3. Flash the correct firmware for your board.
 4. Use the built-in setup tools in the flasher site to finish first-time configuration.
 

+ 6 - 14
docs/web-panel.md

@@ -50,10 +50,8 @@ Some constrained targets disable the web panel to stay within flash limits. If y
 
 Useful CLI commands:
 
-- `get wifi.status`
-  - shows WiFi state and IP address when connected
-- `get web.status`
-  - shows whether the web panel is up and which URL to use
+- `get wifi.status`: shows WiFi state and IP address when connected.
+- `get web.status`: shows whether the web panel is up and which URL to use.
 
 Example:
 
@@ -137,16 +135,10 @@ Notes:
 
 This section includes:
 
-- `mqtt.iata`
-  - selected from a curated east-coast/south-east list
-- `mqtt.owner`
-  - owner public key
-- `mqtt.email`
-  - owner contact email
-- MQTT server toggles
-  - `eastmesh-au`
-  - `letsmesh-eu`
-  - `letsmesh-us`
+- `mqtt.iata`: selected from a curated east-coast/south-east list.
+- `mqtt.owner`: owner public key.
+- `mqtt.email`: owner contact email.
+- MQTT server toggles: `eastmesh-au`, `letsmesh-eu`, and `letsmesh-us`.
 
 `MEL` is used as the default dropdown option until the repeater's saved value is loaded.