Repository navigation
Releases
Android 0.4.1 field beta — MeshCore repeater diagnostics
MeshCrossway Android 0.4.1 beta — Stage 2 field testing
Experimental beta for real-device validation · Android 0.4.1 (versionCode 35)
This update lets you explore network diagnostics and MeshCore repeater information using your phone and two separate BLE radios, one running Meshtastic and one running MeshCore. The networks remain isolated: no bridging or forwarding.
What's new
- Advanced network diagnostics: Settings → Advanced network diagnostics contains independent Meshtastic and MeshCore status panels. They display the actual Bluetooth MTU and received GATT frame count, plus recently saved incoming/outgoing messages and available LoRa RSSI/SNR metadata. These are not total LoRa traffic counters or spectrum-analyzer readings.
- MeshCore repeater inventory: browse saved repeater contacts from the current MeshCore radio, with contact identity, local-observation freshness, and cached position when available. Cached activity does not prove current repeater connectivity.
- On-demand remote repeater status (experimental): choose a currently approved repeater and explicitly request uptime, battery/power information, queue depth, noise floor, last RSSI/SNR and packet counters when returned by a supported firmware. A command accepted by your local radio is not confirmation that the repeater responded.
- On-demand repeater neighbors (experimental): inspect up to eight reported neighbor entries per request and request additional pages separately. Short public-key prefix matches are presented as ambiguous unless exactly one saved contact matches.
- Network airtime protection: every status request and neighbor page requires confirmation, warns that flood routing may cause many relay transmissions, and shares a strict five-minute cooldown per repeater. This cooldown survives BLE reconnects and app restarts. Nothing is polled or retried automatically.
- Cleaner Home outbox indicators: old, uncertain group broadcasts are retained in Chats → Outbox but are no longer emphasized as urgent Home alerts; Home highlights recent actionable send states.
Experimental feature limitations
Remote MeshCore status and neighbors have passed automated protocol and Android simulator tests but have not yet been confirmed against your specific physical MeshCore repeater hardware. A request can time out, be unsupported by a radio or repeater firmware, or traverse several LoRa hops. Treat observed values as historical after receipt. The app shows the local radio's reported flood/known-path flag only after acknowledgement; this does not measure total RF airtime.
These tools are intended for experimentation, not high-rate monitoring. Do not repeatedly query busy public networks or rely on the results for emergency/life-safety decisions.
Safe upgrade and rollback
- Package:
com.meshcrossway.mobile; Android version 0.4.1, versionCode 35. - Permanent signing certificate must match prior 0.4.0; GitHub Actions verifies the configured expected SHA-256 fingerprint and refuses publishing if it changes.
- Install the signed
MeshCrossway-0.4.1.apkover the existing signed 0.4.0 without uninstalling or clearing data. Preserve message history, maps, tracks, channel keys and settings. - Use the included
SHA256SUMS.txtto verify APK integrity. - The published 0.4.0 beta at android-v0.4.0-stage1 remains unchanged. Android does not normally install a lower versionCode over a higher one; reverting from 0.4.1 to 0.4.0 may require a separate compatible higher-code rollback APK. Export and securely back up your app data before updating.
- This 0.4.1 release is only available after a maintainer explicitly runs the guarded permanent-key release workflow with version
0.4.1. Do not mistake CI debug artifacts for signed, updatable APKs.
Field-test procedure
- Install 0.4.1, open Home and verify separate Meshtastic and MeshCore BLE connections both reach Ready.
- Confirm chats, channels, maps, GPS tracks and messages remain available from the previous installation.
- Open Settings → Advanced network diagnostics, check each radio's information separately, and select a saved MeshCore repeater with current approval.
- Tap Request remote status. Read the flood warning and confirm only if you have permission to use the repeater/network. Verify whether the result is a real remote response, an unsupported status, or a timeout.
- Confirm the five-minute cooldown blocks immediate Request neighbors and remains effective after reconnecting the radio. Request neighbors after the interval, then compare its total/page to the known repeater.
- Test a reachable local repeater before testing long multi-hop paths. Do not spam retries.
- If something goes wrong, capture the app's Support diagnostic report, Android OS, Meshtastic and MeshCore firmware versions, and the screen sequence. Exclude passwords, keys, IDs, precise GPS and message content from public reports.
GitHub tracking: Stage 2 roadmap #229, remote repeater tests #239, outbox UI #236.
Android 0.4.0 beta — reliable messaging and LoRa reception
MeshCrossway Android 0.4.0 beta — Reliable Messaging & LoRa Reception
Beta / field-testing release · Stage 1 of enhancement roadmap #229
This is a major beta update to MeshCrossway for Android, focused on making two independent mesh radio connections easier to understand and outgoing messages safer to manage.
What's new
- Accurate Bluetooth signal indicators: each radio has its own phone-to-radio BLE RSSI; readings older than 90 seconds are marked as cached Last BLE, with age displayed. Bluetooth signal strength is not LoRa reception quality.
- Clear LoRa reception details: incoming message information describes the actual source of reported RSSI, SNR, and hop information. Missing measurements are not guessed. A Meshtastic MQTT flag does not guarantee local RF reception.
- Reception history by node: open Nodes → choose a node → Reception history for bounded RSSI/SNR charts derived from existing received-message history. Where the sender's full identity is unknown, the app declines to attribute measurements to a particular node.
- Independent outgoing status indicators: Home and Chats show separate recent message states for Meshtastic and MeshCore, distinguishing saved locally, sent via Bluetooth, radio acceptance, peer acknowledgement, rejection and unknown delivery. A peer ACK is not a human read receipt.
- Safer recovery from interrupted sends: for a rejected or uncertain outgoing message, long-press and select Prepare as new draft (manual). You must confirm a possible duplicate, and the app checks the original radio, network, channel/recipient and updated delivery status before copying the text. Nothing is automatically resent.
Other existing features remain: simultaneous Meshtastic and MeshCore BLE connections to separate physical radios, contacts, channel management and link/QR sharing, chat, local browser access, offline map regions, GPS tracks/GPX, backups, appearance settings, and optional account features. The networks are never bridged or relayed into each other.
Installation and data safety
- Android 8.0+ (ARM64); Android package:
com.meshcrossway.mobile - App version: 0.4.0, Android
versionCode34 (previous signed beta0.3.12used 33) - Uses the same permanent release signing certificate, verified against the repository's expected SHA-256 signing fingerprint.
- Install the new signed APK directly over your existing 0.3.12 (or other compatible permanently signed build). Choose Update; do not uninstall or clear app data. Your locally stored messages, saved maps, tracks, settings, and backups should remain intact.
- The Android version 0.4.0 and new GitHub release tag
android-v0.4.0-stage1are intentional: the historical tagandroid-v0.4.0belongs to a mistakenly numbered earlier beta (versionCode 31). That historical artifact is retained unchanged. Use this release's APK and checksum, not the oldandroid-v0.4.0file. - APK file:
MeshCrossway-0.4.0.apk. Verify with includedSHA256SUMS.txtandSIGNING-CERT-SHA256.txt. Do not install unsigned/debug APKs over the permanently signed application.
Testing and limitations
Android automated unit/fixture tests, Android 29/35 emulator smoke tests, build and lint are release gates. Live dual-radio, QR interoperability, Bluetooth dropouts and delivery outcomes still require hands-on confirmation on real phones and compatible MT/MC radios. Some firmware versions may omit RSSI/SNR or ACK details. RF charts are historical message metadata, not a spectrum analyzer, live topology map or guaranteed end-to-end delivery estimate.
This beta is experimental and not certified for emergency services or life-safety use. Report reproducible issues at MeshCrossway Issues, including Android version, phone model, both radio models, firmware versions, and the exact action involved. Never include private messages, channel keys, authentication tokens or precise location in a public issue.
Android 0.3.12 — channels, links and QR Codes
MeshCrossway Android 0.3.12 — channels, links and QR Codes
Install as an update over your existing app. The permanent certificate is unchanged and versionCode increases to 33. Do not uninstall or clear storage.
- Meshtastic: create private secondary channels, edit channel name/key and MQTT flags, leave secondary channels, and share primary/selected secondary settings using official ChannelSet links. Primary slot 0 is retained. A secondary share also contains the primary key; confirmation explains this.
- MeshCore: retain private/hashtag/Public creation, editing, removal, scope checks and verified readback.
- Both networks: share a link or QR image, scan a QR Code with the camera, read a saved QR image, paste a channel link or open supported official links in the app. Camera access is optional; image/link import remains available.
- Imports require review and explicit Save to radio. Meshtastic multi-channel links let you choose channels individually. Different LoRa parameters require a separate confirmed save before importing; local region, power and transmit policy are preserved. Join the shared primary first when a secondary needs its automatic frequency. Other slots are not silently replaced.
- Wait for radio readback before sending or sharing during Meshtastic channel/LoRa edits. Historical messages are retained; old channel-key targets cannot send after replacement.
Validation gates include protocol/channel fixtures, QR encoding/decoding unit checks, API 29/35 channel-manager and deep-link instrumentation, migration/persistence, build, lint and permanent certificate verification. Physical-radio, camera and cross-app RF testing are still required; this is a beta.
MeshCore and Meshtastic remain independent, with no cross-network forwarding. The APK checksum and certificate fingerprint are attached.
Android 0.3.11 — MeshCore everyday tools
MeshCrossway Android 0.3.11 — MeshCore everyday tools
Install over the existing MeshCrossway app and choose Update. The permanent signing certificate is unchanged. Local messages, settings, favorites, tracks and offline maps remain during an in-place update.
This release corrects the mistakenly published 0.4.0 number to 0.3.11, following 0.3.10. It retains all four MeshCore tools. Its versionCode is 32 (above 0.4.0 code 31), so existing installations can update without uninstalling.
- Announce your MeshCore presence explicitly: choose nearby zero-hop or mesh-wide flood. The app distinguishes radio acceptance from reception by others and limits repeated taps. Your radio's configured advert location policy is respected.
- Keep sends and key sharing blocked for an edited channel until its current values are verified, including readback failure and cancellation. Other channels and direct messages remain available.
- Create private, hashtag or Public channels; edit or remove existing slots. Each save checks fresh channel name/key readback before confirmation. Existing message history is retained, and an old conversation cannot send with a replaced key.
- Share confirmed channel settings using the official meshcore://channel/add link format. Import by pasting a link or opening it from another app, then review and save explicitly. Region-scoped imports require a matching configured default region; importing does not silently change that region.
- Export or share a bounded support diagnostic containing app/Android/firmware versions, connection phases, numeric GATT/protocol events and queue counts. Messages, coordinates, personal names, Bluetooth addresses, keys, credentials and raw packet bodies are excluded.
- Filter MeshCore contacts into Discovered, Approved and Historical, with counts, clear state labels, refresh and approval/removal actions. Offline labels explicitly describe saved state.
Validation: 96 MeshCore regressions, 106 user-feature checks and 206 Meshtastic conformance checks, protocol/browser/migration suites, API 29/35 device smoke and persistence fixtures, build, lint and permanent certificate verification. Physical-radio/RF acceptance and native-app interoperability testing remain necessary; this is a beta, not a claim of complete official-app parity.
MeshCore and Meshtastic remain independent. No automatic adverts, automatic approval, message retransmission or settings SET replay are enabled. Pending save and late-ACK recovery remain limited to service lifetime and reconnection to the same selected radio.
The APK checksum and permanent certificate fingerprint are attached.
Android 0.4.0 — superseded by 0.3.11 (numbering correction)
This version number was published in error. Use Android 0.3.11, which retains these features and has a higher internal versionCode (32) so it installs as an update over 0.4.0 (31). Do not uninstall. Download: https://github.com/Renbrant/MeshCrossway/releases/tag/android-v0.3.11 . Historical assets and tag are retained unchanged.
Android 0.3.10 — MeshCore contact and reconnect fixes
MeshCrossway Android 0.3.10 — MeshCore contact and reconnect fixes
Install over your existing MeshCrossway app and choose Update. The permanent signing certificate is unchanged. Local messages, settings, favorites, tracks and offline maps are retained during an in-place update.
- Resolve actual radio membership after new contact adverts. A contact auto-added by the radio becomes available without redundant manual approval; excluded/unapproved discoveries remain pending. No automatic ADD command is sent.
- Treat contact NOT_FOUND as a normal lifecycle result. Fresh adverts can resolve re-added contacts without reconnecting. Repeated adverts coalesce, and a newer advert is not lost when an older lookup finishes.
- Preserve pending verification as soon as Bluetooth accepts a settings write, including a disconnect before the write callback/response. Reconnection checks actual values with GET commands and never replays the SET automatically.
Validation includes 96 MeshCore regression checks, 206 Meshtastic conformance checks, existing protocol/browser/migration suites, Android API 29/35 smoke and storage fixtures, build, lint and permanent certificate verification. Tests cover successful/unsuccessful membership lookup, manual approval, re-addition, interrupted writes and readback mismatch. Physical radio and RF testing remain necessary; these are bounded regression results, not a claim of full official-app parity.
Prior 0.3.9 settings/readback, UTF-8 names, signed TX power, repeat-mode preservation and bounded late-ACK improvements are retained. Pending verification and late-ACK correlation survive BLE reconnection only while the service remains alive and the same radio is selected. Late-ACK retention remains bounded to ten minutes; no automatic message retransmission is enabled.
The APK checksum and permanent certificate fingerprint are attached to this release.
Android 0.3.9 — MeshCore reliability corrections
MeshCrossway Android 0.3.9 — MeshCore reliability corrections
Install over your existing MeshCrossway app and choose Update. The permanent signing certificate is unchanged. Local messages, settings, favorites, tracks and offline maps are retained during an in-place update.
- Verify MeshCore settings using fresh radio readback. A normal radio error keeps the connection alive and shows the failure. A partially applied multi-command save refreshes the actual values.
- Preserve Companion repeat mode when editing radio parameters, and verify preset radio/path changes as one transaction.
- Keep discoveries separate from approved radio contacts. Add explicit approval/removal actions and reconcile deleted contacts and full contact refreshes while retaining historical messages.
- Enforce a 31-byte UTF-8 name limit. An already truncated name remains readable so it can be repaired from the app.
- Decode negative TX power correctly and use the device's advertised maximum instead of a fixed 22 dBm ceiling.
- Gate advanced settings by Companion protocol support and coalesce repeated reads. Unsupported features no longer cause reconnect loops.
- Track receiver-side contact activity and live DM receipt separately from sender advert time. Initial backlog does not make every contact appear freshly heard.
- Reconcile matching late delivery ACKs with bounded retention, including BLE reconnection while the service is running.
- Preserve the integer extra-ACK count when changing unrelated privacy settings.
- Continue draining messages immediately after an unsupported channel-data item.
Validation includes the existing regression suites, 206 Meshtastic conformance checks, 66 MeshCore regression checks, Android settings/contact-persistence fixtures on API 29 and 35, build, lint and permanent certificate verification. Physical-radio and RF validation remain necessary. The app is a public beta; full official-app feature parity is not included.
Pending verification survives BLE reconnection without replaying SET commands. After repeated recovery failures, the app offers an explicit check or use-current-settings action. Late-ACK retention is limited to ten minutes and service lifetime; automatic retransmission is not enabled.
The APK checksum and permanent certificate fingerprint are attached to this release.
Android 0.3.8 — Meshtastic settings corrections
MeshCrossway Android 0.3.8 — Meshtastic settings corrections
Install this APK over your existing MeshCrossway installation and choose Update. The permanent signing certificate is unchanged. Your local messages, favorites, settings, tracks and offline maps are retained during an in-place update.
- Correct coding-rate defaults for LONG TURBO, NARROW FAST, NARROW SLOW and TINY SLOW.
- Verify the complete effective LoRa configuration after saving and reconnecting. Report the differing setting when readback does not match; retain documented firmware normalization of default coding rates, inactive parameters and automatic TX power.
- Offer LONG TURBO only on firmware 2.7.17 or newer.
- Validate frequency slots using regional frequency ranges, spacing and padding, including the newer EU and amateur profiles. Use explicit regional power limits and omit reserved regions without a supported band profile.
- Display omitted Bluetooth and serial-console flags correctly as disabled.
- Replace broad hardware-name restrictions on SF5/SF6 with explicit modem capabilities. Ambiguous variants are verified through radio readback.
- Enforce UTF-8 byte limits and verify the returned identity during licensed-mode onboarding.
- Load MQTT and status-message settings independently; explain unavailable modules and expose editing only after the supported module has loaded.
Validation includes the existing protocol regression suite, 206 additional conformance checks, Android settings-view fixtures and storage checks on Android API 29 and 35, plus APK build and lint. Physical-radio and on-air validation remain necessary. This is a public beta, not version 1.0; full official-app feature parity is not included.
The signing certificate fingerprint and APK checksum are attached to this release.
Android 0.3.7 — Meshtastic settings beta
MeshCrossway Android 0.3.7 — Meshtastic settings beta
Install as an update: install this APK over Android 0.3.6 and choose Update. The permanent signing certificate is unchanged. Do not uninstall the app or clear its storage; that would remove locally saved messages, favorites, settings, tracks and offline maps.
Account shortcut layout: the account button is now part of the toolbar with its own reserved space. It no longer floats over Settings or other header controls after navigation or resuming the app.
Compact Home and recent nodes: the Meshtastic preset appears beside Ready. Radio cards omit Bluetooth device names and retain the signal indicator. Both networks count nodes heard in the last 15 minutes instead of one hour. The counter refreshes while Home is visible even without new traffic; this indicates recent activity, not guaranteed reachability.
Preset confirmation and Home: recognize firmware-normalized preset coding rates (0 stored as 5), while still rejecting a different preset or a lost custom coding override. Display the synchronized Meshtastic preset under Ready on Home; manual LoRa is labeled explicitly. The coding-rate editor recognizes the radio's stored default.
Radio settings save progress: the settings page follows submission, possible radio restart, reconnection and readback verification automatically. A readback mismatch returns to current radio values and unlocks controls. Missing routing ACKs no longer prevent verification. Readback timeouts offer a clear retry or use-current-settings action; the submitted change is never automatically resent.
Meshtastic corrections: explicit preset IDs; correlated administrative GET/ACK/readback; expiring-session refresh; empty-default configuration handling; firmware and hardware gates; staged LoRa changes with manual parameters; licensed callsign onboarding; channel-name/key identity reconciliation; structured replies/reactions; persisted node metadata and telemetry samples; neighbor information and requested traceroute. A Bluetooth write is never presented as a confirmed settings save. Reconnection verifies pending changes without automatically resending them.
Licensed DM correction: do not request PKI encryption when either participant is licensed, including before opening User settings; clear stale public keys when the radio removes them.
Compatibility: install over 0.3.1/0.3.2/0.3.3/0.3.4/0.3.5/0.3.6 using Update. Full official-app feature parity, remote administration/shell, firmware updates and every module editor are not included. Hardware/RF validation is still required.
Existing local app data and features remain available after an in-place update. The long-lived signing certificate is verified by CI and its SHA-256 fingerprint is attached to this release. This is a public beta, not version 1.0.
Android 0.3.6 — Meshtastic settings beta
MeshCrossway Android 0.3.6 — Meshtastic settings beta
Install as an update: install this APK over Android 0.3.5 and choose Update. The permanent signing certificate is unchanged. Do not uninstall the app or clear its storage; that would remove locally saved messages, favorites, settings, tracks and offline maps.
Compact Home and recent nodes: the Meshtastic preset appears beside Ready. Radio cards omit Bluetooth device names and retain the signal indicator. Both networks count nodes heard in the last 15 minutes instead of one hour. The counter refreshes while Home is visible even without new traffic; this indicates recent activity, not guaranteed reachability.
Preset confirmation and Home: recognize firmware-normalized preset coding rates (0 stored as 5), while still rejecting a different preset or a lost custom coding override. Display the synchronized Meshtastic preset under Ready on Home; manual LoRa is labeled explicitly. The coding-rate editor recognizes the radio's stored default.
Radio settings save progress: the settings page follows submission, possible radio restart, reconnection and readback verification automatically. A readback mismatch returns to current radio values and unlocks controls. Missing routing ACKs no longer prevent verification. Readback timeouts offer a clear retry or use-current-settings action; the submitted change is never automatically resent.
Meshtastic corrections: explicit preset IDs; correlated administrative GET/ACK/readback; expiring-session refresh; empty-default configuration handling; firmware and hardware gates; staged LoRa changes with manual parameters; licensed callsign onboarding; channel-name/key identity reconciliation; structured replies/reactions; persisted node metadata and telemetry samples; neighbor information and requested traceroute. A Bluetooth write is never presented as a confirmed settings save. Reconnection verifies pending changes without automatically resending them.
Licensed DM correction: do not request PKI encryption when either participant is licensed, including before opening User settings; clear stale public keys when the radio removes them.
Compatibility: install over 0.3.1/0.3.2/0.3.3/0.3.4/0.3.5 using Update. Full official-app feature parity, remote administration/shell, firmware updates and every module editor are not included. Hardware/RF validation is still required.
Existing local app data and features remain available after an in-place update. The long-lived signing certificate is verified by CI and its SHA-256 fingerprint is attached to this release. This is a public beta, not version 1.0.