← Nodes

KYKB — Base & MQTT Gateway

Active

!f688dea8ThinkNode M2 (ESP32-S3)

Indoor home base and the fleet's single MQTT gateway — the one door between the RF mesh and the internet. Temporary hardware pending the RAK WisMesh Station HP.

Commissioned September 12, 2026Notes updated September 12, 2026

  • base
  • gateway
  • mqtt
  • admin-master
  • temporary

Radio

Hardware
ThinkNode M2 (ESP32-S3)
Firmware
2.7.26
Role
CLIENT_MUTE
Region
US
Modem preset
MEDIUM_FAST
Frequency slot
Hop limit
5
TX power
30 dBm
Node ID
!f688dea8
MQTT
mqtt.meshtastic.org:1883 (TLS off, root msh/US/FL)

Power

Source
mains
Solar
Battery
Chemistry
Notes
Bare board, no battery, on a UPS USB jack. Write reliability tracks power — confirm 100% before any wireless config, or use serial.

Site

Deployment
fixed-indoor
Area
Boca Raton, FL
Grid square
Elevation
Fixed position
yes
Position precision
13 bits (fuzzed)

Remote admin

Master slot
M2 (admin master)
Public key
7CDjTOmJVFaNrf+KNd1+eYZYQ7mIjMN43xtwDx8N3nY=

Other

GPS mode
NOT_PRESENT — fixed node, position set manually
Coordinates
decoy cluster point, not the real location
Wi-Fi
enabled — required for MQTT
NTP
meshtastic.pool.ntp.org
MQTT uplink / downlink
on / off (single gateway, no loops)
Map reporting
on, precision 13 (~4 km), decoy coordinates
Heap
~250 KB ceiling, PSRAM 0 — why TLS, JSON and S&F stay off

Note on COM ports: COM## numbers here are examples — your port will differ. On Windows check Device Manager → Ports (COM & LPT); on macOS/Linux use the /dev/tty.*, /dev/ttyUSB*, or /dev/ttyACM* path.


⚠ The power rule — read this first

This node’s write reliability tracks its power. The M2 must read 100% power (getting full, clean power) to reliably accept configuration commands over wireless (Wi-Fi/--host). At anything less than 100%, it may silently drop or fail commands over wireless — the CLI reports success, but the node never reboots and nothing persists (a re-read shows the old value).

Why: it’s a bare board with no battery to buffer power. On a marginal USB supply the radio and config commits become unreliable. This is the root cause of every “Wi-Fi write failed on KYKB” symptom.

Practical rules:

  • Before any wireless config, confirm the node shows 100% power. If it’s lower, fix the power source first — or use serial.
  • Serial (USB) always works because the cable supplies solid power. When in doubt, configure over serial.
  • --get security over the network also returns the private key in the clear — another reason to read/write security over serial.

Purpose & Role

KYKB has two jobs:

  1. Home base — an always-on indoor node on the local network.
  2. The single MQTT gateway — the only node that connects the mesh to the Internet, bridging RF traffic to the public MQTT broker and the map. All other KYK nodes are RF-only.

Because a dedicated ROUTER (KYKR) already covers the area, KYKB does not relay — it’s a quiet client (CLIENT_MUTE) that happens to hold the gateway connection. The full single-gateway / uplink-on / one-downlink design and the loop-prevention reasoning are in the Gateway & MQTT Architecture doc; this page is the node config.


1. Configuration (verified over serial)

Section Setting Value Purpose
Device role CLIENT_MUTE Doesn’t relay — won’t compete with the router (KYKR)
Device node_info_broadcast_secs 10800 NodeInfo every 3 h
Position fixed_position true Stationary base
Position gps_mode NOT_PRESENT Fixed node; position set manually, no GPS chase
Position (coordinates) decoy cluster point Not the real location; shares one map pin with router
Network wifi_enabled true On — this node needs the network for MQTT
Network ntp_server meshtastic.pool.ntp.org Public time source
LoRa region / preset US / MEDIUM_FAST Must match the mesh
LoRa hop_limit 5 Fleet standard
LoRa tx_power 30
Channel 0 position_precision 13 (~4 km) Public map presence, not real location
Power (defaults) always-on indoor No aggressive sleep

MQTT (gateway settings) — full rationale in the Gateway doc; the node-level facts, all verified:

  • MQTT enabled, broker mqtt.meshtastic.org:1883 (explicit port), root msh/US/FL, encryption on, JSON off.
  • TLS off (port 1883). On this ESP32 hardware the TLS handshake exhausts RAM and the node silently stops publishing.
  • map_reporting on, map_report_settings.position_precision 13 (~4 km) — present on the public map, but blurred and at the decoy coordinates, not the real location.
  • Primary channel uplink on, downlink off (single gateway, no loops).

MQTT config standard (fleet-wide): any node doing MQTT must use the explicit port :1883 and have TLS off — the known performance/stability fix on this hardware. KYKB is compliant.


2. CLI Procedure (serial — see the power rule)

Configure KYKB over USB serial, not Wi-Fi. Before any wireless config confirm the node reads 100% power (see the power rule above); on a marginal supply wireless writes silently fail. Serial always works. Every committed write reboots the node; wait 60–90 s. COM## is an example — check Device Manager.

Step 1 — core config (one transaction, one reboot):

meshtastic --port COM21 --begin-edit --set device.role CLIENT_MUTE --set device.node_info_broadcast_secs 10800 --set position.fixed_position true --set lora.region US --set lora.modem_preset MEDIUM_FAST --set lora.hop_limit 5 --set lora.tx_power 30 --commit-edit

Step 2 — public channel precision (approximate location):

meshtastic --port COM21 --begin-edit --ch-index 0 --ch-set module_settings.position_precision 13 --commit-edit

Step 3 — MQTT gateway (the single-gateway settings):

meshtastic --port COM21 --set mqtt.enabled true
meshtastic --port COM21 --set mqtt.address mqtt.meshtastic.org:1883
meshtastic --port COM21 --set mqtt.tls_enabled false
meshtastic --port COM21 --set mqtt.encryption_enabled true
meshtastic --port COM21 --set mqtt.json_enabled false
meshtastic --port COM21 --set mqtt.map_report_settings.position_precision 13

Primary channel uplink on / downlink off is the loop-safe gateway setting (see the Gateway doc). Leave TLS off — the ESP32 TLS handshake exhausts RAM.

Step 4 — admin keys (this node is a master; it holds the other two — see the Admin Keys section). Set one key per command, over serial; if the list is ever wrong, clear with --set security.admin_key 0 first, then re-add.

Then verify (Section 6).

3. Channels

Index Name Precision Notes
0 (primary) 13 (~4 km) Public, approximate location
1 (private) 32 (full) Excluded from public docs
2 No Reach-Ed on this node (it’s the gateway, not a contact node)

4. The heap reality

KYKB shares the ThinkNode ~250 KB heap ceiling and reports Total PSRAM: 0 (the advertised 8 MB is not usable). Consequences that shape its config:

  • TLS can’t run (RAM) → port 1883, TLS off.
  • JSON off, Store-and-Forward off to keep heap headroom.
  • Low-heap warnings have needed JSON off, S&F off, downlink off, and a NodeDB reset to clear.

This — plus the no-battery power fragility — is why it’s a stopgap gateway.


5. Remote Admin Keys

KYKB is a master (M2). Under the “every node carries all masters except its own” rule, it holds the other two:

  • M1 / handheld: base64:hytoF5RjxNLoFVmWDPu43kr185CKiwivBKfnuguf/Fs=
  • M5 / travel: base64:4VyAwe95ytDwLrWEUYaQDNeLbGg7QEOX5oO/g1NyqGg=

Set over serial, one key at a time — the admin-key list is the write most prone to corruption over wireless on this node (it produced empty/duplicate slots earlier, which traces back to the same power/wireless issue). See the Admin-Key ADR.


6. Verification (over serial)

meshtastic --port COM21 --get device --get position --get lora --get network
meshtastic --port COM21 --get mqtt
meshtastic --port COM21 --get security
meshtastic --port COM21 --info | findstr /i "precision Index role"

Expected: role CLIENT_MUTE; wifi_enabled true; lora hop 5 / MEDIUM_FAST / US; Channel 0 precision 13; mqtt enabled, address mqtt.meshtastic.org:1883, TLS off (absent tls_enabled line = off), map_report precision 13, uplink on / downlink off; admin_key lists M1 + M5 (no empties); hwModel THINKNODE_M2.

If a value is wrong and a wireless --set “succeeds” but doesn’t stick — check the node reads 100% power, then redo over serial.


7. Note: KYKB is temporary

KYKB (ThinkNode M2) is the gateway for now — a bare board, no battery, on a UPS USB jack, indoor-only, at the edge of its heap as a gateway and power-fragile without a battery. It will be replaced by the RAK WisMesh Station HP (RAK8623), a Linux meshtasticd host with room for Mosquitto, Node-RED, and Store-and-Forward, for better stability as the permanent single gateway. When the RAK is in service, KYKB reverts to a plain client or spare. The gateway architecture doesn’t change with the swap — only the hardware under the “gateway” box.


8. Operating Notes

  • Confirm 100% power before any wireless config; otherwise use serial. Wireless writes fail on a marginal supply because it’s a battery-less board.
  • It’s the single MQTT gateway — keep it the only downlinker (loop prevention; see Gateway doc).
  • MQTT standard: :1883 + TLS off (compliant).
  • It’s a master (M2): set admin keys over serial only; lock with a non-default BLE PIN.
  • Temporary until the RAK WisMesh Station HP arrives.