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):
Group channels — join or create a channel and message everyone subscribed
across the mesh (with a built-in Public channel, encrypted content, and offline catch-up).
Requires this firmware on the node AND the v0.1.8+ app. (#132)
Peer positions now work through a LEAF node, not just the coordinator (#114 Phase 2b)
— the coordinator relays each member’s shared position over the air (a new ADV_POS
advert), so any node caches its neighbours’ positions and reports them to a connected app. An app
on an ordinary client now shows the whole cell on the map, even when the coordinator is a headless
tower you can’t connect to. Verified end-to-end on the live tower.
Peer positions on the node map — the map now shows other nodes, not just
you. A node whose position is set (Settings → Node location) and who has “share my location”
on appears when you connect to the coordinator (over WiFi for the G2). (#114)
Member-to-member messaging fixed — two nodes on the same cell could fail to
message each other (“no key”), permanently and one-way, because the coordinator stopped
relaying a settled node’s identity. Nodes now keep their identity refreshed and the relay no
longer aliases against the radio-nap schedule, so keys always propagate. (#120)
T1000-E beacon reception fixed — the SenseCAP T1000-E was dropping ~25–35% of
beacons (and churning coordinators) from an LR1110 RX stall; the recovery now restores the radio
correctly and only fires on a real miss. Near-zero loss in bench soaks. (#112)
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.
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).
On the phone, tap Download .apk and install (allow “install unknown apps” for your
browser). If Play Protect warns, tap More details → Install anyway.
Open “Loomwave (dev)” once; grant Notifications + Bluetooth and connect to a node over BLE.
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.
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)
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.
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.