meshcoreterm

Mesh View the repo

MC Term (MeshCore Term) is a companion firmware that adds a touch‑first graphical UI to small embedded LoRa mesh radios (e.g., LilyGO T‑Deck Plus, Seeed SenseCap Indicator), providing contacts, channels, map, messaging, diagnostics, and device management via BLE or Wi‑Fi.

auto-summary

134 stars · 7 forks

Maintainer
dabeani
Capabilities
blemeshwifi
Chip families
esp32-s3

Runs on these boards

Unverified

  • T-DeckUnverifiedLILYGO
    Flash T-Deckguided

    Unverified esp-atlas asserts this board↔firmware link at the shown trust tier — it does not guarantee your specific unit or the current firmware version. Flashing can erase keys/config and can brick the device. At your own risk.

README

MC Term

M(esh)C(ore) Term(inal): a retro-style touch & keyboard interface and WebUI for MeshCore LoRa devices.
Off-grid messaging, maps and sensors. No phone and no internet needed.

🌐 mcterm.net · ⬇️ Download · 📖 User Guide · 📝 Changelog · ☕ Support the project

Important: use at your own risk. You, the device owner, are responsible for any damage, data loss, or bricked devices.

What is MC Term?

MC Term is a companion firmware for MeshCore, the lightweight hybrid-routing mesh for LoRa packet radios. It turns the radio into a stand-alone communicator with its own screen: chat, see your mesh on a map, manage repeaters and read sensors. When you want a bigger screen, open the WebUI in any browser, at http://<devicename>.local. It also still works with the usual MeshCore apps (Android, iOS, web) over BLE or WiFi.

Latest release: v0.9.14 (25.09.2026). See the User Guide (quick start, glossary, every Mgmt page explained), the changelog and the releases page.

☕ MC Term is a free hobby project. If it is useful to you, please consider buying me a coffee. Thank you very much!

✨ Highlights

| | | |---|---| | 🚨 Pager alarm | Send a secret phrase by direct message or in a channel and the receiving device sounds a siren (Wail, Police, Fire, Ambulance) with a blinking full-screen popup. Match modes: starts with, contains, ends with, exact, whole word. Filters for senders and channels. | | 🗺️ Automatic map downloader | Pan the map and missing tiles download over WiFi, appear immediately, and are saved for offline use (SD card where the board has one, old tiles are removed when it fills up). Five tile sources or your own HTTPS tile server. | | 💬 Smart channel replies | A reply to a channel message keeps the region scope of the message you answer, so it reaches the same audience. A tag shows the scope before you send. | | 😀 Emoji (limited support) | Emoji in names and messages show as small colour pictures instead of ?. An EMO page on the on-screen keyboard offers the 40 most used. | | 📡 Airview (BETA, spectrum analyzer) | Mgmt → Stats → Airview: a live waterfall of the signal level on your channel, with noise floor and sensitivity lines, and every packet you hear colour-coded by type (advert, channel, DM, ack…). Built-in ? help. | | 🌡️ Mgmt → Sensors (formerly Tele) | Live graphs for every sensor and calibration offsets per reading. Corrected values are also sent as telemetry. Supports the MeshCore I²C sensor set plus chip temperatures. | | 🔑 Multiple identities | Keep several node identities on the device (4 on internal storage, 8 on SD) and switch, create or copy them from the screen or the WebUI. | | 🌐 WebUI improvements | More reliable and faster sync, phone and tablet friendly layout, live GPS page, Alarm and Sensors pages, map tile source picker, firmware upload with progress, hardened login. | | 🏷️ mDNS | Reach the WebUI at http://devicename.local instead of an IP address. (Not available on the T-Display P4 with the C6 AT WiFi backend.) |

More: contacts, channels, DMs and room servers with delivery status, message path on the map, quick send/replies, remote repeater and room-server administration, lock screen with picture/channel/sensor background, quiet hours, dark and light theme, UI zoom, Bluetooth and WiFi (AP or Station).

🖥️ Companion Firmware: On-device GUI & WebUI

The Companion firmware is what you flash for everyday use. Besides working with the standard MeshCore phone apps over BLE or WiFi, it gives you:

  • On-device GUI: Contacts, Channels, Map and Management (an overview grid plus dedicated settings pages), operated by touch or the T-Deck keyboard and trackball.
  • WebUI: a live mirror of the device in any browser over WiFi, once enabled in Management. Open http://<devicename>.local and sign in with the device's 6-digit PIN.

Path hash and device identity

  • Mgmt → Advert → Path Hash Mode: choose 1-, 2- or 3-byte path hashes on the mesh (how much of each node's public key is used in routing).
  • Mgmt → Global → Device ID: your hash prefix at the same width (for example AB, ABCD, ABCDEF).
  • Map markers: [hash] badges on remote nodes use each peer's advert or route metadata.

Map route overlay

  • Open a message's route from its detail view (device) or Show Path On Map (WebUI) to draw the hops on the map.
  • While a path is focused, only the nodes on that path stay visible.

Full walkthrough: User Guide.

📸 Screenshots

The screenshots show the WebUI on a phone, reached at http://<devicename>.local. The on-device screen has the same four tabs.


Contacts

Channels (with region scope badges)

Map with OpenStreetMap tiles

Management

Sensors: live graphs and calibration

WebUI login

📟 Supported devices


LilyGO T-Deck Plus / T-Deck

LilyGO T-Display P4 (preview)

Seeed SenseCAP Indicator

Elecrow CrowPanel 3.5″

Elecrow CrowPanel 7″

Heltec V4 with display

The T-Display P4 firmware is not yet on a solid release candidate. It is shared so you can try the current state.

🚀 Installation

  1. Download the file for your device from the releases page. Check the file name:

    | File | Device | |------|--------| | firmware_tdeckplus_v… | LilyGO T-Deck Plus | | firmware_indicatorpro_v… | Seeed SenseCAP Indicator | | firmware_elecrow35_v… | Elecrow CrowPanel 3.5″ | | firmware_elecrow7_v… | Elecrow CrowPanel 7″ | | firmware_heltecv4_v… | Heltec V4 with display | | firmware_tdisplayp4_v… | LilyGO T-Display P4 |

  2. Open https://flasher.meshcore.io/ and choose Custom Firmware.

  3. First installation: use the …-merged.bin file and do a full flash erase (this removes all settings). Updating an existing install: use the file without -merged; no erase needed, settings are kept.

  4. Flash, then wait: the first boot can take 1–2 minutes and the screen may flicker. That is normal.

  5. New to MeshCore? Follow the Quick Start in the User Guide.

SenseCAP Indicator: it has two chips. Also install the matching rp2040_indicator_v….uf2 from the same release (drag and drop onto the RP2040 drive). An old RP2040 image can break SD storage, map tiles, sensors and the buzzer.

Antenna first: never power a LoRa device without its antenna attached.

Default radio settings

Used when there are no saved settings (EU/UK):

  • Frequency: 869.618 MHz
  • Bandwidth: 62.5 kHz
  • Spreading Factor: 8
  • Coding Rate: 8
  • TX Power: 22 dBm

Change them in Mgmt → Radio (see the User Guide). All devices that should talk to each other need identical Frequency, Bandwidth, SF and CR. Respect your country's rules for frequency, power and duty cycle.

🔍 About MeshCore

MeshCore is a lightweight, decentralized mesh protocol for LoRa packet radios. Devices relay messages over multiple hops, with no internet, SIM card or central server. MC Term is built on top of it.

  • Multi-hop routing: messages are flooded only while a route is unknown, then follow the learned direct path. You can set the maximum number of hops.
  • Companion nodes do not repeat messages, so they cannot create bad routing paths. Range is extended with dedicated Repeater nodes.
  • Decentralized and resilient: no central server, the network is self-healing.
  • Low power: suitable for battery and solar operation.
  • Roles: Companion (what you chat with), Repeater (relay), Room Server (shared posts), Sensor (telemetry).

Good for: off-grid communication, emergency response and disaster recovery, hiking and outdoor events, sensor networks.

📱 MeshCore Apps

The Companion firmware can be connected to with the usual MeshCore apps over BLE or WiFi:

Repeaters and Room Servers can be managed remotely over LoRa from the MeshCore app (Remote Management).

Why "this" GUI?

MeshCore focuses on a compact, reliable mesh stack. MC Term adds a polished on-device interface and a WebUI, so small embedded radios are usable out of the box, without a phone. We like retro, you like retro, we stay retro. :-)

Notes & reliability

  • Settings are stored on the device and survive reboots and updates.
  • GPS: some variants (for example T-Deck Plus) need a specific UART baud rate (38400) and a good antenna position.
  • Looking for offline map tiles? https://github.com/mattdrum/map-tile-downloader

📜 License & third-party notes

See license.txt. Map tiles come from OpenStreetMap at runtime; when you publish map screenshots, show "© OpenStreetMap contributors".

☕ Support MC Term & bugs

Would be nice if you support me: https://buymeacoffee.com/bmks. Thank you very much!

Please open an issue for bug reports, improvements, enhancements or device support (harder when I don't own the device). Include your device, the firmware file name/version and, if possible, what you did before it happened. MeshCore community chat: MeshCore Discord.

Read the full README on GitHub

source github.com/dabeani/meshcoreterm