diff --git a/README.md b/README.md index f8b9e5e0..04ca3eca 100644 --- a/README.md +++ b/README.md @@ -1,120 +1,71 @@ -## About MeshCore +# Wio Tracker L1 — Extended Companion Radio Firmware -MeshCore is a lightweight, portable C++ library that enables multi-hop packet routing for embedded projects using LoRa and other packet radios. It is designed for developers who want to create resilient, decentralized communication networks that work without the internet. +This branch extends the official MeshCore companion radio firmware for the **Seeed Wio Tracker L1**. -## 🔍 What is MeshCore? +## New Features -MeshCore now supports a range of LoRa devices, allowing for easy flashing without the need to compile firmware manually. Users can flash a pre-built binary using tools like Adafruit ESPTool and interact with the network through a serial console. -MeshCore provides the ability to create wireless mesh networks, similar to Meshtastic and Reticulum but with a focus on lightweight multi-hop packet routing for embedded projects. Unlike Meshtastic, which is tailored for casual LoRa communication, or Reticulum, which offers advanced networking, MeshCore balances simplicity with scalability, making it ideal for custom embedded solutions., where devices (nodes) can communicate over long distances by relaying messages through intermediate nodes. This is especially useful in off-grid, emergency, or tactical situations where traditional communication infrastructure is unavailable. +### Messages Screen -## ⚡ Key Features +View and send messages using the on-screen keyboard or predefined quick replies. The keyboard supports placeholders that insert live sensor data — `{time}` and `{loc}` are available by default. -* Multi-Hop Packet Routing - * Devices can forward messages across multiple nodes, extending range beyond a single radio's reach. - * Supports up to a configurable number of hops to balance network efficiency and prevent excessive traffic. - * Nodes use fixed roles where "Companion" nodes are not repeating messages at all to prevent adverse routing paths from being used. -* Supports LoRa Radios – Works with Heltec, RAK Wireless, and other LoRa-based hardware. -* Decentralized & Resilient – No central server or internet required; the network is self-healing. -* Low Power Consumption – Ideal for battery-powered or solar-powered devices. -* Simple to Deploy – Pre-built example applications make it easy to get started. +Hold Enter on a message or channel to open a context menu: change per-channel notification settings (overrides the global sound setting) or mark messages as read. -## 🎯 What Can You Use MeshCore For? +### Settings Screen -* Off-Grid Communication: Stay connected even in remote areas. -* Emergency Response & Disaster Recovery: Set up instant networks where infrastructure is down. -* Outdoor Activities: Hiking, camping, and adventure racing communication. -* Tactical & Security Applications: Military, law enforcement, and private security use cases. -* IoT & Sensor Networks: Collect data from remote sensors and relay it back to a central location. +All settings are saved to flash and restored on next boot. -## 🚀 How to Get Started +- **Display** + - Brightness + - Auto-off timeout + - Battery display mode (icon, %, V) + - Clock seconds (show/hide — hiding reduces display refresh from 1 s to 60 s) +- **Sound** + - Buzzer: On / Off / **Auto** — Auto mode silences the device while connected via Bluetooth, and re-enables sound when the connection drops + - Volume +- **Home Pages** — toggle visibility of individual home screen pages +- **Radio** + - TX power +- **System** + - Timezone (UTC offset in hours) + - Low battery shutdown threshold +- **GPS** + - Position broadcast interval +- **Contacts** + - Show all DMs or favourites only + - Show all room servers or favourites only +- **Messages** + - Edit up to 10 quick reply templates -- Watch the [MeshCore Intro Video](https://www.youtube.com/watch?v=t1qne8uJBAc) by Andy Kirby. -- Watch the [MeshCore Technical Presentation](https://www.youtube.com/watch?v=OwmkVkZQTf4) by Liam Cottle. -- Read through our [Frequently Asked Questions](./docs/faq.md) and [Documentation](https://docs.meshcore.io). -- Flash the MeshCore firmware on a supported device. -- Connect with a supported client. +### Clock Screen -For developers; +A dedicated clock page on the home screen shows the current time and date, synchronized from GPS or via Bluetooth. Timezone offset is applied from Settings. -- Install [PlatformIO](https://docs.platformio.org) in [Visual Studio Code](https://code.visualstudio.com). -- Clone and open the MeshCore repository in Visual Studio Code. -- See the example applications you can modify and run: - - [Companion Radio](./examples/companion_radio) - For use with an external chat app, over BLE, USB or WiFi. - - [KISS Modem](./examples/kiss_modem) - Serial KISS protocol bridge for host applications. ([protocol docs](./docs/kiss_modem_protocol.md)) - - [Simple Repeater](./examples/simple_repeater) - Extends network coverage by relaying messages. - - [Simple Room Server](./examples/simple_room_server) - A simple BBS server for shared Posts. - - [Simple Secure Chat](./examples/simple_secure_chat) - Secure terminal based text communication between devices. - - [Simple Sensor](./examples/simple_sensor) - Remote sensor node with telemetry and alerting. +### Tools Screen -The Simple Secure Chat example can be interacted with through the Serial Monitor in Visual Studio Code, or with a Serial USB Terminal on Android. +#### Ringtone Editor -## ⚡️ MeshCore Flasher +A step sequencer for composing custom ringtones stored on the device. Supports up to 32 notes with adjustable pitch, octave, duration, and BPM. Playback preview is available directly from the editor menu. -We have prebuilt firmware ready to flash on supported devices. +> Custom ringtones as per-channel or per-contact notification sounds are planned for a future update. -- Launch https://meshcore.io/flasher -- Select a supported device -- Flash one of the firmware types: - - Companion, Repeater or Room Server -- Once flashing is complete, you can connect with one of the MeshCore clients below. +#### Auto-Reply Bot -## 📱 MeshCore Clients +Automatically replies to incoming messages that contain a configured trigger word (case-insensitive). -**Companion Firmware** +- **DM mode** — when enabled, the bot listens to all incoming private messages and replies with the DM reply text. +- **Channel mode** — optionally, select a channel for the bot to monitor. When a trigger is matched, it replies with a separate channel reply text. +- Both modes can be active simultaneously and share the same trigger word but use independent reply texts. +- Replies support placeholders (`{time}`, `{loc}`). +- A 10-second cooldown prevents repeated replies in quick succession. -The companion firmware can be connected to via BLE, USB or WiFi depending on the firmware type you flashed. +--- -- Web: https://app.meshcore.nz -- Android: https://play.google.com/store/apps/details?id=com.liamcottle.meshcore.android -- iOS: https://apps.apple.com/us/app/meshcore/id6742354151?platform=iphone -- NodeJS: https://github.com/liamcottle/meshcore.js -- Python: https://github.com/fdlamotte/meshcore-cli +Feel free to explore, share feedback and feature requests! -**Repeater and Room Server Firmware** +## Development -The repeater and room server firmwares can be setup via USB in the web config tool. +This fork tracks the upstream [MeshCore](https://github.com/ripplebiz/MeshCore) repository. To prevent upstream changes from overwriting this README during merges, `README.md` is protected via `.gitattributes`. After cloning, run once: -- https://config.meshcore.io - -They can also be managed via LoRa in the mobile app by using the Remote Management feature. - -## 🛠 Hardware Compatibility - -MeshCore is designed for devices listed in the [MeshCore Flasher](https://meshcore.io/flasher) - -## 📜 License - -MeshCore is open-source software released under the MIT License. You are free to use, modify, and distribute it for personal and commercial projects. - -## Contributing - -Please submit PR's using 'dev' as the base branch! -For minor changes just submit your PR and we'll try to review it, but for anything more 'impactful' please open an Issue first and start a discussion. Is better to sound out what it is you want to achieve first, and try to come to a consensus on what the best approach is, especially when it impacts the structure or architecture of this codebase. - -Here are some general principals you should try to adhere to: -* Keep it simple. Please, don't think like a high-level lang programmer. Think embedded, and keep code concise, without any unnecessary layers. -* No dynamic memory allocation, except during setup/begin functions. -* Use the same brace and indenting style that's in the core source modules. (A .clang-format is prob going to be added soon, but please do NOT retroactively re-format existing code. This just creates unnecessary diffs that make finding problems harder) - -Help us prioritize! Please react with thumbs-up to issues/PRs you care about most. We look at reaction counts when planning work. - -## Road-Map / To-Do - -There are a number of fairly major features in the pipeline, with no particular time-frames attached yet. In very rough chronological order: -- [X] Companion radio: UI redesign -- [X] Repeater + Room Server: add ACL's (like Sensor Node has) -- [X] Standardise Bridge mode for repeaters -- [ ] Repeater/Bridge: Standardise the Transport Codes for zoning/filtering -- [X] Core + Repeater: enhanced zero-hop neighbour discovery -- [ ] Core: round-trip manual path support -- [ ] Companion + Apps: support for multiple sub-meshes (and 'off-grid' client repeat mode) -- [ ] Core + Apps: support for LZW message compression -- [ ] Core: dynamic CR (Coding Rate) for weak vs strong hops -- [ ] Core: new framework for hosting multiple virtual nodes on one physical device -- [ ] V2 protocol spec: discussion and consensus around V2 packet protocol, including path hashes, new encryption specs, etc - -## 📞 Get Support - -- Report bugs and request features on the [GitHub Issues](https://github.com/ripplebiz/MeshCore/issues) page. -- Find additional guides and components on [my site](https://buymeacoffee.com/ripplebiz). -- Join [MeshCore Discord](https://meshcore.gg) to chat with the developers and get help from the community. +```sh +git config merge.ours.driver true +```