Releases: meshsat/meshsat-linux
Release list
meshsat 1.0.3
meshsat 1.0.3: an SOS on every route that is set up
- An SOS takes every route that is set up, as MeshSat Android does, not only the routes up that minute. A satellite modem this phone has had, a node it paired that is reconnecting, and the Hub while it is offline all count. A leg on a route that is down waits in the Bridge's queue and goes out when the route is back, and it keeps trying until you cancel. The SOS screen shows each leg as "Waiting to send" until it goes, then "Sent", or "Sent, and the Hub has it".
- The Bridge carries the legs (Bridge change MESHSAT-1447, carried in this package):
- the text on the mesh;
- the SOS frame by satellite, on whichever modem the phone or kit has (the 9704 as well);
- the Hub told over the internet, under the same alert id as the satellite frame, so the Hub pages once.
A cancelled SOS never goes out on a route it had not reached yet. The mesh and the Hub are told it is over. The SOS survives a restart of the Bridge.
- A blank SOS name takes the Hub callsign, as on Android: in the SOS, in the alarm test and in the cancellation. Safety's name field shows the callsign as its placeholder; "A MeshSat user" only without one.
- Tested: 424 unit tests. On the bench phone, the whole suite against the installed package: 221 cases (197 against a scripted Bridge, 17 against a second, real Bridge, 7 live). 218 passed. The 3 that failed were test expectations that the new rule made wrong: a modem the phone had seen earlier in a module now counts as a route. They were fixed, and their modules (16 cases) reran with all passed. The live alarm test's text was heard by the T-Deck. No real SOS has ever been sent; the Bridge's legs are proven in its Go tests and against the scripted Bridge.
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v1.0.3/meshsat_1.0.3_arm64.deb && sudo apt install ./meshsat_1.0.3_arm64.deb (docs/INSTALL.md).
meshsat 1.0.2
meshsat 1.0.2: the node's battery time left, and the small leftovers
- The node's battery with the time it has left, as MeshSat Android shows it: "78%, 3.98 V, about 13 h left". It is worked out from the node's own readings of the last three hours, which the Bridge keeps, by Android's rule: a line through the readings since the node came off USB power, and nothing shown until half an hour and two points of drop are behind it. Android's NodeBatteryTest cases are ported.
- Safety and the alarm test's question reach every route that is set up, as Home does and as Android does: a modem seen before, and a node that is reconnecting.
- Dialogs: the SOS screen's "Cancel the SOS?" dialog matches Home's, and the Hub's password eye is the outlined one Android draws.
- Tested: 417 unit tests. On the bench phone, the whole suite against the installed package: 219 cases, all passed (195 against a scripted Bridge, 17 against a second, real Bridge, 7 live).
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v1.0.2/meshsat_1.0.2_arm64.deb && sudo apt install ./meshsat_1.0.2_arm64.deb (docs/INSTALL.md).
meshsat 1.0.1
meshsat 1.0.1: closer to MeshSat Android, and the satellite modem of a node over Bluetooth
- The looks, closer still. Every screen was compared side by side with MeshSat Android's, and the spacing, sizes and colours that differed now match:
- rows 64 dp apart with grey icons;
- outlined chips, and the lane chips in their lane's colour;
- Android's line heights, and tab badges as small pills;
- Home's lanes with their line under the words;
- the Messages list's sizes, the chat composer growing to four lines with the filled send arrow;
- toasts as a plain pill, Arrange Home and the SOS dialogs as Android's;
- the node card, the Satellite, SMS, Safety, Certificates, Decrypt, Diagnostics and Links pages, and pinned headers above scrolling lists.
- The satellite modem of a MeshSat node over Bluetooth. The Satellite page shows "Satellite modem on the node" with its status, "Use the node's modem" and the node's health report, when the phone adopts a MeshSat node over Bluetooth. The Bridge underneath (ab58709a, MESHSAT-1391) never sends a message twice: a session whose outcome it cannot know ends as "May have been sent" and waits for a person's Retry.
- It went through four independent reviews.
- It has not yet run with a real node: the bench's T-Beam with the RockBLOCK is out of the phone's Bluetooth range.
- Tested: 409 unit tests. On the bench phone, the whole suite against the installed package: 218 cases, all passed (194 against a scripted Bridge, 17 against a second, real Bridge, 7 live; one case's scripted Bridge was corrected and the module run again). The parity ledger: 143 rows verified, 11 excluded with their reasons, 2 blocked by the bench's hardware (a satellite session in the air, SMS without a SIM).
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v1.0.1/meshsat_1.0.1_arm64.deb && sudo apt install ./meshsat_1.0.1_arm64.deb (docs/INSTALL.md).
meshsat 1.0.0
meshsat 1.0.0: every screen of MeshSat Android, proven on the phone
Every screen, dialog and sentence of MeshSat Android 2.19.4 that a Linux phone can show is here, in Android's words, and every one is tested on the bench phone. What Linux does differently, and why, is listed in docs/PARITY.md. What the bench cannot prove is named there too: a satellite session in the air, SMS without a SIM, and the satellite modem of a node over Bluetooth.
New since 0.12.0
-
The SOS and the alarm test follow every route through the Bridge's queue, in MeshSat Android's words. Each route shows:
- "Waiting to send", "Sending now", "Sent", or "Trying again: …" with the reason;
- "Sent, and the Hub has it" once the Hub confirms a satellite route;
- "Delivered to their phone" once the carrier confirms an SMS;
- "Could not be queued" when the Bridge would not take it;
- "Stopped before the Hub could be reached" for a test stopped early.
A confirmation that comes late still shows, for half an hour.
-
The alarm test's satellite route is a position report to the Hub, as on Android: the phone's position in Android's 31-byte frame, one credit, and nothing the Hub treats as an SOS. Without a position fix, the test text goes by satellite as before. A second tap while a test waits does not queue a second one, and a test that has not gone out after 30 minutes is dropped rather than sent later.
-
An SOS by satellite is never held back by the satellite credit budget. The Bridge's own SOS burst and its SOS frame to the Hub were refused once a daily or monthly budget was used up (MESHSAT-1431). Ordinary messages, the periodic position reports and the alarm test stay under the budget.
-
The Bridge answers this device only, unless you share it.
- The Bridge (TCP 6050), the node's API (4403) and Meshtastic's web client (9443) used to answer anyone on the same network, without a password.
- Now only the device itself reaches them.
- Setup > Advanced > Diagnostics has "Share the Bridge on this network". It asks for the phone's password, warns that anyone on that network can then send, start an SOS, change every setting and spend satellite credit, and names the address to open.
- Shared, the Bridge answers only private addresses on Wi-Fi or Ethernet, never the mobile data connection. The node's ports stay local.
- An upgrade closes the Bridge to the network until the switch is used.
-
The node page, the notifications, the tray, the quick-settings tile and the lock-screen widget are now tested like every other screen: the node card in Android's words (battery with its voltage, every mesh node on its own row), the PIN dialog of a node over Bluetooth, the alarm test's notification kept up to date in place, a failed message's notification in its lane's words, the satellite signal's notification, and the tile and the widget following the Bridge.
-
The Bridge underneath (MeshSat Bridge 427531ee, MESHSAT-1430 and MESHSAT-1431): the alarm test's position report, its lifetime and its idempotency; an SOS that cancels a test still waiting; the credit budget. An independent review found four faults in the first version before release, all fixed and tested first; a second review checked the fixes.
-
Tested: 406 unit tests, among them the port of Android's SosRunTest cases and the firewall rules loaded in a private network namespace. On the bench phone, the whole suite against the installed package, 215 cases, all passed: 191 against a scripted Bridge, 17 against a second, real Bridge, 7 live (the T-Deck heard the alarm test's text and a live text; a radio setting written on the T-Deck over Bluetooth and set back). From the laptop, the Bridge and the node's ports refused by default, the Bridge reachable once shared, refused again once the switch was off.
Not proven on the bench:
- a satellite session: the position report is proven against the Bridge's queue, not in the air;
- an SMS: no SIM;
- the Hub's receipt: no Hub link on the bench.
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v0.13.0/meshsat_0.13.0_arm64.deb && sudo apt install ./meshsat_0.13.0_arm64.deb (docs/INSTALL.md).
meshsat 0.12.0
meshsat 0.12.0: Home as MeshSat Android's, the welcome, People, About, a chat's own key
-
Home is now MeshSat Android's:
- Getting started: Android's steps, each with its check or empty ring, opening the page that finishes it; Hide puts it away for good.
- Arrange Home (the arrows button): move a card up or down; the order is kept.
- The cards, in the order you keep: SOS; Message queue (a bar per lane and the four counts, from the Bridge's delivery queue); Your position (the phone's own fix, with its accuracy, height, speed and heading); Satellite signal and passes (three hours back and ahead) and Mobile signal, last 6 hours; Satellite mailbox (asks before it bills a session, then says what it found); Recent messages (every transport, SMS included).
- The lanes count what waits on each lane, the satellite lane names the next high pass, and the node's modem out of reach is said first. The old signal-to-noise chart, which Android never had, is gone.
-
A welcome at the first start: what the app asks for, and why; the phone asks for its position only after Continue.
-
The node banner says when Bluetooth is off (a tap switches it on), which link is down and since when (a tap opens Setup), and keeps quiet while an SOS or a test runs.
-
People: your own node in the table as "(you)", Android's table, sorts and colours, how each node was heard (directly with its SNR, or through other nodes), and the empty texts only when nobody is known at all.
-
About, in Android's sections. The Satellite page, in Android's words for the RockBLOCK on USB-C, with its own 9704 card and the mailbox's result.
-
A chat's own key: the lock in a chat's header opens Android's key section (Show, Generate, Save, Copy, Paste, Remove). The key is kept by the Bridge; an SMS chat's key seals and opens that number's texts, as on Android. A sealed text carries the amber lock.
-
Fixed: Home's Message queue card kept its last counts once the queue had emptied.
-
Fixed: an SOS text, an alarm test and a cancellation to an emergency contact could go out sealed when Messaging's encryption was on (MESHSAT-1424). They now always go out as written.
-
The Bridge underneath (MeshSat Bridge 0c884a00, MESHSAT-1423, MESHSAT-1425 and MESHSAT-1427): the mailbox check a person asks for and what it found; how many hops a packet took, when known; each modem's signal on its own; a chat's own SMS key; SMS that go out exactly as written. An independent review of both batches found three faults before release (a mailbox check that could empty a message a send had just loaded, a lost incoming message after a failed read, and SMS text clean-up skipped for "as written" texts); all three were fixed and tested first.
-
Tested: 372 unit tests, among them Android's NodeLinkBannerTextTest and SkyGeometryTest. On the bench phone, the whole suite against the installed package, 183 cases: 159 against a scripted Bridge, 17 against a second, real Bridge, 7 live. Two of the cases against the real Bridge found a fault first: Home kept the last queue counts once the queue emptied, because the Bridge answers an empty queue with null. They passed after the fix, with Home's cases run again. Among them: every card, Getting started, Arrange Home across a restart, the mailbox's every outcome (no satellite session was opened), the welcome at the first start only, the banner's four states, People, About, the Satellite page, and a chat's key saved in and read back from a real Bridge.
Not proven on the bench: the mailbox against a real satellite session (it bills), the mobile chart and a sealed SMS on the air (no SIM), and the node's own satellite modem over Bluetooth (0.13.0; the T-Beam with the RockBLOCK is out of range).
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v0.12.0/meshsat_0.12.0_arm64.deb && sudo apt install ./meshsat_0.12.0_arm64.deb (docs/INSTALL.md).
meshsat 0.11.2
meshsat 0.11.2: Ham radio, TAK and Reticulum
-
Setup > "Ham radio, TAK and Reticulum" is now MeshSat Android's three cards (before, it was three read-only lines):
- Ham radio (APRS):
- Enable APRS, then KISS TNC or APRS-IS Direct.
- The callsign and SSID, then the TNC's host and port, or the APRS-IS server.
- A passcode that Auto works out from the callsign.
- The filter radius, and a position beacon that goes to APRS-IS only, never over the radio.
- TAK: Enable TAK, the callsign prefix, ATAK Broadcast (to ATAK nearby) and MQTT Export to Hub.
- Reticulum: Enable RNS TCP, the host and port, and TLS. With TLS, the phone shows the Hub's client certificate to the server.
- Each card's status row follows the Bridge.
- "Saved" is shown only once the Bridge has taken the change; if it refuses, its own words are shown.
- Ham radio (APRS):
-
The Bridge underneath (MeshSat Bridge 7d406a6f, MESHSAT-1421):
- APRS-IS Direct.
- The position beacon, fed by the phone's own position.
- TAK without a TAK server: to ATAK nearby, to the Hub, and the phone's own position, SOS, dead man and chat.
- Reticulum over TCP with TLS.
-
Tested: 323 unit tests, among them Android's APRS-IS passcode test. On the bench phone, the whole suite ran against the installed package, all green: 138 cases against a scripted Bridge, 14 against a second, real Bridge, and 7 live. Among them:
- the three cards in Android's words, and every write as the Bridge takes it;
- against the real Bridge, with a TNC, an APRS-IS server and a Reticulum node that the test runs on the phone itself: the TNC connected and its station heard with nothing sent to it; Android's APRS-IS login line, word for word, and the verified reply; TAK without a server; the Reticulum link online;
- live: the T-Deck hearing the alarm test and a text typed in the app.
Nothing was sent over the air, to a real APRS-IS server, to ATAK or to the Hub's Reticulum. The bench has no licence, no radio for APRS and no TAK client.
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v0.11.2/meshsat_0.11.2_arm64.deb && sudo apt install ./meshsat_0.11.2_arm64.deb (docs/INSTALL.md).
meshsat 0.11.1
meshsat 0.11.1: the Hub page, and a mailbox check that asks first
-
Setup > Hub, as MeshSat Android's "Hub connection" card:
- Where the link to the Hub stands, in Android's words and order, with its dot: Switched off, Connected as …, Connecting, Cannot reach the Hub, Not connected, or Not set up. "Why: …" gives the reason a connect failed.
- "Use the Hub": as on Android, the setting takes effect when the link next starts.
- "Scan the Hub's QR code". A provisioning claim still waiting shows on the card as "Getting the Hub's settings, N s".
- "Test the connection" is timed to the Hub broker's acknowledgement, for example "142ms". Without a link it says "Not connected" and sends nothing.
- "Connection details" for setting up by hand: the Hub MQTT URL, Bridge ID, callsign, username, password (with its eye) and health interval. Save restarts the Bridge.
- The Setup row and the Home lane follow the link the same way.
- Not on this page: "Reach a kit through the Hub". The Bridge has no relay client to a kit.
-
The satellite mailbox: "Check Mailbox" opened a billed Iridium session on one tap. It now asks "Check the satellite mailbox?" first, in Android's words, and is offered only while a modem is connected.
-
Upgrades: installing a new version no longer switches the Bridge's start at boot back on when it was switched off in Diagnostics.
-
The Bridge underneath (MeshSat Bridge f761743c, MESHSAT-1417):
- It reports the Hub link's state and the reason it failed.
- It keeps "Use the Hub", the callsign and the health interval, and tests the connection.
- A saved form no longer clears the Hub's CA certificate.
-
Tested: 305 unit tests. On the bench phone, the whole suite ran against the installed package, all green: 127 cases against a scripted Bridge, 10 against a second, real Bridge, and 7 live. Among them:
- each of the Hub link's states, the switch, the test, the details saved;
- on a real Bridge, the switch and the details kept, and the test refused without a link;
- the mailbox check asked about first, with nothing sent on Cancel;
- live: the T-Deck hearing the alarm test and a text typed in the app.
After the suite, a check on the phone found that an upgrade left the Bridge stopped when its start at boot was switched off. The package now notes a running Bridge before an upgrade and starts it again after. Both ways were tested on the phone (switched on: on and running; switched off: off and still running), and the install case ran again on the final package.
No Hub link is live on the bench: the connected and failed states are proven against the scripted Bridge and the Bridge's own tests.
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v0.11.1/meshsat_0.11.1_arm64.deb && sudo apt install ./meshsat_0.11.1_arm64.deb (docs/INSTALL.md).
meshsat 0.11.0
meshsat 0.11.0: cards, the QR scanner, the Hub by QR code, contacts
-
People you carry (the People tab), as MeshSat Android's:
- My card: this phone's card as a QR code, with the fingerprint to read aloud and Copy. The Bridge signs it with its routing identity, the same key its Reticulum announces.
- Scan a card with the camera, or Paste a card instead. Each card is checked before "Add {name}?", and the three errors are Android's.
- The list shows how each card came ("Scanned in person" or "Imported as text") and has Forget. Cards stay on this phone.
- The card format is Android's own. Android's test vector gives the same bytes in the Bridge and in the app.
-
The QR scanner:
- The phone's rear camera, through libcamera and GStreamer. It closes on the first QR code.
- "Open an image" reads a code from a photo or a screenshot, for a phone or desktop with no camera. A code read from a file counts as imported, not scanned in person.
-
Setup > Messaging: "Scan QR Code (Hub Key Sync)" takes, in Android's order:
- a Hub provisioning code;
- a key bundle, checked and pinned on first use, with "This kit's key has changed" asked first;
- a 64-hex key.
-
The Hub by QR code or link:
- A scanned Hub code is claimed through the Hub's "not yet" answers, then "Use these Hub settings?" is asked.
- A
meshsat://provision/link opens the app, asks first, then claims and applies. - Applying writes the settings to the Bridge, stores the client certificate and restarts the Bridge. "No settings from the Hub" comes in Android's words.
-
Safety's emergency contacts: "Choose from your contacts" from the address book, "Or type a number", with Android's rules and words.
-
The package recommends the camera, GStreamer and address-book packages. It installs them with the one command.
-
The Bridge underneath (MeshSat Bridge 0db71ea2): it now serves the contact card that the phones exchange (MESHSAT-1416).
-
Tested: 293 unit tests. On the bench phone, the whole suite ran against the installed package: 117 cases against a scripted Bridge, 9 against a second, real Bridge, and 7 live. All passed but one scripted case, whose test read the Hub's waiting dialog in two passes and missed it closing; the case now reads it in one, and it passed on the installed package with the module and the cards module (14 of 14), the new scanner case included. Among them:
- My card as the phone's own Bridge signs it, its key the Bridge's routing identity, read as Android reads it;
- a card read through the scanner's camera pipeline and added as scanned, a card pasted and added as imported, the three errors;
- a kit's key bundle pinned on first use, and a changed key asked about first;
- a Hub code claimed through the Hub's "not yet" answers and then applied; a link asked about first; a spent code refused;
- an emergency contact picked from an address book;
- live: the T-Deck hearing the alarm test and a text typed in the app.
No card has been exchanged with an Android phone yet, and the phone's camera has not read a real code: the suite shows the scanner a picture through the same decoder.
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v0.11.0/meshsat_0.11.0_arm64.deb && sudo apt install ./meshsat_0.11.0_arm64.deb (docs/INSTALL.md).
meshsat 0.10.0: Zones, offline maps and tracks
meshsat 0.10.0: Zones, offline maps and tracks
-
Zones (Setup > Safety > Zones), as MeshSat Android's:
- A long press on the map places a zone, and another long press moves it.
- The editor has the name, the radius (a slider from 50 m to 5 km, or metres typed, 10 m to 50 km), the choice of entering, leaving or both, and a note. All three errors show at once.
- The Bridge keeps the zones, checks every position a mesh node sends against them, and lists who entered or left, newest first. An alert goes nowhere but that list, as on Android.
-
Offline maps (Setup > Maps):
- The built-in world overview, which is Android's own file.
- Detailed maps added from MBTiles files, used first, and kept when the network is gone. A file is checked before it replaces a map of the same name.
- The map notices that it is offline after three failed downloads and says which map it shows. Offline with only the world overview, the Map tab zooms out to where that overview still reads.
-
The Map tab:
- Where each node went in the last 24 hours, as dashed lines.
- The "Layers and nodes" panel: this phone, the nodes and the tracks as layers; each node can be hidden with its track; Show all and Hide all; this phone's position.
- The bubbles on markers and tracks, and "Centre on me" and "Show everyone" as on Android.
-
People: the node's sheet in Android's words. Its "Show on map" goes to the node, and is offered only once the node has sent a position.
-
Looks: text inside a row is no longer bold, and sheets are drawn on the card colour, as on Android.
-
The Bridge underneath (MeshSat Bridge 31ae3941): the zones were never checked. The Bridge now creates its zone monitor, checks every mesh position, and keeps the crossings (MESHSAT-1414).
-
Tested: 243 unit tests. On the bench phone, the whole suite ran against the installed package: 95 cases against a scripted Bridge, 8 against a second, real Bridge, and 7 live, all green. The live tier was run a second time after the bench's T-Deck was set back: an earlier run had left its hop limit at 4, so setting 4 in the app changed nothing. After the last map changes, the 31 map and route cases ran again on the final package, all green. Among them:
- a zone placed on the map and saved as Android's circle; a node crossing it listed; the three errors at once;
- a detailed map added from a file; the map offline with the tile server cut off, showing the detailed map and saying so;
- a day of positions drawn as one track per node;
- live: a zone saved from the app on the phone's own Bridge and deleted again, and the T-Deck hearing the alarm test and a text typed in the app.
No zone has been placed by a real finger yet: the suite presses the map through a test action of the app.
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v0.10.0/meshsat_0.10.0_arm64.deb && sudo apt install ./meshsat_0.10.0_arm64.deb (docs/INSTALL.md).
meshsat 0.9.1: Messaging, and the SMS default number
meshsat 0.9.1: Messaging, and the SMS default number
-
Setup > Messaging, as MeshSat Android's three cards:
- Encryption: the SMS link's AES-256-GCM key, which you can generate, save, show, copy, paste and save to a file. Encryption on or off, and automatic decryption of incoming texts, which keeps a text from an ordinary phone as it came. A key that cannot encrypt is refused before it is used.
- Message compression: SMS and Iridium SBD, off or MSVQ-SC, with its stages. MSVQ-SC is offered only where the Bridge has its encoder, and this phone has none, which the page says.
- Quick messages: the 30 brevity codes, as on Android. A code received from another MeshSat now reads as its words.
-
Setup > SMS: "Where a text goes with no recipient", the number a routing rule's text goes to when it names none. Left empty, such a text is not sent.
-
The Bridge underneath (MeshSat Bridge afe026af):
- A link set to encrypt no longer sends a message in plain text when its key cannot encrypt. The message gives up with the reason (MESHSAT-1411).
- A link's encryption and compression can now be set without touching the rest of the link, keys are checked when saved, and a gateway's stored secrets survive a save (MESHSAT-1412).
-
Tested: 201 unit tests. On the bench phone, against the installed package, 81 cases green: 67 against a scripted Bridge, 8 against a second, real Bridge, 6 live. Among them:
- every Messaging switch and button, checked as the exact change it makes to the Bridge's SMS link;
- against the real Bridge: a key that cannot encrypt refused, a link's chains set without changing the rest of it, and an SMS gateway with no default number.
The phone has no SIM, so no text has been encrypted or decrypted live.
Install on a Mobian phone: wget https://github.com/meshsat/meshsat-linux/releases/download/v0.9.1/meshsat_0.9.1_arm64.deb && sudo apt install ./meshsat_0.9.1_arm64.deb (docs/INSTALL.md).