Loomwave — Firmware Installer

Flash a LoRa node to join a Loomwave cell (911.5 MHz · SF9/BW125). Full firmware refresh from main @ g60b72cd (2026-07-26) — every platform image below rebuilt, now with #114 Phase 2b (peer positions through a leaf node).

New since the last refresh (g894fc2f):

Everything from the previous refresh is still included — the #127 on-node inbox, phantom-node age-out, TX/RX monitor markers (#118), factoryreset, clean on-screen node names, and nodes reporting GPS position to the app (sharing off by default). The “Loomwave (dev)” test app (#117/#119) is in the app section.

The one-click installers need Chrome or Edge on a desktop (they use Web Serial). On phones, or other browsers, use the manual download below instead.

Android companion app

Loomwave (dev) TEST

Flutter · Android · v0.1.8 · gdc162bd · package net.mattsmith.loomwave.sideload

Installs as a SEPARATE “Loomwave (dev)” app (grey icon) alongside your normal / Play-Store Loomwave — different package, so no signing conflict and no uninstall; run both and tell them apart by the grey icon + “(dev)” name. This is the rolling test build with all the latest fixes.

In this build: the node map now shows peer pins on a real map (map icon, top bar — OSM tiles when you have signal, a plain pannable/zoomable backdrop off-grid; connect to the coordinator to see other nodes, #114), a single-node map no longer comes up blank/frozen, messages stay under the right contact when you switch nodes (#119), long-press a contact to Forget this node + garbled names cleaned up (#117), delivered ✓✓ no longer flips back to a single check (#124), and the build stamp now also shows at the bottom of Settings so you can always confirm exactly which build you’re on (#122).

Updating from an earlier dev build? This one is v0.1.7 (537) — it installs cleanly over older 0.1.6 builds. After installing, open Settings and confirm the bottom line reads v0.1.8+545 · … · gdc162bd. If App Info still shows an older build, uninstall the old “Loomwave (dev)” first, then install.

New in g1634154: group channels (now with a one-tap random-key generator for new private channels) — join or create a channel (name + shared key, or scan/paste an invite link), send to everyone subscribed across the mesh, and catch up on history you missed while offline; a built-in “Public” channel needs no setup. Also: the map always shows — no more blank screen until a location is set (pins pop in as nodes share). Also in this build: the Android Auto node map shows peer pins (it was position-blind until the mesh started carrying peer positions, #78 + #114).

Download “Loomwave (dev)” .apk (55 MB)

Sideload:

  1. On the phone, tap Download .apk and install (allow “install unknown apps” for your browser). If Play Protect warns, tap More details → Install anyway.
  2. Open “Loomwave (dev)” once; grant Notifications + Bluetooth and connect to a node over BLE.
  3. For the car (Android Auto): enable AA “Unknown sources” — Settings → Apps → Android Auto → Additional settings → tap “Version” repeatedly to unlock Developer settings → check “Unknown sources.” Reconnect to the car. Messaging is read-aloud + voice-reply; the map / mesh-status car screens may need the Play Store on a real head unit.

Node-map note (#114): the map now shows peer pins, not just “you are here.” A node appears when it has a position set (Settings → Node location) and “share my location with the mesh” is on. You see all peers when connected to the coordinator (it holds every member’s position — connect to the G2 over WiFi); a leaf node shows only its own pin.

ESP32 boards — one click in the browser

Updating from an older build? Your node will get a new address the first time it boots this firmware (one-time, by design — #94). Re-pair contacts as needed.

Heltec WiFi LoRa 32 V3 — client

ESP32-S3 + SX1262 · +22 dBm · 911.5 MHz · BLE: pairs with the app
Use Chrome or Edge on desktop. This page must be served over HTTPS.

Plug it in, click Install, pick its serial port. It auto-resets — no buttons needed. Now exposes the Nordic-UART BLE service ("LoomwaveHV3"), so the Android app connects to it just like a T114.

Heltec WiFi LoRa 32 V4 — client

ESP32-S3 + SX1262 · +22 dBm · 911.5 MHz · BLE: pairs with the app · g83134b3 (full refresh)
Use Chrome or Edge on desktop. This page must be served over HTTPS.

Plug it in, click Install, pick its serial port. It auto-resets — no buttons needed. Exposes the Nordic-UART BLE service, so the Android app connects to it just like a T114.

Station G2 — Backbone Relay (coordinator)

ESP32-S3 + SX1262 · +19 dBm (PA limit) · 911.5 MHz · masted relay (coordinator B)
Runs the Station G2 as a backbone coordinator: it serves its own local cell and relays that cell's traffic to/from the tower over RF (co-channel, half-frame stagger). This is the build for the masted node.

One-time step first: the Station G2's native USB has no auto-reset. Put it in download mode before installing: hold BOOT, tap RST, release BOOT (or hold BOOT while plugging in the USB). Then click Install.
Use Chrome or Edge on desktop. This page must be served over HTTPS.

Station G2 — Backbone Relay + WiFi setup & OTA (coordinator)

ESP32-S3 + SX1262 · +19 dBm (PA limit) · 911.5 MHz · masted relay, remotely updatable
Same backbone relay as above, plus WiFi remote updates for a node you can't easily reach (e.g. on a mast). No WiFi password is baked in. After flashing it comes up as a WiFi access point loomwave-setup-XXXX (password loomwave12): join it from a phone, a setup page opens at 192.168.4.1, enter your WiFi, and it reboots onto your network and becomes over-the-air updatable. A wrong password just brings the setup AP back automatically. The setup portal now also requires you to set an OTA password (#96) — every over-the-air update must present it, so a node on your network can't be reflashed by just anyone.

One-time step first: the Station G2's native USB has no auto-reset. Put it in download mode before installing: hold BOOT, tap RST, release BOOT (or hold BOOT while plugging in the USB). Then click Install.
Use Chrome or Edge on desktop. This page must be served over HTTPS.
Already on WiFi? Update over the air — no cable: download the OTA image (app-only .bin, current build g4e83d27) — this link always serves the latest OTA image (stable URL, safe to bookmark) — and push it to the node with espota, e.g. espota.py -i <g2-ip> --auth=<your portal password> -f loomwave-station-g2-coord-wifi-ota-latest.bin (ships with the PlatformIO/Arduino ESP32 tools; --auth is the OTA password you set in the setup portal). The node keeps its WiFi setup and reboots onto your network. Use this app-only image for OTA — NOT the merged web-installer .bin.

No network yet? Flash from the Android app over the node's setup AP: stand next to an unconnected node showing its loomwave-setup-XXXX AP, open the Loomwave app → Settings → Update a nearby node, and tap Update. The app downloads this same OTA image, joins the node's setup WiFi (you'll be asked to allow it), and flashes it — no cable and no network setup. Works on nodes already running firmware with over-the-air support (Android 10+).
Watch the coordinator's live log over WiFi: once the G2 is on your network, enter its IP to open the live log console it serves at /monitor (the IP is remembered in a cookie for next time). CLI-friendly too: curl http://<ip>/log.

Station G2 — client

ESP32-S3 + SX1262 · +19 dBm (PA limit) · plain client (serial only)
One-time step first: the Station G2's native USB has no auto-reset. Put it in download mode before installing: hold BOOT, tap RST, release BOOT (or hold BOOT while plugging in the USB). Then click Install.
Use Chrome or Edge on desktop. This page must be served over HTTPS.

nRF52 boards — drag & drop, no tools

Heltec T114

nRF52840 + SX1262 + L76K GPS · +20 dBm
Download .uf2 nrfutil .zip

XiaoGator v0.9

XIAO nRF52840 + E22-900M30S (1 W) + L76K GPS · +22 dBm — external antenna required
Download .uf2 nrfutil .zip

RAK WisBlock RAK4631

nRF52840 + SX1262 · +22 dBm · 911.5 MHz · no onboard GPS
Download .uf2 nrfutil .zip

Seeed SenseCAP T1000-E

nRF52840 + LR1110
Download .uf2 nrfutil .zip

To flash a .uf2:

  1. Double-tap the board's reset button — a USB drive appears.
  2. Drag the .uf2 file onto that drive.
  3. It reboots into Loomwave automatically.
Serial Monitor disconnected