Skip to content

MeshSat node ​

Prototype

MeshSat is a prototype in active development. Its dependability is unproven. Do not rely on it for life safety.

The MeshSat node is a pocket-sized box with two radios in it: a Meshtastic LoRa radio and a RockBLOCK 9603 Iridium satellite modem. A phone running MeshSat Android or MeshSat iOS connects to it once over Bluetooth and gets both. The mesh comes through the normal Meshtastic service, and the satellite modem through a second MeshSat service on the same connection.

An open Peli case on a garden ledge, holding a RockBLOCK 9603, an ESP32-S3 LoRa board and a power bank

While the app owns the modem, the app handles routing, queueing and credit accounting. Without a phone, the node can route its configured Iridium mesh channel over satellite: that path was proven in a garden on 27 September 2026. The modem has one owner at a time; see how ownership changes. The phone does not automatically inherit that channel's routing rules when it takes over.

How it fits together ​

 Meshtastic mesh, LoRa 868 MHz
          |
 +--------+-------------------------+
 | MeshSat node                     |
 |   ESP32-S3 with meshsat-firmware |
 |          | UART                  |
 |   RockBLOCK 9603 ----------------+---- Iridium SBD ---- Iridium satellites
 +--------+-------------------------+                              |
          |  Bluetooth LE: Meshtastic service + Iridium service   Ground Control
 MeshSat Android on a phone                                         |
          |  internet, when there is any                            |
 MeshSat Hub <------------------------------------------------------+

The node runs meshsat-firmware, a fork of the Meshtastic firmware with one addition: a binary-safe serial pipe from Bluetooth to the RockBLOCK. The app speaks the 9603's AT commands through that pipe, exactly as it would over a cable. The pipe's contract is on Iridium Bluetooth service.

Versions ​

Partv0 (bench)v1 (prototype)
BoardSeeed Studio XIAO ESP32-S3 with a Wio-SX1262LILYGO T-Beam Supreme (ESP32-S3, SX1262, u-blox M10S GPS)
SatelliteRockBLOCK 9603RockBLOCK 9603
PowerUSB power bankOne 18650 cell in the T-Beam, charged over USB-C. The modem runs from the T-Beam's power chip
CasePeli 1050Peli 1020, with an IP68 USB-C port and a panel power button
StateTested on the bench, September 2026; retired from the phone role on 21 SeptemberRunning since 21 September 2026 on the bench and in a garden; the Peli build is not finished

How to put one together, wire it and flash it: Build a node.

What is proven, and what is not ​

WhatState
Meshtastic to MeshSat Android over Bluetooth (v0)Verified on the bench, 19 September 2026: bonded with a fixed PIN, full config sync
Iridium modem over the same Bluetooth link (v0)Verified on the bench, 19 September 2026: AT commands, and a binary loopback of up to 270 bytes
A satellite message out, from the Hub through the phone and the nodeOne message delivered, 19 September 2026
A satellite message in, fetched by the app after a ring alertOne message received, 19 September 2026
The app reconnecting after its own restart and taking the modem backVerified 19 September 2026
Recovery from a Bluetooth drop, even mid-sessionBench, 26 September 2026: six forced drops, six reclaims within a second, one session held through the drop and its result caught
The node rebooting itself when its Bluetooth stack no longer servesBench, 26 September 2026: three unpaired links, five minutes, reboot, the reason read back at boot
v1 on the T-Beam SupremeRunning since 21 September 2026: flashed, paired with the app, modem answering through the Bluetooth pipe, satellite messages both ways from a garden
Routing on the node with no phone connectedProven 27 September 2026 in a garden: a text typed on a T-Deck on the channel i9603 reached the Hub over LoRa and Iridium through the node alone, and the Hub's reply came back to the T-Deck the same way, 14 seconds after it was queued
The modem changing hands between the phone and the nodeBench, 2 October 2026: a message the phone left unread in the modem was passed on to the mesh instead of deleted, a text sent while the phone held the modem was not sent a second time, and the node took its own text out of the modem before the phone took over
A second device pairing without the phone losing its bondBench, 2 October 2026, a phone and a laptop: the phone reconnected without pairing again. Not tried with three devices
The node recovering when its Bluetooth stops advertisingBench, 2 October 2026, with advertising stopped on purpose: started again within a minute, and the node rebooted itself when that did not help
The node saying why it last went downBench, 2 October 2026: a flash, a restart and a watchdog reboot each read back at the next start. Low battery, a switch-off, a crash and a brownout were not provoked
A RockBLOCK 9704 behind the node's pipe (the compact v2 firmware build)Bench, 8 October 2026, from a laptop through the pipe: the modem answered its JSPR protocol, took its SIM and API version, registered as active, and accepted a text with its payload. Not transmitted yet: no sky at the desk. It ran from the T-Beam's switched 3.7 V rail for 1 h 48 min on a full cell with no USB, and dropped out on a cell at 3.67 V; the firmware then switched that rail off itself under 3.7 V on the cell and back on above 3.8 V. Since 24 October 2026 the compact v2 build does not use that rail at all: the cell itself feeds the modem, and the firmware starts and stops it through the modem's own enable and booted pins in the order its maker asks for, with the low-battery thresholds at 3.65 and 3.75 V, still to be confirmed with a meter. Later that night the node routed on its own: a text on its satellite channel went from the mesh into the modem in 190 ms with no phone involved. The node now also says which modem it carries, and MeshSat Android 2.19.9 left on Auto brought the 9704 up through the pipe from that in 1.5 seconds. After a reboot of the node, MeshSat Android 2.19.10 had the 9704 back by itself 65 seconds later. First run of that build on 24 October 2026, on the second compact v2 unit, indoors with no sky: the modem came up active and the node took it; a text from the node's serial and a preset sent from a T-Watch over LoRa were both in the modem's queue within half a second with no phone involved; a warm reboot kept the modem up. Under sky the same afternoon, with MeshSat Android 2.22: six texts from the phone through the pipe went up between 12:36 and 16:21 and reached Cloudloop, and three texts came down to the phone through the pipe, the first two at 15:53 after waiting while the unit was indoors. Still not seen: the node sending on its own under sky. The texts queued that night never left, because the 9704 keeps no queue across its own restart, and a text from a T-Deck Plus with the phone's Bluetooth off had not reached the Hub when rain ended the session
A firmware update from the phone over Bluetooth24 October 2026, on the second compact v2 unit: MeshSat Android 2.22.5 handed the node to the Bluetooth update loader and sent it a new firmware of 2.4 MB in about two and a half minutes. The node came back with its pairing, its settings and the modem. The firmware came from a file on the phone; fetching it from a release is not built yet
The status light and the screen switched from the app24 October 2026, on the second compact v2 unit: both switched off and on again from MeshSat Android 2.22.6. Not yet seen across a restart of the node
Battery lifeNot measured
Range, weather, long-term reliabilityNot tested
Deployment to a real end userNever
Use in an actual emergencyNever

The satellite results come from a garden with a limited view of the sky. There the signal read zero bars minutes before and after a session that got through, so the app never waits for bars before it sends.

Costs ​

The RockBLOCK needs an active Ground Control line rental and message credits. Every satellite session is billed, even one that only checks for new messages and sends nothing.

Conformity documents ​

The compact v2 (model MSC-2) ships with an instructions and safety leaflet and an EU declaration of conformity. Both are published, every edition, at docs.meshsat.net/conformity/msc-2/, the address printed on each unit's label.

Source ​

  • meshsat/meshsat-esp32: hardware versions, wiring, bench tools, and every hardware fact with its source
  • meshsat/meshsat-firmware: the node's firmware, based on Meshtastic® firmware and not affiliated with or endorsed by Meshtastic LLC