Merge branch 'master' into patch-1

This commit is contained in:
rcarteraz 2024-02-24 20:12:25 -07:00 committed by GitHub
commit bef7830d1c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
77 changed files with 2586 additions and 1773 deletions

5
.github/CODEOWNERS vendored Normal file
View file

@ -0,0 +1,5 @@
# Protect this CODEOWNERS file from change
/.github/CODEOWNERS @meshtastic/admins
# Protect the legal directory from change
/docs/legal/* @meshtastic/admins

View file

@ -15,22 +15,4 @@ Website and documentation source for the Meshtastic project.
## Development & Building
nodejs is required in your dev. environment. The method for installing nodejs depends on your operating system. This software is built using [Docusaurus](https://docusaurus.io).
Go to the root directory of your repository and install dependencies:
```shell
pnpm install
```
Build the project with the following command
```shell
pnpm build
```
Start a local dev. instance with the following command
```shell
pnpm start
```
For complete instructions on setting up your development environment and for building and running the project locally, please refer to our [Local Development Guide](https://meshtastic.org/docs/development/documentation/local-dev/).

View file

@ -1,10 +1,15 @@
---
title: Community Guide
title: Contributing to Meshtastic
sidebar_label: Contributing
slug: /contributing
sidebar_position: 3
description: "Get involved with Meshtastic's open-source project. Contribute to device firmware, web apps, or mobile and desktop apps. Your expertise can help enhance this volunteer-driven communication platform."
---
### Volunteer Based Development
import Link from "@docusaurus/Link"
## Volunteer Based Development
Meshtastic is a team of volunteers, and as such there are always plenty of ways to help. This project gets great contributions from people in their off hours. Those contributors work on the features they are interested in. It is a very open and welcoming developer community, and we are always looking for help to improve Meshtastic.
@ -19,38 +24,62 @@ Meshtastic is a team of volunteers, and as such there are always plenty of ways
There are several developers, testers, and active users on [Discord](https://discord.gg/ktMAKGBnBs).
## Meshtastic Ecosystem
### Meshtastic Ecosystem
There are many technologies (and repositories) used in creating the Meshtastic ecosystem. Below is a breakdown:
The Meshtastic ecosystem leverages a variety of technologies and repositories to provide a robust decentralized communication platform. This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors, and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication.
### Protocol Buffers
Key components include:
- **Protocol Buffers**: The backbone of communication and interactions, with changes and definitions managed in the [Meshtastic Protobuf Definitions repository](https://github.com/meshtastic/protobufs). For detailed information, see the [Protobuf API Reference](https://buf.build/meshtastic/protobufs/).
- **Device Firmware**: Development for ESP32, nRF52, and RP2040 based devices occurs in the [firmware repository](https://github.com/meshtastic/firmware), focusing on C and C++ code for hardware interaction and communication.
- **Firmware Modules**: Extend the core functionalities of devices and mesh networks, implemented mainly within the firmware repository. Modules are essential for adding new features and integrating devices within the ecosystem.
- **CLI Apps (Device Interface)**: The [Meshtastic Python CLI](https://github.com/meshtastic/Meshtastic-python) enables interaction with device settings and functionalities, serving both as a utility and a library for application development.
- **Web and JavaScript Apps**: Development for the hosted web server on ESP32 devices is done in [Meshtastic Web](https://github.com/meshtastic/web), with a JavaScript library for device interfaces available in [Meshtastic JS](https://github.com/meshtastic/meshtastic.js).
- **Mobile and Desktop Apps**: Android, iOS, iPadOS, and macOS applications provide user interfaces for interacting with Meshtastic devices. Development for Android is detailed in the [Meshtastic-Android repository](https://github.com/meshtastic/Meshtastic-Android), while Apple platforms are supported by the [Meshtastic-Apple repository](https://github.com/meshtastic/Meshtastic-Apple).
- **Documentation**: The source for the Meshtastic website and documentation resides in the [meshtastic/meshtastic repository](https://github.com/meshtastic/meshtastic). For guidelines on maintaining documentation, visit the [Maintaining Documentation](/docs/development/docs) page.
Most communication and interactions happen with protocol buffers. The [Meshtastic Protobuf Definitions](https://github.com/meshtastic/protobufs) repo is where all of the protocol buffer changes happen. See the [Protobuf API Reference](https://buf.build/meshtastic/protobufs/) for more details.
This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication.
### Device Firmware
The [firmware repo](https://github.com/meshtastic/firmware) is where all of the device firmware development happens. This is where the code for the ESP32, nRF52 and RP2040 based devices is developed. It is mainly C and C++ code. Think Arduino. It is where the first level of hardware interaction begins and ends.
## Supporting and Contributing to Meshtastic
### Firmware Modules
The Meshtastic project benefits greatly from the contributions of our volunteers and the financial support from our community. As the project has evolved, the expansion of features and services has led to increased financial needs, including hardware for development, GitHub fees, hosting for public MQTT services, among others. This growth into a robust platform for decentralized off-grid mesh networking solutions showcases the dedication of our developers and the generosity of our financial supporters.
[Modules](/docs/configuration/module) extend device and mesh functionality beyond core functions. These are also implemented mainly in the firmware repo above. Typically, you would add functions in the protobufs repo and the device repo to implement module functionality. You probably also want to have some client or device, use or interact with the module. This is where Device Interface support comes into play.
### How You Can Support Meshtastic Financially
### CLI Apps (Device Interface)
If direct development contribution is not feasible for you, financial support is another invaluable way to help Meshtastic grow and thrive. We offer two primary options for monetary donations:
- **Meshtastic Python CLI** - The [meshtastic/Meshtastic-python repository](https://github.com/meshtastic/Meshtastic-python) is a command line utility that allows you to interact with most of the device settings and functionality. This python library can also be consumed for other applications. See [Meshtastic Python Development](/docs/development/python/) for more details
<div className="indexCtasBody">
<div className="split-container">
<div className="split-item">
<a
className="button button--outline button--lg cta--button"
href="https://opencollective.com/meshtastic"
target="_blank"
rel="noopener noreferrer"
>
Support on Open Collective
</a>
</div>
### Web Apps (Device Interface)
<div className="split-item">
<a
className="button button--outline button--lg cta--button"
href="https://github.com/sponsors/meshtastic"
target="_blank"
rel="noopener noreferrer"
>
Sponsor on GitHub
</a>
</div>
</div>
</div>
- **Meshtastic Web** - The [meshtastic/web repository](https://github.com/meshtastic/web) is where the hosted web server on the ESP32 devices in Typescript is developed. See the [Web Development Overview](/docs/development/web/) for more details.
- **Meshtastic JS** - The [meshtastic/meshtastic.js](https://github.com/meshtastic/meshtastic.js) repository is a JavaScript library that provides an interface for Meshtastic devices. See [Javascript Development](/docs/development/js) for more details
### Fiscal Sponsorships
### Mobile and Desktop Apps (Device Interface)
We're deeply thankful for the backing from the Open Collective, Open Source Collective, DigitalOcean, and Vercel, which has been instrumental in our project's sustainability and growth:
There are Android, iOS, iPadOS, and macOS apps that interact with Meshtastic devices:
- **Open Collective & Open Source Collective**: Our collaboration with these organizations offers a robust fiscal management framework and banking solutions, supporting our project alongside over three thousand other open source initiatives. Open Collective's transparent framework lets everyone see our finances, including income, expenditures, and contributions on [Meshtastic's Open Collective page](https://opencollective.com/meshtastic). This transparency and support affirm that we're in excellent company.
- **Android App** - The [meshtastic/Meshtastic-Android](https://github.com/meshtastic/Meshtastic-Android) repository contains the Kotlin code for Android based interactions with Meshtastic devices. See the [Android development instructions](/docs/development/android) on how to create a development environment and build the Meshtastic Android App.
- **Apple Apps** - The [meshtastic/Meshtastic-Apple](https://github.com/meshtastic/Meshtastic-Apple) repository contains the SwiftUI client applications code for iPhone, iPad and Mac.
- **DigitalOcean**: Champions of open source, DigitalOcean supports Meshtastic through credits, which significantly aid our development, infrastructure, and testing efforts. This contribution is part of their commitment to fostering innovation and collaboration within the open source ecosystem.
### Documentation
The Meshtastic website (the one you are looking at right now) is in the [meshtastic/Meshtastic](https://github.com/meshtastic/meshtastic) repository. See [Maintaining Documentation](/docs/development/docs) for more details.
- **Vercel**: By covering our hosting costs, Vercel directly contributes to Meshtastic's growth, enhancing our web scalability and presence. Their sponsorship is crucial for our continued development and focus on creating a robust platform for decentralized communication.

View file

@ -3,141 +3,136 @@ id: faq
title: FAQs
slug: /faq
sidebar_position: 3
description: "Find answers to your Meshtastic questions: from getting started, device setup, to advanced features. Learn about app compatibility, channel sharing, and HAM license benefits. Dive into our comprehensive FAQ."
---
## Overview
### Where can I get additional help, ask questions, or bond with the Meshtastic community?
This site (which has a great search function) is the preferred place for up-to-date documentation. Many of our users and developers hang out on the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) server where you may connect with like-minded people.
### How can I contribute to Meshtastic?
Everyone contributes in a different way. Join the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) and introduce yourself. We're all very friendly. If you'd like to pitch in some code, check out the [Development](/docs/developers) menu on the left.
<!-- Android Client-->
## Android Client
### What versions of Android does the Meshtastic Android App require?
Minimum requirement is Android 5 (Lollipop 2014, first BLE support), however at least Android 6 (Marshmallow 2015) is recommended as Bluetooth is more stable. While Android 5/6 are officially supported by Meshtastic, it is _not_ recommended that you purchase devices with these versions due to their limited OS support and limited battery life due to age. Many newer models exist that are very affordable. A good resource to use when researching affordable devices is the [LineageOS Supported Devices List](https://wiki.lineageos.org/devices/).
### What does the icon next to the message mean?
- Cloud with an up arrow - Queued on the app to be sent to your device.
- Cloud only - Queued on the device to be sent over the mesh.
- Cloud with a check mark - At least one other node on the mesh acknowledged the message.
- Person with a check mark - The intended recipient of your direct message acknowledged the message.
- Cloud crossed out - Not acknowledged or message error.
### How can I clear the message history?
Long press any message to select and show the menu with "delete" and "select all" buttons.
### After a fresh firmware install, my node is not connecting via Bluetooth. What should I do?
Try forgetting the Bluetooth connection from the Android Bluetooth Settings menu. Re-pair and try again. This is a security measure and there is no workaround for it. It prevents apps and other accessories from spoofing an existing accessory by un-pairing and "re-pairing" themselves without the users' knowledge.
<!-- Apple Clients-->
## Apple Clients
### What version of iOS/iPadOS/macOS does the Meshtastic App Require?
The Meshtastic App on Apple Clients require the following minimum OS versions: iOS 16.2, iPadOS 16.2, and macOS 13.
### How do I get the Apple Meshtastic App?
See [Apple Apps](/docs/software/apple/installation)
### After a fresh firmware install, my node is not connecting via Bluetooth. What should I do?
Try forgetting the Bluetooth connection from the iOS/iPadOS/macOS System Settings. Re-pair and try again. This is a security measure and there is no workaround for it. It prevents apps and other accessories from spoofing an existing accessory by un-pairing and "re-pairing" themselves without the users' knowledge.
### Do the Apple applications provide an indication if the message was acknowledged on the mesh?
Yes, when the message is sent you will first see a `Waiting to be acknowledged...` status beneath the message. If the message is acknowledged by a node on the mesh this will update to `Acknowledged` in orange, which turns into grey when sending a direct message and the intended recipient acknowledged it. If no nodes have responded it will indicate `Max Retransmission Reached`. If there is an error, the status will update to the appropriate error. Additionally, you can long press on the message and select `Message Details` to view the date/time sent, if ack was received and the time ack was received or the error (if there was one).
<!-- Channels -->
## Channels
### How do I share my Meshtastic Channel with other people?
Your Meshtastic client (Android, Apple, Web, or Python) will provide you a URL or QR code. You can email, text or print this URL or QR code and share it with people you want to join your Meshtastic Channel.
<!-- Python -->
## Python CLI
### How do I find out more about installing (and using) Meshtastic via command line?
[See our guide here](/docs/software/python/cli/installation).
### How do I find out more about using python to interact?
[See our guide here](/docs/software/python/cli/usage).
<!-- Devices -->
## Devices
### How do I turn **off** an ESP32 T-Beam based device?
Hold down the left PWR button for about 10 seconds and the display should turn off.
### How do I turn **on** an ESP32 T-Beam based device?
Push the left PWR button for about 1 second.
### Functionality of the T-Beam Buttons
[T-Beam Buttons](/docs/hardware/devices/tbeam/buttons) explained here
### Where do I purchase the device hardware?
Each [supported device](/docs/hardware/devices/index.mdx) has a "Purchase Link".
### I have my hardware. How do I install the firmware and any required drivers?
[See our guide here](/docs/getting-started).
### How do I update the firmware to the latest version?
Updating firmware varies with hardware. See [Flashing Firmware](/docs/getting-started/flashing-firmware).
### My device has gone to sleep. Are received messages lost?
The LoRa radio on the node is still active and will wake up the CPU when the device is sleeping. If your phone is in range, the node will relay any messages your phone may have missed. If you're in range and your device is active, messages have not been lost.
### My device has gone to sleep and I can't send any messages.
Once the node wakes up from sleep, your phone will relay any delayed messages through your node and to the mesh network. Give it a few minutes and it'll do the right thing.
### How can I tell the device not to sleep?
See [Device Power Configuration](/docs/configuration/radio/power) options.
### I am in Europe and my device seems to stop transmitting after a while, what is going on?
Europe has an hourly duty cycle limit of 10% in the frequency band that Meshtastic uses. It might be that you hit this limit if you are sending a lot. You can confirm this by checking whether you see duty cycle limit errors in the serial log, Mesh Log (Apple apps) or Debug Panel (Android).
To limit traffic, you can consider setting the device metrics and position update intervals higher. Alternatively, the device can be configured to override the duty cycle limit, but then you will violate the regulations.
### Why does only one RAK Meshtastic Starter kit show up in my node list?
There was a bug where Meshtastic Starter kits were sent out with the same MAC address. With a single MAC address the devices all report as being the same device. Without the battery connected, flash the starter kit device(s) to any firmware > 1.2.59 and then do a factory reset, disconnect and reconnect the board and run `meshtastic --info`.
<!-- HAM -->
## Amateur Radio (HAM)
Meshtastic can be used by both unlicensed people and licensed HAM operators.
### What is the benefit of using a HAM license with Meshtastic?
If you use your HAM radio license with Meshtastic, consider both the privileges and restrictions:
import { FaqAccordion } from "/src/components/FaqAccordion";
import { FaqStructuredData } from "/src/components/FaqStructuredData";
export const Faq = {
"general": [
{
title: "Where can I get additional help, ask questions, or bond with the Meshtastic community?",
content: `This site (which has a great search function) is the preferred place for up-to-date documentation. Many of our users and developers hang out on the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) server where you may connect with like-minded people.`,
},
{
title: "How can I contribute to Meshtastic?",
content: "Everyone contributes in a different way. Join the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) and introduce yourself. We're all very friendly. If you'd like to pitch in some code, check out the [Development](/docs/developers) menu on the left. If you'd like to contribute financially, please visit our page on [Open Collective](https://opencollective.com/meshtastic) or you may choose to [sponsor a developer](https://github.com/sponsors/meshtastic). Check out [Contributing](/docs/contributing/) for more details.",
},
],
"android": [
{
title: "What versions of Android does the Meshtastic Android App require?",
content: `Minimum requirement is Android 5 (Lollipop 2014, first BLE support), however at least Android 6 (Marshmallow 2015) is recommended as Bluetooth is more stable. While Android 5/6 are officially supported by Meshtastic, it is _not_ recommended that you purchase devices with these versions due to their limited OS support and limited battery life due to age. Many newer models exist that are very affordable. A good resource to use when researching affordable devices is the [LineageOS Supported Devices List](https://wiki.lineageos.org/devices/).`,
},
{
title: "What does the icon next to the message mean?",
content: `
- Cloud with an up arrow - Queued on the app to be sent to your device.
- Cloud only - Queued on the device to be sent over the mesh.
- Cloud with a check mark - At least one other node on the mesh acknowledged the message.
- Person with a check mark - The intended recipient of your direct message acknowledged the message.
- Cloud crossed out - Not acknowledged or message error.`,
},
{
title: "How can I clear the message history?",
content: `Long press any message to select and show the menu with "delete" and "select all" buttons.`,
},
{
title: "After a fresh firmware install, my node is not connecting via Bluetooth. What should I do?",
content: `Try forgetting the Bluetooth connection from the Android Bluetooth Settings menu. Re-pair and try again. This is a security measure and there is no workaround for it. It prevents apps and other accessories from spoofing an existing accessory by un-pairing and "re-pairing" themselves without the users' knowledge.`,
},
],
"apple": [
{
title: "What version of iOS/iPadOS/macOS does the Meshtastic App Require?",
content: `The Meshtastic App on Apple Clients require the following minimum OS versions: iOS 16.2, iPadOS 16.2, and macOS 13.`,
},
{
title: "How do I get the Apple Meshtastic App?",
content: `See [Apple Apps](/docs/software/apple/installation)`,
},
{
title: "After a fresh firmware install, my node is not connecting via Bluetooth. What should I do?",
content: `Try forgetting the Bluetooth connection from the iOS/iPadOS/macOS System Settings. Re-pair and try again. This is a security measure and there is no workaround for it. It prevents apps and other accessories from spoofing an existing accessory by un-pairing and "re-pairing" themselves without the users' knowledge.`,
},
{
title: "Do the Apple applications provide an indication if the message was acknowledged on the mesh?",
content: 'Yes, when the message is sent you will first see a `Waiting to be acknowledged...` status beneath the message. If the message is acknowledged by a node on the mesh this will update to `Acknowledged` in orange, which turns into grey when sending a direct message and the intended recipient acknowledged it. If no nodes have responded it will indicate `Max Retransmission Reached`. If there is an error, the status will update to the appropriate error. Additionally, you can long press on the message and select `Message Details` to view the date/time sent, if ack was received and the time ack was received or the error (if there was one).',
},
],
"channels": [
{
title: "How do I share my Meshtastic Channel with other people?",
content: `Your Meshtastic client (Android, Apple, Web, or Python) will provide you a URL or QR code. You can email, text or print this URL or QR code and share it with people you want to join your Meshtastic Channel.`,
},
],
"python": [
{
title: "How do I find out more about installing (and using) Meshtastic via command line?",
content: `[See our guide here](/docs/software/python/cli/installation).`,
},
{
title: "How do I find out more about using python to interact?",
content: `[See our guide here](/docs/software/python/cli/usage).`,
},
{
title: "What if I'm still having issues on Windows 10?",
content: "It's been reported that `App execution aliases` might conflict with one another and prevent python3 from being able to run properly. There is an example of a fix located [here](https://github.com/meshtastic/Meshtastic-gui-installer/issues/154).",
},
],
"devices": [
{
title: "How do I turn off an ESP32 T-Beam based device?",
content: `Hold down the left PWR button for about 10 seconds and the display should turn off.`,
},
{
title: "How do I turn on an ESP32 T-Beam based device?",
content: `Push the left PWR button for about 1 second.`,
},
{
title: "Functionality of the T-Beam Buttons",
content: `[T-Beam Buttons](/docs/hardware/devices/tbeam/buttons) explained here`,
},
{
title: "Where do I purchase the device hardware?",
content: `Each [supported device](/docs/hardware/devices/index.mdx) has a "Purchase Link".`,
},
{
title: "I have my hardware. How do I install the firmware and any required drivers?",
content: `[See our guide here](/docs/getting-started).`,
},
{
title: "How do I update the firmware to the latest version?",
content: `Updating firmware varies with hardware. See [Flashing Firmware](/docs/getting-started/flashing-firmware).`,
},
{
title: "My device has gone to sleep. Are received messages lost?",
content: `The LoRa radio on the node is still active and will wake up the CPU when the device is sleeping. If your phone is in range, the node will relay any messages your phone may have missed. If you're in range and your device is active, messages have not been lost.`,
},
{
title: "My device has gone to sleep and I can't send any messages.",
content: `Once the node wakes up from sleep, your phone will relay any delayed messages through your node and to the mesh network. Give it a few minutes and it'll do the right thing.`,
},
{
title: "How can I tell the device not to sleep?",
content: `See [Device Power Configuration](/docs/configuration/radio/power) options.`,
},
{
title: "I am in Europe and my device seems to stop transmitting after a while, what is going on?",
content: `Europe has an hourly duty cycle limit of 10% in the frequency band that Meshtastic uses. It might be that you hit this limit if you are sending a lot. You can confirm this by checking whether you see duty cycle limit errors in the serial log, Mesh Log (Apple apps) or Debug Panel (Android).
To limit traffic, you can consider setting the device metrics and position update intervals higher. Alternatively, the device can be configured to override the duty cycle limit, but then you will violate the regulations.`,
},
{
title: "Why does only one RAK Meshtastic Starter kit show up in my node list?",
content: "There was a bug where Meshtastic Starter kits were sent out with the same MAC address. With a single MAC address the devices all report as being the same device. Without the battery connected, flash the starter kit device(s) to any firmware > 1.2.59 and then do a factory reset, disconnect and reconnect the board and run `meshtastic --info`.",
},
],
"ham": [
{
title: "What is the benefit of using a ham license with Meshtastic?",
content: `
If you use your ham radio license with Meshtastic, consider both the privileges and restrictions:
#### Privileges
- Increased Transmit Power
@ -149,46 +144,84 @@ If you use your HAM radio license with Meshtastic, consider both the privileges
- Plain-Text Only
- On amateur radio bands, encryption is illegal. [FCC Part 97.113.A.4](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-B/section-97.113#p-97.113(a)(4))
- Lack of Privacy
- As a HAM operator, it is a requirement that you identify yourself by your call sign periodically when transmitting. Your call sign will be publicly transmitted at least once every 10 minutes at minimum. [FCC Part 97.119.A](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-B/section-97.119#p-97.119(a))
- As a ham operator, it is a requirement that you identify yourself by your call sign periodically when transmitting. Your call sign will be publicly transmitted at least once every 10 minutes at minimum. [FCC Part 97.119.A](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-B/section-97.119#p-97.119(a))
`,
},
{
title: "How do I set my ham call sign?",
content: `
- On Android navigate to Radio configuration -> User and set Long name to your Ham Radio callsign, then activate the slider for 'Licensed amateur radio'.
- On iPhone navigate to Settings -> User and set Long Name to your Ham Radio callsign, then activate the slider for 'Licensed Operator'.
- Instructions for Enabling ham License from the Python CLI can be found [here](/docs/software/python/cli/usage#ham-radio-support).
`,
},
],
"mesh": [
{
title: "Does Meshtastic use LoRaWAN?",
content: `No, Meshtastic uses LoRa peer to peer (p2p), which allows much more flexibility in how LoRa is utilized compared to LoraWan. Our messaging and position updates are far too "random" compared to LoRaWAN requirements.`,
},
{
title: "Will Meshtastic work with (insert LoRa service)",
content: `Meshtastic uses LoRa peer to peer (p2p), which has allowed us to customize how we use the protocol. Likely it will not work with the service you have in mind, but it may be possible to build a bridge between services using MQTT. That will require further development outside the scope of this project to implement.`,
},
{
title: "Can I locate a device via triangulation?",
content: `There is a [community project](https://github.com/a-f-G-U-C/Meshtastic-ZPS) that has worked out how to accomplish this.`,
},
],
"modules": [
{
title: "What are Modules?",
content: `Modules are features that expand the basic device functionality and/or integrate with other services.`,
},
{
title: "What modules do we have available?",
content: `A list of available modules is available [here](/docs/configuration/module).`,
},
{
title: "I'd like to write a module. How do I get started?",
content: `API documentation for creating modules is available [here](/docs/development/device/module-api).`,
},
],
};
### How do I set my HAM call sign?
<FaqStructuredData faqs={Faq} />
- On Android navigate to Radio configuration -> User and set Long name to your Ham Radio callsign, then activate the slider for 'Licensed amateur radio'.
- On iPhone navigate to Settings -> User and set Long Name to your Ham Radio callsign, then activate the slider for 'Licensed Operator'.
- Instructions for Enabling HAM License from the Python CLI can be found [here](/docs/software/python/cli/usage#ham-radio-support).
## Overview
### What if I'm still having issues on Windows 10?
<FaqAccordion rows={Faq.general} />
It's been reported that `App execution aliases` might conflict with one another and prevent python3 from being able to run properly. There is an example of a fix located [here](https://github.com/meshtastic/Meshtastic-gui-installer/issues/154).
## Android Client
<!-- Mesh -->
<FaqAccordion rows={Faq.android} />
## Apple Clients
<FaqAccordion rows={Faq.apple} />
## Channels
<FaqAccordion rows={Faq.channels} />
## Python CLI
<FaqAccordion rows={Faq.python} />
## Devices
<FaqAccordion rows={Faq.devices} />
## Amateur Radio (ham)
Meshtastic can be used by both unlicensed people and licensed HAM operators.
<FaqAccordion rows={Faq.ham} />
## Mesh
### Does Meshtastic use LoRaWAN?
Meshtastic uses LoRa peer to peer (p2p), which allows much more flexibility in how LoRa is utilized. Our messaging and position updates are far too "random" compared to LoRaWAN requirements.
### Will Meshtastic work with (insert LoRa service)
Meshtastic uses LoRa peer to peer (p2p), which has allowed us to customize how we use the protocol. Likely it will not work with the service you have in mind, but it may be possible to build a bridge between services using MQTT. That will require further development outside the scope of this project to implement.
### Can I locate a device via triangulation?
There is a [community project](https://github.com/a-f-G-U-C/Meshtastic-ZPS) that has worked out how to accomplish this.
<!-- Modules -->
<FaqAccordion rows={Faq.mesh} />
## Modules
### What are Modules?
Modules are features that expand the basic device functionality and/or integrate with other services.
### What modules do we have available?
A list of available modules is available [here](/docs/configuration/module).
### I'd like to write a module. How do I get started?
API documentation for creating modules is available [here](/docs/development/device/module-api).
<FaqAccordion rows={Faq.modules} />

View file

@ -3,6 +3,7 @@ title: Introduction
sidebar_label: Introduction
slug: /introduction
sidebar_position: 1
description: "Discover Meshtastic: a community-driven, open-source project using LoRa radios for long-range, off-grid communication."
---
import Link from "@docusaurus/Link";

View file

@ -4,6 +4,7 @@ title: Meshtastic Encryption
sidebar_label: Encryption
slug: /overview/encryption
sidebar_position: 3
description: "Understand Meshtastic's encryption: optional network-wide AES256 security for off-grid communication, ensuring confidentiality against passive eavesdropping."
---

View file

@ -3,6 +3,7 @@ title: Overview
sidebar_label: Overview
slug: /overview
sidebar_position: 2
description: "Discover the basics of Meshtastic's operation, from sending messages via the companion app to the network's intelligent rebroadcast system for extended reach."
---
## How it works

View file

@ -4,6 +4,7 @@ title: Mesh Broadcast Algorithm
slug: /overview/mesh-algo
sidebar_label: Mesh Algorithm
sidebar_position: 2
description: "Discover the Meshtastic Mesh Broadcast Algorithm: a simple, yet effective routing protocol designed for off-grid communication using LoRa technology."
---
## Current Algorithm

View file

@ -4,6 +4,7 @@ title: Radio Settings
slug: /overview/radio-settings
sidebar_label: Radio Settings
sidebar_position: 1
description: "Maximize your Meshtastic device's potential with detailed radio settings instructions, including frequency bands, data rates, and encryption options."
---
import {FrequencyCalculator} from "/src/components/tools/FrequencyCalculator";

View file

@ -4,6 +4,7 @@ title: Range Tests
slug: /overview/range-tests
sidebar_label: Range Tests
sidebar_position: 4
description: "Explore Meshtastic's impressive range achievements with detailed modem settings and device configurations for both ground and air records."
---
import Tabs from "@theme/Tabs";
@ -18,13 +19,15 @@ values={[
<TabItem value="ground">
## Current Ground Record: 254km
#### Ground
##### Current Ground Record: 254km
- **Range:** 254km (158 miles)
- **Record Holders:** _kboxlabs_
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/137)
<h2 id="modem-settings-254">Modem Settings</h2>
<h5 id="modem-settings-254">Modem Settings</h5>
Default Long_Fast
- **Frequency:** 915MHz
@ -32,13 +35,13 @@ Default Long_Fast
- **Spread Factor:** 11
- **Coding Rate:** 4/8
<h2 id="node-a-254">Node A</h2>
<h5 id="node-a-254">Node A</h5>
- **Device:** [RAK4631 Core](https://meshtastic.org/docs/hardware/devices/rak/core-module) with [RAK 5005-O Base Board](https://meshtastic.org/docs/hardware/devices/rak/base-board)
- **Firmware Version:** 2.1.17
- **Antenna:** 902-928MHz 5.8 dBi Slinkdsco Outdoor
<h2 id="node-b-254">Node B</h2>
<h5 id="node-b-254">Node B</h5>
- **Device:** [RAK4631 Core](https://meshtastic.org/docs/hardware/devices/rak/core-module) with [RAK 19003 Mini Base Board](https://meshtastic.org/docs/hardware/devices/rak/base-board)
- **Firmware Version:** 2.1.18
@ -51,26 +54,26 @@ Default Long_Fast
<img src="/img/records/kboxlabs_map.webp" alt="Geographic Locations" />
## Previous Record 166km
##### Previous Record 166km
- **Range:** 166km (103 miles)
- **Record Holder:** _PuzzledPancake_
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/44)
<h2 id="modem-settings-166">Modem Settings</h2>
<h5 id="modem-settings-166">Modem Settings</h5>
- **Frequency:** 868MHz
- **Bandwidth:** 125
- **Spread Factor:** 12
- **Coding Rate:** 4/8
<h2 id="node-a-166">Node A</h2>
<h5 id="node-a-166">Node A</h5>
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
- **Firmware Version:** 1.2
- **Antenna:** [868MHz 5dBi Antenna](https://ivent.co.nz/product/category/1000/868mhz%205dbi%20antenna%20193mm%20black%20sma%20%28m%29/38646)
<h2 id="node-b-166">Node B</h2>
<h5 id="node-b-166">Node B</h5>
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
- **Firmware Version:** 1.2
@ -82,20 +85,22 @@ Default Long_Fast
![Node B](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/1/1c8bd5fc41f7bab925404b657a9c481882de9313_2_1332x1000.jpeg)
<h2>Resources Used</h2>
<h5>Resources Used</h5>
- http://www.heywhatsthat.com
</TabItem>
<TabItem value="air">
## Current Air Record: 206km
#### Air
##### Current Air Record: 206km
- **Range:** 206km (128 miles)
- **Record Holders:** _StarWatcher, CVR, rook, kboxlabs_
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/130)
<h2 id="modem-settings-206">Modem Settings</h2>
<h5 id="modem-settings-206">Modem Settings</h5>
Default Long_Fast
- **Frequency:** 915MHz
@ -103,13 +108,13 @@ Default Long_Fast
- **Spread Factor:** 11
- **Coding Rate:** 4/8
<h2 id="node-a-206">Node A</h2>
<h5 id="node-a-206">Node A</h5>
- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/tbeam)
- **Firmware Version:** 2.1.10
- **Antenna:** Stock Antenna
<h2 id="node-b-206">Node B</h2>
<h5 id="node-b-206">Node B</h5>
- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/tbeam)
- **Firmware Version:** 2.1.10 (modified to place GPS in flight mode)

View file

@ -1,5 +1,5 @@
| Region Code | Description |
| :---------: | :---------------------: |
|:-----------:|:-----------------------:|
| `UNSET` | Unset |
| `US` | United States |
| `EU_433` | European Union 433MHz |
@ -17,6 +17,7 @@
| `UA_868` | Ukraine 868MHz |
| `MY_433` | Malaysia 433MHz |
| `MY_919` | Malaysia 919MHz |
| `SG_923` | Singapore 923MHz |
| `LORA_24` | 2.4 GHz band worldwide |
:::info

View file

@ -30,7 +30,7 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group.
- [Laguna Mesh](https://lagunamesh.com)
- [Mission Viejo Mesh](https://missionviejomesh.org/)
- [Bay Area Mesh](https://canvis.app/z2k8a8)
- [San Diego Mesh](https://discord.gg/HzE248x2)
- [San Diego Mesh](https://discord.gg/k8RputgWgD)
### Colorado
- [Denver Mesh](https://denvermesh.org)
@ -38,5 +38,8 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group.
### Hawaii
- [Hawaii Meshnet](https://www.hawaiimesh.net/)
### Massachusetts
- [Boston Meshnet](https://github.com/Darachnid/Boston-Meshnet)
### Texas
- [Austin Mesh](https://austinmesh.org/)

View file

@ -46,6 +46,7 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
All Ambient Lighting Module config options are available for Android in app version 2.2.3 and higher.
@ -57,6 +58,8 @@ All Ambient Lighting Module config options are available for Android in app vers
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All Ambient Lighting Module config options are available on iOS, iPadOS and macOS app versions 2.2.3 and higher at Settings > Modules > Ambient Lighting
:::
@ -64,6 +67,8 @@ All Ambient Lighting Module config options are available on iOS, iPadOS and macO
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All Ambient Lighting Module config options are available in the python CLI version 2.2.3 and higher.
@ -99,6 +104,8 @@ meshtastic --get ambient_lighting
</TabItem>
<TabItem value="web">
#### Web
:::info
All Ambient Lighting module config options are available in the Web UI.

View file

@ -68,6 +68,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Audio Config options are available for Android.
@ -81,6 +83,8 @@ Audio Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
Audio module config is not available on iOS, iPadOS and macOS.
:::
@ -88,6 +92,8 @@ Audio module config is not available on iOS, iPadOS and macOS.
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All audio module config options are available in the python CLI. Example commands are below:
@ -139,11 +145,13 @@ meshtastic --set audio.bitrate CODEC2_1400
</TabItem>
<TabItem value="web">
#### Web
:::info
All audio module config options are available in the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>
:::warning

View file

@ -86,6 +86,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Canned Message Config options are available for Android.
@ -98,6 +100,8 @@ Canned Message Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All canned message module config options are available on iOS, iPadOS and macOS at Settings > Modules > Canned Messages.
:::
@ -105,6 +109,8 @@ All canned message module config options are available on iOS, iPadOS and macOS
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All canned message module config options are available in the python CLI.
@ -192,11 +198,13 @@ meshtastic --set canned_message.inputbroker_event_press ""
</TabItem>
<TabItem value="web">
#### Web
:::info
All canned message module config options are available in the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>
:::warning

View file

@ -59,6 +59,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
All Detection Sensor Module config options are available for Android in app version 2.2.2 and higher.
@ -70,6 +72,8 @@ All Detection Sensor Module config options are available for Android in app vers
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All Detection Sensor Module config options are available on iOS, iPadOS and macOS app versions 2.2.2 and higher at Settings > Modules > Detection Sensor
:::
@ -77,6 +81,8 @@ All Detection Sensor Module config options are available on iOS, iPadOS and macO
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All Detection Sensor Module config options are available in the python CLI version 2.2.2 and higher.
@ -129,6 +135,8 @@ meshtastic --get detection_sensor
</TabItem>
<TabItem value="web">
#### Web
:::info
All Detection Sensor module config options are available in the Web UI.

View file

@ -63,6 +63,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
External Notification Config options are available for Android.
@ -75,6 +77,8 @@ External Notification Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All external notification module config options are available on iOS, iPadOS and macOS at Settings > Modules > External Notification.
:::
@ -82,6 +86,8 @@ All external notification module config options are available on iOS, iPadOS and
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All external notification module config options are available in the python CLI. Example commands are below:
@ -147,6 +153,8 @@ meshtastic --set external_notification.output_ms 1500
</TabItem>
<TabItem value="web">
#### Web
:::info
All External Notification module config is available for the Web UI.
:::

View file

@ -61,6 +61,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
MQTT Config options are available for Android.
@ -73,6 +75,8 @@ MQTT Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
MQTT Config options are available on iOS, iPadOS and macOS at Settings > Modules > MQTT.
@ -82,6 +86,8 @@ MQTT Config options are available on iOS, iPadOS and macOS at Settings > Modules
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All MQTT module config options are available in the python CLI. Example commands are below:
@ -119,14 +125,16 @@ meshtastic --set mqtt.json_enabled true
meshtastic --set mqtt.json_enabled false
```
</TabItem>
<TabItem value="web">
</TabItem>
<TabItem value="web">
#### Web
:::info
All MQTT module config options are available for the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>
## Connect to the Default Public Server
@ -146,7 +154,9 @@ values={[
<TabItem value="android">
<h3>1. Enable the MQTT Module</h3>
#### Android
##### 1. Enable the MQTT Module
Navigate to: Vertical Ellipsis (3 dots top right) > Radio configuration > MQTT: Turn on the slider for **MQTT enabled** and tap **Send**.
@ -156,13 +166,13 @@ Navigate to: Vertical Ellipsis (3 dots top right) > Radio configuration > MQTT:
[![Client Proxy](/img/modules/mqtt/android_mqtt_proxy_sm.webp)](/img/modules/mqtt/android_mqtt_proxy_encryption.webp)
<h3>2. Enable Channel Uplink & Downlink</h3>
##### 2. Enable Channel Uplink & Downlink
Navigate to: Vertical Ellipsis (3 dots top right) > Radio configuration > Channels > LongFast: Turn on the sliders for **Uplink enabled** and **Downlink enabled**, then tap **Save** and tap **Send**.
[![Channel Settings](/img/modules/mqtt/android_channel_sm.webp)](/img/modules/mqtt/android_channel.webp)
<h3>3. Configure Network Settings</h3>
##### 3. Configure Network Settings
Navigate to: Vertical Ellipsis (3 dots top right) > Radio configuration > Network: Turn on the slider for **WiFi enabled**, Enter the **SSID** and **PSK** for your network, then tap **Send**.
@ -171,7 +181,9 @@ Navigate to: Vertical Ellipsis (3 dots top right) > Radio configuration > Networ
</TabItem>
<TabItem value="apple">
<h3>1. Enable the MQTT Module</h3>
#### Apple
##### 1. Enable the MQTT Module
Navigate to Settings > MQTT: Turn on the slider for MQTT enabled and tap **Save**
@ -182,13 +194,13 @@ Navigate to Settings > MQTT: Turn on the slider for MQTT enabled and tap **Save*
[![Client Proxy](/img/modules/mqtt/apple_mqtt_1_proxy_sm.webp)](/img/modules/mqtt/apple_mqtt_1_proxy_encryption.webp)
<h3>2. Enable Channel Uplink & Downlink</h3>
##### 2. Enable Channel Uplink & Downlink
Navigate to Settings > Channels > Primary Channel: Turn on the sliders for **Uplink enabled** and **Downlink enabled** - Tap **Save**
[![Channel Settings](/img/modules/mqtt/apple_channel_sm.webp)](/img/modules/mqtt/apple_channel.webp)
<h3>3. Configure Network Settings</h3>
##### 3. Configure Network Settings
Navigate to Settings > Network: Turn on the slider for **WiFi enabled** - Enter your **SSID** and **PSK** for your network - Tap **Save**
@ -197,13 +209,15 @@ Navigate to Settings > Network: Turn on the slider for **WiFi enabled** - Enter
</TabItem>
<TabItem value="cli">
<h3>1. Enable the MQTT Module</h3>
#### CLI
##### 1. Enable the MQTT Module
```shell
meshtastic --set mqtt.enabled true
```
<h3>2. Enable Channel Uplink & Downlink</h3>
##### 2. Enable Channel Uplink & Downlink
```shell
meshtastic --ch-set uplink_enabled true --ch-index 0
@ -215,7 +229,7 @@ or chained together:
meshtastic --ch-set uplink_enabled true --ch-index 0 --ch-set downlink_enabled true --ch-index 0
```
<h3>3. Configure Network Settings</h3>
##### 3. Configure Network Settings
```shell
meshtastic --set network.wifi_enabled true
@ -231,7 +245,9 @@ meshtastic --set network.wifi_enabled true --set network.wifi_ssid "your network
</TabItem>
<TabItem value="web">
<h3>1. Enable the MQTT Module</h3>
#### Web
##### 1. Enable the MQTT Module
Navigate to Config > Module Config > MQTT - Turn on the slider for MQTT enabled - Click the **Save** icon.
@ -248,13 +264,13 @@ Though this option may be visible in your UI, Client Proxy is not yet functional
:::
<h3>2. Enable Channel Uplink & Downlink</h3>
##### 2. Enable Channel Uplink & Downlink
Navigate to Channels > Primary: Turn on the sliders for **Uplink Enabled** and **Downlink Enabled** - Click the **Save** icon.
[![Channel Settings](/img/modules/mqtt/web_channel_sm.webp)](/img/modules/mqtt/web_channel.webp)
<h3>3. Configure Network Settings</h3>
##### 3. Configure Network Settings
Navigate to Radio Config > Device > Network: Turn on the slider for **Enabled** - Enter your **SSID** and **PSK** for your network - Click the **Save** icon.

View file

@ -37,6 +37,7 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
All Neighbor Info Module config options are available for Android in app version 2.2.0 and higher.
@ -48,6 +49,8 @@ All Neighbor Info Module config options are available for Android in app version
</TabItem>
<TabItem value="apple">
#### Apple
Not yet implemented.
</TabItem>

View file

@ -34,6 +34,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
No Paxcounter Module config options are available for Android.
:::
@ -41,6 +43,8 @@ No Paxcounter Module config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
No Paxcounter Module config options are available on the iOS, iPadOS and macOS app.
:::
@ -48,6 +52,8 @@ No Paxcounter Module config options are available on the iOS, iPadOS and macOS a
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All Paxcounter Module config options are available in the python CLI version 2.2.16 and higher.
@ -71,6 +77,8 @@ meshtastic --get paxcounter
</TabItem>
<TabItem value="web">
#### Web
:::info
No Paxcounter module config options are available in the Web UI.

View file

@ -67,6 +67,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Range Test Config options are available for Android.
@ -81,6 +83,8 @@ Android also had the option to download a rangetest.csv file which is stored on
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All range test module config options are available on iOS, iPadOS and macOS at Settings > Modules > Range Test.
:::
@ -90,6 +94,8 @@ Apple apps also have the option to download logged position data which is stored
</TabItem>
<TabItem value="cli">
#### CLI
:::info
Range Test module config options are available in the python CLI. Example commands are below:
@ -133,6 +139,8 @@ meshtastic --set range_test.sender 0
</TabItem>
<TabItem value="web">
#### Web
:::info
All range test module config options are available in the Web UI.

View file

@ -34,6 +34,7 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
All Remote Hardware Module config options are available for Android in app.
@ -45,6 +46,8 @@ All Remote Hardware Module config options are available for Android in app.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All Remote Hardware Module config options are available on iOS, iPadOS and macOS app.and higher at Settings > Modules > Remote Hardware
:::
@ -52,6 +55,8 @@ All Remote Hardware Module config options are available on iOS, iPadOS and macOS
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All Remote Hardware Module config options are available in the python CLI.
@ -61,6 +66,8 @@ All Remote Hardware Module config options are available in the python CLI.
</TabItem>
<TabItem value="web">
#### Web
Not implemented.
</TabItem>

View file

@ -79,6 +79,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Serial Module Config options are available for Android.
@ -91,6 +93,8 @@ Serial Module Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All serial module config options are available on iOS, iPadOS and macOS at Settings > Modules > Serial.
:::
@ -98,6 +102,8 @@ All serial module config options are available on iOS, iPadOS and macOS at Setti
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All serial module config options are available in the python CLI. Example commands are below:
@ -161,6 +167,8 @@ meshtastic --set serial.timeout 15
</TabItem>
<TabItem value="web">
#### Web
:::info
All serial module config options are available in the Web UI.
:::

View file

@ -7,19 +7,20 @@ sidebar_label: Store & Forward
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
:::info
Currently only available for ESP32 based devices with external PSRAM like the tbeam. Requires the device to be set as a ROUTER or ROUTER_CLIENT.
:::
## Overview
:::caution
This is a work in progress and the required client support is not yet available.
Using this module, a client device can ask a special Store & Forward Router to resend text messages after the client has been temporarily not in LoRa range of the mesh.
:::info
Only ESP32 based devices with onboard PSRAM like the T-Beam and T3S3 can be a Store & Forward Router. Requires the device to use at least firmware version 2.2.23 and to be set as a `ROUTER` or `ROUTER_CLIENT`.
:::
The Store & Forward Module is an implementation of a Store and Forward system to enable resilient messaging in the event that a client device is disconnected from the main network.
When a client device requests the history from the Store & Forward Router, the router will resend the text messages over LoRa that it has received. The router will only return messages that are within the time window the client has requested up to the maximum number of messages configured for the router.
The router does not know which messages the client device actually missed, so it is possible that you receive duplicates.
Because of the increased network traffic for this overhead, it's not advised to use this if you are duty cycle limited for your airtime usage (EU_868 and EU_433) nor is it advised to use this for presets using SF11 or SF12 (e.g. all of the LongRange and VeryLongRange presets).
:::important
Be mindful when requesting the history, as the router might send a lot of messages which will burden your mesh for a short period of time.
:::
## Details
@ -29,28 +30,22 @@ Because of the increased network traffic for this overhead, it's not advised to
### Requirements
Initial Requirements:
Initial requirements for the Store and Forward Router:
- Must be installed on a ROUTER or ROUTER_CLIENT node.
- Must be installed on a `ROUTER` or `ROUTER_CLIENT` node.
- This is an artificial limitation, but is in place to enforce best practices.
- Router nodes are intended to be always online. If this module misses any messages, the reliability of the stored messages will be reduced.
- ESP32 Processor based device with external PSRAM. (tbeam > v1.0, T3S3, and maybe others)
- ESP32 Processor based device with onboard PSRAM (T-Beam > v1.0, T3S3, and maybe others).
### Usage Overview
- To use / test this you will want at least 3 devices
- One ESP32 device with PSRAM configured as a Meshtastic router.
- Two others will be regular clients. Nothing special required.
### Meshtastic channel configuration
Don't use this on the "LongRange" channel settings. You're welcome to try and report back, but those channels have a [low bitrate](/docs/overview/radio-settings#presets).
Either use a custom channel configuration with at an at least 1kbit data rate or use a Medium or Short range preset.
- One ESP32 device with PSRAM configured as `ROUTER` or `ROUTER_CLIENT`.
- Two others will be regular clients. If one client sends a text message when the other is not in range, the other can request the history from the router to receive the missed message when it is back in range.
### Router setup
- Configure your device as a router.
- Configure your device as a `ROUTER` or `ROUTER_CLIENT`.
- Name your router node something that makes it easily identifiable, aka "Router".
- Configure the Store and Forward module
@ -58,17 +53,18 @@ Either use a custom channel configuration with at an at least 1kbit data rate or
meshtastic --set store_forward.enabled true
```
```shell title="Optional - Set maximum number of records to save to device"
meshtastic --set store_forward.records 100
```shell title="Optional - Disable sending heartbeat."
meshtastic --set store_forward.heartbeat false
```
:::tip
Best to leave `store_forward.records` at the default (`0`) where the module will use 2/3 of your device's available PSRAM. This is about 11,000 records.
Best to disable the heartbeat (which is sent every 15 minutes) when all client devices have identified the router to reduce network traffic.
:::
### Client Usage
Currently there are no clients that support store and forward.
Currently implemented in the Android and Apple apps version 2.2.23 and higher. To request the history from the Store & Forward Router, for Android it is required to send it a direct message containing the text "SF" (without quotes). The router will then respond with the requested messages.
The Apple apps will also show whether a node is a Store & Forward Router in the node list after it heard the heartbeat. You can then long press the node and select "Client History" to request the history from the router.
## Settings
@ -82,7 +78,7 @@ The Store & Forward Router sends a periodic message onto the network. This allow
### History Return Max
Sets the maximum number of messages to return to a client device.
Sets the maximum number of messages to return to a client device when it requests the history.
### History Return Window
@ -90,7 +86,7 @@ Limits the time period (in minutes) a client device can request.
### Records
Set this to the maximum number of records to save. Best to leave this at the default (`0`) where the module will use 2/3 of your device's available PSRAM. This is about 11,000 records.
Set this to the maximum number of records the router will save. Best to leave this at the default (`0`) where the module will use 2/3 of your device's available PSRAM. This is about 11,000 records.
### Client Config
@ -106,6 +102,8 @@ values={[
<TabItem value="android">
#### Android
:::info
Store and Forward Config options are available for Android.
@ -117,6 +115,8 @@ Store and Forward Config options are available for Android.
<TabItem value="apple">
#### Apple
:::info
Store and Forward configuration is not currently available via the Apple clients.
:::
@ -125,13 +125,15 @@ Store and Forward configuration is not currently available via the Apple clients
<TabItem value="cli">
#### CLI
| Setting | Acceptable Values | Default |
| :---------------------------------: | :---------------: | :-----: |
| store_forward.enabled | `true`, `false` | `false` |
| store_forward.heartbeat | `true`, `false` | `false` |
| store_forward.history_return_max | `integer` | `0` |
| store_forward.history_return_window | `integer` | `0` |
| store_forward.records | `integer` | `0` |
| store_forward.history_return_max | `integer` | `0` (25 messages) |
| store_forward.history_return_window | `integer` | `0` (240 minutes) |
| store_forward.records | `integer` | `0` (≈11,000 records) |
:::tip
@ -143,7 +145,7 @@ meshtastic --set store_forward.enabled true --set store_forward.history_return_m
:::
### Examples of CLI Usage
##### Examples of CLI Usage
```shell title="Enable the module"
meshtastic --set store_forward.enabled true
@ -158,14 +160,14 @@ meshtastic --set store_forward.heartbeat 0
```
```shell title="Set store_forward.history_return_max to default"
```shell title="Set store_forward.history_return_max to default (25 messages)"
meshtastic --set store_forward.history_return_max 0
```
```shell title="Set store_forward.history_return_max to 100 messages"
meshtastic --set store_forward.history_return_max 100
```
```shell title="Set store_forward.history_return_window to default"
```shell title="Set store_forward.history_return_window to default (240 minutes)"
meshtastic --set store_forward.history_return_window 0
```
```shell title="Set store_forward.history_return_window to 1 day (1440 minutes)"
@ -183,6 +185,8 @@ meshtastic --set store_forward.records 100
<TabItem value="web">
#### Web
:::info
Store and Forward configuration is not currently available via the web client.
:::

View file

@ -83,6 +83,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Telemetry Config options are available for Android.
@ -95,6 +97,8 @@ Telemetry Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All telemetry module config options are available on iOS, iPadOS and macOS at Settings > Module Configuration > Telemetry.
@ -103,6 +107,8 @@ All telemetry module config options are available on iOS, iPadOS and macOS at Se
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All telemetry module config options are available in the python CLI. Example commands are below:
@ -157,6 +163,8 @@ meshtastic --set telemetry.environment_display_fahrenheit false
</TabItem>
<TabItem value="web">
#### Web
:::info
All telemetry module config options are available in the Web UI.

View file

@ -28,6 +28,8 @@ values={[
]}>
<TabItem value="android">
#### Android
Make sure the app is at least version 2.1.10.
Under the node list, long hold a destination node and select 'Traceroute' to send the request. Depending on the amount of hops that is needed, this might take a while. The result will be shown using a pop-up.
@ -35,6 +37,8 @@ Under the node list, long hold a destination node and select 'Traceroute' to sen
</TabItem>
<TabItem value="apple">
#### Apple
Make sure the app is at least version 2.0.9.
Under Contacts > Direct Messages, long hold a destination node and select 'Trace Route' to send the request. Depending on the amount of hops that is needed, this might take a while. The result will be shown in the Mesh Log.
@ -42,6 +46,8 @@ Under Contacts > Direct Messages, long hold a destination node and select 'Trace
</TabItem>
<TabItem value="cli">
#### CLI
Make sure the CLI is at least version 2.0.6. Then use this command:
```shell title="CLI traceroute command"
@ -63,6 +69,8 @@ The first ID shown is the device you are connected to with the CLI. As you can s
</TabItem>
<TabItem value="web">
#### Web
Not yet implemented.
</TabItem>

View file

@ -51,6 +51,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
All Bluetooth config options are available for Android.
@ -63,6 +65,8 @@ All Bluetooth config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All Bluetooth config values are available on iOS, iPadOS and macOS.
@ -75,6 +79,8 @@ All Bluetooth config values are available on iOS, iPadOS and macOS.
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All Bluetooth module config options are available in the python CLI. Example commands are below:
@ -107,8 +113,10 @@ meshtastic --set bluetooth.mode FIXED_PIN
meshtastic --set bluetooth.fixed_pin 111111
```
</TabItem>
<TabItem value="web">
</TabItem>
<TabItem value="web">
#### Web
:::info
@ -119,5 +127,5 @@ All Bluetooth module config options are available for the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>

View file

@ -118,6 +118,8 @@ values={[
<TabItem value="android">
#### Android
:::info
Channel Config options are available on Android.
:::
@ -143,6 +145,8 @@ Tap the Channel Name (or the pen icon) to access the Channel Menu:
<TabItem value="apple">
#### Apple
:::info
Channel settings are only available on Apple platforms by scanning QR codes.
:::
@ -151,6 +155,8 @@ Channel settings are only available on Apple platforms by scanning QR codes.
<TabItem value="cli">
#### CLI
:::info
All Channel config options are available in the python CLI. Example commands are below:
:::
@ -165,7 +171,7 @@ meshtastic --ch-set name "My Channel" --ch-set psk random --ch-set uplink_enable
:::
### Name
##### Name
```shell title="Set channel name for the PRIMARY channel"
# without spaces
@ -174,7 +180,7 @@ meshtastic --ch-set name MyChannel --ch-index 0
meshtastic --ch-set name "My Channel" --ch-index 0
```
### PSK
##### PSK
If you use Meshtastic for exchanging messages you don't want other people to see, `random` is the setting you should use. Selecting `default` or any of the `simple` values from the following table will use publicly known encryption keys. They're shipped with Meshtastic source code and thus, anyone can listen to messages encrypted by them. They're great for testing and public channels.
@ -213,7 +219,7 @@ Use this to copy and paste the `base64` encoded (single channel) key from the me
meshtastic --ch-set psk none --ch-index 0
```
### Uplink / Downlink
##### Uplink / Downlink
For configuring gateways, please see [MQTT](/docs/configuration/module/mqtt)
@ -231,6 +237,8 @@ meshtastic --ch-set downlink_enabled false --ch-index 5
<TabItem value="web">
#### Web
:::info
All Channel config options are available in the Web UI.
:::

View file

@ -11,24 +11,20 @@ The device config options are: Role, Serial Output, and Debug Log. Device config
## Device Config Values
### Role
Sets the role of the node.
Acceptable values:
| Value | Description |
|:----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| `CLIENT` | Client (default) - This role will follow the standard routing rules while also allowing the device to interact with client applications via BLE/Wi-Fi (Android/Apple/Web). |
| `CLIENT_MUTE` | Client Mute - Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh. |
| `ROUTER` | Router - Mesh packets will prefer to be routed over this node. The assumption is that Router-type devices will be placed in locations with a height/range/antenna advantage, and therefore have better overall coverage. This node will not be used by client apps. The BLE/Wi-Fi radios and the OLED screen will be put to sleep. Please note: Due to the preferred routing, this role may cause higher power usage due to more frequent transmission. |
| `ROUTER_CLIENT` | Router Client - Hybrid of the Client and Router roles. Similar to Router, except the Router Client can be used as both a Router and an app connected Client. BLE/Wi-Fi and OLED screen will not be put to sleep. |
| `REPEATER` | Repeater - Mesh packets will prefer to be routed over this node. This role eliminates unnecessary overhead such as NodeInfo, DeviceTelemetry, and any other mesh packet, resulting in the device not appearing as part of the network. As such, direct messaging this node is not available, as it will not appear in your nodes list which results in a cleaner mesh network. Channel and modem settings of the mesh packets being repeated must be identical to the repeater's configuration. Please see Rebroadcast Mode for additional settings specific to this role. |
| `TRACKER` | Tracker - For use with devices intended as a GPS tracker. Position packets sent from this device will be higher priority. Smart Position Broadcast will default to the currently configured settings. When used in conjunction with power.is_power_saving = true, nodes will wake up, send position, and then sleep for position.position_broadcast_secs seconds. |
| `SENSOR` | Sensor - For use with devices intended to primarily collect sensor readings. Telemetry packets sent from this device will be higher priority, broadcasting every five minutes. When used in conjunction with power.is_power_saving = true, nodes will wake up, send environment telemetry, and then sleep for telemetry.environment_update_interval seconds. |
| `TAK` | TAK - Used for nodes dedicated for connection to an ATAK EUD. Turns off many of the routine broadcasts to favor CoT packet stream from the Meshtastic ATAK plugin -> IMeshService -> Node. |
| `CLIENT_HIDDEN` | Client Hidden - Used for nodes that "only speak when spoken to." Turns off all of the routine broadcasts but allows for ad-hoc communication. Still rebroadcasts, but with local only rebroadcast mode (known meshes only). Can be used for clandestine operation or to dramatically reduce airtime / power consumption |
| `LOST_AND_FOUND` | Lost and Found - Used to automatically send a text message with current position at frequent intervals to the primary channel for the device: "I'm lost! Position: lat / long" |
### Roles
| Device Role | Description | Best Uses |
| -------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| CLIENT | App connected or stand alone messaging device. | General use for individuals needing to communicate over the Meshtastic network with support for client applications. |
| CLIENT_MUTE | Device that does not forward packets from other devices. | Situations where a device needs to participate in the network without assisting in packet routing, reducing network load. |
| CLIENT_HIDDEN | Device that only broadcasts as needed for stealth or power savings. | Use in stealth/hidden deployments or to reduce airtime/power consumption while still participating in the network. |
| TRACKER | Broadcasts GPS position packets as priority. | Tracking the location of individuals or assets, especially in scenarios where timely and efficient location updates are critical. |
| LOST_AND_FOUND | Broadcasts location as message to default channel regularly for to assist with device recovery. | Used for recovery efforts of a lost device. |
| SENSOR | Broadcasts telemetry packets as priority. | Deploying in scenarios where gathering environmental or other sensor data is crucial, with efficient power usage and frequent updates. |
| TAK | Optimized for ATAK system communication, reduces routine broadcasts. | Integration with ATAK systems (via the Mesthastic ATAK Plugin) for communication in tactical or coordinated operations. |
| TAK_TRACKER | Enables automatic TAK PLI broadcasts and reduces routine broadcasts. | Standalone PLI integration with ATAK systems for communication in tactical or coordinated operations. |
| REPEATER | Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is not shown in topology. |
| ROUTER | Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is shown in topology. |
| ROUTER_CLIENT | Combination of both ROUTER and CLIENT. Not for mobile devices. | Devices in a strategic position for priority routing that need to also serve as a standard CLIENT. |
#### Role Comparison
@ -42,7 +38,8 @@ This table shows the **default** values after selecting a preset. As always, ind
| TRACKER | Yes | No | Regular | No | No | Yes |
| LOST_AND_FOUND | Yes | No | Regular | No | No | Yes |
| SENSOR | Yes | No | High | No | No | Yes |
| TAK | Yes | Optional | Low | Yes | No | Yes |
| TAK | Yes | Optional | Regular | Yes | No | Yes |
| TAK_TRACKER | Yes | Optional | Regular | Yes | No | Yes |
| ROUTER | No | No | High | Yes | Yes | Yes |
| ROUTER_CLIENT | Yes | Yes | Highest | Yes | Yes | Yes |
| REPEATER | Yes | No | High | Yes | Yes | No |
@ -104,6 +101,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Device Config is available for Android.
@ -116,6 +115,8 @@ Device Config is available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All device config options other than NTP Server are available on iOS, iPadOS and macOS at Settings > Radio Configuration > Device.
:::
@ -123,6 +124,8 @@ All device config options other than NTP Server are available on iOS, iPadOS and
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All device config options are available in the python CLI. Example commands are below:
@ -166,9 +169,11 @@ meshtastic --set device.debug_log_enabled true
</TabItem>
<TabItem value="web">
#### Web
:::info
All device config options are available in the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>

View file

@ -84,6 +84,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Display Config is available for Android.
@ -96,6 +98,8 @@ Display Config is available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All display config options are available on iOS, iPadOS and macOS at Settings > Radio Configuration > Display.
:::
@ -103,6 +107,8 @@ All display config options are available on iOS, iPadOS and macOS at Settings >
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All display config options are available in the python CLI. Example commands are below:
@ -150,9 +156,11 @@ meshtastic --set display.gps_format UTM
</TabItem>
<TabItem value="web">
#### Web
:::info
All display config options are available in the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>

View file

@ -51,7 +51,7 @@ The Presets available are as follows, and follow a linear pattern of Fastest \<\
7. `LONG_SLOW`
8. `VERY_LONG_SLOW` (Slowest, lowest bandwidth, highest airtime, longest range)
8. `VERY_LONG_SLOW` (Slowest, lowest bandwidth, highest airtime, longest range. Not recommended for regular usage as does not form meshes well and is unreliable)
### Max Hops
@ -141,6 +141,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
LoRa Config options are available on Android.
@ -153,6 +155,8 @@ LoRa Config options are available on Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
Configuration of Region, Modem Preset, Transmit Enabled, Hop Limit, Channel Number and RX Boosted gain is available on iOS, iPadOS and macOS at Settings > Radio Configuration > LoRa.
:::
@ -160,29 +164,31 @@ Configuration of Region, Modem Preset, Transmit Enabled, Hop Limit, Channel Numb
</TabItem>
<TabItem value="cli">
#### CLI
:::info
LoRa config commands are available in the python CLI. Example commands are below:
:::
| Setting | Acceptable Values | Default |
|:---------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------:|
| lora.modem_preset | `LONG_FAST`, `LONG_SLOW`, `VERY_LONG_SLOW`, `MEDIUM_SLOW`, `MEDIUM_FAST`, `SHORT_SLOW`, `SHORT_FAST` | `LONG_FAST`, `LONG_MODERATE` |
| lora.use_preset | `false`, `true` | `false` |
| lora.region | `UNSET`, `US`, `EU_433`, `EU_868`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU` ,`IN`, `NZ_865`, `TH`, `LORA_24`, `UA_433`, `UA_868`, `MY_433`, `MY_919` | `UNSET` |
| lora.bandwidth | `31`, `62`, `125`, `250`, `500` | `250` |
| lora.spread_factor | `7`, `8`, `9`, `10`, `11`, `12` | `12` |
| lora.coding_rate | `5`, `6`, `7`, `8` | `8` |
| lora.frequency_offset | `0` to `1000000` | `0` |
| lora.hop_limit | `1`,`2`,`3`,`4`,`5`,`6`,`7` | `3` |
| lora.tx_power | `0` to `30` | `0` |
| lora.tx_enabled | `false`, `true` | `true` |
| lora.channel_num | `0`, `1` to `NUM_CHANNELS` | `0` |
| lora.ignore_mqtt | `false`, `true` | `false` |
| lora.override_duty_cycle | `false`, `true` | `false` |
| lora.sx126x_rx_boosted_gain | `false`, `true` | `false` |
| lora.override_frequency | Any supported frequency the LoRA radio is capable of. Please respect local rules and regulations | `0` |
| Setting | Acceptable Values | Default |
|:---------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------:|
| lora.modem_preset | `LONG_FAST`, `LONG_SLOW`, `VERY_LONG_SLOW`, `MEDIUM_SLOW`, `MEDIUM_FAST`, `SHORT_SLOW`, `SHORT_FAST` | `LONG_FAST`, `LONG_MODERATE` |
| lora.use_preset | `false`, `true` | `false` |
| lora.region | `UNSET`, `US`, `EU_433`, `EU_868`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU` ,`IN`, `NZ_865`, `TH`, `LORA_24`, `UA_433`, `UA_868`, `MY_433`, `MY_919`, `SG_923` | `UNSET` |
| lora.bandwidth | `31`, `62`, `125`, `250`, `500` | `250` |
| lora.spread_factor | `7`, `8`, `9`, `10`, `11`, `12` | `12` |
| lora.coding_rate | `5`, `6`, `7`, `8` | `8` |
| lora.frequency_offset | `0` to `1000000` | `0` |
| lora.hop_limit | `1`,`2`,`3`,`4`,`5`,`6`,`7` | `3` |
| lora.tx_power | `0` to `30` | `0` |
| lora.tx_enabled | `false`, `true` | `true` |
| lora.channel_num | `0`, `1` to `NUM_CHANNELS` | `0` |
| lora.ignore_mqtt | `false`, `true` | `false` |
| lora.override_duty_cycle | `false`, `true` | `false` |
| lora.sx126x_rx_boosted_gain | `false`, `true` | `false` |
| lora.override_frequency | Any supported frequency the LoRA radio is capable of. Please respect local rules and regulations | `0` |
:::tip
@ -217,9 +223,11 @@ meshtastic --set lora.override_duty_cycle false
</TabItem>
<TabItem value="web">
#### Web
:::info
All LoRa config options are available in the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>

View file

@ -73,6 +73,8 @@ values={[
<TabItem value="android">
#### Android
:::info
Network Config options are available for Android.
@ -86,6 +88,8 @@ Network Config options are available for Android.
<TabItem value="apple">
#### Apple
:::info
Network config options are available on iOS, iPadOS and macOS.
@ -96,6 +100,8 @@ Network config options are available on iOS, iPadOS and macOS.
<TabItem value="cli">
#### CLI
:::info
All Network config options are available in the python CLI.
@ -147,6 +153,8 @@ meshtastic --set network.wifi_psk "my password"
<TabItem value="web">
#### Web
:::info
All Network config options are available in the Web UI.
:::

View file

@ -102,6 +102,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Position Config options are available for Android.
@ -114,6 +116,8 @@ Position Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
All position config values are available on iOS, iPadOS and macOS at Settings > Radio Configuration > Position.
:::
@ -121,6 +125,8 @@ All position config values are available on iOS, iPadOS and macOS at Settings >
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All Position config commands are available in the python CLI. Example commands are below:
@ -199,6 +205,8 @@ meshtastic --pos-fields UNSET
</TabItem>
<TabItem value="web">
#### Web
:::info
All position config options are available in the Web UI.
:::

View file

@ -38,7 +38,7 @@ Should be set to floating point value between 2 and 6
#### Calibration Process ([Attribution](https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer#calibration-process))
1. Install the rechargeable Li-Polymer battery.
1. Install the rechargeable battery.
2. Charge the battery until full. Indication of this state may vary depending on device. At this point, the battery voltage should be 4.2V +-1%.
3. Input the "Battery Charge Percent" displayed on the screen or in your connected app into the calculator below.
4. If "Battery Charge Percent" (e.g., B 3.82V 60%) is not displayed on the screen, it means that the default value of "Operative Adc Multiplier" is too high. Lower the "Operative Adc Multiplier" to a smaller number (it is recommended to decrease by 0.1) until the screen displays "Battery Charge Percent". Enter the current "Operative Adc Multiplier" in use into the "Operative Adc Multiplier" field in the calculator. Also, input the "Battery Charge Percent" displayed on the screen into the calculator.
@ -127,6 +127,8 @@ values={[
]}>
<TabItem value="android">
#### Android
:::info
Power Config options are available for Android.
@ -139,6 +141,8 @@ Power Config options are available for Android.
</TabItem>
<TabItem value="apple">
#### Apple
:::info
Power config is not available on Apple OS's.
@ -147,6 +151,8 @@ Power config is not available on Apple OS's.
</TabItem>
<TabItem value="cli">
#### CLI
:::info
All Power config options are available in the python CLI.
@ -201,9 +207,11 @@ meshtastic --set power.min_wake_secs 120
</TabItem>
<TabItem value="web">
#### Web
:::info
All power config options are available in the Web UI.
:::
</TabItem>
</TabItem>
</Tabs>

View file

@ -27,7 +27,7 @@ Auto-generated by default.
### Is Licensed (HAM)
If you are a licensed HAM operator and have considered the [privileges and restrictions](/docs/faq#what-is-the-benefit-of-using-a-ham-license-with-meshtastic) of using Meshtastic with a HAM license, enable this flag.
If you are a licensed HAM operator and have considered the [privileges and restrictions](/docs/faq/#amateur-radio-ham) of using Meshtastic with a HAM license, enable this flag.
Disabled by default.
@ -48,6 +48,8 @@ values={[
<TabItem value="android">
#### Android
:::info
All User config options are available for Android.
@ -61,6 +63,8 @@ All User config options are available for Android.
<TabItem value="apple">
#### Apple
:::info
All User config options are available on iOS, iPadOS and macOS at `Settings > Radio Configuration > User`.
:::
@ -69,6 +73,8 @@ All User config options are available on iOS, iPadOS and macOS at `Settings > Ra
<TabItem value="cli">
#### CLI
:::info
All User config options are available in the python CLI. Example commands are below:
@ -103,6 +109,8 @@ meshtastic --set-ham 'CALLSIGN'
<TabItem value="web">
#### Web
:::info
All User config options are available in the Web UI.
:::

View file

@ -33,9 +33,9 @@ If you'd like to connect with other Meshtastic users but only share your locatio
### Default Primary Channels by Region
| US | EU_433 | EU_868 | CN | JP | ANZ | KR | TW | RU | IN | NZ_865 | TH | UA_433 | UA_868 | MY_433 | MY_919 | LORA_24 |
| :--: | :----: | :----: | :--: | :-: | :--: | :--: | :--: | :--: | :--: | :----: | :--: | :----: | :----: | :----: | :----: | :-----: |
| 20 | 4 | 1 | 36 | 20 | 20 | 12 | 16 | 2 | 4 | 4 | 16 | 6 | 2 | 4 | 16 | 6 |
| US | EU_433 | EU_868 | CN | JP | ANZ | KR | TW | RU | IN | NZ_865 | TH | UA_433 | UA_868 | MY_433 | MY_919 | SG_923 | LORA_24 |
|:--:|:------:|:------:|:--:|:--:|:---:|:--:|:--:|:--:|:--:|:------:|:--:|:------:|:------:|:------:|:------:|:------:|:-------:|
| 20 | 4 | 1 | 36 | 20 | 20 | 12 | 16 | 2 | 4 | 4 | 16 | 6 | 2 | 4 | 16 | 4 | 6 |
To quickly test this configuration, find and scan your region's QR from [this repository](https://github.com/meshtastic/meshtastic/tree/master/static/img/configuration/qr-private-primary-example/). Remember to generate a new PSK for your private channel before sharing with your trusted nodes.

View file

@ -39,7 +39,7 @@ cd ~/meshtastic
### Install Dependencies
```shell title="Install dependencies using Yarn"
```shell title="Install dependencies using pnpm"
pnpm i
```

View file

@ -88,15 +88,19 @@ values={[
{label: 'Web', value: 'web'},
]}>
<TabItem value="cli">
#### CLI (Required for accessibility)
CLI content here
</TabItem>
<TabItem value="android">
#### Android (Required for accessibility)
Android content here
</TabItem>
<TabItem value="iOS">
#### iOS (Required for accessibility)
iOS content here
</TabItem>
<TabItem value="web">
#### Web (Required for accessibility)
Web content here
</TabItem>
</Tabs>

View file

@ -35,6 +35,8 @@ values={[
]}>
<TabItem value="linux">
#### Linux
Check if you have `python3` and `pip` installed with the following command
```shell
@ -58,6 +60,8 @@ sudo apt-get install python3-pip
</TabItem>
<TabItem value="macos">
#### macOS
OS X comes with `Python 2.7` installed, but not `pip`. The following uses Homebrew to install `python3` which includes `pip3`. On MacOS you will use `pip3` instead > of `pip`.
:::note
@ -93,6 +97,8 @@ pip3 -v
</TabItem>
<TabItem value="windows">
#### Windows
- Download and install [Python](https://www.python.org). When installing, make sure to click `Add Python X.Y to PATH`.
- Download and install [Gitbash](https://gitforwindows.org) (or other appropriate shell) and run all subsequent commands from that shell.
@ -130,6 +136,8 @@ values={[
]}>
<TabItem value="linux">
#### Linux
:::important
On Linux, you may need to explicitly declare esptool as a .py script. Use `esptool.py chip_id`.
:::
@ -137,6 +145,8 @@ On Linux, you may need to explicitly declare esptool as a .py script. Use `espto
</TabItem>
<TabItem value="macos">
#### macOS
:::important
On macOS, you may need to explicitly declare esptool as a .py script. Use `esptool.py chip_id`.
:::
@ -144,6 +154,8 @@ On macOS, you may need to explicitly declare esptool as a .py script. Use `espto
</TabItem>
<TabItem value="windows">
#### Windows
:::important
On Windows, you must explicitly declare esptool as a .py script. Use `esptool.py chip_id`.
:::
@ -202,13 +214,15 @@ values={[
]}>
<TabItem value="linux">
#### Install
#### Linux
##### Install
```shell title="Command"
./device-install.sh -f firmware-BOARD-VERSION.bin
```
#### Update
##### Update
```shell title="Command"
./device-update.sh -f firmware-BOARD-VERSION.bin
@ -217,13 +231,15 @@ values={[
</TabItem>
<TabItem value="macos">
#### Install
#### macOS
##### Install
```shell title="Command"
./device-install.sh -f firmware-BOARD-VERSION.bin
```
#### Update
##### Update
```shell title="Command"
./device-update.sh -f firmware-BOARD-VERSION.bin
@ -232,13 +248,15 @@ values={[
</TabItem>
<TabItem value="windows">
#### Install
#### Windows
##### Install
```shell title="Command"
device-install.bat -f firmware-BOARD-VERSION.bin
```
#### Update
##### Update
```shell title="Command"
device-update.bat -f firmware-BOARD-VERSION.bin

View file

@ -20,6 +20,8 @@ values={[
<TabItem value="android">
#### Android
:::info
As of this writing, the current Android release of the nRF DFU app (v2.3.0) is not compatible with Meshtastic firmware updates. Please use the instructions below for updating via OTA with the nRF Connect App.
:::
@ -38,6 +40,8 @@ OTA firmware updates are available for Android using an older release of the mor
<TabItem value="apple">
#### Apple
OTA firmware updates are available on iOS & iPadOS using the nRF Device Firmware Update App available through the [Apple App Store](https://apps.apple.com/us/app/nrf-device-firmware-update/id1624454660)
1. Download the firmware release you wish to install from the [Meshtastic Download Page](/downloads), [Meshtastic GitHub](https://github.com/meshtastic/firmware/releases), or via the iOS or iPadOS app.

View file

@ -0,0 +1,48 @@
---
id: update-techo-bootloader
title: How to Update the LilyGo T-Echo Bootloader to the Latest Version
sidebar_label: Update T-Echo Bootloader
sidebar_position: 5
---
If you're experiencing issues with updating or flashing newer versions of the Meshtastic firmware, and your LilyGo T-Echo is not running the latest bootloader version (0.6.1), updating the bootloader may resolve these problems.
To check which version of the bootloader your device is running, place the device into DFU mode by double-pressing the reset button. Then, open the mounted drive that appears on your computer and check the INFO_UF2.TXT file.
## Updating bootloader
Below are the steps to update your bootloader.
### Method 1: Using the UF2 File (Recommended)
1. Download the Latest UF2 Bootloader File for the T-Echo from [Github](https://github.com/meshtastic/firmware/blob/master/bin/update-lilygo_techo_bootloader-0.6.1_nosd.uf2).
2. Connect your LilyGo T-Echo to your computer via USB.
3. Activate bootloader mode by quickly double pressing the RESET button on your T-Echo. The device should appear as a removable drive on your computer.
4. Drag and drop the .uf2 file you downloaded into the T-Echo's drive. The device will automatically update the bootloader and reset.
5. Once the device resets, the update is complete. Your T-Echo is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/).
### Method 2: Using adafruit-nrfutil
Should flashing the UF2 file to update your bootloader fail, you can use adafruit-nrfutil.
:::info
These instructions assume you have python and pip already installed. If you do not, please install the latest verion of python (which includes pip) from [Python.org](https://www.python.org/downloads/).
:::
1. Open a terminal or command prompt and install adafruit-nrfutil by running:
```bash
pip install adafruit-nrfutil
```
2. Obtain the lilygo_techo_bootloader-0.6.1.zip package from [Github](https://github.com/meshtastic/firmware/blob/master/bin/lilygo_techo_bootloader-0.6.1.zip).
3. Connect your LilyGo T-Echo to your computer via USB.
4. In the terminal or command prompt, navigate to the directory where you downloaded the bootloader zip package and execute the following command, replacing /dev/ttyACM0 with the correct port for your device (Windows users might use COMx):
```bash
adafruit-nrfutil --verbose dfu serial --package lilygo_techo_bootloader-0.6.1.zip -p /dev/ttyACM0 -b 115200 --singlebank --touch 1200
```
5. Once the process finishes, the update is complete. Your T-Echo is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/).

View file

@ -25,6 +25,8 @@ values={[
]}>
<TabItem value="serial">
#### Serial
- [Python CLI](/docs/software/python/cli/)
- [Web Client](https://client.meshtastic.org)
- [Android App](/docs/category/android-app)
@ -32,6 +34,8 @@ values={[
</TabItem>
<TabItem value="ble">
#### Bluetooth
- [Android App](/docs/category/android-app)
- [Web Client](https://client.meshtastic.org)
- [iOS/iPadOS/macOS App](/docs/category/apple-apps)
@ -39,6 +43,8 @@ values={[
</TabItem>
<TabItem value="network">
#### Network
:::info
Connecting over network is only supported on ESP32 devices.
:::
@ -66,6 +72,8 @@ values={[
]}>
<TabItem value="android">
#### Android
1. Follow the [installation](/docs/software/android/installation) and [usage](/docs/software/python/cli/usage) instructions for [Meshtastic Android](/docs/category/android-app).
2. Open the app, connect to the device from your phone over USB Serial or Bluetooth.
3. Once paired, Click "UNSET" next to the device name.
@ -74,6 +82,8 @@ values={[
</TabItem>
<TabItem value="apple">
#### Apple
:::info
Configuration of Region, Modem Preset and Hop Limit is available on iOS, iPadOS and macOS at Settings > Radio Configuration > LoRa.
:::
@ -81,6 +91,8 @@ Configuration of Region, Modem Preset and Hop Limit is available on iOS, iPadOS
</TabItem>
<TabItem value="cli">
#### CLI
1. Install [Meshtastic PythonCLI](/docs/software/python/cli/installation)
```sh
pip3 install --upgrade pytap2
@ -94,6 +106,8 @@ Configuration of Region, Modem Preset and Hop Limit is available on iOS, iPadOS
</TabItem>
<TabItem value="web">
#### Web
1. Open the Meshtastic Web interface: [client.meshtastic.org](https://client.meshtastic.org)
2. Navigate to the **LoRa** menu.
3. Under **Regional Settings**, set your **Region** according to your regional location.

View file

@ -26,6 +26,8 @@ values={[
<TabItem value="linux">
#### Linux
- [CP210X USB to UART bridge - Download](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
- [CH9102 Driver - Linux Download](http://www.wch-ic.com/downloads/CH341SER_LINUX_ZIP.html)
@ -33,6 +35,8 @@ values={[
<TabItem value="macos">
#### macOS
- [CP210X USB to UART bridge - Download](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
- [CH9102 Driver - MacOS Download](https://github.com/WCHSoftGroup/ch34xser_macos)
@ -40,6 +44,8 @@ values={[
<TabItem value="windows">
#### Windows
- [CP210X USB to UART bridge - Download](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
- [CH9102 Driver - Windows Download](http://www.wch.cn/downloads/CH343SER_ZIP.html)
- [CH9102 Driver - Windows Download (Direct Download for Windows 7)](https://github.com/Xinyuan-LilyGO/CH9102_Driver)

View file

@ -28,12 +28,15 @@ values={[
<TabItem value="linux">
#### Linux
- [CH34x Driver - Linux Download](http://www.wch-ic.com/downloads/CH341SER_LINUX_ZIP.html)
</TabItem>
<TabItem value="macos">
#### macOS
:::info
@ -41,7 +44,7 @@ With the latest versions of MacOS, the USB Serial driver is built-in. If you dow
:::
### Remove the CH34x USB Driver (macOS)
##### Remove the CH34x USB Driver (macOS)
If you have already downloaded/installed the macOS WCH-IC CH340/CH341
("CH341SER_MAC") drivers via the CH34x_Install_V1.5.pkg, you will have to
@ -53,7 +56,7 @@ Uninstall the kernel extension:
4. Reboot
### Install the CH34x Driver
##### Install the CH34x Driver
- [CH34x Driver- macOS Download](https://github.com/WCHSoftGroup/ch34xser_macos)
@ -63,6 +66,8 @@ Uninstall the kernel extension:
<TabItem value="windows">
#### Windows
- [CH34x Driver - Windows Download](http://www.wch-ic.com/downloads/CH341SER_EXE.html)
</TabItem>

View file

@ -23,6 +23,8 @@ values={[
]}>
<TabItem value="linux">
#### Linux
1. Connect your Meshtastic device to your USB port
2. Open a **Terminal** and enter the following command:
@ -43,6 +45,8 @@ values={[
</TabItem>
<TabItem value="macos">
#### macOS
1. Navigate to `Apple Menu  > About This Mac > More Info > System Report... > Hardware > USB`.
2. You should see similar to one of the following entries:
@ -54,6 +58,8 @@ values={[
</TabItem>
<TabItem value="windows">
#### Windows
1. Navigate to `Device Manager > Ports (COM & LPT)`
2. You should see similar to one of the following entries:

View file

@ -88,6 +88,11 @@ Firmware remains the same as V3 below. Compare schematics: [V3.0](https://web.ar
- User and Reset Buttons
- No GPS
### Meshtastic I2C Definitions
- SDA: GPIO41
- SCL: GPIO42
### Pin Map
![HTIT-WSL_V3_PIN_MAP](</img/hardware/HTIT-WB32LA(F)_V3.webp>)
@ -135,8 +140,8 @@ This device may have issues charging a connected battery if utilizing a USB-C to
### Meshtastic I2C Definitions
- SCL: GPIO47
- SDA: GPIO48
- SDA: GPIO41
- SCL: GPIO42
### Pin Map

View file

@ -0,0 +1,90 @@
---
id: peripherals
title: Heltec ESP32 V3 Supported Peripherals
sidebar_label: Peripherals
sidebar_position: 3
---
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
<Tabs
groupId="heltecESP32V3"
queryString="heltecESP32V3"
defaultValue="GPS"
values={[
{label: 'GPS Module', value: 'GPS'},
{label: 'Keyboard', value: 'Keyboard'},
{label: 'Buzzer', value: 'Buzzer'},
]}>
<TabItem value="GPS">
## GPS Module
### Introduction
This informational guide outlines the process of enhancing the Heltec ESP32 V3 board by integrating the GT-U7 GPS Module. The addition of this module provides precise GPS capabilities and a real-time clock (RTC), eliminating the need for WiFi or a smartphone for time tracking. This enhancement is particularly beneficial for the mesh, where tracking the duration since the last seen device is crucial.
However, it's important to note that the GPS module increases the power demand of your node. We'll address this by detailing how to incorporate a switch or an NPN 2N2222 transistor into your setup. This enables firmware-controlled power management, conserving battery life without sacrificing functionality.
It is important to note that the GPS module increases the power demand of the node. This guide details the incorporation of a switch or an NPN 2N2222 transistor to enable firmware-controlled power management, conserving battery life without compromising functionality.
### Benefits
- **GPS Capabilities**: Provides the node with the ability to determine its location with high precision, which is invaluable for tracking, mapping, and various other applications requiring location data.
- **Real-Time Clock (RTC)**: Ensures accurate timekeeping on the mesh network without relying on external time sources such as the internet or a connected smartphone.
### Power Consumption Considerations
The GT-U7 module is known for its high power consumption, which can potentially shorten the battery lifespan of the node. To mitigate this, two approaches are recommended:
- **Manual Switch**: A simple on/off switch for the GPS module, allowing for manual power management.
- **NPN 2N2222 Transistor**: Facilitates automatic power control through the firmware, enabling the device to turn off the GPS module based on specific conditions or after a set period.
### Materials Needed
- Heltec ESP32 V3 board
- GT-U7 GPS Module
- NPN 2N2222 Transistor
- Wires and soldering equipment
- (Optional) Switch for manual power control
### Instructions
1. Solder a cable from the TXD slot on the GPS module to GPIO 48 on Heltec board. (You may choose your own GPIO pin)
2. Solder a cable from the RXD slot on the GPS module to GPIO 47 on Heltec board. (You may choose your own GPIO pin)
3. Solder a cable from the GND slot on the GPS module to GND pin on Heltec board.
4. Solder a cable from left leg of NPN 2N2222 Transistor to VCC skit on GPS module.
5. Solder a cable from Right leg of NPN 2N2222 Transistor to 3V/5V pin on Heltec board.
6. Solder a cable from Middle leg of NPN 2N2222 Transistor to GPIO 48 of Heltec board. (You may choose your own GPIO pin)
7. Go to Meshtastic app > Radio Configurations > Position
8. Set GPS_RX_PIN to 48 (This will communicate to the TXD slot on the GPS)
9. Set GPS_TX_PIN to 47 (This will communicate to the RXD slot on the GPS)
10. Set PIN_GPS_EN to 46 (This will allow the meshtastic firmware to turn off the power on the GPS board with the user button of the Heltec Board by pressing it 3 times)
### Wiring Diagram
![HeltecESP32V3-gps-module](</img/hardware/HeltecESP32V3-gps-module.webp>)
### Troubleshooting Tips
If the GPS module does not power on, check the connections to the transistor and ensure that the middle pin is properly configured in the firmware settings.
If the message "GPS is Disabled" appears, press the user button on the Heltec board three times to enable it.
If the message "No GPS Present" appears, check that the TXD and RXD are correctly configured.
If the message "No GPS Lock" appears, move the node to another location with access to the sky for a bit to lock on properly.
If the location is not accurate, walk around to allow the GPS to properly lock on.
### Conclusion
By following this guide, you can enhance your Heltec ESP32 V3 board with valuable GPS capabilities and an RTC, while effectively managing power consumption. Whether for a hobby project or a more serious application, these additions significantly expand the potential of your device.
</TabItem>
<TabItem value="Keyboard">
## Keyboard
Comming Soon
</TabItem>
<TabItem value="Buzzer">
## Buzzer
Commming Soon
</TabItem>
</Tabs>

View file

@ -51,7 +51,7 @@ Modular hardware system with Base, Core and Peripheral modules including the low
[RAK13002](./rak/peripherals?rakmodules=IO) IO<br/>
RAK14001 RGB LED<br/>
RAK12002 RTC<br/>
[RAK1910](./rak/peripherals?rakmodules=Sensors&sensors=RAK1901) Temperature and Humidity Sensor<br/>
[RAK1901](./rak/peripherals?rakmodules=Sensors&sensors=RAK1901) Temperature and Humidity Sensor<br/>
[RAK1902](./rak/peripherals?rakmodules=Sensors&sensors=RAK1902) Barometric Pressure Sensor<br/>
[RAK1906](./rak/peripherals?rakmodules=Sensors&sensors=RAK1906) Environment Sensor<br/>
RAK12013 Radar Sensor<br/>

View file

@ -21,7 +21,9 @@ values={[
<TabItem value="g2">
### Nano G2 Ultra Buttons
### Nano G2 Ultra
#### Buttons
- **User/Program Button:**
- **Single press:** Changes the information page displayed on the device's screen.
@ -30,7 +32,7 @@ values={[
- **Message Read Button:**
- **Single press:** Clears the New Message LED.
### Nano G2 Ultra Switches
#### Switches
- **Power:**
- **Toggle Up:** Turns on the device.
@ -46,7 +48,9 @@ values={[
</TabItem>
<TabItem value="g1-e">
### Nano G1 Explorer Buttons
### Nano G1 Explorer
#### Buttons
- **User/Program Button:**
- **Single press:** Changes the information page displayed on the device's screen.
@ -54,7 +58,7 @@ values={[
- **Message Read Button:**
- **Single press:** Clears the New Message LED.
### Nano G1 Explorer Switches
### Switches
- **Power:**
- **Toggle Up:** Turns on the device.

View file

@ -36,7 +36,7 @@ The Nano G2 Ultra and Nano G1 Explorer have exactly the same Lora front-end circ
- **LoRa Transceiver:**
- Semtech SX1262
- **Frequency Options:**
- _US (902.0Mhz to 928.0Mhz), EU_868 (869.4Mhz to 869.65Mhz), JP (920.8Mhz to 927.8Mhz), ANZ (915.0Mhz to 928.0Mhz), RU (868.7Mhz to 869.2Mhz), KR (920.0Mhz to 923.0Mhz), TW (920.0Mhz to 925.0Mhz), IN (865.0Mhz to 867.0Mhz), NZ_865 (864.0Mhz to 868.0Mhz), TH (920.0Mhz to 925.0Mhz), UA_868 (868.0Mhz to 868.6Mhz)._
- _US (902.0Mhz to 928.0Mhz), EU_868 (869.4Mhz to 869.65Mhz), JP (920.8Mhz to 927.8Mhz), ANZ (915.0Mhz to 928.0Mhz), RU (868.7Mhz to 869.2Mhz), KR (920.0Mhz to 923.0Mhz), TW (920.0Mhz to 925.0Mhz), IN (865.0Mhz to 867.0Mhz), NZ_865 (864.0Mhz to 868.0Mhz), TH (920.0Mhz to 925.0Mhz), UA_868 (868.0Mhz to 868.6Mhz), MY_919 (919.0Mhz to 924.0Mhz), SG_923 (917.0Mhz to 925.0Mhz)._
- **Navigation Module:**
- ATGM336H-5N-71 (Supports GPS, BDS and GLONASS)
- **Antenna:**
@ -83,7 +83,7 @@ The Nano G1 Explorer, powered by Meshtastic, is a significant upgrade from the N
- **LoRa Transceiver:**
- Semtech SX1262
- **Frequency Options:**
- _US (902.0Mhz to 928.0Mhz), EU_868 (869.4Mhz to 869.65Mhz), JP (920.8Mhz to 927.8Mhz), ANZ (915.0Mhz to 928.0Mhz), RU (868.7Mhz to 869.2Mhz), KR (920.0Mhz to 923.0Mhz), TW (920.0Mhz to 925.0Mhz), IN (865.0Mhz to 867.0Mhz), NZ_865 (864.0Mhz to 868.0Mhz), TH (920.0Mhz to 925.0Mhz), UA_868 (868.0Mhz to 868.6Mhz)._
- _US (902.0Mhz to 928.0Mhz), EU_868 (869.4Mhz to 869.65Mhz), JP (920.8Mhz to 927.8Mhz), ANZ (915.0Mhz to 928.0Mhz), RU (868.7Mhz to 869.2Mhz), KR (920.0Mhz to 923.0Mhz), TW (920.0Mhz to 925.0Mhz), IN (865.0Mhz to 867.0Mhz), NZ_865 (864.0Mhz to 868.0Mhz), TH (920.0Mhz to 925.0Mhz), UA_868 (868.0Mhz to 868.6Mhz), MY_919 (919.0Mhz to 924.0Mhz), SG_923 (917.0Mhz to 925.0Mhz)._
- **Navigation Module:**
- ATGM336H-5N-71 (Supports GPS, BDS and GLONASS)
- **Antenna:**

View file

@ -97,7 +97,6 @@ Further information on the RAK19007 can be found on the [RAK Documentation Cente
- [RAK19003](https://store.rakwireless.com/products/wisblock-base-board-rak19003) - WisBlock's Mini Base Board.
- **Slots**
- (x1) Core Module slot
- (x1) WisBlock IO Module slot
- (x2) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button

View file

@ -116,11 +116,11 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep
- Firmware file: `firmware-rak11200-X.X.X.xxxxxxx.bin`
- Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description).
- Purchase Links:
- US
- [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023)
- International
- [RAK Wireless Store](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200)
- [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256802312474717.html)
- US
- [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023)
<img
alt="RAK4631 5005 11200"
@ -163,6 +163,8 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep
- Firmware file: `firmware-rak11310-X.X.X.xxxxxxx.uf2`
- Further information on the RAK11310 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11310/Overview/#product-description).
- Purchase Links:
- US
- [Rokland](https://store.rokland.com/products/rak-raspberry-pi-rp2040-core-module-for-lorawan-with-lora-sx1262-us915-mhz-rak11310-pid-116003)
- International
- [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module)
- [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html)

View file

@ -22,19 +22,30 @@ values={[
## GPS Modules
### RAK5005-0 / RAK1910
### RAK12500
To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](https://store.rakwireless.com/collections/wisblock-sensor/products/rak1910-max-7q-gnss-location-sensor). It is supported on slot A of the 5005 board via UART.
The [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500) is a newer GPS module and is generally preferred.
- uBlox Zoe-M8Q GNSS receiver
- GPS, GLONASS, QZSS and BeiDou satellite support
The RAK12500 is supported on the following base boards & slots:
- RAK19007 on slot A
- RAK19003 on slot C
### RAK1910
The [RAK1910 GPS sensor](https://store.rakwireless.com/collections/wisblock-sensor/products/rak1910-max-7q-gnss-location-sensor) is the older of the supported GPS modules for RAK boards.
- uBlox MAX-7Q GPS module
- GPS and GLONASS satellite support
### RAK19003 / RAK12500
The RAK1910 is supported on the following base boards & slots:
To add a GPS to the RAK19003 base board, you need the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via I<sup>2</sup>C on slot B for firmware versions 1.49 and above.
- uBlox Zoe-M8Q GNSS receiver
- GPS, GLONASS, QZSS and BeiDou satellite support
- RAK5005-0 on slot A
- RAK19007 on slot A
- RAK19003 on slot C
### Resources
- RAK Documentation Center

View file

@ -4,6 +4,7 @@ sidebar_label: Legal
slug: /legal
sidebar_position: 9
---
## Disclaimers
**Project Status:** Meshtastic is now at a stage where it offers a _mostly_ stable and reliable functionality, thanks to the dedicated efforts of our development team. While the core aspects of the project are well-established, we are still rapidly evolving and actively adding new features. As we continue to innovate and expand, some features in our current builds are in development, reflecting our commitment to continuous improvement and growth. We appreciate your engagement as we advance further in this exciting journey.

View file

@ -13,15 +13,15 @@ A trademark grant from Meshtastic LLC is an authorization given to individuals,
If you are interested in obtaining a trademark grant for using the Meshtastic® trademark and logos, please follow these steps:
1. **Prepare Your Request**: Review the currently approved trademark grants on this page to understand the typical format and information required.
1. **Prepare Your Request**: Review the currently approved trademark grants on this page to understand the typical format and information required. Read https://meshtastic.org/docs/legal/licensing-and-trademark/ and follow the process to contact trademark@meshtastic.org for review.
2. **Edit the Page**: At the bottom of this page, click "Edit this page." This action will redirect you to GitHub, where the page is hosted. Note: A GitHub account is required to make edits. If you don't have one, you will need to create it.
3. **Add Your Information**: Once on GitHub, use the existing grants as a template to add your information. Include details such as your name or organization, the nature of your project, and how you intend to use the Meshtastic® trademark.
3. **Add Your Information**: Once on GitHub, use the existing grants as a template to add your information. Include details such as your name or organization, the nature of your project and the agreement from your contact of the Meshtastic Trademark Supervisor.
4. **Submit for Review**: After adding your information, submit your edit as a pull request. This request will be reviewed by one of the Meshtastic project admins.
5. **Approval Process**: The admin team will review your submission to ensure it aligns with our trademark policies and community standards. If approved, your grant will be listed on this page.
5. **Approval Process**: The admin team will review your submission to ensure it aligns with our trademark policies and agreements with the Trademark Supervisor. If approved, your grant will be listed on this page.
This process ensures transparency and community involvement in the granting of trademark usage, while also maintaining the integrity and purpose of the Meshtastic brand.

View file

@ -0,0 +1,18 @@
---
id: android-app-translate
title: Translate the Android App
sidebar_label: Translate
sidebar_position: 3
---
## How to Contribute
Contributing translations to the Meshtastic Android app helps make the project accessible to a wider audience. Follow these steps to add your translations through Crowdin:
1. **Access Crowdin**: Visit the Meshtastic project's Crowdin page at [https://crowdin.meshtastic.org](https://crowdin.meshtastic.org).
2. **Create an Account**: Click on 'Sign Up' in the top right corner of the page and follow the prompts to create a Crowdin account.
3. **Navigate to the Project**: Once logged in, locate and select the 'Android Application' project from the Crowdin dashboard.
4. **Choose a Language**: Find the language you want to contribute translations for and click on 'Go to Editor' to start translating.
5. **Start Translating**: In the editor, you'll see a list of strings on the left-hand side. Click on a string to select it, then enter your translation in the editor box. When you're finished with a string, click 'Save' to store your translation. Repeat this process for each string you wish to translate.
Your contribution will be reviewed, and upon approval, your translation will be included in the next release of the Meshtastic Android app. Thank you for helping expand the reach of Meshtastic!

View file

@ -3,6 +3,7 @@ id: installation
title: Apple Application Installation
description: Download on the App Store
sidebar_label: Installation
sidebar_position: 1
---
<a href="https://apple.co/3Auysep">

View file

@ -0,0 +1,18 @@
---
id: apple-app-translate
title: Translate the Apple App
sidebar_label: Translate
sidebar_position: 3
---
## How to Contribute
Contributing translations to the Meshtastic Apple app helps make the project accessible to a wider audience. Follow these steps to add translations for a new language:
1. **Fork the Repository**: Start by forking the [Meshtastic-Apple repository](<https://github.com/meshtastic/Meshtastic-Apple/tree/main>) to your GitHub account.
2. **Create a Language Folder**: In your forked repository, create a new folder for your language using the language code followed by `.lproj`. For example, for German, create a folder named `de.lproj`.
3. **Copy the Localizable.strings File**: Navigate to the [English strings folder](<https://github.com/meshtastic/Meshtastic-Apple/blob/main/en.lproj/Localizable.strings>) and copy the `Localizable.strings` file. Paste this file into the folder you created in the previous step.
4. **Translate the Strings**: Open the `Localizable.strings` file in your language folder and translate the English strings into your language. Be sure to maintain the format of the file.
5. **Create a Pull Request**: Once you've completed the translation, create a new pull request from your forked repository to the main Meshtastic-Apple repository. Title the pull request appropriately (e.g., "Add German Translation") and describe the changes you've made.
Your contribution will be reviewed, and upon approval, your translation will be included in the next release of the Meshtastic Apple app. Thank you for helping expand the reach of Meshtastic!

View file

@ -2,6 +2,7 @@
id: usage
title: Apple Application Usage
sidebar_label: Usage
sidebar_position: 2
---
## Offline Maps

View file

@ -13,16 +13,24 @@ Meshtastic can integrate with ATAK on Android using the [Official ATAK Plugin.](
The ATAK plugin does not permit any Meshtastic configuration. The plugin does three things:
1. Bind to the IMeshService provided by the Meshtastic Android App in order to send.
2. Intercept all outgoing ATAK CoT via the ATAK "PreSendProcessor" Interface and send them to the IMeshService.
3. Listen for broadcasts from the Meshtastic Android App regarding ATAK_FORWARDER portnum packets.
The current iteration works very well for ATAK CoT that fit within the 200ish byte range (after we shrink via libcotshirnk) because they fit into a single DataPacket.
1. Binds to the IMeshService provided by the Meshtastic Android App in order to send.
2. Intercepts all outgoing ATAK CoT via the ATAK "PreSendProcessor" Interface and sends them to the IMeshService.
3. Listens for broadcasts from the Meshtastic Android App on the ATAK_PLUGIN portnum packets.
### Instructions
1. Use the Meshtastic Android App on all party's devices, and ensure they can talk to their local LoRa radio. Confirm they are able to achieve basic text messaging using the App.
1. Use the Meshtastic Android App on all parties' devices, and ensure they can talk to their local LoRa radio. Confirm they are able to achieve basic text messaging using the App.
2. With the Meshtastic Android App running in the background (to ensure the IMeshService is alive), launch ATAK (with the Meshtastic ATAK-Plugin installed or install it once ATAK is running) and you should observe a green Meshtastic icon in the bottom right. If the icon is red, then the plugin was not able to bind to the IMeshService provided by the Meshtastic Android App. If this is the case, check to ensure the Meshtastic Android App is functioning. The plugin will reconnect after a failed bind without restarting ATAK.
2. Set the device's role to `TAK` in the [device configuration settings](/docs/configuration/radio/device/).
3. ATAK PLI and simple map markers will fit within the "small send" DataPackets. Sending larger CoT such as freestyle map drawings or GeoChats will fragment and take longer to send. Don't try to send a bunch without waiting for the previous one to complete.
3. With the Meshtastic Android App running in the background (to ensure the IMeshService is alive), launch ATAK (with the Meshtastic ATAK-Plugin installed or install it once ATAK is running) and you should observe a green Meshtastic icon in the bottom right. If the icon is red, then the plugin was not able to bind to the IMeshService provided by the Meshtastic Android App. If this is the case, check to ensure the Meshtastic Android App is functioning. The plugin will reconnect after a failed bind without restarting ATAK.
## Standalone TAK Tracker usage
For devices with GPS available, configuring the device's role to `TAK_TRACKER` will allow the Meshtastic to transmit TAK PLI (Position Location Information) independently of ATAK. This data can be received and displayed within ATAK EUDs connected to a Meshtastic device and configured with the Meshtastic ATAK plugin (provided they are configured on the same Meshtastic channels).
A couple of important notes regarding this setup:
1. The intervals and behavior of TAK PLI broadcast will honor the settings configured for the standard [Position configuration](/docs/configuration/radio/position/) in Meshtastic.
2. The callsign sent with the PLI will appear in ATAK with the User [Long Name](/docs/configuration/radio/user/#long-name) configured for the Meshtastic device.

View file

@ -268,7 +268,7 @@ First, create an input text helper entity. The preferred way to configure an inp
### Create a Send Message Automation
This automation will check the send box for changes. After typing a message, either hit enter or click off the box and the automation will send a text string in JSON to the mqtt broker. Make sure to call your channel "mqtt" and to update the device ID and `from` field in the example below.
This automation will check the send box for changes. After typing a message, either hit enter or click off the box and the automation will send a text string in JSON to the mqtt broker. Make sure to publish to a channel called "mqtt" and to update the device ID and `from` field in the example below. A field `channel` can be added to transmit on a different channel index than the primary, or a `to` field can be added with a node number to send a DM.
```yaml
- alias: Meshtastic - Send Automation

View file

@ -98,11 +98,13 @@ If the message received contains valid JSON in the payload, the JSON is deserial
#### JSON downlink to instruct a node to send a message
You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a gateway node to send a message to the mesh. Note that the channel **must** be called "mqtt". The JSON message should contain the following fields:
You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a gateway node to send a message to the mesh. Note that the channel you publish it on **must** be called "mqtt". The JSON message should contain the following fields:
```json
{
"from": <node number>,
"from": <node number of MQTT node>,
"to": <node number of recipient for a DM (optional)>,
"channel": <channel index (optional)>,
"type": "type",
"payload": {
"key":"value"
@ -111,7 +113,7 @@ You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a g
}
```
`from` and `payload` fields are required for a valid envelope (note that in firmware &lt;2.2.20 a field `sender` was required, but this is no longer the case). The `from` field should be equal to the node number of the node that will transmit the message. Optionally, you can specify a destination by setting the `to` field to the node number of the destination. If the `to` field is not set, the message will be broadcast to all nodes on the mesh.
`from` and `payload` fields are required for a valid envelope (note that in firmware &lt;2.2.20 a field `sender` was required, but this is no longer the case). The `from` field should be equal to the node number of the node that will transmit the message. Optionally, you can specify a different channel than the primary channel by setting the `channel` field to a channel index (0-7). Furthermore, you can send a direct message by setting the `to` field to the node number of the destination. If the `to` field is not set, the message will be broadcast to all nodes on the mesh.
Currently two types of messages are supported: `"sendtext"` and `"sendposition"`.
For the type `sendtext`, the `payload` should be a string containing the text to send. For the type `sendposition`, the payload should be an object with the fields `latitude_i`, `longitude_i`, `altitude` (optional) and `time` (optional).

View file

@ -54,13 +54,15 @@ The JSON output only publishes the following subset of the messages on a Meshtas
> Protobufs are mesh native.
#### 1. Using JSON-encoded messages
Make sure that option *JSON Output Enabled* is set in MQTT module options and your channel is called "mqtt".
Make sure that option *JSON Output Enabled* is set in MQTT module options and you have a channel called "mqtt".
Below is a valid JSON envelope for information sent by MQTT to a device for broadcast onto the mesh.
Below is a valid JSON envelope for information sent by MQTT to a device for broadcast onto the mesh. The `to` field is optional and can be omitted for broadcast. The `channel` field is also optional and can be omitted to send to the primary channel.
```json
{
"from":<node number of the transmitter>,
"to": <node number of the receiver for a DM (optional)>,
"channel": <channel index (optional)>,
"type":"sendtext",
"payload": text or a json object go here
}
@ -979,7 +981,7 @@ The flow is:
]
```
Sending a position to a device for broadcast to the mesh is much easier with JSON. It requires a channel called "mqtt". This introduces a new MQTT Service Envelope type: "sendposition". A valid MQTT envelope and message to broadcast lat, lon, altitude (optional) and time (optional) looks like this:
Sending a position to a device for broadcast to the mesh is much easier with JSON. It requires the message to be published to a channel called "mqtt". You can let the message send out to a different channel by setting the `channel` field to a channel index (0-7). Then use the MQTT Service Envelope type: "sendposition". A valid MQTT envelope and message to broadcast lat, lon, altitude (optional) and time (optional) looks like this:
```json
{

View file

@ -41,6 +41,8 @@ values={[
]}>
<TabItem value="linux">
#### Linux
- Check that your computer has the required serial drivers installed
- Connect your Meshtastic device to your USB port
@ -98,6 +100,8 @@ values={[
</TabItem>
<TabItem value="macos">
#### macOS
- Check that your computer has the required serial drivers installed
- Connect your Meshtastic device to your USB port
- Navigate to `Apple Menu  > About This Mac > System Report... > Hardware > USB`
@ -139,6 +143,8 @@ values={[
</TabItem>
<TabItem value="windows">
#### Windows
- Check that your computer has the required serial drivers installed
- Connect your Meshtastic device to your USB port
- Open Device Manager
@ -171,6 +177,8 @@ values={[
</TabItem>
<TabItem value="termux">
#### Termux
:::note
Wifi connection is currently under development and may not be working properly just yet. If you would like to provide feedback or test this feature, please visit our [forum](https://meshtastic.discourse.group) or join our [Discord server](https://discord.gg/ktMAKGBnBs) for more information.
:::
@ -219,6 +227,8 @@ values={[
]}>
<TabItem value="ubuntu">
#### Ubuntu
- Download meshtastic_ubuntu
- Run the following command to make the file executable and rename it 'meshtastic':
@ -240,6 +250,8 @@ Copy (or move) this binary somewhere in your path.
</TabItem>
<TabItem value="windows">
#### Windows
- Download meshtastic_windows
- Rename to meshtastic.exe

113
docs/terms/index.mdx Normal file
View file

@ -0,0 +1,113 @@
---
id: glossary
title: Glossary of Terms
slug: /terms/
---
App / Application / Client Application
: An application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network.
Band
: A range of frequencies used for LoRa, dependent on region. Meshtastic further divides these bands into channels. Sometimes identified by the lower and upper bounds of the range (e.g. 902-928MHz), sometimes identified by a center frequency within the range (e.g. 915MHz), and sometimes only by the region they apply to (e.g. US).
Broadcast
: Sending a message or data from one device to all other devices within range in the Meshtastic network, rather than to a specific recipient.
Channel | [Configuration](/docs/configuration/radio/channels/) | [Frequency Calculator](/docs/overview/radio-settings/#channel-frequency-calculator)
: At least two definitions in Meshtastic usage: 1) One of 8 configurable channels in the firmware, each supporting a separate name and encryption, with one set as primary and the rest secondary. 2) A specific frequency within a LoRa band that a device can be configured to use.
CLI | [Guide](/docs/software/python/cli/)
: Command Line Interface, a text-based interface used for interacting with software or devices like Meshtastic.
Client
: A device or application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network.
Device
: A physical piece of hardware that utilizes the Meshtastic software and LoRa (Long Range) radio technology to create a decentralized, long-range mesh network.
DFU
: Device Firmware Update, a state which a device is placed into for it to receive a firmware update
ESP32 | [Drivers](/docs/getting-started/serial-drivers/esp32/) | [Firmware](/docs/getting-started/flashing-firmware/esp32/)
: A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired.
Firmware | [Guide](https://meshtastic.org/docs/getting-started/flashing-firmware/)
: The low-level software programmed onto a Meshtastic device, controlling its hardware functions and enabling it to communicate within the mesh network using LoRa technology. Firmware
Flash/Flashing | [Guide](https://meshtastic.org/docs/getting-started/flashing-firmware/)
: The process of updating or installing firmware on a Meshtastic device. This is typically done using a computer to load new firmware versions or custom software to enhance or modify device functionality.
GPIO
: General Purpose Input/Output. An uncommitted digital signal pin on a device
LoRa
: A low-power, long-range wireless communication technology used by Meshtastic devices to enable communication over distances of several kilometers without the need for cellular, Wi-Fi, or other traditional network infrastructures.
LoS
: Line of Sight, a pathway through only air between two points.
Mesh | [Algorithm](/docs/overview/mesh-algo/)
: In the context of Meshtastic and networking, a mesh refers to a network topology where devices (nodes) are interconnected, allowing them to directly and dynamically communicate with each other. This setup enables data to be relayed across the network, improving coverage and reliability, especially in challenging environments.
Message
: A piece of data or text sent between Meshtastic devices over the mesh network, which can include text communications, GPS location updates, and other small data payloads.
MHz
: Megahertz, a unit of frequency equal to one million hertz (cycles per second), used to specify the operating frequency of LoRa devices in the Meshtastic network, affecting range and data rate.
Module | [Software Modules](/docs/configuration/module/) | [Hardware Modules](/docs/hardware/devices/)
: At least two definitions in Meshtastic usage: 1) A software plug-in to expand the capabilities of a Meshtastic device. 2) A hardware component or add-on for a Meshtastic device, such as a temperature sensor or GPS.
[MQTT](/docs/software/integrations/mqtt/)
: An acronym for Message Queuing Telemetry Transport, is a lightweight messaging protocol designed for small sensors and mobile devices, enabling efficient data transmission in the Meshtastic network for Internet connectivity and integration with IoT platforms. See https://en.wikipedia.org/wiki/MQTT. In Meshtastic, MQTT is used to connect a node to the internet, and can be used to connect multiple meshes to each other.
Node
: A unit within the Meshtastic network that can send, receive, and relay messages, helping to form and extend the mesh network's coverage.
NRF52 | [Drivers](/docs/getting-started/serial-drivers/nrf52/) | [Firmware](/docs/getting-started/flashing-firmware/nrf52/)
: A microcontroller chipset made by Nordic, used by a number of devices used by several devices such as the RAK Meshtastic Starter Kit and the Lilygo T-Echo. Lower power usage than ESP32.
Packet
: A formatted unit of data sent over the network. In Meshtastic, packets carry messages, GPS locations, and other information through the LoRa mesh network.
Protobuf | [Reference](/docs/development/reference/protobufs/)
: Protocol Buffers, a method developed by Google for serializing structured data, used in Meshtastic for efficient communication protocol between devices.
PSK | [Encryption](/docs/overview/encryption/)
: Pre-Shared Key, a secret code or passphrase used in Meshtastic channels for encryption, ensuring that only devices with the matching PSK can communicate within that specific channel.
Repeater | [Role Definitions](/docs/configuration/radio/device/#roles)
: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
Router | [Role Definitions](/docs/configuration/radio/device/#roles)
: Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list.
rp2040
: A microcontroller chip developed by Raspberry Pi, featuring dual ARM Cortex-M0+ processors.
RX
: Abbreviation for Receive.
Sensor
: A device component that detects and responds to some type of input from the physical environment. In Meshtastic, sensors can be used to gather environmental data (e.g., temperature, humidity, GPS location) which can then be transmitted over the mesh network for monitoring or other applications.
Serial
: A communication protocol used for the transmission of data between the Meshtastic device and a computer or other devices. Typically over USB or UART.
SNR
: Signal-to-Noise Ratio, a measure used in communications to quantify the level of a desired signal to the level of background noise. In Meshtastic and other wireless systems, a higher SNR indicates a clearer signal that can enhance the reliability and quality of data transmission.
SWR
: Standing Wave Ratio, a measure of the efficiency of the radio frequency (RF) power transmission from a transmitter through a transmission line to an antenna in Meshtastic devices. It indicates the ratio of the amplitude of a standing wave at maximum to the amplitude at minimum, with an ideal SWR close to 1:1, signifying that most of the power is transmitted to the antenna with minimal reflections.
Telemetry
: The sending of sensor data or system metrics over the mesh network.
Tranceiver
: A device capable of both transmitting and receiving communications.
Transmit
: The act of sending data, such as messages or GPS locations, from one Meshtastic device to another over the LoRa network.
TX
: Abbreviation for Transmit.

View file

@ -1,6 +1,7 @@
// @ts-check
require("dotenv").config();
import remarkDefList from "remark-deflist";
/** @type {import('@docusaurus/types').Config} */
const config = {
@ -121,6 +122,7 @@ const config = {
editUrl: "https://github.com/meshtastic/meshtastic/edit/master/",
breadcrumbs: false,
showLastUpdateAuthor: true,
remarkPlugins: [remarkDefList],
},
theme: {
customCss: require.resolve("./src/css/custom.css"),

View file

@ -12,35 +12,38 @@
"clear": "docusaurus clear"
},
"dependencies": {
"@algolia/client-search": "^4.22.0",
"@docusaurus/core": "3.1.0",
"@docusaurus/plugin-content-docs": "3.1.0",
"@docusaurus/preset-classic": "3.1.0",
"@docusaurus/theme-common": "3.1.0",
"@docusaurus/theme-mermaid": "3.1.0",
"@algolia/client-search": "^4.22.1",
"@docusaurus/core": "3.1.1",
"@docusaurus/plugin-content-docs": "3.1.1",
"@docusaurus/preset-classic": "3.1.1",
"@docusaurus/theme-common": "3.1.1",
"@docusaurus/theme-mermaid": "3.1.1",
"@heroicons/react": "^2.1.1",
"@mdx-js/react": "^3.0.0",
"@meshtastic/js": "2.2.18-0",
"autoprefixer": "^10.4.16",
"@mdx-js/react": "^3.0.1",
"@meshtastic/js": "2.2.23-0",
"autoprefixer": "^10.4.17",
"base64-js": "^1.5.1",
"clsx": "^2.1.0",
"dotenv": "^16.3.1",
"postcss": "^8.4.33",
"dotenv": "^16.4.4",
"postcss": "^8.4.35",
"react": "^18.2.0",
"react-accessible-accordion": "^5.0.0",
"react-dom": "^18.2.0",
"react-icons": "^4.12.0",
"swr": "^2.2.4",
"react-icons": "^5.0.1",
"react-markdown": "^9.0.1",
"remark-deflist": "^1.0.0",
"swr": "^2.2.5",
"tailwindcss": "^3.4.1"
},
"devDependencies": {
"@biomejs/biome": "^1.5.3",
"@buf/meshtastic_protobufs.bufbuild_es": "1.6.0-20240106203407-94f78518ac45.1",
"@docusaurus/module-type-aliases": "3.1.0",
"@buf/meshtastic_protobufs.bufbuild_es": "1.7.2-20240216123215-6b07c41c68c9.1",
"@docusaurus/module-type-aliases": "3.1.1",
"@tailwindcss/typography": "^0.5.10",
"@tsconfig/docusaurus": "^2.0.2",
"@types/node": "^20.10.7",
"@types/react": "^18.2.47",
"@types/react-dom": "^18.2.18",
"@types/node": "^20.11.19",
"@types/react": "^18.2.56",
"@types/react-dom": "^18.2.19",
"typescript": "^5.3.3"
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,98 @@
import {
Accordion,
AccordionItem,
AccordionItemButton,
AccordionItemHeading,
AccordionItemPanel,
} from "react-accessible-accordion";
import ReactMarkdown from "react-markdown";
import "../css/faq.css";
export interface Faq {
title: string;
content: string;
}
/**
* Finds the nearest heading to an element
* @param {Element} null The element to find the nearest heading to
* @return {Element|null} The heading or null
*/
const findNearestHeading = (element: Element): Element | null => {
const isHeading = (element: Element): boolean =>
/^H[1-6]$/.test(element.tagName);
let currentElement: Element | null = element;
while (currentElement !== null) {
// Check previous siblings
let prevSibling: Element | null = currentElement.previousElementSibling;
while (prevSibling) {
if (isHeading(prevSibling)) {
return prevSibling;
}
prevSibling = prevSibling.previousElementSibling;
}
// If no heading is found among siblings, move to the parent node
currentElement = currentElement.parentElement;
}
return null;
};
/**
* Takes in uuids from react-accessible-accordion onchange event
* and updates the browser url with the nearest heading's id
* @param {[type]} void [description]
* @return {[type]} [description]
*/
const updateUrlWithNearestHeadingId = (targetElementUuid: string): void => {
const targetElement: HTMLElement | null = document.getElementById(
`accordion__heading-${targetElementUuid[0]}`,
);
const nearestHeading: Element | null = targetElement
? findNearestHeading(targetElement)
: null;
// Add the hash without scrolling the page
if (nearestHeading?.id) {
window.history.pushState({}, "", `#${nearestHeading.id}`);
}
// If they're all collapsed, remove the hash
if (!targetElement) {
history.pushState(
null,
null,
window.location.origin +
window.location.pathname +
window.location.search,
);
}
};
export const FaqAccordion = ({ rows }: { rows: Faq[] }): JSX.Element => {
return (
<Accordion
allowMultipleExpanded={true}
allowZeroExpanded={true}
onChange={(itemUuids) => {
updateUrlWithNearestHeadingId(itemUuids);
}}
>
{rows.map((row, index) => (
// biome-ignore lint/suspicious/noArrayIndexKey: React complains if there is no key
<AccordionItem key={index}>
<AccordionItemHeading aria-level="3">
<AccordionItemButton>{row.title}</AccordionItemButton>
</AccordionItemHeading>
<AccordionItemPanel>
<ReactMarkdown>{row.content}</ReactMarkdown>
</AccordionItemPanel>
</AccordionItem>
))}
</Accordion>
);
};

View file

@ -0,0 +1,20 @@
export const FaqStructuredData = ({ faqs }) => {
const allFaqs = Object.values(faqs).flat();
const structuredData = {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: allFaqs.map((faq) => ({
"@type": "Question",
name: faq.title,
acceptedAnswer: {
"@type": "Answer",
text: faq.content,
},
})),
};
return (
<script type="application/ld+json">{JSON.stringify(structuredData)}</script>
);
};

View file

@ -1,5 +1,5 @@
import { Protobuf, Types } from "@meshtastic/js";
import React, { useEffect } from "react";
import React, { useEffect, useState } from "react";
interface Region {
freqStart: number;
@ -179,6 +179,16 @@ const RegionData = new Map<
powerLimit: 27,
},
],
[
Protobuf.Config.Config_LoRaConfig_RegionCode.SG_923,
{
freq_start: 917.0,
freq_end: 925.0,
duty_cycle: 100,
spacing: 0,
power_limit: 20,
},
],
[
Protobuf.Config.Config_LoRaConfig_RegionCode.LORA_24,
{
@ -273,18 +283,18 @@ const modemPresets = new Map<
export const FrequencyCalculator = (): JSX.Element => {
const [modemPreset, setModemPreset] =
React.useState<Protobuf.Config.Config_LoRaConfig_ModemPreset>(
useState<Protobuf.Config.Config_LoRaConfig_ModemPreset>(
Protobuf.Config.Config_LoRaConfig_ModemPreset.LONG_FAST,
);
const [region, setRegion] =
React.useState<Protobuf.Config.Config_LoRaConfig_RegionCode>(
useState<Protobuf.Config.Config_LoRaConfig_RegionCode>(
Protobuf.Config.Config_LoRaConfig_RegionCode.US,
);
const [channel, setChannel] = React.useState<Types.ChannelNumber>(
Types.ChannelNumber.PRIMARY,
const [channel, setChannel] = useState<Types.ChannelNumber>(
Types.ChannelNumber.Primary,
);
const [numChannels, setNumChannels] = React.useState<number>(0);
const [channelFrequency, setChannelFrequency] = React.useState<number>(0);
const [numChannels, setNumChannels] = useState<number>(0);
const [channelFrequency, setChannelFrequency] = useState<number>(0);
useEffect(() => {
const selectedRegion = RegionData.get(region);
@ -344,6 +354,12 @@ export const FrequencyCalculator = (): JSX.Element => {
))}
</select>
</div>
<div className="flex gap-2 mb-4">
<label className="font-semibold">Number of channels:</label>
<input type="number" disabled={true} value={numChannels} />
</div>
<div className="flex gap-2">
<label>Channel:</label>
<select
@ -358,10 +374,6 @@ export const FrequencyCalculator = (): JSX.Element => {
</select>
</div>
<div className="flex gap-2">
<label className="font-semibold">Number of channels:</label>
<input type="number" disabled={true} value={numChannels} />
</div>
<div className="flex gap-2">
<label className="font-semibold">Channel Frequency:</label>
<input type="number" disabled={true} value={channelFrequency} />

View file

@ -82,13 +82,30 @@ html[data-theme="dark"] .header-github-link:before {
color: var(--ifm-link-color);
}
.split-container {
display: flex;
justify-content: space-between;
}
.split-item {
flex: 1;
padding: 0 10px;
}
/* mobile screens */
@media (max-width: 768px) {
.split-container {
flex-direction: column;
}
.split-item {
width: 100%;
padding: 10px 0;
}
}
.indexCtasBody {
--ifm-button-size-multiplier: 1.6;
display: flex;

46
src/css/faq.css Normal file
View file

@ -0,0 +1,46 @@
.accordion {
border-radius: 2px;
border: 1px solid var(--ifm-color-emphasis-200);
}
.accordion__item + .accordion__item {
border-top: 1px solid var(--ifm-color-emphasis-200);
}
.accordion__button {
background-color: var(--ifm-footer-background-color);
border: none;
cursor: pointer;
padding: calc(var(--ifm-pre-padding)/1.5);
text-align: left;
width: 100%;
}
.accordion__button:hover {
background-color: var(--ifm-background-surface-color);
}
.accordion__button:before {
border-bottom: 2px solid currentColor;
border-right: 2px solid currentColor;
content: '';
display: inline-block;
height: 10px;
margin-right: 12px;
transform: rotate(-45deg);
width: 10px;
}
.accordion__button[aria-expanded='true']::before,
.accordion__button[aria-selected='true']::before {
transform: rotate(45deg);
}
[hidden] {
display: none;
}
.accordion__panel {
background: var(--ifm-background-color);
padding: var(--ifm-pre-padding);
}

View file

@ -1,111 +0,0 @@
import Link from "@docusaurus/Link";
import Layout from "@theme/Layout";
const Credits = (): JSX.Element => {
return (
<Layout
title="Credits"
description="Meshtastic is made possible by the following people & organizations."
>
<main className="relative mt-20">
<div className="container mx-auto p-6 leading-normal space-y-4">
<h1>Credits</h1>
<p>
Meshtastic is community driven. Thousands of hours have been donated
by volunteers who want to develop this amazing project. Whether
you've submitted a pull request or triaged a bug in our
Discord/Forum. You've made Meshtastic possible. Thank you for your
contributions.
</p>
<p>
We would also like to recognize those who have donated financially
to the project. As Meshtastic has grown, we've aquired some ongoing
costs to keep the project running. Thank you for your generous
donations.
</p>
</div>
<div className="container mx-auto p-6 leading-normal space-y-4">
<h2>Fiscal Sponsors</h2>
<p>
We have partnered with both the{" "}
<a
className="underline"
href="https://opencollective.com"
rel="noreferrer"
target="_blank"
>
Open Collective
</a>{" "}
and the{" "}
<a
className="underline"
href="https://www.oscollective.org"
rel="noreferrer"
target="_blank"
>
Open Source Collective
</a>{" "}
to help us with a fiscal management framework and banking needs.
They help support over three thousand open source projects including
the PHP Foundation, F-Droid, Sonarr, LinuxServer and DarkReader. We
are in good hands and good company.
</p>
<p>
As with everything we do here, Open Collective provides a fully
transparent framework for our budget and expenses. You can see what
were bringing in, who is spending money and where that money is
going{" "}
<a
className="underline"
href="https://opencollective.com/meshtastic"
rel="noreferrer"
target="_blank"
>
here
</a>
.
</p>
<p>
In addition to our partnership with Open Collective and Open Source
Collective, we have also been approved into the{" "}
<a
className="underline"
href="https://github.com/sponsors"
rel="noreferrer"
target="_blank"
>
GitHub Sponsors
</a>{" "}
program where we can set fundraising goals with GitHub.
</p>
<p>
All donations made through GitHub will be deposited to our account
with the Open Source Collective and managed by the Open Collective.
This means we have a single place to monitor and maintain
transparency of our finances.
</p>
<p>If you are able, please contribute to this amazing project.</p>
<div className="indexCtasBody">
<Link
className={"button button--outline button--lg cta--button"}
to={"https://opencollective.com/meshtastic/donate"}
>
Sponsor Meshtastic
</Link>
</div>
</div>
<div className="container mx-auto p-6 leading-normal space-y-4">
<h2>Contributors</h2>
<p>
Literally thousands of hours have gone into creating, maintaining,
and improving Meshtastic. Without our contributors none of this
would be possible. Thank you for donating the time for each and
every commit, issue, and pull request.
</p>
</div>
</main>
</Layout>
);
};
export default Credits;

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB