Node Operations

FIELD GUIDE

From first boot to the field: the setup wizard, offline maps, the team key, every feature in the app, and the caveats that matter when it counts.

01The wizard 02After the wizard 03Team key 04Offline maps 05The map 06Chat & photos 07PTT voice 08Nodes & mesh 09LoRa protocol & modes 10Bandwidth 11ATAK 12Phone-direct 13Maintain
01 First boot — the wizard

Flash a card (download page), insert it, power the node. On first boot it broadcasts an open WiFi network named CicadaTak-XXXX (the XXXX is unique to the node). Join it from your phone and open the CicadaTAK app — the NODE SETUP wizard takes over the screen ("New node detected!"). The fields, top to bottom:

  1. Node name & callsign. The node name labels this node on the mesh and becomes the name of its WiFi network after setup; the callsign is your identity — it labels your dot, your chat messages and your position broadcasts.
  2. WiFi password. For the node's own WiFi network after setup — what your phone joins in the field. Pick a password you'll remember at 2 AM.
  3. Mesh ID & mesh password. The radio-level credential the HaLow radios authenticate with. Every node you want in the same mesh must get the exact same Mesh ID and mesh password — enter identical values in the wizard on each node.
  4. Team passphrase. The crypto key — team chat encryption and the Meshtastic channel PSK. It arrives pre-filled with cicadatak-default, and that default is public knowledge: anyone who has read this website can decrypt traffic on it. Replace it here, before the node ever carries real traffic, and have every teammate enter the same phrase in their own wizard. (If your phone already carries your team's rotated key, the wizard pre-fills that instead — a new node joins the team with no retyping.) You can rotate it any time later by QR (§03).
  5. LoRa protocol (firmware 0.9.0+). Meshtastic (the default — every node relays, and every Meshtastic device on earth can join your map) or MeshCore (join the public MeshCore community mesh). The two cannot hear each other on the air, so your whole team must pick the same one — the node flashes its LoRa radio with the matching firmware during setup, and you can switch later in Settings (§09). Choosing Meshtastic also offers a 4-letter short name for the radio's little screen; leave it blank and the node derives one from your callsign (CicadaGreen → GREE).
  6. 2.4 GHz mesh backhaul. Only appears if a 2.4 GHz USB radio is plugged in. Leave it on — it adds a second, much faster mesh link between nodes that are close together, while your long-range HaLow mesh carries on unchanged. No radio fitted, no question asked.
  7. Node color. How your dot, trail and labels render on everyone's map — pick a different color per teammate.
  8. Setup & Reboot. The node applies everything and reboots (give it a minute or two). Its new WiFi appears under your node's name — join it and the app connects. GPS is automatic: every node has an onboard receiver on its radio HAT (plug the GPS antenna into the HAT), and if a USB u-blox GPS is attached the node uses that instead — unplug it and the node falls back to the onboard GPS on its own. A factory-fresh Heltec LoRa board gets flashed with the right firmware automatically.

The wizard deliberately asks no radio questions — HaLow channel, bandwidth and node role are operational settings, tuned later from the app and moved fleet-wide so the mesh stays together (§10).

Mesh credential vs team key — know the difference. Mesh ID + mesh password decide which radios can peer at all: a node with different values is a separate mesh and simply never appears, no error shown. The team passphrase decides who can read the traffic. Mesh credentials are set per node in this wizard; the team key can be rotated later from Settings and shared by QR.
The Node Setup wizard: new node detected banner, callsign and node name fields, mesh ID, mesh password and team passphrase
The wizard — identity and mesh credentials
02 After the wizard

When the wizard finishes, the node reboots and comes up as a password-protected WiFi access point named after your node. Join it from your phone and the app connects to the gateway automatically (it lives at 10.41.254.1 — already set as the default). Your callsign, color and team key are already set from the wizard; three things are still worth doing before you ever leave the house:

  1. Left the team passphrase on its default? The wizard pre-fills it, and tapping past that field means anyone who has read this website can decrypt your traffic. Set a real one now — Settings → Team Passphrase (§03) — before anything sensitive goes over the air.
  2. Download offline maps for your area. The image ships with a coast-to-coast overview only. Pull satellite detail for your operating area while the node has good internet — see §04.
  3. Send a test message and watch the map. Your own dot should appear once GPS gets a fix (Settings → GPS Status shows fix). With a second node up, ping it from the Nodes tab.

Indoors and your dot won't appear? On firmware 0.8.0+ it usually will anyway: while the app is open and connected, your phone quietly lends the node its own GPS, so teammates see you even when the node itself can't get a fix. Close the app and the dot greys after about a minute — expected, not a fault.

No GPS on a relay you've mounted somewhere? Settings → Gateway Connection → Fixed Position lets you drop a pin (or type lat/lon) to anchor it on the map.

Map tab: offline satellite tiles with three node dots clustered near a trail and a teal geofence zone, compass strip on top
The map, minutes after setup
Node Management screen: three nodes with signal bars, battery levels, gateway badge and Roll Call button
Nodes tab — the fleet at a glance
03 Lock in your team key

One passphrase drives all of CicadaTAK's team crypto: team chat encryption between phones, and the encrypted Meshtastic channel on the LoRa side. You typed it once in the wizard (§01) — this is how to rotate it later and carry it to the rest of the team without anyone retyping it.

  1. Rotate it: Settings → Team Passphrase → enter a new phrase → Save & Sync to Node. Your phone and your connected node now use the new key.
  2. Share it: tap Share QR and let each teammate scan it with their CicadaTAK app (Settings → Scan QR). The QR is a standard Meshtastic channel-share code, so a vanilla Meshtastic radio or the Meshtastic app can scan the same code to join the encrypted channel.
  3. Each teammate syncs their own node: after scanning, their app pushes the key to whichever node they're connected to. And when a phone that carries the rotated key sets up a new node, the wizard pre-fills it — new hardware joins the team's current key automatically.
Caveats. The wizard pre-fills cicadatak-default — anyone who has read this website can decrypt traffic on that default, so replace it (in the wizard, or here) before real use. Rotation applies per node: "Save & Sync" updates the node you're connected to, and teammates carry the new key to theirs by scanning the QR — there's no single fleet-wide rotate button.
The Encryption card in Settings: team passphrase field, Save and Sync to Node, Share QR and Scan QR buttons
Settings → Encryption — set, sync, share
04 Download offline maps

A fresh node carries overview tiles for the continental US (~1 GB) — enough to see the shape of the country, not enough to navigate a trail. Detail lives on your node's SD card, and it's why we recommend a 64 GB card: the tile store grows to fill it. Downloads come from the USGS over the node's internet uplink, so do this at home, not in the field.

Two things are required — and this catches everyone. Tiles download to the node's SD card, not your phone: the node is what fetches them, and it keeps them for every phone that connects to it later. So you need (1) your phone connected to the node — join its WiFi, the same network you used after the wizard — and (2) the node connected to the internet, easiest by running an ethernet cable from your router to the node. Your phone's cell data is not used for the download and can't substitute for either one. Cabled up like this you keep internet on your phone too, since the node routes it through. The app greys out the download buttons and tells you which of the two is missing.
  1. In the app: Settings → Offline MapsSelect Download Area.
  2. Tap the map to place a download box (20 × 20 miles by default, shrinkable to 5), pick the size, and hit Save Area — it's auto-named Area 1, Area 2, and so on.
  3. Pick a tier: Overview (zoom 10–15) for the shape of the ground, Detail (zoom 16–18) to navigate by, or All. Tile counts and times scale hard with box size — a 20 × 20 mile box is ~1,300 overview tiles (about half an hour) but ~75,000 detail tiles (plan on a day or more); shrink it to 5 × 5 and detail is ~4,800 tiles, around two hours. Start Overview-first over the area you actually care about, then add detail to the part you'll walk.
  4. Watch the region outline: blue = overview complete, green = detail complete. Downloads resume where they left off — already-cached tiles are skipped instantly.
Caveats. On a US node the in-app downloader fetches satellite imagery (USGS NAIP) — the street basemap renders when your phone has internet but can't be bulk-downloaded yet. The node offers the map source that covers its region and deliberately hides the others, because imagery services don't return an error outside their coverage — they return blank tiles, so a download would report success and leave you with an empty map. If you're operating somewhere the built-in source doesn't reach, the node can be pointed at any tile service you're entitled to use, and everything else works unchanged. Areas you never downloaded show dark when offline; that's the offline-first design, not a bug. A full-detail region runs ~14 GB, so a couple of AOs fit comfortably on a 64 GB card. Once tiles are on the node, every phone that connects gets them — teammates don't repeat the download. A faster internet connection will not speed this up. The USGS builds each tile on demand when we ask for it, and that render — not your bandwidth — is what takes the time; a node on gigabit fibre uses well under 1% of it during a download. Long downloads are normal and they resume where they left off, so leave it running and come back to it.
The Offline Maps card in Settings with the Select Download Area button and the download regions list
Settings → Offline Maps → Select Download Area

Bring your own maps (.mbtiles and .kmz)

Already have imagery — an ATAK .mbtiles export, a .kmz overlay (ATAK GRG), a QGIS or MOBAC package, purchased tiles, a drone survey? You can load it straight onto the node instead of downloading. Two ways:

From your phone (newest app versions): Settings → Offline Maps → Import Map File, pick the file, and it uploads to the node with a progress bar. On iPhone the CicadaTAK folder also appears in the Files app, so you can AirDrop or USB-copy a map file in first, then pick it from there.

From a laptop (fastest for big files): connect to the node — its WiFi, or the wired port — and browse to http://10.41.253.1:8080/import (over WiFi use the node's address, e.g. http://10.41.254.1:8080/import). Pick the file, give it a name, and upload.

Either way the node figures out what the file is and does the right thing with it. An .mbtiles becomes a base map layer — pick it from the map's layers button, same as switching to satellite. A .kmz with imagery (GroundOverlay/GRG) is converted into map tiles on the node. And a .kmz full of placemarks — a repeater directory, a camera map, any points-of-interest collection — becomes a toggleable overlay: turn it on under OVERLAYS in the layers panel and its points draw over whatever base map you're using; tap a point for its name and details. Point overlays are smart about size — the node stores the whole set (even hundreds of thousands of points) and sends your phone only what's in view, so big files stay fast. No internet is needed at any point, which also makes this the way to load maps for a region our built-in sources don't cover. One import serves the whole team, same as downloaded tiles. Multi-gigabyte files upload much faster over the wired port than over WiFi — the app warns you before starting a big one. Deleting an import (from the laptop page) frees its space on the node. Not supported yet, and the node says so plainly if you try: multi-level "super-overlay" KMZ pyramids, and paths/polygons inside a placemark file (its points import; the line work is skipped and counted).

No node? Put the maps on your phone

Everything above puts maps on the node. You can also load an .mbtiles onto the phone itself — no node, no WiFi, no internet, nothing to connect to. This is for the standalone tier: running the app with a Meshtastic device over Bluetooth, or just carrying the app somewhere our built-in map sources don't reach. Outside the continental US the downloader has nothing to offer you, so this is how you get a map at all.

  1. Get the file onto your phone. On iPhone, AirDrop it or drop it into the CicadaTAK folder in the Files app; on Android, copy it to the device however you like.
  2. In the app: Settings → Offline Maps → the Phone Maps (No Node Needed) section → pick the file. Files already sitting in the app's folder are listed for you; otherwise use the picker to browse.
  3. It unpacks with a progress bar and the new layer is selected automatically. Open the map's layers button any time to switch between it and the others.
Phone maps are yours alone — this is the one thing to understand. A map imported to the node serves everyone who connects to it; import once, the whole team has it. A map imported to your phone lives on that phone only. Teammates each need their own copy of the file. If you're kitting out a team for an area, importing to the node is the one that scales — put it on phones when there's no node in the picture.

Phone maps use your phone's storage rather than the node's SD card, so mind the size of what you import — and deleting an import from that same screen gives the space back. They keep working with the phone in airplane mode and after a force-quit, which is the point of them. Zooming past the detail actually in the file gives you scaled-up imagery rather than a blank screen, so you always have something under you. And they stay available when you later connect to a node — a node's own map list is added alongside yours, not swapped in over it.

Getting an .mbtiles

Not all map downloads come in this format, but nearly everything converts to it with free tools: ATAK exports .mbtiles directly. QGIS has a built-in "Generate XYZ tiles (MBTiles)" tool (Processing Toolbox) that turns any layer — including a GeoTIFF from a drone survey or purchased imagery — into one. Mobile Atlas Creator (MOBAC) makes them from many online sources: just choose MBTiles as the atlas format before creating. If someone hands you a .gpkg (GeoPackage) or a GeoTIFF, run it through QGIS's tool first — a one-time step on a laptop. Support for importing GeoPackage and GeoTIFF directly is planned; .mbtiles and .kmz are what the node accepts today.

05 The map

Everything on the Map tab is live mesh state: every node's position in its color, breadcrumb trails, and the tools below. Tap a teammate's dot to select them — you get corner brackets, a dashed navigation line, and a distance/bearing readout; rotate to landscape for a compass-first navigation layout.

Markers

Long-press to drop a marker; tap one for its detail card — Go To sets it as your compass target. Markers sync across the team.

Measure & Routes

Tap Measure, tap points, then the green — the line stays on the map and a slim card docks with total distance and bearing. To build a keeper straight away, use the route button next to Measure: draw your points, hit , and it jumps right to naming. Save Route does the same from a measured line; saved routes get a Go To too. Routes are stored on your phone — they don't sync to the team yet.

Geofences

Draw circles or polygons with entry/exit alerts — every drawing bar has a red to cancel and a green to finish (on Android, the back button also exits a drawing mode). Alert history lives in Settings → Geofence Alerts (last 100 events). GPS drift near a small fence can false-trigger — size fences generously.

Mesh health overlay

Toggle to draw the radio links between nodes, colored by throughput: green above 5 Mbps, orange 2–5, red below 2. Tap a link line for its detail card (throughput, or SNR for LoRa links). A globe icon means the mesh has an internet uplink.

Grey dots = last known position

A teammate's dot turns grey and hollow with an age label ("2m") when their position stops being current — they've moved out of radio range, a relay dropped, or their GPS lost sky. The dot stays where they were last seen rather than vanishing, because "here two minutes ago" beats no information at all. It goes solid again the moment a fresh position arrives, and disappears entirely after 10 minutes of silence. A selected teammate stays selected while grey, and the navigation line reads 2m OLD so you always know what you're steering by. The Nodes tab shows a matching STALE badge.

The map in landscape: compass rose top-left, own callsign and altitude in the top status line, side tab rail, satellite tiles with a saved route
Rotate to landscape for the navigation layout — compass, status line, side rail

In landscape the compass rose reads true north and stays correct however the phone is rotated, and the layers button (satellite / street map / hybrid) sits next to the tools chevron — same controls as portrait, laid out for the wide screen.

Chat, PTT and Nodes open over the map

Press CHAT, PTT or NODES and that screen slides in over the map — halfway, so you keep the picture. Press the same button again to put it away. In landscape it comes from the right edge; in portrait it rises from the bottom. The chevron on its leading edge opens it the rest of the way, or drag the chevron to size it; drag it shut to close. Start typing and it opens fully on its own, then goes back to half when the keyboard drops. Touching the map puts the panel away — keyboard too, if it's up: reaching for the map means you're done with the panel.

You never leave the map to send a message. SETTINGS is the one button that still takes over the whole screen — it's configuration, not something you do while watching the map — and MAP closes whatever is open.

The top bar tells you which node you're on

In portrait the header reads ⌗ N Nodes • GPS on the left, your node's callsign in the middle (in that node's map color), and uplink / AP / battery on the right — the same set the landscape status line carries, so nothing changes when you rotate. It says STANDALONE in amber when you aren't attached to a node. A small phone icon beside GPS means your phone is supplying the position, not the node. Tap AP when it's amber to retry the connection.

06 Chat & photos

Two channels in the Chat panel (§05 — it slides over the map, it doesn't replace it): Team is end-to-end encrypted with your team key; Public rides the open Meshtastic channel so ordinary Meshtastic users can participate (see §09 for when that channel exists). One gray check = your node accepted the message; blue double-check = a peer received it.

Photos go team-only: the app compresses before sending (about 800 px), the timeline shows thumbnails, and tapping opens a full-screen viewer.

Caveat. Photos travel over the HaLow mesh only — they're far too big for LoRa. A teammate reachable only via LoRa (see hop badges, §08) gets your text but not your pictures.
Team chat: encrypted messages with lock icons and delivery double-checks, photo and camera buttons in the composer
Team chat — locks and delivery checks
Push to Talk screen: large hold-to-talk mic button, network status Connected, two mesh neighbors
PTT — hold to talk
07 PTT voice

PTT is a radio: press and hold the big button to talk, release to stop. Audio is live-streamed voice with forward error correction, tuned for the mesh. Finger drift while transmitting won't drop your press — the button is deliberately forgiving.

Caveats. PTT is foreground-only on both iOS and Android: keep the app open and the screen on to hear traffic (the app holds the screen awake for you). A backgrounded or screen-off phone will miss transmissions on either platform — background voice is built for Android but is switched off in the shipped app, so don't rely on it. Also make sure you've allowed the app microphone access, or the PTT button will refuse to transmit. Voice never bridges over LoRa — it's HaLow-mesh only.
08 Nodes & mesh health

The Nodes panel has two views — toggle with the icon in its title row. List shows each node's callsign, signal, battery and hardware state (GPS and LoRa status icons — a green phone icon in place of the GPS icon means that node's position is coming from its operator's phone, not its own GPS module); tap a node and hit Ping Node for round-trip time, a throughput estimate, and the route it took ("direct" or "via …"). Topology draws the live mesh as a graph, GPS-positioned, links colored by throughput, LoRa links dotted purple.

Orange 1h / 2h / 3h badges mark nodes reached over LoRa and how many hops away they are. The internet-providing node wears a GATEWAY badge.

Mesh Topology view: three node cards connected by throughput-colored links with live megabit labels, legend top-left
Topology view — live links with throughput
09 LoRa protocol & modes

Nodes with a LoRa radio extend the mesh by kilometers for positions and text when teammates are beyond HaLow range. Two decisions live in Settings, read top-down: the protocol (which LoRa world your radio speaks) and then the mode (how visible it is inside that world).

LoRa Protocol (firmware 0.9.0+, app 1.2.17+): Meshtastic — every node relays for everyone, and any Meshtastic device can appear on your map — or MeshCore — the newer community-mesh protocol where relaying is done by dedicated repeaters, so your radio rides existing public infrastructure without spending its own airtime. Switching reflashes the node's LoRa radio in place (about 2 minutes, the HaLow mesh is unaffected) and changes only the node you're connected to. The two protocols cannot hear each other on the air: your whole team must run the same one, and the Nodes panel shows a warning banner with per-node protocol chips the moment a mixed team is detected.

Mode defaults differ by protocol, on purpose. A Meshtastic node starts in Dark — private, isolated, best HaLow throughput; joining the public Meshtastic side is a deliberate step up to Covert or Open. A MeshCore node starts in Open — being part of the public community mesh is the point of picking it. Switching protocols resets the mode to that protocol's default.

ModeOn MeshtasticOn MeshCore
OpenTeam channel encrypted + public LongFast channel on — public devices on your map. SAR, group events.The MeshCore default. Full community-mesh member on the standard US settings: public users' chat and positions on your map, your encrypted team channel relayed for free by community repeaters.
CovertSame channels, but your radio never announces position publicly — public nodes appear on your map, you don't appear on theirs.Listen-only: you hear the whole public mesh — chat and positions — while transmitting nothing automatic at all. Sending a message is still your call.
DarkThe Meshtastic default. Team-only on a separate frequency — fully isolated, and the best HaLow throughput (see the caveat below).Team-only on a private frequency — invisible to the community mesh.

The card also tells you the truth about the hardware. No LoRa board on the node? It says so, and says the mode you picked is only a saved preference. Board attached but not answering — the usual sign of a brand-new, unflashed Heltec — and it says that instead, with a Flash Meshtastic Firmware button that writes the correct firmware in place (§12). A Heltec V4 works too: on node firmware 0.5.0 or newer the same button flashes it in place; on older firmware the card names the board and points you at the one-time computer flash it needs (§12). On a MeshCore-protocol node the flash button never appears — the protocol switch above is what rewrites the radio, and it refuses to write the wrong firmware family.

Caveats. The plain mode picker changes only the node you're connected to — use Push to Entire Fleet to move everyone at once, or you'll split the LoRa net without noticing (mismatched modes can't hear each other any more than mismatched protocols can). On Meshtastic, Open and Covert cost real HaLow throughput: the LoRa radio's transmit bursts desense the HaLow radio beside it, roughly doubling retry rates versus Dark — that HaLow tax is why Dark is the default; flip up when you need public interop. What bridges over LoRa: text, positions, markers (Meshtastic) / text and positions (MeshCore). What doesn't: photos and voice.
The LoRa Node card in Settings: Open, Covert and Dark modes with Dark selected, Push to Entire Fleet button, and the changes-only-this-node note
Settings → LoRa Node — note the "changes only this node" fine print
10 Fleetwide bandwidth

The HaLow mesh trades range against speed by channel width. The fleet ships at 4 MHz — the default since firmware 0.7.0 — and Settings → Fleetwide Bandwidth re-tunes every node in one coordinated move:

WidthMeasured throughput*Character
1 MHz~0.9 MbpsMaximum reach — thin, long links
2 MHz~1.5 MbpsLong range — best-validated range/capacity balance
4 MHz~3.0 MbpsDefault — high capacity, best for map tiles
8 MHz~6.6 MbpsStrong-signal links only; loses reach fastest

*Mean UDP across node pairs at neighborhood ranges — treat as relative, not promised.

The optional second radio (2.4 GHz). A node can carry a small USB WiFi radio alongside HaLow, giving nearby nodes a high-bandwidth shortcut — tens of Mbps instead of a few — while HaLow keeps doing the long-range work. The mesh uses whichever link is better, automatically, and nothing breaks if the radio is absent, removed, or out of range.

  1. Pre-flight. Tap Pre-Flight and confirm every node shows green. If any node is unreachable, don't proceed — a staged change aborts everywhere rather than leave the fleet split.
  2. Change Fleet. All nodes stage the new width, then reboot together. Expect roughly two minutes of mesh outage while they re-peer.
  3. Confirm Keep. The fleet comes back UNCONFIRMED with a countdown. Tap Confirm Keep to lock it in — if you don't (say the new width broke your links and you never reconnected), every node reverts itself to the old width in ~10 minutes. That auto-revert is the safety net; don't fight it, just re-try with a more conservative width.
Caveats. Change width only when the whole fleet is up and reachable. 8 MHz is a strong-signal option — it falls off with distance faster than any other width and hasn't been validated on long field links. If one node misses the change it stays manageable (all widths share an anchor frequency), but mixed widths pass data poorly — re-stage the straggler so the fleet converges on one width.
The Fleetwide Bandwidth card in Settings: current width 8 megahertz, the four width buttons, Pre-Flight and Change Fleet, and the fail-safe explanation
Settings → Fleetwide Bandwidth — Pre-Flight, then Change Fleet
11 ATAK — your mesh in the app you already run

Run ATAK-CIV? Every CicadaTAK node speaks native CoT, and the bridge is on by default — join any node's WiFi from your Android and the whole team appears in ATAK. No TAK server, no plugin, no network config: the node broadcasts on ATAK's stock mesh-SA address (239.2.3.1:6969), which ATAK-CIV listens to out of the box.

  1. Set your ATAK identity. In ATAK: Settings → callsign and team color. CicadaTAK maps team colors both directions, so your color in ATAK is your color on every teammate's map.
  2. Join the node's WiFi. The same network the CicadaTAK app uses. When Android warns the network has no internet, choose stay connected — better yet, turn mobile data off, or some phones silently move traffic to cellular and ATAK never hears the mesh.
  3. That's it. Nodes and teammates with a GPS fix appear as PLI in ATAK; your position flows back to every CicadaTAK app, node and ATAK device on the mesh. Chat and markers cross the bridge too.

Under the hood, CoT never crosses the radio: each node translates to CicadaTAK's compact mesh protocol, carries it over HaLow with retries (or falls back to LoRa for positions and chat — ATAK never notices), and re-emits CoT on the far node's WiFi. That's why it keeps working at ranges where raw multicast meshes go quiet.

Caveats. Your phone must be on a node's WiFi — CoT lives on the local phone leg, not the radio link. Positions and chat are validated both directions against current ATAK-CIV (including encrypted team chat — the node translates so ATAK reads it in the clear, and understands ATAK's binary mesh protocol on the wire). Markers arrive as generic map points (type detail is still being mapped), and ATAK direct messages aren't bridged yet — use All Chat Rooms. When positions and chat ride the LoRa fallback, that's all that rides it: photos and voice need the HaLow link. Want the bridge off? Settings → ATAK Compatibility in the CicadaTAK app turns it off per node.
12 Phone-direct mode — no node at all

The app can also skip the node entirely and pair straight to a handheld Meshtastic radio over Bluetooth: Settings → Connection → Meshtastic Radio, scan, pair (iOS asks for PIN 123456). You get the same map, encrypted team chat and public chat, positions, and LoRa mode control — a pocket-sized fallback that interoperates with the full fleet.

Caveats. Phone-direct is positions + text only: no photos, no PTT, no offline tile downloads, and the Fleetwide Bandwidth card hides (there's no fleet to command). Identity comes from the radio — the phone only fills in GPS if the radio lacks a fix.
Settings Connection card with the CicadaTAK Node and Meshtastic Radio toggle, mesh network counters and status list
Settings → Connection — node WiFi or radio Bluetooth
13 More nodes, updates & reset
  1. Adding a node: flash another card (download page), boot it, join its CicadaTak-XXXX setup WiFi and the app's wizard takes over — or use Settings → Setup New Node. Give it the same team passphrase and it joins the mesh.
  2. Blank LoRa board? A factory-fresh Heltec (V3 — or V4, on node firmware 0.5.0+) needs the right Meshtastic firmware, and the node writes it for you either way — no computer needed. If the board is plugged in before first boot, the setup wizard flashes it automatically. If you add one later, to a node that's already set up, go to Settings → LoRa Mode: the card tells you a device is attached but not answering, and offers Flash Meshtastic Firmware. Takes 1–3 minutes; don't unplug the board, and the node doesn't reboot or re-run the wizard.
  3. Heltec V4? Fully supported — gateway-attached and phone-direct. On node firmware 0.5.0 or newer the node flashes a V4 in place exactly like a V3 and configures it automatically. (The V4 runs stock Meshtastic firmware, so the board's own screen and buttons behave stock — bridging, encryption and the app are identical to a V3.) On older node firmware, flash the board once from a computer — flasher.meshtastic.org, pick Heltec WiFi LoRa 32 V4, latest stable firmware, LoRa region US (if the flasher won't connect: hold PRG, tap RST, release PRG, retry) — then plug it into the node, which adopts and configures it. If the LoRa link doesn't come up within a couple of minutes after plugging in an already-flashed board, restart the node — firmware before 0.5.0 had a connect bug that a restart clears. Phone-direct mode (Settings → Connection → Meshtastic Radio, §11) works with a V4 as before.
  4. Firmware updates (in place): nodes on images from 2026-07-24 onward update without pulling the card. From the app: Settings → Node Firmware → Check Latest → Pull Update → Apply (the node needs an internet uplink to pull — every way to get one is in the next step). Or grab the update file (~50 MB) on a laptop, plug into the node's wired port, and browse to http://10.41.253.1:8080/update to upload it directly — no internet needed at the node. Either way the node reboots (~3 min), keeps its identity, team key and downloaded maps, and does not re-run the wizard. Don't cut power mid-update. (The update file is only for nodes already running — flashing a fresh card takes the full image from the download page.)
  5. Getting a node an internet uplink: any of these work, and you only need one node online — its uplink is shared to the whole mesh automatically, so every other node can pull its update through it.
    • Ethernet (the path to trust): run a cable from any internet-connected router or switch to the node's wired port. No config — the node detects internet and becomes the mesh's gateway within ~30 seconds.
    • Android phone, USB-tethered: plug the phone into the node's USB port and turn on USB tethering in the phone's settings. The node picks it up like a wired connection. (iPhone USB tethering is not a validated path — use ethernet instead of fighting it.)
    • USB cellular modem / USB-ethernet adapter: supported the same way — if it presents a network connection on USB, the node will use it.
    • What does NOT work: your phone simply joining the node's WiFi. On the node's WiFi your phone is a client — its cell data can't be shared to the node that way.
  6. If an update says it didn't install: your node is fine — it is still running the previous firmware with your callsign, keys, maps and settings untouched, and you can simply try again. (On firmware older than 0.8.0 a failed update could send a node back to the setup wizard; that is fixed.) Give an update its full time before judging it: the node reboots partway through and briefly still reports the old version, which is normal.
  7. Firmware updates (older nodes / full reset): flash the latest image to a card and swap it in — the node re-runs the wizard on first boot. Watch the download page for releases, or join the release list from the home page.
  8. Health checks: Settings shows GPS state (none / down / no_fix / fix) and LoRa hardware status; the Nodes tab's ping tells you link quality node-to-node.
  9. Battery & charging (PiSugar builds): plugging in a charger powers the node on automatically — the halo ring lighting up is your confirmation the charger is actually delivering power (there's no separate charge light). PiSugar nodes also keep real time across power-offs: the battery-backed clock is set from GPS while the node runs, so timestamps are correct from the first seconds after boot even with no internet.
  10. Battery percentage & bigger batteries (PiSugar builds): battery monitoring is built into the firmware — the percentage in the app is read straight from the PiSugar's onboard gauge chip. Do not install PiSugar's own software on a node: it targets Raspberry Pi OS so it won't install on CicadaTAK firmware, and a second program talking to the battery chip over I2C can corrupt its state (worst case, cutting the node's power). The battery-curve "calibration" PiSugar's site describes for non-stock batteries is a feature of that software, so it doesn't apply here — there is no calibration step to run. The standard 10,000 mAh pouch pack is the battery the firmware is validated with: full discharge-to-shutdown testing confirms the gauge reads true near full and near empty, while mid-discharge the percentage can wobble a few points under radio load — that's normal. When you need a precise read, the battery voltage is the trustworthy number (roughly 4.1 V full, 3.4 V nearly empty).