KYKM — Everyday Handheld
ActiveThinkNode M1 (nRF52840)
The carried, always-on handheld. Fleet admin master M1, and the node members reach Ed on.
Commissioned September 12, 2026Notes updated September 12, 2026
Radio
- Hardware
- ThinkNode M1 (nRF52840)
- Firmware
- 2.7.26
- Role
- CLIENT
- Region
- US
- Modem preset
- MEDIUM_FAST
- Frequency slot
- —
- Hop limit
- 5
- TX power
- 30 dBm
- Node ID
- —
- MQTT
- off
Power
- Source
- battery
- Solar
- —
- Battery
- —
- Chemistry
- —
- Notes
- Tuned for responsiveness, not frugality — no aggressive sleep.
Site
- Deployment
- handheld
- Area
- Boca Raton, FL
- Grid square
- —
- Elevation
- —
- Fixed position
- no
- Position precision
- 13 bits (fuzzed)
Remote admin
- Master slot
- M1 (admin master)
- Public key
- hytoF5RjxNLoFVmWDPu43kr185CKiwivBKfnuguf/Fs=
Other
- GPS update interval
- 300 s
- NodeInfo broadcast
- 10800 s (3 h)
- Position flags
- 1003
- Channels
- 0 public (prec 13) · 1 private · 2 Reach-Ed (text only)
- Wi-Fi
- none on this hardware
Note on COM ports: The
COM##numbers in this guide are the author’s own, shown as examples — your port will differ. On Windows, open Device Manager → Ports (COM & LPT) with the node plugged in to find the COM number your device enumerated as, and use that in place of the example in every command. On macOS/Linux the equivalent is a/dev/tty.*,/dev/ttyUSB*, or/dev/ttyACM*path. Always confirm your own port before running these commands.
Purpose & Role
This node is different from the deploy-and-forget nodes (tracker, travel, base). It is the handheld you carry — always with you, always on, and it plays three roles at once:
- Everyday client — participates in the mesh, sends and receives messages, shares your position.
- Admin master (M1) — its keypair is one of the three fleet masters; it can remotely administer the other nodes. (See the Admin-Key ADR.)
- Contact node — it holds the public Reach-Ed channel, so it’s where members reach you.
Because it’s carried and used constantly, it is not tuned for maximum battery frugality the way the tracker is — it’s tuned to be responsive and present.
1. Configuration (verified)
| Section | Setting | Value | Purpose |
|---|---|---|---|
| Device | role | CLIENT | Full participant; relays and is reachable |
| Device | node_info_broadcast_secs | 10800 | NodeInfo every 3 h |
| Position | gps_mode | ENABLED | Live GPS |
| Position | gps_update_interval | 300 | Fix every 5 min |
| Position | position_broadcast_smart_enabled | true | Sends position as you move |
| Position | broadcast_smart_minimum_distance | 50 | Metres moved before a smart send |
| Position | position_broadcast_secs | 3600 | Stationary heartbeat |
| Position | position_flags | 1003 | Altitude, timestamp, heading, speed |
| LoRa | region | US | — |
| LoRa | modem_preset | MEDIUM_FAST | Must match the rest of the mesh |
| LoRa | hop_limit | 5 | Fleet standard (see hop-limit justification) |
| LoRa | tx_power | 30 | Full legal power |
| Power | (defaults) | no aggressive sleep | Kept responsive as an everyday device |
Note on preset: the CLI may print modem_preset: 4 — on this firmware 4 is the enum value for MEDIUM_FAST. Confirm by name with --info | findstr /i modemPreset. This must match every other node or the handheld lands on a different frequency slot and can’t hear the mesh.
2. CLI Procedure (Windows CMD, serial)
Configure over USB serial (the M1 has no Wi-Fi — serial or Bluetooth only). Disconnect the phone app first. Every committed write reboots the node; wait 60–90 s. The COM## port is an example — check Device Manager.
Step 1 — core config (one transaction, one reboot):
meshtastic --port COM19 --begin-edit --set device.role CLIENT --set device.node_info_broadcast_secs 10800 --set position.gps_mode ENABLED --set position.gps_update_interval 300 --set position.position_broadcast_smart_enabled true --set position.broadcast_smart_minimum_distance 50 --set lora.region US --set lora.modem_preset MEDIUM_FAST --set lora.hop_limit 5 --commit-edit
Step 2 — public channel precision (approximate location):
meshtastic --port COM19 --begin-edit --ch-index 0 --ch-set module_settings.position_precision 13 --commit-edit
Step 3 — admin keys (this node is a master; it holds the other two — see the Admin Master section). Set one key per command, over serial.
Then verify (Section 5).
3. Channels
The handheld carries three channels:
| Index | Name | Precision | Purpose |
|---|---|---|---|
| 0 | (primary, default key) | 13 (~4 km) | Public channel; approximate location only |
| 1 | (private) | 32 (full) | Personal/private traffic — not published, kept off all public docs |
| 2 | Reach-Ed | 0 (off) | Public contact channel; text only, no location |
- Channel 0 uses the approximate-location precision (13) so your public position is coarse (~4 km), not exact.
- Channel 1 is your private channel at full resolution — deliberately excluded from any shared documentation.
- Channel 2 (Reach-Ed) is the shared contact channel, text-only (precision 0 = no location), uplink/downlink off. Shared to members by QR scan only — never the key.
4. Admin Master Role
KYKM (M1) is one of the three fleet admin masters. Under the “every node carries all three master keys except its own” rule, KYKM holds the other two masters’ public keys:
- M2 / base:
base64:7CDjTOmJVFaNrf+KNd1+eYZYQ7mIjMN43xtwDx8N3nY= - M5 / travel:
base64:4VyAwe95ytDwLrWEUYaQDNeLbGg7QEOX5oO/g1NyqGg=
From this handheld you can remotely administer other nodes over RF, e.g.:
meshtastic --port COM19 --dest "!<target node id>" --get lora
meshtastic --port COM19 --dest "!<target node id>" --set lora.hop_limit 5
(Double quotes on the dest in Windows CMD. Remote --set reboots the target and RF round-trips are slow — allow a couple of minutes and re-read to confirm.)
Because this device holds admin power over the fleet, protect it: set a non-default Bluetooth PIN, and keep the handset locked. Possession of this node’s private key is what confers admin authority; the private key never leaves the device and is never written down.
5. Verification
meshtastic --port COM19 --get device --get position --get lora
meshtastic --port COM19 --info | findstr /i "role name precision hop modemPreset"
Expected:
- role: CLIENT
- gps_mode: 1 (ENABLED), gps_update_interval: 300, smart on
- lora hop_limit: 5, region US, modemPreset MEDIUM_FAST
- Channel 0 precision 13, Channel 1 precision 32, Channel 2 (Reach-Ed) precision 0
- hwModel THINKNODE_M1, hasWifi false — confirms the right node (M1 has no Wi-Fi)
6. Operating Notes
- This is a carried, always-on device — responsiveness over battery frugality.
- It is an admin master: lock it, use a non-default BLE PIN.
- Public position is coarse (channel 0 precision 13); exact position only on the private channel.
- Reach-Ed is text-only; people contact you there, shared by QR.
- No Wi-Fi on this hardware — administer and configure over serial (USB) or Bluetooth.