diff --git a/.github/ISSUE_TEMPLATE/documentation-change-request.md b/.github/ISSUE_TEMPLATE/documentation-change-request.md new file mode 100644 index 00000000..a3eeb2f2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation-change-request.md @@ -0,0 +1,20 @@ +--- +name: Documentation Change Request +about: Create a report about our documentation to help us improve +title: 'Documentation Change Request' +labels: '' +assignees: '' + +--- + +Please - if you just have a question, post in our [forum](https://meshtastic.discourse.group/) instead. Please reserve this system for requesting changes to the Meshtastic documentation. + +**Describe what section of the docs is outdated or otherwise in need of change** +Be as clear and concise as possible. Provide a URL or GitHub path to the doc you are referencing. + +**Suggested Changes** +What specifically in that documentation area needs to be changed / removed / added? +If possible provide replacement text when requesting changes or new text to fill in missing documentation. + +**Additional Notes** +Add any other context here. \ No newline at end of file diff --git a/README.md b/README.md index 403032c2..556e4557 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,6 @@

- ## What is Meshtastic? @@ -41,3 +40,32 @@ Meshtastic uses LoRa for the long range communications and depending on settings Please see our [website](https://meshtastic.org) for more information about Meshtastic. [![Powered by Vercel](https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg)](https://vercel.com?utm_source=meshtastic&utm_campaign=oss) + +## Installation + +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). + +Fork then clone the repository: + +```bash +git clone https://github.com/meshtastic/meshtastic +``` + + +Go to the root directory of your repository and install dependencies: + +```bash +yarn install +``` + +Build the project with the following command + +```bash +yarn build +``` + +Start a local dev. instance with the following command + +```bash +yarn start +``` diff --git a/docs/about-documentation/docusaurus.md b/docs/about-documentation/docusaurus.md new file mode 100644 index 00000000..320ba184 --- /dev/null +++ b/docs/about-documentation/docusaurus.md @@ -0,0 +1,10 @@ +--- +id: docusaurus +title: Docusaurus +sidebar_label: Docusaurus +--- +## Overview +Meshtastic's documentation is set up using [Docusaurus](https://docusaurus.io). It is highly encouraged to look at [their documentation](https://docusaurus.io/docs) when looking for a solution to a problem with our docs. They most likely have thought of the use case you've discovered. + +## Known Issues +- Admonitions within a `TabItem` component need to be completely unindented to show up correctly. diff --git a/docs/about-documentation/github.md b/docs/about-documentation/github.md new file mode 100644 index 00000000..a9762051 --- /dev/null +++ b/docs/about-documentation/github.md @@ -0,0 +1,11 @@ +--- +id: github +title: GitHub +sidebar_label: GitHub +--- +## Overview +All of Meshtastic's code and documentation is hosted on GitHub. If you would like to contribute to the project, having a GitHub account is an important step to doing so. + +## Set up GitHub account +- Go to [github.com](https://github.com) +- Click `Sign Up` diff --git a/docs/about-documentation/overview.md b/docs/about-documentation/overview.md new file mode 100644 index 00000000..e96679ee --- /dev/null +++ b/docs/about-documentation/overview.md @@ -0,0 +1,58 @@ +--- +id: overview +title: Overview +sidebar_label: Overview +slug: /about-documentation +--- +Meshtastic documentation is an important ingredient to the overall project. We want users to hit the ground running with the information they need right at their finger tips. This section will discuss the documentation software stack, file organization, and style guides. + +## Software Stack +All of our documentation resides on GitHub. Instructions for setting up your GitHub account are located [here](about-documentation/github). + +Our documentation is powered by [Docusaurus](https://docusaurus.io) — a documentation platform built on React that utilizes markdown files. Because markdown files are easy to edit, most content changes should be fairly simple. Instructions for setting up your instance of Docusaurus are located [here](about-documentation/docusaurus). + +Another component that we use is [Vercel](https://vercel.com) — a platform for frontend frameworks and static sites. Instructions for setting up your instance of Vercel are located [here](about-documentation/vercel). + +## Documentation Organization +| Section | File Path | Description | +| :-----: | :-------: | :---------: | +| About Meshtastic | `docs/about` | High level explanation of of Meshtastic. | +| Meshtastic Software | `docs/software` | Current bulk of documentation running through each Meshtastic project. | +| Getting Started | `docs/getting-started` | Instructions on how to get the Meshtastic firmware onto a users device. | +| Device Settings | `docs/software/settings` | Details each user setting and provides explanations for what the setting does and how to configure the device using the various clients available (Android, CLI, iOS, Web) | +| Hardware Details | `docs/hardware` | Any hardware related content. Any time a user is attaching a peripheral accessory to their device. That includes 3d printed cases, antennas, buttons, chimes, rotary encoders, and screens. | +| Radio Mesh Details | `docs/mesh` | This section discusses everything relating to the Meshtastic mesh. Mesh health metrics will be discussed here as well as topics such as signal strength, range and anyting else pertaining to "over the air". | +| Contribute to Meshtastic | `docs/developers` | Details each of the projects and how they work together to give a developer an idea of how the Meshtastic ecosystem operates. | +| About the Documentation | `docs/about-documentation` | This section explains how our documentation is organized, how to make edits to the documentation, view a local copy of your fork of the project. Style guides and tips will also be included here. | +| Legal | `docs/legal` | Any legal information. Most changes here will be handled by developers actually working on the projects that require any legal disclosures. Examples include: the Meshtastic trademark, terms of service, and privacy policy. | + +## Quick Start + +Assuming you have the [prerequisites installed](about-documentation/serve-docs-locally#prerequisites), running a local instance of Docusaurus takes three steps: + +1. Fork/Clone the [meshtastic/Meshtastic](https://github.com/meshtastic/Meshtastic) repository and navigate to the root directory of the project. +```bash title="Clone the project" +git clone https://github.com/meshtastic/Meshtastic.git +``` +```bash title="Clone fork of the project" +git clone https://github.com/[username]/Meshtastic.git +``` +```bash title="Change Directory" +cd ~/Meshtastic +``` +2. Install Dependencies +```bash title="Install dependencies using Yarn" +yarn install +``` +3. Run Docusaurus +```bash title="Run node.js server" +yarn start +``` + +:::tip +Before submitting a pull request, it's helpful to run the following command to ensure there are no broken links or errors: + +```bash title="Build Project" +yarn build +``` +::: diff --git a/docs/about-documentation/serve-docs-locally.md b/docs/about-documentation/serve-docs-locally.md new file mode 100644 index 00000000..54875c21 --- /dev/null +++ b/docs/about-documentation/serve-docs-locally.md @@ -0,0 +1,51 @@ +--- +id: serve-docs-locally +title: Setting up Local Documentation +sidebar_label: Serve Docs Locally +--- +:::note +Some things won't display properly like logos or protobufs, this is not cause for concern. +::: +## Prerequisites +In order to set up your local environment, you will need to install: + +- [Node & Node package manager (NPM)](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) +- [Yarn package manager](https://yarnpkg.com/getting-started/install) + +## Getting Started +### Fork the Meshtastic Repository + +Log into Github and create a fork of the [meshtastic/Meshtastic](https://github.com/meshtastic/Meshtastic) repository. + +### Clone your Meshtastic Repository fork + +:::note +Replace `username` with your Github username. +::: + +```bash title="Clone username/Meshtastic Repo" +git clone https://github.com/username/Meshtastic.git +``` + +### Change directory to Local copy +```bash title="Change Directory" +cd ~/Meshtastic +``` + +### Install Dependencies +```bash title="Install dependencies using Yarn" +yarn install +``` + +### Run Development Server +```bash title="Run node.js server" +yarn start +``` + +:::tip +Before submitting a pull request, it's helpful to run the following command to ensure there are no broken links or errors: + +```bash title="Build Project" +yarn build +``` +::: diff --git a/docs/about-documentation/style-guides/settings.md b/docs/about-documentation/style-guides/settings.md new file mode 100644 index 00000000..d7d0ec9e --- /dev/null +++ b/docs/about-documentation/style-guides/settings.md @@ -0,0 +1,95 @@ +--- +id: style-guide-settings +title: Style Guide - Settings Pages +sidebar_label: Settings Pages +--- +## Overview +Setting pages should focus solely on settings and configuring the device. Hardware is often a related topic, however these pages should not attempt to explain attaching hardware. Mention that hardware is required and link to the appropriate page(s). + +## Layout + +### Overview +This section should describe the group of settings and what they do for the device. + +### Settings +This section starts with an alphabetized table of settings, available values, and default values. + +Available values should be listed with tick marks `` surrounding the value. + +| Value Type | Example | +| :--------: | :-----: | +| Boolean | `true`, `false` | +| List | `apple`, `banana`, `orange` | +| Range | `0`-`100` | + +After the table each setting is described in brief detail. If the available options for a setting need additional explanation, a table should be used to describe each available option. + +### Details +If additional details are needed, this optional section can explain that. These would include prerequisites, links to hardware guides, etc. + +### Examples +This optional section can have examples of configurations needed where multiple settings are required to be set up for a specific use case. + +## Example Template +```markdown title="Template for Settings Pages" +--- +id: unique-id +title: Title for Page +sidebar_label: Label for Sidebar +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## Overview + + + +## Settings + + +| Setting | Acceptable Values | Default | +| :-----: | :---------------: | :-----: | +| my_setting_with_options | `apple`, `banana`, `orange` | `apple` | + + +### my_setting_with_options + + + +| Value | Description | +| :---: | :---------: | +| `apple` | Description of apple (default) | +| `banana` | Description of banana | +| `orange` | Description of orange | + + + + + CLI content here + + + Android content here + + + iOS content here + + + Web content here + + + +## Details + + +## Examples + +``` diff --git a/docs/about-documentation/vercel.md b/docs/about-documentation/vercel.md new file mode 100644 index 00000000..0a54dff9 --- /dev/null +++ b/docs/about-documentation/vercel.md @@ -0,0 +1,35 @@ +--- +id: vercel +title: Vercel +sidebar_label: Vercel +--- +## Overview +Setting up a Vercel account is an optional step that can help you view your changes to the documentation in a server environment just like the actual docs. This can be helpful to include when submitting a pull request so that developers can review your changes and visually check that things look correct. + +## Set up Vercel account + +- Go to [vercel.com](https://vercel.com) +- Login with your GitHub account, click `Continue with GitHub` + +## Link your fork of the project + +- Click `New Project` +- Under `Import Git Repository` select `+ Add GitHub Account` + You'll be redirected to GitHub to allow access to select repositories. +- Select your fork of the project: `username/Meshtastic` + +## Configure project + +Configure project: + +- Set a name for the project +- Select a framework preset: `Docusaurus 2` +- Click `Deploy` + +That's it! You should now see your project with a green or orange status dot showing that your fork of the project has been compiled. There will be a commit-specific url that you can share to view your changes. There also will be a branch-specific url that you can view. If there are any errors it will show up red and include the logs for you to figure out what has gone wrong. + +:::tip +There is a limited number of branch urls that you will be able to view. If you notice that option has disappeared, you can delete unused branches on your fork and that will enable that feature again. + +Branch urls are helpful in PRs because they will remain constant, and you won't need to resubmit a new url for review each new commit if changes are requested. +::: diff --git a/docs/developers/build.md b/docs/developers/build.md index 5a2b18df..563c5863 100644 --- a/docs/developers/build.md +++ b/docs/developers/build.md @@ -31,7 +31,7 @@ To get a clean build you may have to delete the auto-generated file `./.vscode/c ``` sudo apt-get update -sudo apt-get install python3 g++ zip +sudo apt-get install python3 python3-dev g++ zip ``` 2. Install PlatformIO (which is usually via wget/curl command). diff --git a/docs/developers/device/mesh-alg.md b/docs/developers/device/mesh-alg.md index f01627f0..5ee0fb6a 100644 --- a/docs/developers/device/mesh-alg.md +++ b/docs/developers/device/mesh-alg.md @@ -4,219 +4,103 @@ title: Mesh broadcast algorithm sidebar_label: Mesh algorithm --- -## Current algorithm +## Current Algorithm The routing protocol for Meshtastic is really quite simple (and suboptimal). It is heavily influenced by the mesh routing algorithm used in [RadioHead](https://www.airspayce.com/mikem/arduino/RadioHead/) (which was used in very early versions of this project). It has four conceptual layers. -### A note about protocol buffers +### A Note About Protocol Buffers Because we want our devices to work across various vendors and implementations, we use [Protocol Buffers](https://github.com/meshtastic/Meshtastic-protobufs) pervasively. For information on how the protocol buffers are used with respect to API clients see [sw-design](/software/other/sw-design.md), for purposes of this document you mostly only need to consider the MeshPacket and Subpacket message types. -### Layer 1: Non-reliable zero hop messaging +### Later 0: LoRa Radio -This layer is conventional non-reliable LoRa packet transmission. The transmitted packet has the following representation on the ether: +All data is converted into LoRa symbols which are sent to the radio for transmission. The details are described elsewhere, but it is worth noting that in addition to the converted packet bytes described below, there is also a preamble sent at the start of any data packet. -- A 256-bit LoRa preamble (to allow receiving radios to synchronize clocks and start framing). We use a longer than minimum (8 bit) preamble to maximize the amount of time the LoRa receivers can stay asleep, which dramatically lowers power consumption. +This preamble allows receiving radios to synchronize clocks and start framing. We use a preable length of 32, which is longer than the minimum preamble length of 8, to maximize the amount of time the LoRa receivers can stay asleep, which dramatically lowers power consumption. -After the preamble and the syncWord of 0x2b, the 16 byte packet header is transmitted. This header is described directly by the PacketHeader class in the C++ source code. But indirectly it matches the first portion of the "MeshPacket" protobuf definition. But notably: this portion of the packet is sent directly as the following 16 bytes (rather than using the protobuf encoding). We do this to both save airtime and to allow receiving radio hardware the option of filtering packets before even waking the main CPU. +### Layer 1: Unreliable Zero Hop Messaging -- to (4 bytes): the unique NodeId of the destination (or 0xffffffff for NodeNum_BROADCAST) -- from (4 bytes): the unique NodeId of the sender -- id (4 bytes): the unique (with respect to the sending node only) packet ID number for this packet. We use a large (32 bit) packet ID to ensure there is enough unique state to protect any encrypted payload from attack. -- flags (4 bytes): Only a few bits are currently used - 3 bits for the "HopLimit" (see below) and 1 bit for "WantAck" +This layer is conventional non-reliable LoRa packet transmission. The transmitted packet has the following representation before encoding for transmission: -After the packet header, the actual packet is placed onto the the wire. These bytes are merely the encrypted packed protobuf encoding of the SubPacket protobuf. A full description of our encryption is available in [crypto](/docs/developers/device/encryption). It is worth noting that only this SubPacket is encrypted, headers are not. Which leaves open the option of eventually allowing nodes to route packets without knowing the keys used to encrypt. +| Offset | Length | Type | Usage | +|--------|--------|------|-------| +| 0x00 | 1 byte | Integer | syncWord, always `0x2B`. | +| 0x01 | 4 bytes | Integer | Packet header: Destination. The destination's unique NodeID. `0xFFFFFFFF` for broadcast. | +| 0x05 | 4 bytes | Integer | Packet Header: Sender. The sender's unique NodeID. | +| 0x09 | 4 bytes | Integer | Packet Header: The sending node's unique packet ID for this packet. | +| 0x0D | 32 bits | Bits | Packet Header: Flags. See the [header flags](#packet-header-flags) for usage. | +| 0x11 .. 0xFD | Varies, maximum of 237 bytes. | Bytes | Actual packet data. Unused bytes are not transmitted. | +| 0xFE .. 0xFF | 2 Bytes | Bytes | Unused. | -NodeIds are constructed from the bottom four bytes of the macaddr of the Bluetooth address. Because the OUI is assigned by the IEEE, and we currently only support a few CPU manufacturers, the upper byte is defacto guaranteed unique for each vendor. The bottom 3 bytes are guaranteed unique by that vendor. +#### Packet Header Flags -To prevent collisions all transmitters will listen before attempting to send. If they hear some other node transmitting, they will reattempt transmission in x milliseconds. This retransmission delay is random between 20 and 22 seconds. (these two numbers are currently hardwired, but really should be scaled based on expected packet transmission time at current channel settings). +| Index | # of Bits | Usage | +|-------|-----------|-------| +| 0 | 3 | HopLimit (see note in Layer 3) | +| 3 | 1 | WantAck | +| 4 .. 32 | 28 | Currently unused | -### Layer 2: Reliable zero hop messaging +#### Usage Details -This layer adds reliable messaging between the node and its immediate neighbors (only). +- **Packet Header:** is described directly by the `PacketHeader` class in the C++ source code. But indirectly it matches the first portion of the `MeshPacket` protobuf definition. Note that the packet header is not encoded using a protobuf, but is sent as raw bytes. This both saves airtime and allows receiving radio hardware to optionally filter packets before waking the main CPU. -The default messaging provided by layer-1 is extended by setting the "want-ack" flag in the MeshPacket protobuf. If want-ack is set the following documentation from mesh.proto applies: +- **Packet Header - NodeIDs:** are constructed from the bottom four bytes of the MAC address of the Bluetooth address. Because the OUI is assigned by the IEEE, and we currently only support a few CPU manufacturers, the upper byte is defacto guaranteed unique for each vendor. The bottom 3 bytes are guaranteed unique by that vendor. -"""This packet is being sent as a reliable message, we would prefer it to arrive -at the destination. We would like to receive an ACK packet in response. +- **Packet Header - Unique ID:** The ID is a large, 32 bit ID to ensure there is enough unique state to protect an encrypted payload from attack. -Broadcast messages treat this flag specially: Since ACKs for broadcasts would -rapidly flood the channel, the normal ACK behavior is suppressed. Instead, -the original sender listens to see if at least one node is rebroadcasting this -packet (because naive flooding algorithm). If it hears that, the odds (given -typical LoRa topologies) are very high that every node should -eventually receive the message. So FloodingRouter.cpp generates an implicit -ACK which is delivered to the original sender. If after some time we don't -hear anyone rebroadcast our packet, we will timeout and retransmit, using the -regular resend logic.""" +- **Payload:** An encrypted and packed protobuf encoding of the SubPacket protobuf. Only the SubPacket is encrypted, while headers are not. This allows the option of eventually allowing nodes to route packets without knowing anything about the encrypted payload. For more information, see the [encryption](/docs/developers/device/encryption) and [protobufs](/docs/developers/protobufs/api) documentation. Any data past the maximum length is truncated. -If a transmitting node does not receive an ACK (or a NAK) packet within FIXME milliseconds, it will use layer-1 to attempt a retransmission of the sent packet. A reliable packet (at this 'zero hop' level) will be resent a maximum of three times. If no ACK or NAK has been received by then the local node will internally generate a NAK (either for local consumption or use by higher layers of the protocol). +#### Collision Avoidance -### Layer 3: (Naive) flooding for multi-hop messaging +All transmitters must listen before attempting to transmit. If another node is heard transmitting, the listening node will reattempt transmission after a calculated delay. The delay depends on various settings and is based on Semtech's [LoRa Modem Design Guide](/documents/LoRa_Design_Guide.pdf), section 4 and implemented in `RadioInterface::getPacketTime`. The following tables contains some calculated values for how long it takes to transmit a packet, which is used to calculate the delay. -Given our use-case for the initial release, most of our protocol is built around [flooding](). The implementation is currently 'naive' - i.e. it doesn't try to optimize flooding other than abandoning retransmission once we've seen a nearby receiver has ACKed the packet. Therefore, for each source packet up to N retransmissions might occur (if there are N nodes in the mesh). +| Payload Bytes | Spreading Factor | Bandwidth | Coding Rate | Time | +|---------------|------------------|-----------|-------------|------| +| 0 | 7 | 125 kHz | 4/5 | 13 ms | +| 237 | 7 | 125 kHz | 4/5 | 100 ms | +| 0 | 7 | 500 kHz | 4/5 | 4 ms | +| 237 | 7 | 500 kHz | 4/5 | 25 ms | +| 0 | 10 | 250 kHz | 4/7 | 51 ms | +| 237 | 10 | 250 kHz | 4/7 | 391 ms | +| 0 | 11 | 250 kHz | 4/6 | 101 ms | +| 237 | 11 | 250 kHz | 4/6 | 633 ms | +| 0 | 9 | 31.25 kHz | 4/8 | 201 ms | +| 237 | 9 | 31.25 kHz | 4/8 | 2.413 **seconds** | +| 0 | 12 | 125 kHz | 4/8 | 402 ms | +| 237 | 12 | 125 kHz | 4/8 | 3.482 **seconds** | -Each node in the mesh, if it sees a packet on the ether with HopLimit set to a value other than zero, it will decrement that HopLimit and attempt retransmission on behalf of the original sending node. +The actual delay calculation is a random value between 100ms (a hardcoded minimum) and the time taken to transmit just the header, which is given in the table as a 0 Byte payload. -### Layer 4: DSR for multi-hop unicast messaging +### Layer 2: Reliable Zero Hop Messaging -This layer is not yet fully implemented (and not yet used). But eventually (if we stay with our own transport rather than switching to QMesh or Reticulum) -we will use conventional DSR for unicast messaging. Currently, (even when not requiring 'broadcasts') we send any multi-hop unicasts as 'broadcasts' so that we can -leverage our (functional) flooding implementation. This is suboptimal but it is a very rare use-case, because the odds are high that most nodes (given our small networks and 'hiking' use case) are within a very small number of hops. When any node witnesses an ACK for a packet, it will realize that it can abandon its own -broadcast attempt for that packet. +This layer adds reliable messaging between the node and its immediate neighbors only. -## Misc notes on remaining tasks +The default messaging provided by Layer 1 is extended by setting the `WantAck` flag in the MeshPacket protobuf. If `WantAck` is set, the following documentation from mesh.proto applies: -This section is currently poorly formatted, it is mostly a mere set of TODO lists and notes for @geeksville during his initial development. After release 1.0 ideas for future optimization include: +> This packet is being sent as a reliable message, we would prefer it to arrive at the destination. We would like to receive an ACK packet in response. +> +> Broadcast messages treat this flag specially: Since ACKs for broadcasts would rapidly flood the channel, the normal ACK behavior is suppressed. Instead, the original sender listens to see if at least one node is rebroadcasting this +packet (because naive flooding algorithm). If it hears that, the odds (given typical LoRa topologies) are very high that every node should eventually receive the message. So FloodingRouter.cpp generates an implicit ACK which is delivered to the original sender. If after some time we don't hear anyone rebroadcast our packet, we will timeout and retransmit, using the regular resend logic. -- Make flood-routing less naive (because we have GPS and radio signal strength as heuristics to avoid redundant retransmissions) -- If nodes have been user marked as 'routers', preferentially do flooding via those nodes -- Fully implement DSR to improve unicast efficiency (or switch to QMesh/Reticulum as these projects mature) +If a transmitting node does not receive an ACK (or NAK) packet within FIXME milliseconds, it will use Layer 1 to attempt a retransmission of the sent packet. A reliable packet (at this 'zero hop' level) will be resent a maximum of three times. If no ACK or NAK has been received by then the local node will internally generate a NAK (either for local consumption or use by higher layers of the protocol). -great source of papers and class notes: +Similarly to the delay used for [collision avoidance](#collision-avoidance), a delay is used before attempting to retransmit a dropped packet. The delay is calculated based on the time it takes to transmit just the header, which is a packet with a 0 Byte payload, and is a random value between `9 * header time` and `10 * header time`, in milliseconds. -flood routing improvements +### Layer 3: (Naive) Flooding for Multi-Hop Messaging -- DONE if we don't see anyone rebroadcast our want_ack=true broadcasts, retry as needed. +Given our use-case for the initial release, most of our protocol is built around [flooding](). The implementation is currently 'naive' and doesn't try to optimize flooding, except by abandoning retransmission once a node has seen a nearby receiver ACK the packet it's trying to flood. This means that up to N retransmissions of a packet could occur in an N node mesh. -reliable messaging tasks (stage one for DSR): +If any mesh nodes see a packet with a HopLimit other than zero, it will decrement that HopLimit and attempt retransmission on behalf of the original sending node. -- DONE generalize naive flooding -- DONE add a max hops parameter, use it for broadcast as well (0 means adjacent only, 1 is one forward etc...). Store as three bits in the header. -- DONE add a 'snoopReceived' hook for all messages that pass through our node. -- DONE use the same 'recentmessages' array used for broadcast msgs to detect duplicate retransmitted messages. -- DONE in the router receive path?, send an ACK packet if want_ack was set and we are the final destination. FIXME, for now don't handle multi-hop or merging of data replies with these ACKs. -- DONE keep a list of packets waiting for ACKs -- DONE for each message keep a count of # retries (max of three). Local to the node, only for the most immediate hop, ignorant of multi-hop routing. -- DONE delay some random time for each retry (large enough to allow for ACKs to come in) -- DONE once an ACK comes in, remove the packet from the retry list and deliver the ACK to the original sender -- DONE after three retries, deliver a NAK packet to the original sender (i.e. the phone app or mesh router service) -- DONE test one hop ACK/NAK with the python framework -- DONE Do stress test with ACKs +:::note +A node being in router mode does **not** currently change this behavior, but is intended to be used for future versions of the meshing algorithm. For an explanation of what router mode currently does, see [settings](/docs/software/settings/router#enabledisable-router-mode). +::: -DSR tasks +### Layer 4: DSR for Multi-Hop Unicast Messaging -- DONE oops I might have broken message reception -- DONE Don't use broadcasts for the network pings (close open GitHub issue) -- DONE add ignoreSenders to radioconfig to allow testing different mesh topologies by refusing to see certain senders -- DONE test multi-hop delivery with the python framework +This layer is not yet fully implemented and is currently unused. Eventually conventional [DSR](https://en.wikipedia.org/wiki/Dynamic_Source_Routing) will be used for for unicast messaging, unless transport is switched to [QMesh](https://github.com/faydr/QMesh) or [Reticulum](https://github.com/markqvist/Reticulum). -optimizations / low priority: +Currently, we send any multi-hop unicasts as broadcasts so that we can leverage the existing flooding implementation, even when broadcasts are not required. While this is suboptimal, it is a very rare use-case, because current networks are small and are geared towards a hiking use case, which means that most nodes are withing a very small number of hops. -- read this [this](http://pages.cs.wisc.edu/~suman/pubs/nadv-mobihoc05.pdf) paper and others and make our naive flood routing less naive -- read @cyclomies long email with good ideas on optimizations and reply -- DONE Remove NodeNum assignment algorithm (now that we use 4 byte node nums) -- DONE make android app warn if firmware is too old or too new to talk to -- change nodenums and packetids in protobuf to be fixed32 -- low priority: think more careful about reliable retransmit intervals -- make ReliableRouter.pending threadsafe -- bump up PacketPool size for all the new ACK/NAK/routing packets -- handle 51 day rollover in doRetransmissions -- use a priority queue for the messages waiting to send. Send ACKs first, then routing messages, then data messages, then broadcasts? - -when we send a packet - -- do "hop by hop" routing -- when sending, if destnodeinfo.next_hop is zero (and no message is already waiting for an arp for that node), startRouteDiscovery() for that node. Queue the message in the 'waiting for arp queue' so we can send it later when then the arp completes. -- otherwise, use next_hop and start sending a message (with ack request) towards that node (starting with next_hop). - -when we receive any packet - -- sniff and update tables (especially useful to find adjacent nodes). Update user, network and position info. -- if we need to route() that packet, resend it to the next_hop based on our nodedb. -- if it is broadcast or destined for our node, deliver locally -- handle routereply/routeerror/routediscovery messages as described below -- then free it - -routeDiscovery - -- if we've already passed through us (or is from us), then it ignore it -- use the nodes already mentioned in the request to update our routing table -- if they were looking for us, send back a routereply -- NOT DOING FOR NOW -if max_hops is zero, and they weren't looking for us, drop (FIXME, send back error - I think not though?) -- if we receive a discovery packet, and we don't have next_hop set in our nodedb, we use it to populate next_hop (if needed) towards the requester (after decrementing max_hops) -- if we receive a discovery packet, and we have a next_hop in our nodedb for that destination we send a (reliable) we send a route reply towards the requester - -when sending any reliable packet - -- if timeout doing retries, send a routeError (NAK) message back towards the original requester. all nodes eavesdrop on that packet and update their route caches. - -when we receive a routereply packet - -- update next_hop on the node, if the new reply needs fewer hops than the existing one (we prefer shorter paths). FIXME, someday use a better heuristic - -when we receive a routeError packet - -- delete the route for that failed recipient, restartRouteDiscovery() -- if we receive routeerror in response to a discovery, -- FIXME, eventually keep caches of possible other routes. - -TODO: - -- optimize our generalized flooding with heuristics, possibly have particular nodes self mark as 'router' nodes. - -- DONE reread the radiohead mesh implementation - hop to hop acknowledgment seems VERY expensive but otherwise it seems like DSR -- DONE read about mesh routing solutions (DSR and AODV) -- DONE read about general mesh flooding solutions (naive, MPR, geo assisted) -- DONE reread the disaster radio protocol docs - seems based on Babel (which is AODVish) -- REJECTED - seems dying - possibly dash7? - does the open source stack implement multi-hop routing? flooding? their discussion mailing list looks dead-dead -- update duty cycle spreadsheet for our typical use case - -a description of DSR: , good slides here: , -good description of batman protocol: - -interesting paper on LoRa mesh: -It seems like DSR might be the algorithm used by RadioheadMesh. DSR is described in - - -broadcast solution: -Use naive flooding at first (FIXME - do some math for a 20 node, 3 hop mesh. A single flood will require a max of 20 messages sent) -Then move to MPR later (). Use altitude and location as heuristics in selecting the MPR set - -compare to db sync algorithm? - -What about never flooding GPS broadcasts? Instead, only have them go one hop in the common case. But if any node X is looking at the position of Y on their GUI, then send a unicast to Y asking for position update. Y replies. - -If Y were to die, at least the neighbor nodes of Y would have their last known position of Y. - -## approach 1 - -- send all broadcasts with a TTL -- periodically(?) do a survey to find the max TTL that is needed to fully cover the current network. -- to do a study, first send a broadcast (maybe our current initial user announcement?) with TTL set to one (so therefore no one will rebroadcast our request) -- survey replies are sent unicast back to us (and intervening nodes will need to keep the route table that they have built up based on past packets) -- count the number of replies to this TTL 1 attempt. That is the number of nodes we can reach without any rebroadcasts -- repeat the study with a TTL of 2 and then 3. stop once the # of replies stops going up. -- it is important for any node to do listen before talk to prevent stomping on other rebroadcasters... -- For these little networks I bet a max TTL would never be higher than 3? - -## approach 2 - -- send a TTL1 broadcast, the replies let us build a list of the nodes (stored as a bitvector?) that we can see (and their RSSIs) -- we then broadcast out that bitvector (also TTL1) asking "can any of ya'll (even indirectly) see anyone else?" -- if a node can see someone I missed (and they are the best person to see that node), they reply (unidirectionally) with the missing nodes and their RSSIs (other nodes might sniff (and update their db) based on this reply, but they don't have to) -- given that the max number of nodes in this mesh will be like 20 (for normal cases), I bet globally updating this db of "nodenums and who has the best RSSI for packets from that node" would be useful -- once the global DB is shared, when a node wants to broadcast, it just sends out its broadcast . the first level receivers then make a decision "am I the best to rebroadcast to someone who likely missed this packet?" if so, rebroadcast - -## approach 3 - -- when a node X wants to know other nodes positions, it broadcasts its position with want_replies=true. Then each of the nodes that received that request broadcast their replies (possibly by using special timeslots?) -- all nodes constantly update their local db based on replies they witnessed. -- after 10s (or whatever) if node Y notices that it didn't hear a reply from node Z (that Y has heard from recently) to that initial request, that means Z never heard the request from X. Node Y will reply to X on Z's behalf. -- could this work for more than one hop? Is more than one hop needed? Could it work for sending messages (i.e. for a message sent to Z with want-reply set). - -## approach 4 - -look into the literature for this idea specifically. - -- don't view it as a mesh protocol as much as a "distributed db unification problem". When nodes talk to nearby nodes, they work together - to update their nodedbs. Each nodedb would have a last change date and any new changes that only one node has would get passed to the - other node. This would nicely allow distant nodes to propagate their position to all other nodes (eventually). -- handle group messages the same way, there would be a table of messages and time of creation. -- when a node has a new position or message to send out, it does a broadcast. All the adjacent nodes update their db instantly (this handles 90% of messages I'll bet). -- Occasionally, a node might broadcast saying "anyone have anything newer than time X?" If someone does, they send the diffs since that date. -- essentially everything in this variant becomes broadcasts of "request db updates for >time X - for _all_ or for a particular nodenum" and nodes sending (either due to request or because they changed state) "here's a set of db updates". Every node is constantly trying to - build the most recent version of reality, and if some nodes are too far, then nodes closer in will eventually forward their changes to the distributed db. -- construct non-ambiguous rules for who broadcasts to request db updates. Ideally the algorithm should nicely realize node X can see most other nodes, so they should just listen to all those nodes and minimize the # of broadcasts. The distributed picture of nodes RSSI could be useful here? -- possibly view the BLE protocol to the radio the same way - just a process of reconverging the node/msgdb database. +If a node is attemptimg to broadcast a packet and receives an ACK for that packet, it can stop trying to broadcast that packet. diff --git a/docs/developers/publish.md b/docs/developers/publish.md index c1bf95b6..d318547e 100644 --- a/docs/developers/publish.md +++ b/docs/developers/publish.md @@ -47,39 +47,58 @@ storeFile=nononononono.jks * Go to Actions / Make Release / Run Workflow * Pick the Releases branch * Enter the version found in app/gradle.build - + ## iOS TBD +## Meshtastic-flasher + +A `meshtastic-flasher` release consists of publishing the release to PyPi https://pypi.org/project/meshtastic-flasher/ as well as producing single-executable files that are downloadable from Github https://github.com/meshtastic/Meshtastic-gui-installer/releases. + +### Instructions - mostly automated + +* Update https://github.com/meshtastic/Meshtastic-gui-installer/blob/master/meshtastic_flasher/version.py +* Go to Actions / Make Release / Run Workflow https://github.com/meshtastic/Meshtastic-gui-installer/actions/workflows/release.yml +* Draft & Publish release https://github.com/meshtastic/Meshtastic-gui-installer/releases + ## Python +A python release consists of publishing the release to PyPi https://pypi.org/project/meshtastic/ as well as producing single-executable files that are downloadable from Github https://github.com/meshtastic/Meshtastic-python/releases. + ### Pre-requisites -* Python Packages -* * pip3 install pdoc3 -* * pip3 install pygatt -* * pip3 install pandoc -* * pip install twine -* * pip3 install -r requirements.txt -* https://pandoc.org/installing.html -* nanopb 0.4.4 installed +No pre-requisites are needed locally to make a release. All builds are done via Github Actions currently. + +To test/validate, you will need to run: + +``` +pip3 install -r requirements.txt +pip install . +``` + ### Instructions -* Update protobufs -* * cd proto -* * git checkout master && git pull -* * cd .. -* * git add proto -* * git commit -m "updating proto submodule to latest" -* run bin/regen-protos.sh -* bump the version in setup.py -* run bin/test-release.sh -* * Ensure no errors. -* run bin/upload-release.sh +* Update protobufs by running the "Update protobufs" workflow in Actions: https://github.com/meshtastic/Meshtastic-python/actions/workflows/update_protobufs.yml - I usually just edit setup.py to bump the version number, then run "bin/upload-release.sh" (though you should use bin/test-release.sh for the first time - which is just a dry deploy to the pypi test server). This script does the build (including new docs - which will end up in the git checkin) and upload to pypi. Then I do a git commit/push and tag wit the version number. +* run the "smoke1" test (optional): + +connect one device to the serial port and run: + +``` +pytest -m smoke1 +``` + +* run unit tests: `pytest` (optional) + +* run bin/test-release.sh (optional) + +* bump the version in setup.py + +* Run the "Make Release" workflow in Actions: https://github.com/meshtastic/Meshtastic-python/actions/workflows/release.yml + +* After the "Make Release" is done, go into Releases: https://github.com/meshtastic/Meshtastic-python/releases There should be a draft. Add the title, update the "What's Changed" (Tip: Click on the "Auto-generate release notes" button.). Uncheck the "This is a pre-release" (if applicable). :::note You need permissions in the GitHub project to make a build diff --git a/docs/getting-started/faq.md b/docs/getting-started/faq.md index 68dfe71a..655ab7a0 100644 --- a/docs/getting-started/faq.md +++ b/docs/getting-started/faq.md @@ -7,7 +7,7 @@ slug: /getting-started/faq import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; - +:::note +This plugin requires attaching a peripheral accessory to your device. It will not work without one. It also requires use of the [Rotary Encoder Plugin](rotary-encoder-plugin) to configure the input source. +::: ## Overview -The CannedMessage Plugin will allow you to send messages to the mesh network -from the device without using the phone app. -You can predefine text messages to choose from. +The CannedMessage Plugin will allow you to send messages to the mesh network from the device without using the phone app. You can predefine text messages to choose from. -Please also follow settings of Rotary Encoder to configure input source! +:::tip +Once plugin settings are changed, a **reset** is required for them to take effect. +::: ## Settings | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | +| canned_message_plugin_allow_input_source | `rotEnc1`, `_any` | `_any` | | canned_message_plugin_enabled | `true`, `false` | `false` | -| canned_message_plugin_allow_input_source | `string` | `_all` | -| canned_message_plugin_messages | `string` | (not defined) | +| canned_message_plugin_messages | `string` | `""` | | canned_message_plugin_send_bell | `true`, `false` | `false` | +### canned_message_plugin_allow_input_source + +Input event source accepted by the canned message plugin. + +| Value | Description | +| :---: | :---------: | +| `_any` | Default. Allows any peripheral input device connected to the device. | +| `rotEnc1` | Hardcoded value naming the input device that this plugin listens to. This could allow multiple input devices to be named with future software development. At present, this doesn't do anything differently than the default setting. | + +#### Set input source + + + +```bash title="Set Allowed Input Source" +meshtastic --set canned_message_plugin_allow_input_source "_any" +``` +```bash title="Specify Allowed Input Source" +meshtastic --set canned_message_plugin_allow_input_source "rotEnc1" +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### canned_message_plugin_enabled Enables the plugin. -### canned_message_plugin_allow_input_source +:::tip +Using the canned message plugin requires you set up the [rotary encoder plugin](rotary-encoder-plugin). See [prerequisites](#prerequisites) below. +::: +#### Enable/Disable the plugin + + -Input event origin accepted by the canned message plugin. -Can be e.g. "rotEnc1" or keyword "_any" +```bash title="Enable Canned Message Plugin" +meshtastic --set canned_message_plugin_enabled true +``` +```bash title="Disable Canned Message Plugin" +meshtastic --set canned_message_plugin_enabled false +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### canned_message_plugin_messages -Predefined messages for CannedMessagePlugin separated by '|' characters. +Predefined messages for CannedMessagePlugin separated by `|` characters. You can define up to 50 messages with a total length 1024 bytes. +#### Set canned messages + + + +```bash title="Set Canned Messages" +meshtastic --set canned_message_plugin_messages "I'm fine|I'm out|I'm back|Need helping hand|Help me with saw|I need an alpinist|I need ambulance|Keep Calm|On my way|I will be late|I'm already waiting|We have company|Beer is cold|Roger" +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### canned_message_plugin_send_bell CannedMessagePlugin also sends a bell character with the messages. -ExternalNotificationPlugin can benefit from this feature. +The [External Notification Plugin](external-notification-plugin) can benefit from this feature as it utilizes the bell character. + +#### Enable/Disable bell character + + + +```bash title="Enable Bell Character" +meshtastic --set canned_message_plugin_send_bell true +``` +```bash title="Disable Bell Character" +meshtastic --set canned_message_plugin_send_bell false +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ## Details -See "Software / Plugins / Canned messages" for details! +### Prerequisites -## Examples + +- Attach a compatible peripheral device. Take note of the GPIO numbers you use, as they will be used in the following step. +- Once attached, configure peripheral device with [Rotary Encoder Plugin Settings](rotary-encoder-plugin). -See "Software / Plugins / Canned messages" for examples! +:::note +Replace each `GPIO` (x3) below with the GPIO numbers from hardware setup. + + ```bash title="Canned Message Plugin - Required Rotary Encoder Plugin Settings" + meshtastic --set rotary1_pin_a GPIO + meshtastic --set rotary1_pin_b GPIO + meshtastic --set rotary1_pin_press GPIO + meshtastic --set rotary1_event_cw KEY_UP + meshtastic --set rotary1_event_ccw KEY_DOWN + meshtastic --set rotary1_event_press KEY_SELECT + meshtastic --set rotary1_enabled True + ``` +::: +That's it! With a functioning and enabled rotary encoder, you're ready to begin configuring the Canned Message Plugin. diff --git a/docs/software/settings/channel-advanced.md b/docs/software/settings/channel-advanced.md index b1df529b..af2e676e 100644 --- a/docs/software/settings/channel-advanced.md +++ b/docs/software/settings/channel-advanced.md @@ -6,47 +6,30 @@ sidebar_label: Channel import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -:::caution +:::warning These settings are for advanced users only. If you don't know what you are doing you could damage your radio or break local radio laws. Proceed with caution. ::: ## Overview -Most +Most users should not need to change these settings. The default [modem_config](channel#modem_config) settings should work just fine. ## Settings | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | -| bandwidth | | | -| channel_num | | | -| coding_rate | | | -| spread_factor | `7`, `8`, `9`, `10`, `11`, `12` | TODO | -| tx_power | `integer` (in dBm) | `0` | +| bandwidth | `10.4`, `15.6`, `20.8`, `31.25`, `41.7`, `62.5`, `125`, `250`, `500` | `125` | +| channel_num | Depends on Region | Region Channel Number Default | +| coding_rate | `5`, `6`, `7`, `8` | `5` | +| frequency_offset | real numbers | `0` | +| spread_factor | `7`, `8`, `9`, `10`, `11`, `12` | `7` | +| tx_power | `0`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, (dBm) | `0` | ### bandwidth -TODO +Total amount of spectrum used for the transmission. -### channel_num - -TODO - -### coding_rate - -TODO - -### spread_factor - -TODO - -### tx_power - -TODO - -## Examples - -### Set Bandwidth +#### Set Bandwidth @@ -64,12 +49,32 @@ meshtastic --ch-set bandwidth 125 --ch-index 0 - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: -### Set Channel Number +### channel_num + +An abstraction that maps to a specific center frequency used for transmission. + +#### Set Channel Number - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: -### Set Coding Rate +### coding_rate + +The amount of forward error correction applied to allow for us to automatically repair errors in the data transmission. + +#### Set Coding Rate @@ -108,12 +139,32 @@ meshtastic --ch-set coding_rate 8 --ch-index 0 - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: -### Set Spread Factor +### frequency_offset + +This parameter is for advanced users with advanced test equipment, we do not recommend most users use it. A frequency offset that is added to to the calculated band center frequency. Used to correct for crystal calibration errors. + +#### Configure frequency_offset + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### spread_factor + +LoRa is a spread spectrum technology. spread_factor is how much the signal is spread over the spectrum. SF8 = 2^8 or spread 256 times. SF12 = 2^12 or spread 4096 times. + +#### Set Spread Factor + + @@ -131,12 +229,38 @@ meshtastic --ch-set spread_factor 12 --ch-index 0 - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: -### Set TX Power +### tx_power + +Configured transmit power out of the LoRa radio, measured in dBM. Setting this to `0` will use the device default which is the max legal continuous power for your region. + +:::caution +Ensure that you are not exceeding your country's regulations. + +`Country regulation - antenna gain = tx_power max setting` +::: + +#### Set TX Power - TODO + ```bash title="Set Default" + meshtastic --ch-set tx_power 0 --ch-index 0 + ``` + ```bash title="Set to 2dBM" + meshtastic --ch-set tx_power 2 --ch-index 0 + ``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/channel.md b/docs/software/settings/channel.md index ff6b8907..08f6135a 100644 --- a/docs/software/settings/channel.md +++ b/docs/software/settings/channel.md @@ -16,69 +16,234 @@ Channel settings are an integral part of the way your devices communicate across | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | -| downlink_enabled | `true`, `false` | `false` | | id | `integer` | `0` | -| modem_config | `Bw125Cr45Sf128`, `Bw500Cr45Sf128`, `Bw31_25Cr48Sf512`, `Bw125Cr48Sf4096` | TODO | +| modem_config | `Bw125Cr45Sf128`, `Bw500Cr45Sf128`, `Bw31_25Cr48Sf512`, `Bw125Cr48Sf4096` | `Bw125Cr45Sf128` | | name | `string` | `""` | | psk | `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `none`, `default`, `random` | `1` | | region | `Unset`, `US`, `EU433`, `EU865`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU` | `Unset` | -| uplink_enabled | `true`, `false` | `false` | - -### downlink_enabled - -If `true`, messages seen on the internet will be forwarded to the local mesh through a gateway node. See [MQTT settings](mqtt) for more details. - -:::caution -This is in active development and not ready for casual users. Testing only. -::: ### id +#### Set Channel ID + + + + ```bash title="Set the PRIMARY channel ID" + meshtastic --ch-set id 1234 --ch-index 0 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::note +The channel `id` must be an integer. +::: + + ### modem_config -| Setting | Name | Bandwidth | Coding Rate | Spread Factor | Speed | +| Setting | Name (Range/Speed) | Bandwidth | Coding Rate | Spread Factor | Speed | | :-----: | :--: | :-------: | :---------: | :-----------: | :-----: | -| `Bw125Cr45Sf128` | ShortSlow | 125 kHz | 4/5 | 7 = 128chips/symbol | 5.469 kbps | -| `Bw500Cr45Sf128` | ShortFast | 500 kHz | 4/5 | 7 = 128chips/symbol | 21.875 kbps | -| `Bw31_25Cr48Sf512` | LongFast | 31.25 kHz | 4/8 | 9 = 512chips/symbol | 275 bps | -| `Bw125Cr48Sf4096` | LongSlow | 125 kHz | 4/8 | 12 = 4096chips/symbol | 183 bps | +| `Bw500Cr45Sf128` | Short/Fast | 500 kHz | 4/5 | 7 = 128chips/symbol | 18.89 kbps | +| `Bw125Cr45Sf128` | Short/Slow | 125 kHz | 4/5 | 7 = 128chips/symbol | 4.69 kbps | +| `Bw250Cr47Sf1024` | Medium/Fast | 250 kHz | 4/7 | 10 = 1024chips/symbol | 1.2 kbps | +| `Bw250Cr46Sf2048` | Medium/Slow | 250 kHz | 4/6 | 11 = 2048chips/symbol | 0.75 kbps | +| `Bw31_25Cr48Sf512` | Long/Fast | 31.25 kHz | 4/8 | 9 = 512chips/symbol | 0.19 kbps | +| `Bw125Cr48Sf4096` | Long/Slow | 125 kHz | 4/8 | 12 = 4096chips/symbol | 0.13 kbps | + +#### Set Modem + + + + ```bash title="Set Modem - LongSlow" + meshtastic --ch-set modem_config Bw125Cr48Sf4096 --ch-index 0 + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::tip +For advanced modem configuration, see [Channel Settings - Advanced](channel-advanced). +::: ### name - +The name of the channel. If this is left an empty string it is assumed that this channel is the special (minimally secure) "Default" channel. Channel Names should be short (less than 12 bytes). + +#### Set Channel Name + + + + ```bash title="Set channel name for the PRIMARY channel" + meshtastic --ch-set name MyChannel --ch-index 0 + ``` + + ```bash title="Set channel name for the PRIMARY channel with spaces" + meshtastic --ch-set name "My Channel" --ch-index 0 + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::note +A channel `id` must be set in order to name a channel. +::: ### psk - - - - - - -Selecting a number 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. - -| Setting | Behavior | -| :-----: | :------: | -| `0` | Disable Encryption | -| `1` | Default Encryption | -| `2`-`10` | Default Encryption, except with 1-9 added to the last byte | - - - - +:::note +Selecting a `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. +::: | Setting | Behavior | | :-----: | :------: | | `none` | Disable Encryption | | `default` | Default Encryption (use the weak encryption key) | | `random` | Generate a secure 256-bit encryption key. Use this setting for private communication. | +| `simple0`- `simple254` | Uses a single byte encoding for encryption | -:::note +:::tip If you use Meshtastic for exchanging messages you don't want other people to see, `random` is the setting you should use. ::: +#### Set/Disable Encryption + + + + ```bash title="Set encryption to default on PRIMARY channel" + meshtastic --ch-set psk default --ch-index 0 + ``` + ```bash title="Set encryption to random on PRIMARY channel" + meshtastic --ch-set psk random --ch-index 0 + ``` + ```bash title="Set encryption to single byte on PRIMARY channel" + meshtastic --ch-set psk simple15 --ch-index 0 + ``` + ```bash title="Set encryption to your own key on PRIMARY channel" + meshtastic --ch-set psk 0x1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b --ch-index 0 + ``` + ```bash title="Disable encryption on PRIMARY channel" + meshtastic --ch-set psk none --ch-index 0 + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### region The `region` variable sets which region your radio is configured to work in. It is important to ensure that you've set it to the correct region. If left `Unset`, it will default to `US` settings. @@ -99,139 +264,45 @@ The `region` variable sets which region your radio is configured to work in. It For more details about `region` settings, you can see the source code [here](https://github.com/meshtastic/Meshtastic-device/blob/master/src/mesh/RadioInterface.cpp) ::: -### uplink_enabled - -If `true`, messages on the mesh will be sent to the public internet by any gateway node. See [MQTT settings](mqtt) for more details. - -## Examples - -### Set Channel ID +#### Set Region - ```bash title="Set the PRIMARY channel ID" - meshtastic --ch-set id 1234 --ch-index 0 - ``` - - - - - TODO - - - - -:::note -The channel `id` must be an integer. -::: - -### Set Channel Name - - - - ```bash title="Set channel name for the PRIMARY channel" - meshtastic --ch-set name MyChannel --ch-index 0 - ``` - - ```bash title="Set channel name for the PRIMARY channel with spaces" - meshtastic --ch-set name "My Channel" --ch-index 0 - ``` - - - - TODO - - - - -:::note -A channel `id` must be set in order to name a channel. -::: - -### Set Encryption - - - - ```bash title="Set psk" - meshtastic --ch-set psk default --ch-index 0 - ``` - - - - - - TODO - - - - -:::note -See [`psk`](#psk) for details. -::: - -### Set Modem - - - - ```bash title="Set Modem - LongSlow" - meshtastic --ch-set modem_config Bw125Cr48Sf4096 --ch-index 0 - ``` - - - - TODO - - - - -:::note -See [`modem_config`](#modem_config) for details. For advanced modem configuration, see [Channel Settings - Advanced](channel-advanced). -::: - -### Set Region - - - - ```bash title="Set Region" + ```bash title="Unset Region" meshtastic --set region Unset ``` + ```bash title="Set Region" + meshtastic --set region US + ``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: - - diff --git a/docs/software/settings/environmental-measurment-plugin.md b/docs/software/settings/environmental-measurment-plugin.md index 5803583d..78d8b327 100644 --- a/docs/software/settings/environmental-measurment-plugin.md +++ b/docs/software/settings/environmental-measurment-plugin.md @@ -6,61 +6,321 @@ sidebar_label: Environmental Measurement Plugin import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; + +:::note +This plugin requires attaching a peripheral accessory to your device. It will not work without one. +::: ## Overview -The Environmental Measurement Plugin will allow you to connect environment sensors to report conditions to your mesh. Examples are temperature, humidity and gas pressure. +The Environment Measurement Plugin will allow nodes to send a specific message with information from connected environmental sensors. Currently supported sensors are BME280, BME680, DHT11, DHT12, DHT21, DHT22 and Dallas 1-wire DS18B20. + +:::tip +Once plugin settings are changed, a **reset** is required for them to take effect. +::: ## Settings | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | -| environmental_measurement_plugin_measurement_enabled | `true`, `false` | `false` | | environmental_measurement_plugin_display_farenheit | `true`, `false` | `false` | +| environmental_measurement_plugin_measurement_enabled | `true`, `false` | `false` | | environmental_measurement_plugin_read_error_count_threshold | `integer` | `0` | | environmental_measurement_plugin_recovery_interval | `integer` (seconds) | `0` | | environmental_measurement_plugin_screen_enabled | `true`, `false` | `0` | | environmental_measurement_plugin_sensor_pin | `integer` | `0` | -| environmental_measurement_plugin_sensor_type | `DHT11` | `0` | +| environmental_measurement_plugin_sensor_type | `0-6` | `0` | | environmental_measurement_plugin_update_interval | `integer` (seconds) | `0` | -### environmental_measurement_plugin_measurement_enabled - -Enables the plugin. - ### environmental_measurement_plugin_display_farenheit The sensor is always read in Celsius, but the user can opt to view the temperature display in Fahrenheit using this setting. +#### Display Farenheit/Celsius + + + +```bash title="Display Farenheit" +meshtastic --set environmental_measurement_plugin_display_farenheit true +``` +```bash title="Display Celsius" +meshtastic --set environmental_measurement_plugin_display_farenheit false +``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### environmental_measurement_plugin_measurement_enabled + +Enables the plugin. + +#### Enable/Disable the plugin + + + +```bash title="Enable Plugin" +meshtastic --set environmental_measurement_plugin_measurement_enabled true +``` +```bash title="Disable Plugin" +meshtastic --set environmental_measurement_plugin_measurement_enabled false +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### environmental_measurement_plugin_read_error_count_threshold Sometimes sensor reads can fail. If this happens, we will retry a configurable number of attempts. Each attempt will be delayed by the minimum required refresh rate for that sensor +#### Configure environmental_measurement_plugin_read_error_count_threshold + + + +```bash title="Configure environmental_measurement_plugin_read_error_count_threshold to 3 tries" +meshtastic --set environmental_measurement_plugin_read_error_count_threshold 3 +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### environmental_measurement_plugin_recovery_interval Sometimes we can end up with more than read_error_count_threshold failures. In this case, we will stop trying to read from the sensor for a while. Wait this long until trying to read from the sensor again. +#### Configure environmental_measurement_plugin_recovery_interval + + + +```bash title="Configure environmental_measurement_plugin_recovery_interval to 120 seconds" +meshtastic --set environmental_measurement_plugin_recovery_interval 120 +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### environmental_measurement_plugin_screen_enabled Enable/Disable the environmental measurement plugin on-device display. +#### Enable/Disable the plugin on device screen + + + +```bash title="Enable on device screen" +meshtastic --set environmental_measurement_plugin_screen_enabled true +``` +```bash title="Disable on device screen" +meshtastic --set environmental_measurement_plugin_screen_enabled false +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### environmental_measurement_plugin_sensor_pin +:::note +The preferred setup is using I2C, so the `environmental_measurement_plugin_sensor_pin` may not be needed. +::: + Specify the preferred GPIO Pin for sensor readings. May not be needed if using I2C. +#### Set plugin sensor pin + + + +```bash title="Set plugin sensor pin" +meshtastic --set environmental_measurement_plugin_sensor_pin PINNUMBER +``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### environmental_measurement_plugin_sensor_type Specify the sensor type. -### environmental_measurement_plugin_update_interval +| Value | Description | Sensor Features | +| :---: | :---------: | :-------------: | +| `0` | DHT11 | Temperature, Humidity | +| `1` | DS18B20 (Dallas 1-wire) | Temperature | +| `2` | DHT12 | Temperature, Humidity | +| `3` | DHT21 | Temperature, Humidity | +| `4` | DHT22 | Temperature, Humidity | +| `5` | BME280 | Temperature, Humidity, Pressure | +| `6` | BME680 | Temperature, Humidity, Pressure, VOC Gas | +| `7` | MCP9808 | Precision Temperature | -Interval in seconds of how often we should try to send our measurements to the mesh. - -## Details - - - -## Examples +#### Set sensor type +:::note +The CLI is able to take the `value` or the `name` of the sensor from the table above. +::: + +```bash title="Set sensor type to DS18B20" +meshtastic --set environmental_measurement_plugin_sensor_type 1 ``` -meshtastic --set environmental_measurement_plugin_measurement_enabled true -meshtastic --set environmental_measurement_plugin_screen_enabled true -meshtastic --set environmental_measurement_plugin_update_interval 15 -meshtastic --set environmental_measurement_plugin_display_farenheit true -meshtastic --set environmental_measurement_plugin_sensor_type 5 -meshtastic --set environmental_measurement_plugin_sensor_type BME280 +```bash title="Set sensor type to DS18B20" +meshtastic --set environmental_measurement_plugin_sensor_type DS18B20 ``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + +### environmental_measurement_plugin_update_interval + +Interval in seconds of how often we should try to send our measurements to the mesh. + +#### Set plugin update interval + + + +```bash title="Set plugin update interval to 15 seconds" +meshtastic --set environmental_measurement_plugin_update_interval 15 +``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +## Details + +### Hardware + +The sensors can be wired differently, here's [one example](https://randomnerdtutorials.com/esp32-ds18b20-temperature-arduino-ide) for sensor DS18B20. + +### Known Problems + +* No default configuration values are currently set, so this must be done when enabling the plugin. diff --git a/docs/software/settings/external-notification-plugin.md b/docs/software/settings/external-notification-plugin.md index 074915d9..2cd69c45 100644 --- a/docs/software/settings/external-notification-plugin.md +++ b/docs/software/settings/external-notification-plugin.md @@ -6,67 +6,303 @@ sidebar_label: External Notification Plugin import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; + +:::note +This plugin requires attaching a peripheral accessory to your device. It will not work without one. +::: ## Overview The External Notification Plugin will allow you to connect a speaker, LED, or other device to notify you when a message has been received from the mesh network. +:::tip +Once plugin settings are changed, a **reset** is required for them to take effect. +::: + ## Settings | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | -| ext_notification_plugin_enabled | `true`, `false` | `false` | | ext_notification_plugin_active | `true`, `false` | `false` | | ext_notification_plugin_alert_bell | `true`, `false` | `false` | | ext_notification_plugin_alert_message | `true`, `false` | `false` | +| ext_notification_plugin_enabled | `true`, `false` | `false` | | ext_notification_plugin_output | `integer` | `0` | -| ext_notification_plugin_output_ms | `integer` | `0` | - -### ext_notification_plugin_enabled - -Enables the plugin. +| ext_notification_plugin_output_ms | `integer` (milliseconds) | `0` | ### ext_notification_plugin_active - - -### ext_notification_plugin_alert_bell - - - -### ext_notification_plugin_alert_message - - - -### ext_notification_plugin_output - - - -### ext_notification_plugin_output_ms - - - -## Details - - - -## Examples +Specifies whether the external circuit is triggered when the device's GPIO is low or high. +#### Specify High/Low GPIO triggers circuit - TODO - +```bash title="GPIO active high" +meshtastic --set ext_notification_plugin_active true +``` +```bash title="GPIO active low (default)" +meshtastic --set ext_notification_plugin_active false +``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### ext_notification_plugin_alert_bell + +Specifies if an alert should be sent when receiving an incoming bell. + +#### Enable/Disable alert on incoming bell + + + +```bash title="Enable alert on incoming bell" +meshtastic --set ext_notification_plugin_alert_bell true +``` +```bash title="Disable alert on incoming bell" +meshtastic --set ext_notification_plugin_alert_bell false +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### ext_notification_plugin_alert_message + +Specifies if an alert should be sent when receiving an incoming message. + +#### Enable/Disable Alert on incoming message + + + +```bash title="Enable alert on incoming message" +meshtastic --set ext_notification_plugin_alert_message true +``` +```bash title="Disable alert on incoming message" +meshtastic --set ext_notification_plugin_alert_message false +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### ext_notification_plugin_enabled + +Enables the plugin. + +#### Enable/Disable the plugin + + + +```bash title="Enable Plugin" +meshtastic --set ext_notification_plugin_enabled true +``` +```bash title="Disable Plugin" +meshtastic --set ext_notification_plugin_enabled false +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### ext_notification_plugin_output + +Specifies the GPIO that your external circuit is attached to on the device. + +#### Specify GPIO for circuit to monitor + + + +:::note +Replace `GPIO` in the below command with the GPIO number your circuit is attached to. +::: + +```bash title="Specify GPIO that circuit is connected to" +meshtastic --set ext_notification_plugin_output GPIO +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### ext_notification_plugin_output_ms + +Specifies how long in milliseconds you would like your external circuit triggered. Default is `1000`. (Because of the way that defaults are handled in the protobufs `0` is interpreted as `1000`) + +#### Specify how many milliseconds to trigger circuit + + + +```bash title="Set to default (1000ms)" +meshtastic --set ext_notification_plugin_output_ms 0 +``` +```bash title="Set to other value" +meshtastic --set ext_notification_plugin_output_ms 1500 +``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/gps.md b/docs/software/settings/gps.md index a762f695..4738cd5d 100644 --- a/docs/software/settings/gps.md +++ b/docs/software/settings/gps.md @@ -19,12 +19,16 @@ GPS is provided by either the device or your paired phone. More than likely, you | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | | fixed_position | `true`, `false` | `false` | +| gps_accept_2d | `true`, `false` | `false` | | gps_attempt_time | `integer` (seconds) | `0` (see note) | +| gps_format | `GpsFormatDec`, `GpsFormatDMS`, `GpsFormatUTM`, `GpsFormatMGRS`, `GpsFormatOLC`, `GpsFormatOSGR` | `GpsFormatDec` | +| gps_max_dop | `integer` | `0` | | gps_operation | `GpsOpUnset`, ~~`GpsOpStationary`~~, `GpsOpMobile`, `GpsOpTimeOnly`, `GpsOpDisabled` | `GpsOpUnset` | | gps_update_interval | `integer` (seconds) | `0` (see note) | | location_share | `LocUnset`, `LocEnabled`, `LocDisabled` | `LocUnset` | | position_broadcast_secs | `integer` (seconds) | `0` (see note) | | position_broadcast_smart | `true`, `false` | `false` | +| position_flags | `POS_UNDEFINED`, `POS_ALTITUDE`, `POS_ALT_MSL`, `POS_GEO_SEP`, `POS_DOP`, `POS_HVDOP`, `PDOP`, `POS_BATTERY`, `POS_SATINVIEW`, `POS_SEQ_NOS`, `POS_TIMESTAMP` | `POS_UNDEFINED` | :::note On `gps_attempt_time`, `gps_update_interval`, & `position_broadcast_secs` when you set these to `0` you are not disabling these features. @@ -38,10 +42,294 @@ If you wish to disable any GPS features, see below for more information. If set, this node is at a fixed position. The device will generate GPS updates at the regular `gps_update_interval`, but use whatever the last lat/lon/alt it saved for the node. The lat/lon/alt can be set by an internal GPS or with the help of the mobile device's GPS. +#### Set/Unset Fixed Position + + + + ```bash title="Set Fixed Position - Current Location" + meshtastic --set fixed_position true + ``` +:::note +The device will continue to acquire GPS coordinates according to the `gps_update_interval`, but will use the last saved coordinates as its fixed point. +::: + ```bash title="Set Fixed Position - User Defined" + meshtastic --setlat 37.8651 --setlon -119.5383 + ``` + ```bash title="Unset Fixed Position" + meshtastic --set fixed_position false + ``` +:::note +It may take some time to see that the change has taken effect. The GPS location is updated according to the value specified on `gps_update_interval` and the mesh will be notified of the new position in relation to the `position_broadcast_secs` value. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### gps_accept_2d + +Determines whether the device should accept 2D GPS fixes. By default, only 3D fixes are accepted (during a 2D fix, altitude values are unreliable and will be excluded). + +#### Enable/Disable 2D GPS Fixes + + + + ```bash title="Enable 2D GPS Fixes" + meshtastic --set gps_accept_2d true + ``` + ```bash title="Disable 2D GPS Fixes" + meshtastic --set gps_accept_2d false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### gps_attempt_time Determines the amount of time that a GPS fix should be allowed to take. The default is every 30 seconds. If you increase this value, it will allow the device that amount of time in seconds to acquire coordinates. If the device is unable to get a fix, it will turn off until the next interval. GPS coordinates are updated every [`gps_update_interval`](#gps_update_interval) seconds. +#### Change GPS attempt time frequency + + + + ```bash title="Set GPS attempt time to default (30 seconds)" + meshtastic --set gps_attempt_time 0 + ``` + ```bash title="Set GPS attempt time to 45 seconds" + meshtastic --set gps_attempt_time 45 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### gps_format + +Determines how the GPS coordinates are displayed on the OLED screen. + +| Value | Description | +| :---: | :---------: | +| GpsFormatDec | GPS coordinates are displayed in the normal decimal degrees format: DD.DDDDDD DDD.DDDDDD | +| GpsFormatDMS | GPS coordinates are displayed in the degrees minutes seconds format: DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant | +| GpsFormatUTM | GPS coordinates are displayed in Universal Transverse Mercator format: ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing | +| GpsFormatMGRS | GPS coordinates are displayed in Military Grid Reference System format: ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square, E is easting, N is northing | +| GpsFormatOLC | GPS coordinates are displayed in Open Location Code (aka Plus Codes) | +| GpsFormatOSGR | GPS coordinates are displayed in Ordnance Survey Grid Reference (the National Grid System of the UK). Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, E is the easting, N is the northing | + +#### Specify GPS Screen Display + + + + ```bash title="Specify GPS format on device screen" + meshtastic --set gps_format GpsFormatUTM + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### gps_max_dop + +Determines GPS maximum DOP accepted (dilution of precision) Set a rejection threshold for GPS readings based on their precision, relative to the GPS rated accuracy (which is typically ~3m) Solutions above this value will be treated as retryable errors! Useful range is between 1 - 64 (3m - <~200m) By default (if zero), accept all GPS readings + +#### Change maximum GPS dilution of precision + + + + ```bash title="Set GPS max DOP to default (accept all GPS readings)" + meshtastic --set gps_max_dop 0 + ``` + ```bash title="Set GPS max DOP to 3m" + meshtastic --set gps_max_dop 1 + ``` + ```bash title="Set GPS max DOP to < ~200m" + meshtastic --set gps_max_dop 64 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +#### Specify GPS Screen Display + + + + ```bash title="Specify GPS format on device screen" + meshtastic --set gps_format GpsFormatUTM + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### gps_operation How the GPS hardware in the device is operated. @@ -58,10 +346,103 @@ This is independent of how our location is shared with other devices. For that s | GpsOpTimeOnly | We should only use the GPS to get time (no location data should be acquired/stored) Once we have the time we treat `gps_update_interval` as MAXINT (i.e. sleep forever) | | GpsOpDisabled | GPS is always turned off - this mode is not recommended - use `GpsOpTimeOnly` instead. | +#### Enable/Disable GPS + + + + ```bash title="Set GPS to default settings" + meshtastic --set gps_operation GpsOpUnset + ``` + ```bash title="Set GPS to only be used for time" + meshtastic --set gps_operation GpsOpTimeOnly + ``` + ```bash title="Disable GPS Completely" + meshtastic --set gps_operation GpsOpDisabled + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::note +`gps_operation GpsOpTimeOnly` is preferred to `gps_operation GpsOPDisabled` because it allows the device to get a hi-res time. +::: + ### gps_update_interval Determines how often should the device should attempt to acquire a GPS position (in seconds). The length of time the device is allowed to attempt to acquire GPS coordinates each interval is set using [`gps_attempt_time`](#gps_attempt_time). The default is every 30 seconds. +#### Specify GPS update interval + + + + ```bash title="Set GPS update interval to default settings (every 30 seconds)" + meshtastic --set gps_update_interval 0 + ``` + ```bash title="Set GPS update interval to every 45 seconds" + meshtastic --set gps_update_interval 45 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### location_share Determines whether location is shared with other nodes. See more details. @@ -72,19 +453,106 @@ Determines whether location is shared with other nodes. See more details. | LocEnabled | The device is sharing its location (or the paired phone's location) | | LocDisabled | The device is not sharing its location (if the unit has a GPS it will default to only get time - i.e. [`GpsOpTimeOnly`](#gps_operation)) | +#### Disable Location Sharing + + + + ```bash title="Disable Location Sharing" + meshtastic --set location_share LocDisabled + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::note +Disabling location sharing does not disable the GPS functionality, only the location sharing via the mesh. +::: + ### position_broadcast_secs How often our position is sent to the mesh (but only if it has changed significantly). The GPS updates will be sent out every `position_broadcast_secs`, with either the actual GPS location, or an empty location if no GPS fix was achieved. This defaults to broadcast every 15 minutes. +#### Specify GPS position broadcast frequency + + + + ```bash title="Set GPS update interval to default settings (every 15 minutes)" + meshtastic --set position_broadcast_secs 0 + ``` + ```bash title="Set GPS update interval to every 60 seconds" + meshtastic --set position_broadcast_secs 60 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### position_broadcast_smart `position_broadcast_smart` will send out your position at an increased frequency only if your location has changed enough for a position update to be useful. Complements `position_broadcast_secs` (doesn't override that setting) but will apply an algorithm to more frequently update your mesh network if you are in motion and then throttle it down when you are standing still. If you use this feature, it's best to leave `position_broadcast_secs` at the default. -`position_broadcast_smart` will calculate an ideal position update interval based on the data rate of your selected channel configuration. +`position_broadcast_smart` will calculate an ideal position update interval based on the data rate of your selected channel configuration. As an example, if you configure your radio to use **Long Range / Fast**, if you have traveled at least 144 meters and it's been at least 61 seconds since the last position update, a new position broadcast will be sent out. If you've moved less than 144 meters, we will broadcast the position based on the value of `position_broadcast_secs`. @@ -99,132 +567,113 @@ The table below is a summary computed values from the algorithm. | Short Range / Slow | 30 | 30 | | Short Range / Fast | 30 | 30 | -Note: A person walking in a straight line will take about 90 seconds to travel 150 meters. That walking speed estimate was used as the baseline for the formula used. - -## Examples - -### Disable GPS Completely - - - - ```bash title="Disable GPS Completely" - meshtastic --set gps_operation GpsOpDisabled - ``` - - - - - TODO - - - - -:::note -`gps_operation GpsOpTimeOnly` is preferred to `gps_operation GpsOPDisabled` because it allows the device to get a hi-res time. +:::tip +A person walking in a straight line will take about 90 seconds to travel 150 meters. That walking speed estimate was used as the baseline for the formula used. ::: -### Disable Location Sharing +#### Enable/Disable Smart Position Broadcast - ```bash title="Disable Location Sharing" - meshtastic --set location_share LocDisabled + ```bash title="Enable smart position broadcast" + meshtastic --set position_broadcast_smart true + ``` + ```bash title="Disable smart position broadcast" + meshtastic --set position_broadcast_smart false ``` - TODO - - - - -:::note -Disabling location sharing does not disable the GPS functionality, only the location sharing via the mesh. +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. ::: -### Set Fixed Position – Current Lat/Lon - - - - ```bash title="Set Fixed Position" - meshtastic --set fixed_position true - ``` - - + - TODO - - - - -:::note -The device will continue to acquire GPS coordinates according to the `gps_update_interval`, but will use the last saved coordinates as its fixed point. +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. ::: -### Set Fixed Position – Specify Lat/Lon - - - - ```bash title="Set Fixed Position" - meshtastic --setlat 37.8651 --setlon -119.5383 - ``` - - + - TODO - - - - -### Unset Fixed Position - - - - ```bash title="Unset Fixed Position" - meshtastic --set fixed_position false - ``` - - - - - TODO - - - - -:::note -It may take some time to see that the change has taken effect. The GPS location is updated according to the value specified on `gps_update_interval` and the mesh will be notified of the new position in relation to the `position_broadcast_secs` value. +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. ::: + + + + +### position_flags + +Bit field of boolean configuration options for POSITION messages (bitwise OR of PositionFlags) + +| Value | Description | +| :---: | :---------: | +| POS_UNDEFINED | Required for compilation | +| POS_ALTITUDE | Include an altitude value (if available) | +| POS_ALT_MSL | Altitude value is MSL | +| POS_GEO_SEP | Include geoidal separation | +| POS_DOP | Include the DOP value ; PDOP used by default, see below | +| POS_HVDOP | If POS_DOP set, send separate HDOP / VDOP values instead of | PDOP +| POS_BATTERY | Include battery level | +| POS_SATINVIEW | Include number of "satellites in view" | +| POS_SEQ_NOS | Include a sequence number incremented per packet | +| POS_TIMESTAMP | Include positional timestamp (from GPS solution) | + +#### Set/Unset Position Flags + + + +:::tip +Include each flag desired from the table above separated by a single space. +::: + + ```bash title="Set Position Flags" + meshtastic --pos-fields POS_ALTITUDE POS_ALT_MSL + ``` + ```bash title="Unset Position Flags" + meshtastic --pos-fields POS_UNDEFINED + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + diff --git a/docs/software/settings/ham.md b/docs/software/settings/ham.md new file mode 100644 index 00000000..dea3c741 --- /dev/null +++ b/docs/software/settings/ham.md @@ -0,0 +1,88 @@ +--- +id: ham +title: Licensed (HAM) Operation +sidebar_label: Licensed (HAM) Operation +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +:::warning +By changing these settings, you are self certifying that you are licensed to operate in the mode you have chosen. Failure to comply with your local regulations may result in fines. +::: + +## Overview + +:::note +This written US only, may or may not be applicable elsewhere. +::: + +Meshtastic can be used by both unlicensed people and licensed operators. If you use Meshtastic with your ham radio license, there are additional privileges and restrictions to consider. + +| Privileges | Restrictions | +|:----------:|:------------:| +|
  • Additional Power
  • Higher gain antennas
|
  • Unencrypted
  • Identified with your ID
| + +## Settings + +| Setting | Acceptable Values | Default | +| :-----: | :---------------: | :-----: | +| set-ham | `string`| `""`| + +### set-ham + +If you are a licensed HAM operator, you can set this variable to be your ID. + +:::warning +By changing these settings, you are self certifying that you are licensed to operate in the mode you have chosen. Failure to comply with your local regulations may result in fines. +::: + +#### Set HAM ID + + + + ```bash title="Set HAM ID" + meshtastic --set-ham KI1345 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +## Details + +Toggling `set-ham` changes your device settings in the following ways. + +| Setting | `set-ham` Default | Normal Default | +| :-----: | :-----------------: | :------------: | +| `is_licensed` (Protobuf) | `true` | `false` | +| `long_name` (Protobuf) | `id` | User Defined | +| `psk` (Protobuf) | `""` | See [Channel Settings - psk](channel#psk) | +| `short_name` (Protobuf) | TODO | User Defined | diff --git a/docs/software/settings/misc.md b/docs/software/settings/misc.md index 25407136..18bc74de 100644 --- a/docs/software/settings/misc.md +++ b/docs/software/settings/misc.md @@ -15,91 +15,115 @@ import TabItem from '@theme/TabItem'; | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | +| auto_screen_carousel_secs | `integer` (seconds) | `0` | | debug_log_enabled | `true`, `false` | `false` | | factory_reset | `true`, `false` | `false` | -| frequency_offset | real numbers | `0` | | ignore_incoming | `string` – list of node nums to ignore | `0` | +| hop_limit | `0`-`7` | `0` | | serial_disabled | `true`, `false` | `false` | -| hop_limit | real numbers | 0| + + +### auto_screen_carousel_secs + +Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. Potentially useful for devices without user buttons. + +#### Configure auto_screen_carousel_secs + + + + + ```bash title="Set auto_screen_carousel_secs to default" + meshtastic --set auto_screen_carousel_secs 0 + ``` + ```bash title="Set auto_screen_carousel_secs to 120 seconds" + meshtastic --set auto_screen_carousel_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### debug_log_enabled By default we turn off logging as soon as an API client connects (to keep shared serial link quiet and save bandwidth). Set this to true to leave the debug log outputting even when API is active. +#### Enable/Disable Debug Log + + + + + ```bash title="Enable debug log" + meshtastic --set debug_log_enabled true + ``` + ```bash title="Disable debug log" + meshtastic --set debug_log_enabled false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### factory_reset This setting is never saved to disk, but if set, all device settings will be returned to factory defaults. (Region, serial number etc... will be preserved) -### frequency_offset - -This parameter is for advanced users with advanced test equipment, we do not recommend most users use it. A frequency offset that is added to to the calculated band center frequency. Used to correct for crystal calibration errors. - -### ignore_incoming - -If true, radio should not try to be smart about what packets to queue to the phone bool keep_all_packets = 101; If true, we will try to capture all the packets sent on the mesh, not just the ones destined to our node. bool promiscuous_mode = 102; For testing it is useful sometimes to force a node to never listen to particular other nodes (simulating radio out of range). All nodenums listed in ignore_incoming will have packets they send dropped on receive (by router.cpp) - -### serial_disabled - -If set, this will disable the SerialConsole by not initializing the StreamAPI. - -### hop_limit - -Overrides the default number of hops a message will be passed. If not set, will default to 3 hops. - -Meshtastic allows a maximum of 7 hops (this is a limit of the protocol). Setting a hop_limit of greater than 7 will be replaced with 7 on the device. - -## Examples - -### Debug Log - Disable - -:::note -`debug_log_enabled` set to `false` is the default behavior. -::: - - - - - ```bash title="Example - Disable debug log" - meshtastic --set debug_log_enabled false - ``` - - - - TODO - - - - -### Debug Log - Enable - - - - - ```bash title="Example - Enable debug log" - meshtastic --set debug_log_enabled true - ``` - - - - - TODO - - - - -### Factory reset +#### Factory reset @@ -117,101 +143,171 @@ Meshtastic allows a maximum of 7 hops (this is a limit of the protocol). Setting - TODO - - - - -### Frequency Offset - - - - - TODO - - - - - TODO - - - - - -### Ignore Incoming - - - - - TODO - - - - - TODO - - - - - -### Serial - Disable - - - - - ```bash title="Example - Disable serial" - meshtastic --set disable_serial true - ``` - - - - - TODO - - - - -### Serial - Enable - -:::note -`disable_serial` set to `false` is the default behavior. +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. ::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### ignore_incoming + +If true, radio should not try to be smart about what packets to queue to the phone bool keep_all_packets = 101; If true, we will try to capture all the packets sent on the mesh, not just the ones destined to our node. bool promiscuous_mode = 102; For testing it is useful sometimes to force a node to never listen to particular other nodes (simulating radio out of range). All nodenums listed in ignore_incoming will have packets they send dropped on receive (by router.cpp) + +#### Enable/Disable ignore_incoming + - ```bash title="Example - Enable serial" - meshtastic --set disable_serial false + ```bash title="Enable ignore_incoming" + meshtastic --set ignore_incoming true + ``` + ```bash title="Disable ignore_incoming" + meshtastic --set ignore_incoming false ``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### serial_disabled + +If set, this will disable the SerialConsole by not initializing the StreamAPI. + +#### Enable/Disable Serial + + + + + ```bash title="Enable serial" + meshtastic --set serial_disabled false + ``` + ```bash title="Disable serial" + meshtastic --set serial_disabled true + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### hop_limit + +Overrides the default number of hops a message will be passed. If not set, will default to 3 hops. + +:::note +Meshtastic allows a maximum of 7 hops (this is a limit of the protocol). Setting a hop_limit of greater than 7 will be replaced with 7 on the device. +::: + +#### Configure hop_limit + + + + + ```bash title="Set hop_limit to default (3 hops)" + meshtastic --set hop_limit 0 + ``` + ```bash title="Set hop_limit to max (7 hops)" + meshtastic --set hop_limit 7 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/mqtt.md b/docs/software/settings/mqtt.md index 913d40a9..17ad2721 100644 --- a/docs/software/settings/mqtt.md +++ b/docs/software/settings/mqtt.md @@ -23,28 +23,373 @@ Be sure to checkout this [MQTT](https://meshtastic.org/docs/software/other/mqtt) ## Settings -| Setting | Acceptable Values | Default | -| :-----------------: | :---------------: | :-----: | -| mqtt_disabled | `true`, `false` | `false` | -| mqtt_server | `string` | `""` | -| is_uplink_enabled | `true`, `false` | `false` | -| is_downlink_enabled | `true`, `false` | `false` | +| Setting | Acceptable Values | Default | +| :-----: | :---------------: | :-----: | +| downlink_enabled | `true`, `false` | `false` | +| mqtt_disabled | `true`, `false` | `false` | +| mqtt_encryption_enabled | `true`, `false` | `false` | +| mqtt_password | `string` | `""` | +| mqtt_server | `string` | `""` | +| mqtt_username | `string` | `""` | +| uplink_enabled | `true`, `false` | `false` | + +### downlink_enabled + +This is a channel specific setting. If your channel has this set to `true` and you are connected to WiFi, the device will forward along messages from the MQTT server specified [here](#mqtt_server) to the mesh from this device. + +#### Enable/Disable downlink_enabled + + + + ```bash title="Enable downlink_enabled on PRIMARY channel" + meshtastic --ch-set downlink_enabled true --ch-index 0 + ``` + ```bash title="Disable downlink_enabled on PRIMARY channel" + meshtastic --ch-set downlink_enabled false --ch-index 0 + ``` + ```bash title="Enable downlink_enabled on OTHER channel" + meshtastic --ch-set downlink_enabled true --ch-index 1 + ``` + ```bash title="Disable downlink_enabled on OTHER channel" + meshtastic --ch-set downlink_enabled false --ch-index 1 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### mqtt_disabled -If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as `is_uplink_enabled` or `is_downlink_enabled`. But if this flag is set, all MQTT features will be disabled and no servers will be contacted. +If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as `uplink_enabled` or `downlink_enabled`. But if this flag is set, all MQTT features will be disabled and no servers will be contacted. + +#### Enable/Disable MQTT + + + + ```bash title="Enable MQTT (Default)" + meshtastic --set mqtt_disabled false + ``` + ```bash title="Disable MQTT" + meshtastic --set mqtt_disabled true + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### mqtt_encryption_enabled + +Determines whether or not the device sends the packets encrypted to/from your MQTT server. + +:::tip +If you are using the default Meshtastic MQTT server, this setting will take no effect. All packets will continue to be encrypted regardless of this setting. Only custom servers will honor this setting. +::: + +#### Enable/Disable MQTT Encryption + + + + ```bash title="Enable MQTT Encryption (Default)" + meshtastic --set mqtt_encryption_enabled false + ``` + ```bash title="Disable MQTT Encryption" + meshtastic --set mqtt_encryption_enabled true + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### mqtt_password + +MQTT password to use (most useful for a custom MQTT server). If using a custom server, this will be honoured even if empty. If using the default server, this will only be honoured if set, otherwise the device will use the default password `large4cats`. + +#### Configure mqtt_password + + + + ```bash title="Set mqtt_password" + meshtastic --set mqtt_password mypassword + ``` + ```bash title="Set mqtt_password (with spaces)" + meshtastic --set mqtt_password "my password" + ``` + ```bash title="Unset mqtt_password (Default)" + meshtastic --set mqtt_password "" + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### mqtt_server The server to use for our MQTT global message gateway feature. If not set, the default server will be used -### is_uplink_enabled +#### Enable/Disable MQTT Server + + -This is a channel specific setting. If your channel has this set to `true` and you are connected to WiFi, the device will forward along messages to whatever MQTT server is specified in `mqtt_server`. +:::tip +When the mqtt_server is set to `""`, it will default to `mqtt.meshtastic.org` +::: -### is_downlink_enabled + ```bash title="Enable MQTT Server - Public Meshtastic MQTT Server (Default)" + meshtastic --set mqtt_server "" + ``` + ```bash title="Enable MQTT Server - Personal MQTT Server (by IP)" + meshtastic --set mqtt_server 198.168.0.2 + ``` + ```bash title="Enable MQTT Server - Personal MQTT Server (by URL)" + meshtastic --set mqtt_server mqtt.mydomain.com + ``` -This is a channel specific setting. If your channel has this set to `true` and you are connected to WiFi, the device will forward along messages from the MQTT server to the mesh from this device. + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### mqtt_username + +MQTT username to use (most useful for a custom MQTT server). If using a custom server, this will be honoured even if empty. If using the default server, this will only be honoured if set, otherwise the device will use the default username `meshdev`. + +#### Configure mqtt_username + + + + ```bash title="Set mqtt_username" + meshtastic --set mqtt_username myusername + ``` + ```bash title="Set mqtt_username (with spaces)" + meshtastic --set mqtt_username "my username" + ``` + ```bash title="Unset mqtt_username (Default)" + meshtastic --set mqtt_username "" + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### uplink_enabled + +This is a channel specific setting. If your channel has this set to `true` and you are connected to WiFi, the device will forward along messages to whatever MQTT server is specified in [mqtt_server](#mqtt_server). + +#### Enable/Disable uplink_enabled + + + + ```bash title="Enable uplink_enabled on PRIMARY channel" + meshtastic --ch-set uplink_enabled true --ch-index 0 + ``` + ```bash title="Disable uplink_enabled on PRIMARY channel" + meshtastic --ch-set uplink_enabled false --ch-index 0 + ``` + ```bash title="Enable uplink_enabled on OTHER channel" + meshtastic --ch-set uplink_enabled true --ch-index 1 + ``` + ```bash title="Disable uplink_enabled on OTHER channel" + meshtastic --ch-set uplink_enabled false --ch-index 1 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ## Details @@ -58,8 +403,10 @@ defaultValue="cli" values={[ {label: 'CLI', value: 'cli'}, {label: 'Android', value: 'android'}, +{label: 'iOS', value: 'iOS'}, +{label: 'Web', value: 'web'}, ]}> - + ```bash title="Set server" meshtastic --set mqtt_server 192.168.123.234 @@ -76,10 +423,26 @@ mosquitto_sub -h 192.168.123.234 -v -t msh/# :::note FIXME some documentation says msh/# , some says mesh/# . As of 1.2.39 the messages are on msh/# ::: - - + + -TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/overview.md b/docs/software/settings/overview.md index b889e3bc..ef0b3a4b 100644 --- a/docs/software/settings/overview.md +++ b/docs/software/settings/overview.md @@ -39,6 +39,8 @@ At the bottom of each setting page, examples will be available displaying how to values={[ {label: 'CLI', value: 'cli'}, {label: 'Android', value: 'android'}, + {label: 'iOS', value: 'iOS'}, + {label: 'Web', value: 'web'}, ]}> @@ -53,7 +55,23 @@ The CLI examples will require you to utilize the Command line Interface that is - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/power.md b/docs/software/settings/power.md index 5e8cb61e..23b28aa3 100644 --- a/docs/software/settings/power.md +++ b/docs/software/settings/power.md @@ -11,37 +11,29 @@ import TabItem from '@theme/TabItem'; Power settings on a Meshtastic device can be set like other user-define settings with the `--set` command see ([see Meshtastic-python](/docs/software/python/python-cli)). Some of these options are implicit in other commands. For example, when you set the device to router mode using `is_router true`, it is implied that deep sleep is disabled and we want to constantly listen for messages. Below is a list of all user-definable settings and the acceptable values that these settings can use. -For example, if we wanted to disable sleep mode, like when we put the device into router mode, we could use the command: - -```bash -meshtastic --set mesh_sds_timeout_secs 4294967295 -``` - -:::note -See MAXUINT from `mesh_sds_timeout_secs` below: -::: - For a description and more information on what exactly all of these mean, please refer to [Power Management State Machine](/docs/software/other/power) ## Settings -| Setting | Acceptable Values | Default | -| :-------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| charge_current | `MAUnset`, `MA100`, `MA190`, `MA280`, `MA360`, `MA450`, `MA550`, `MA630`, `MA700`, `MA780`, `MA880`, `MA960`, `MA1000`, `MA1080`, `MA1160`, `MA1240`, `MA1320`: | `MAUnset` | -| is_low_power | `true`, `false` | `false` | If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in we should try to minimize power consumption as much as possible. YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case). | -| is_router | `true`, `false` | `false` | -| ls_secs | `integer` (seconds) | `0` (see note) | -| mesh_sds_timeout_secs | `integer` (seconds) | `0` | -| min_wake_secs | `integer` (seconds) | `0` | -| phone_sds_timeout_sec | `integer` (seconds) | `0` | Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of two hours, use the value of MAXUINT or 4294967295 to disable | -| phone_timeout_secs | `integer` (seconds) | `0` | -| screen_on_secs | `integer` (seconds) | `0` | -| sds_secs | `integer` (seconds) | `0` | -| send_owner_interval | `integer` (sent every x network pings) | `4` | -| wait_bluetooth_secs | `integer` (seconds) | `0` | +| Setting | Acceptable Values | Default | +| :-----: | :---------------: | :-----: | +| charge_current | `MAUnset`, `MA100`, `MA190`, `MA280`, `MA360`, `MA450`, `MA550`, `MA630`, `MA700`, `MA780`, `MA880`, `MA960`, `MA1000`, `MA1080`, `MA1160`, `MA1240`, `MA1320`: | `MAUnset` | +| is_always_powered | `true`, `false` | `false` | +| is_low_power | `true`, `false` | `false` | +| is_router | `true`, `false` | `false` | +| ls_secs | `integer` (seconds) | `0` | +| mesh_sds_timeout_secs | `integer` (seconds) | `0` | +| min_wake_secs | `integer` (seconds) | `0` | +| on_battery_shutdown_after_secs | `integer` (seconds) | `0` | +| phone_sds_timeout_sec | `integer` (seconds) | `0` | +| phone_timeout_secs | `integer` (seconds) | `0` | +| screen_on_secs | `integer` (seconds) | `0` | +| sds_secs | `integer` (seconds) | `0` | +| send_owner_interval | `integer` (sent every x network pings) | `4` | +| wait_bluetooth_secs | `integer` (seconds) | `0` | :::note -When you the following settings to `0` they assume the following defaults: +When you change the following settings to `0` they assume the following defaults: - `ls_secs`: 1 hour - `mesh_sds_timeout_secs`: 2 hours @@ -51,91 +43,681 @@ When you the following settings to `0` they assume the following defaults: - `screen_on_secs`: 1 minute - `sds_secs`: 1 year - `wait_bluetooth_secs`: 1 minute - ::: +::: ### charge_current -Sets the current of the battery charger +Sets the current of the battery charger. + +#### Specify charge_current + + + + + ```bash title="Unset charge current" + meshtastic --set charge_current MAUnset + ``` + ```bash title="Set charge current" + meshtastic --set charge_current MA100 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### is_always_powered + +Circumvents the logic block for determining whether the device is powered or not. Useful for devices with finicky ADC issues on the battery sense pins. + +#### Enable/Disable is_always_powered + + + + ```bash title="Enable is_always_powered" + meshtastic --set is_always_powered true + ``` + ```bash title="Disable is_always_powered" + meshtastic --set is_always_powered false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### is_low_power -If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in we should try to minimize power consumption as much as possible. YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case). +If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in we should try to minimize power consumption as much as possible. + +:::note +You do **not** need to set this if you've set `is_router` (it is implied in that case). +::: + +#### Enable/Disable is_low_power + + + + ```bash title="Enable is_low_power" + meshtastic --set is_low_power true + ``` + ```bash title="Disable is_low_power" + meshtastic --set is_low_power false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### is_router -Are we operating as a router. Changes behavior in the following ways: The device will only sleep for critically low battery level (i.e. always tries to stay alive for the mesh) In the future routing decisions will preferentially route packets through nodes with this attribute (because assumed good line of sight) +Are we operating as a router. Changes behavior in the following ways: The device will only sleep for critically low battery level (i.e. always tries to stay alive for the mesh) In the future routing decisions will preferentially route packets through nodes with this attribute (because assumed good line of sight). + + +#### Enable/Disable is_router + + + + ```bash title="Enable is_router" + meshtastic --set is_router true + ``` + ```bash title="Disable is_router" + meshtastic --set is_router false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### ls_secs -Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of 3600 +Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of 3600. + +#### Configure ls_secs + + + + ```bash title="Set ls_secs to default (1 hour/3600 seconds)" + meshtastic --set ls_secs 0 + ``` + ```bash title="Set ls_secs to 120 seconds" + meshtastic --set ls_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### mesh_sds_timeout_secs -Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of two hours, use the MAXUINT or 4294967295 to disable +Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of two hours, use the MAXUINT or 4294967295 to disable. + +#### Configure mesh_sds_timeout_secs + + + + ```bash title="Set mesh_sds_timeout_secs to default (2 hour/7200 seconds)" + meshtastic --set mesh_sds_timeout_secs 0 + ``` + ```bash title="Set mesh_sds_timeout_secs to 120 seconds" + meshtastic --set mesh_sds_timeout_secs 120 + ``` + ```bash title="Disable mesh_sds_timeout_secs (using MAXUINT)" + meshtastic --set mesh_sds_timeout_secs 4294967295 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### min_wake_secs -Power management state machine option. See the [power page](/docs/software/other/power)for details. 0 for default of 10 seconds +Power management state machine option. See the [power page](/docs/software/other/power)for details. 0 for default of 10 seconds. + +#### Configure min_wake_secs + + + + + ```bash title="Set min_wake_secs to default (10 seconds)" + meshtastic --set min_wake_secs 0 + ``` + ```bash title="Set min_wake_secs to 120 seconds" + meshtastic --set min_wake_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### on_battery_shutdown_after_secs + +If non-zero, the device will fully power off this many seconds after external power is removed. + +#### Enable/Disable on_battery_shutdown_after_secs + + + + ```bash title="Disable on_battery_shutdown_after_secs" + meshtastic --set on_battery_shutdown_after_secs 0 + ``` + ```bash title="Set device to shutdown after 120 seconds on battery" + meshtastic --set on_battery_shutdown_after_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### phone_sds_timeout_sec -Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of two hours, use the MAXUINT or 4294967295 to disable +Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of two hours, use the MAXUINT or 4294967295 to disable. + +#### Enable/Disable phone_sds_timeout_sec + + + + ```bash title="Set phone_sds_timeout_sec to default (2 hours)" + meshtastic --set phone_sds_timeout_sec 0 + ``` + ```bash title="Disable phone_sds_timeout_sec" + meshtastic --set phone_sds_timeout_sec 4294967295 + ``` + ```bash title="Set phone_sds_timeout_sec to 120 seconds" + meshtastic --set phone_sds_timeout_sec 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### phone_timeout_secs -Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of 15 minutes +Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of 15 minutes. + +#### Configure phone_timeout_secs + + + + + ```bash title="Set phone_timeout_secs to default (15 minutes)" + meshtastic --set phone_timeout_secs 0 + ``` + ```bash title="Set phone_timeout_secs to 120 seconds" + meshtastic --set phone_timeout_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### screen_on_secs Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of one minute. +#### Configure screen_on_secs + + + + + ```bash title="Set screen_on_secs to default (1 minute)" + meshtastic --set screen_on_secs 0 + ``` + ```bash title="Set screen_on_secs to 120 seconds" + meshtastic --set screen_on_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### sds_secs -Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of one year +Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of one year. + +#### Configure sds_secs + + + + + ```bash title="Set sds_secs to default (1 year)" + meshtastic --set sds_secs 0 + ``` + ```bash title="Set sds_secs to 120 seconds" + meshtastic --set sds_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + ### send_owner_interval This sets how often to send the database of node owner information with other nodes in the mesh (per mesh network ping). -For instance the default interval of 4 will send the node owner information for every 4 mesh network pings. This information is also transmitted after the node first boots up. - -### wait_bluetooth_secs - -Wait number of seconds for Bluetooth - Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of 1 minute - -### is_always_powered - -If the device is plugged into the wall (not from battery), you may consider using this setting to always keep the device from sleeping. This is a useful setting if you are on ESP32 and using the Wifi options. - -## Examples +#### Configure send_owner_interval - + groupId="settings" + defaultValue="cli" + values={[ + {label: 'CLI', value: 'cli'}, + {label: 'Android', value: 'android'}, + {label: 'iOS', value: 'iOS'}, + {label: 'Web', value: 'web'}, + ]}> + -```bash -meshtastic --set mesh_sds_timeout_secs 0 -``` - -Note: Probably only want to set the wait_bluetooth_secs this high during testing: - -```bash -meshtastic --set wait_bluetooth_secs 28800 -``` - -```bash -meshtastic --set is_always_powered true -``` + ```bash title="Set send_owner_interval to default (every 4 network pings)" + meshtastic --set send_owner_interval 0 + ``` + ```bash title="Set send_owner_interval to every 10 network pings" + meshtastic --set send_owner_interval 10 + ``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +For instance the default interval of 4 will send the node owner information for every 4 mesh network pings. This information is also transmitted after the node first boots up. + +### wait_bluetooth_secs + +Wait number of seconds for Bluetooth - Power management state machine option. See the [power page](/docs/software/other/power) for details. 0 for default of 1 minute. + +#### Configure wait_bluetooth_secs + + + + ```bash title="Set wait_bluetooth_secs to default (60 seconds)" + meshtastic --set wait_bluetooth_secs 0 + ``` + ```bash title="Set wait_bluetooth_secs to 120 seconds" + meshtastic --set wait_bluetooth_secs 120 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/range-test-plugin.md b/docs/software/settings/range-test-plugin.md index cb5b6821..44cd9450 100644 --- a/docs/software/settings/range-test-plugin.md +++ b/docs/software/settings/range-test-plugin.md @@ -11,30 +11,159 @@ import TabItem from '@theme/TabItem'; This plugin allows you to test the range of your Meshtastic nodes. It requires at least two nodes, a sender and a receiver. The receiving node then saves the messages along with the GPS coordinates at which they were received into a .csv file. This .csv file can then be integrated into [Google Earth](https://earth.google.com), [Google Maps - My Maps](https://mymaps.google.com), or any other program capable of processing .csv files. This can enable you to visualize your mesh. -:::note -Once settings are changed, a **reset** is required for them to take effect. +:::tip +Once plugin settings are changed, a **reset** is required for them to take effect. ::: ## Settings -| Setting | Acceptable Values | Default | -| :-----------------------: | :-----------------: | :-----: | -| range_test_plugin_enabled | `true`, `false` | `false` | -| range_test_plugin_save | `true`, `false` | `false` | -| range_test_plugin_sender | `integer` (Seconds) | `0` | +| Setting | Acceptable Values | Default | +| :-----: | :---------------: | :-----: | +| range_test_plugin_enabled | `true`, `false` | `false` | +| range_test_plugin_save | `true`, `false` | `false` | +| range_test_plugin_sender | `integer` (Seconds) | `0` | ### range_test_plugin_enabled Enables the plugin. +#### Enable/Disable the plugin + + + + ```bash title="Enable the plugin" + meshtastic --set range_test_plugin_enabled true + ``` + ```bash title="Disable the plugin" + meshtastic --set range_test_plugin_enabled true + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### range_test_plugin_save If enabled, we will save a log of all received messages to `/static/rangetest.csv` which you can access from the web server. We will abort writing if there is less than 50k of space on the filesystem to prevent filling up the storage. +#### Enable/Disable range test save `csv` + + + + ```bash title="Enable range test save" + meshtastic --set range_test_plugin_save true + ``` + ```bash title="Disable range test save" + meshtastic --set range_test_plugin_save false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### range_test_plugin_sender Number of seconds to wait between sending packets. Using the long_slow channel configuration, it's best not to go more frequent than once every 60 seconds. You can be more aggressive with faster settings. `0` is default which disables sending messages. +#### Enable/Disable range test sender + + + + ```bash title="Enable range test sender (send every 60 seconds)" + meshtastic --set range_test_plugin_sender 60 + ``` + ```bash title="Disable range test sender" + meshtastic --set range_test_plugin_sender 0 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ## Details While a minimum of two radios is required, more can be used. You can have any number of receivers and senders that your mesh is able to handle. You can test having a single sender with multiple receivers or a single receiver with multiple senders. Let us know on the [forum thread](https://meshtastic.discourse.group/t/new-plugin-rangetestplugin/2591/) the results of your configuration. @@ -75,6 +204,8 @@ defaultValue="cli" values={[ {label: 'CLI', value: 'cli'}, {label: 'Android', value: 'android'}, +{label: 'iOS', value: 'iOS'}, +{label: 'Web', value: 'web'}, ]}> @@ -86,7 +217,23 @@ meshtastic --set range_test_plugin_sender 60 -TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: @@ -99,6 +246,8 @@ defaultValue="cli" values={[ {label: 'CLI', value: 'cli'}, {label: 'Android', value: 'android'}, +{label: 'iOS', value: 'iOS'}, +{label: 'Web', value: 'web'}, ]}> @@ -110,7 +259,23 @@ meshtastic --set range_test_plugin_save true -TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/rotary-encoder-plugin.md b/docs/software/settings/rotary-encoder-plugin.md new file mode 100644 index 00000000..b663fe76 --- /dev/null +++ b/docs/software/settings/rotary-encoder-plugin.md @@ -0,0 +1,404 @@ +--- +id: rotary-encoder-plugin +title: Rotary Encoder +sidebar_label: Rotary Encoder +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + +:::note +This plugin requires attaching a peripheral accessory to your device. It will not work without one. +::: + +## Overview + +Meshtastic supports hardwired rotary encoders as input devices. +Currently, one rotary encoder (`rotary1`) is defined, but later more rotary encoders +can be added (if needed) the same way. + +:::tip +Once plugin settings are changed, a **reset** is required for them to take effect. +::: + +## Settings + +| Setting | Acceptable Values | Default | +| :-----: | :---------------: | :-----: | +| rotary1_enabled | `true`, `false` | `false` | +| rotary1_event_cw | `InputEventChar` | (not defined) | +| rotary1_event_ccw | `InputEventChar` | (not defined) | +| rotary1_event_press | `InputEventChar` | (not defined) | +| rotary1_pin_a | `integer` | (not defined) | +| rotary1_pin_b | `integer` | (not defined) | +| rotary1_pin_press | `integer` | (not defined) | + +### rotary1_enabled +Enable the rotary encoder #1 + +#### Enable/Disable rotary1 + + + + ```bash title="Enable rotary1" + meshtastic --set rotary1_enabled true + ``` + ```bash title="Disable rotary1" + meshtastic --set rotary1_enabled true + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### rotary1_event_cw +Generate input event on CW of this kind. + +:::tip +For using with CannedMessagePlugin you must choose value `KEY_UP` here. +::: + +#### Specify rotary1 event cw + + + + ```bash title="Set rotary1 event cw to 'KEY_UP'" + meshtastic --set rotary1_event_press KEY_UP + ``` + ```bash title="Unset rotary1 event cw" + meshtastic --set rotary1_event_press "" + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### rotary1_event_ccw +Generate input event on CCW of this kind. + +:::tip +For using with CannedMessagePlugin you must choose value `KEY_DOWN` here. +::: + +#### Specify rotary1 event ccw + + + + ```bash title="Set rotary1 event ccw to 'KEY_DOWN'" + meshtastic --set rotary1_event_ccw KEY_DOWN + ``` + ```bash title="Unset rotary1 event ccw" + meshtastic --set rotary1_event_ccw "" + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### rotary1_event_press +Generate input event on Press of this kind. + +:::tip +For using with CannedMessagePlugin you must choose value `KEY_SELECT` here. +::: + +#### Specify rotary1 event press + + + + ```bash title="Set rotary1 event press to 'KEY_SELECT'" + meshtastic --set rotary1_event_press KEY_SELECT + ``` + ```bash title="Unset rotary1 event press" + meshtastic --set rotary1_event_press "" + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### rotary1_pin_a +GPIO pin for rotary encoder A port. + +#### Specify rotary1 pin a + + + +:::note +Replace `GPIO` below with the GPIO number from hardware setup. +::: + + ```bash title="Specify rotary1 pin a" + meshtastic --set rotary1_pin_a GPIO + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### rotary1_pin_b +GPIO pin for rotary encoder B port. + +#### Specify rotary1 pin b + + + +:::note +Replace `GPIO` below with the GPIO number from hardware setup. +::: + + ```bash title="Specify rotary1 pin b" + meshtastic --set rotary1_pin_b GPIO + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### rotary1_pin_press +GPIO pin for rotary encoder Press port. + +#### Specify rotary1 pin press + + + +:::note +Replace `GPIO` below with the GPIO number from hardware setup. +::: + + ```bash title="Specify rotary1 pin press" + meshtastic --set rotary1_pin_press GPIO + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +## Details + + + +Configuring the rotary encoder plugin require attaching the compatible hardware. + +## Examples + +### Configure rotary encoder for Canned Message Plugin + + + +:::note +Replace each `GPIO` (x3) below with the GPIO numbers from hardware setup. +::: + + ```bash title="Canned Message Plugin - Required Rotary Encoder Plugin Settings" + meshtastic --set rotary1_pin_a GPIO + meshtastic --set rotary1_pin_b GPIO + meshtastic --set rotary1_pin_press GPIO + meshtastic --set rotary1_event_cw KEY_UP + meshtastic --set rotary1_event_ccw KEY_DOWN + meshtastic --set rotary1_event_press KEY_SELECT + meshtastic --set rotary1_enabled True + ``` + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + diff --git a/docs/software/settings/rotary-encoder.md b/docs/software/settings/rotary-encoder.md deleted file mode 100644 index 191dc3fa..00000000 --- a/docs/software/settings/rotary-encoder.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -id: rotary-encoder-settings -title: Rotary Encoder -sidebar_label: Rotary Encoder ---- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - -## Overview - -Meshtastic supports hardwired rotary encoders as input devices. -Currently, one rotary encoder (`rotary1`) is defined, but later more rotary encoders -can be added (if needed) the same way. - -## Settings - -| Setting | Acceptable Values | Default | -| :-----: | :---------------: | :-----: | -| rotary1_enabled | `true`, `false` | `false` | -| rotary1_pin_a | `integer` | (not defined) | -| rotary1_pin_b | `integer` | (not defined) | -| rotary1_pin_press | `integer` | (not defined) | -| rotary1_event_cw | `InputEventChar` | (not defined) | -| rotary1_event_ccw | `InputEventChar` | (not defined) | -| rotary1_event_press | `InputEventChar` | (not defined) | - -### rotary1_enabled -Enable the rotary encoder #1 - -### rotary1_pin_a -GPIO pin for rotary encoder A port. - -### rotary1_pin_b -GPIO pin for rotary encoder B port. - -### rotary1_pin_press -GPIO pin for rotary encoder Press port. - -### rotary1_event_cw -Generate input event on CW of this kind. -(For using with CannedMessagePlugin you must choose value "UP" here.) - -### rotary1_event_ccw -Generate input event on CCW of this kind. -(For using with CannedMessagePlugin you must choose value "DOWN" here.) - -### rotary1_event_press -Generate input event on Press of this kind. -(For using with CannedMessagePlugin you must choose value "SELECT" here.) - -## Details - -See "Software / Plugins / Canned messages" for details! - -## Examples - -See "Software / Plugins / Canned messages" for examples! diff --git a/docs/software/settings/router.md b/docs/software/settings/router.md index d072e8e9..2baeca3b 100644 --- a/docs/software/settings/router.md +++ b/docs/software/settings/router.md @@ -21,6 +21,50 @@ import TabItem from '@theme/TabItem'; Are we operating as a router. Changes behavior in the following ways: The device will only sleep for critically low battery level (i.e. always tries to stay alive for the mesh) In the future routing decisions will preferentially route packets through nodes with this attribute (because assumed good line of sight) +#### Enable/Disable router mode + + + + ```bash title="Enable router mode" + meshtastic --set is_router true + ``` + ```bash title="Disable router mode" + meshtastic --set is_router false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + + ## Details Toggling `is_router` changes your device settings in the following ways. @@ -37,27 +81,3 @@ Toggling `is_router` changes your device settings in the following ways. ### Altered Behaviors #### Screen Wake #### Bluetooth - -## Examples - -### Set Router - - - - ```bash title="Set Router" - meshtastic --set is_router true - ``` - - - - - TODO - - - diff --git a/docs/software/settings/serial-plugin.md b/docs/software/settings/serial-plugin.md index dd38979a..a559023d 100644 --- a/docs/software/settings/serial-plugin.md +++ b/docs/software/settings/serial-plugin.md @@ -11,6 +11,10 @@ import TabItem from '@theme/TabItem'; This is a simple interface to send messages over the mesh network by sending strings over a serial port. +:::tip +Once plugin settings are changed, a **reset** is required for them to take effect. +::: + ## Settings | Setting | Acceptable Values | Default | @@ -18,53 +22,278 @@ This is a simple interface to send messages over the mesh network by sending str | serialplugin_enabled | `true`, `false` | `false` | | serialplugin_echo | `true`, `false` | `false` | | serialplugin_mode | `integer` | `0` | -| serialplugin_rxd | `integer` | `0` | +| serialplugin_rxd | `integer` (GPIO) | `0` | | serialplugin_timeout | `integer` (seconds) | `0` | -| serialplugin_txd | `integer` | `0` | +| serialplugin_txd | `integer` (GPIO) | `0` | ### serialplugin_enabled Enables the plugin. -### serialplugin_echo - - - -### serialplugin_mode - - - -### serialplugin_rxd - - - -### serialplugin_timeout - - - -### serialplugin_txd - - - -## Details - -## Examples - - TODO + ```bash title="Enable plugin" + meshtastic --set serialplugin_enabled true + ``` + ```bash title="Disable plugin" + meshtastic --set serialplugin_enabled false + ``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### serialplugin_echo + +If set, any packets you send will be echoed back to your device. + + + + + ```bash title="Enable serialplugin_echo" + meshtastic --set serialplugin_echo true + ``` + ```bash title="Disable serialplugin_echo" + meshtastic --set serialplugin_echo false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### serialplugin_mode + + + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### serialplugin_rxd + +Set the GPIO pin to the RXD pin you have set up. + + + + +:::note +Replace `GPIO` in the below command with the GPIO number your circuit is attached to. +::: + + ```bash title="Set RXD to GPIO pin number" + meshtastic --set serialplugin_rxd GPIO + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### serialplugin_timeout + +The amount of time to wait before we consider your packet as "done". + + + + + ```bash title="Set serialplugin_timeout to 15 seconds" + meshtastic --set serialplugin_timeout 15 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +### serialplugin_txd + +Set the GPIO pin to the TXD pin you have set up. + + + + +:::note +Replace `GPIO` in the below command with the GPIO number your circuit is attached to. +::: + + ```bash title="Set TXD to GPIO pin number" + meshtastic --set serialplugin_txd GPIO + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/settings/store-and-forward-plugin.md b/docs/software/settings/store-and-forward-plugin.md index 1525a3c5..d537353e 100644 --- a/docs/software/settings/store-and-forward-plugin.md +++ b/docs/software/settings/store-and-forward-plugin.md @@ -6,51 +6,330 @@ sidebar_label: Store and Forward import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +:::info +Currently only available for ESP32 based devices with external PSRAM. Requires the device to be set as a router. + +**Don't enable Store and Forward Plugin on multiple [routers](router).** +::: ## Overview :::caution -This is a work in progress and is not yet available. +This is a work in progress and is partially available. Stability is not guaranteed. ::: The Store Forward Plugin 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. 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 nor is it advised to use this for SF12 (Long Range / Slow). +:::tip +Once plugin settings are changed, a **reset** is required for them to take effect. +::: + ## Settings | Setting | Acceptable Values | Default | | :-----: | :---------------: | :-----: | | store_forward_plugin_enabled | `true`, `false` | `false` | -| store_forward_plugin_records | integer | `0` | +| store_forward_plugin_heartbeat | `true`, `false` | `false` | +| store_forward_plugin_history_return_max | `integer` | `0` | +| store_forward_plugin_history_return_window | `integer` | `0` | +| store_forward_plugin_records | `integer` | `0` | ### store_forward_plugin_enabled Enables the plugin. -### store_forward_plugin_records - - - -## Details - -## Examples - - TODO + ```bash title="Enable the plugin" + meshtastic --set store_forward_plugin_enabled true + ``` + ```bash title="Disable the plugin" + meshtastic --set store_forward_plugin_enabled false + ``` - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + +### store_forward_plugin_heartbeat + +The Store & Forward Router sends a periodic message onto the network. This allows connected devices to know that a router is in range and listening to received messages. A client like Android, iOS, or Web can (if supported) indicate to the user whether a store and forward router is available. + + + + + ```bash title="Set store_forward_plugin_heartbeat to default" + meshtastic --set store_forward_plugin_heartbeat 0 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + + +### store_forward_plugin_history_return_max + +Sets the maximum number of messages to return to a client device. + + + + + ```bash title="Set store_forward_plugin_history_return_max to default" + meshtastic --set store_forward_plugin_history_return_max 0 + ``` + ```bash title="Set store_forward_plugin_history_return_max to 100 messages" + meshtastic --set store_forward_plugin_history_return_max 100 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + + +### store_forward_plugin_history_return_window + +Limits the time period (in minutes) a client device can request. + + + + + ```bash title="Set store_forward_plugin_history_return_window to default" + meshtastic --set store_forward_plugin_history_return_window 0 + ``` + ```bash title="Set store_forward_plugin_history_return_window to 1 day (1440 minutes)" + meshtastic --set store_forward_plugin_history_return_window 1440 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + + +### store_forward_plugin_records + +Set this to the maximum number of records to save. Best to leave this at the default (`0`) where the plugin will use 2/3 of your device's available PSRAM. This is about 11,000 records. + + + + + ```bash title="Set store_forward_plugin_records to default (≈11,000 records)" + meshtastic --set store_forward_plugin_records 0 + ``` + ```bash title="Set store_forward_plugin_records to 100 records" + meshtastic --set store_forward_plugin_records 100 + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + + +## Details + +### How it works + +![Store & Forward - Overview](/img/plugins/store_and_forward/store_and_forward-overview.png) + +### Requirements + +Initial Requirements: + +* Must be installed on a router node. + * This is an artificial limitation, but is in place to enforce best practices. + * Router nodes are intended to be always online. If this plugin misses any messages, the reliability of the stored messages will be reduced. +* Esp32 Processor based device with external PSRAM. (tbeam v1.0 and tbeamv1.1, and maybe others) + +### Usage Overview + +* To use / test this you will want at least 3 devices + * One device will (currently) need be a tbeam v1.0 and tbeamv1.1 configured as a Meshtastic router. Other devices with built in PSRAM will be supported at some point. + * Two others will be regular clients. Nothing special required. + +### Meshtastic channel configuration + +Don't use this on the "Long Range / Slow" or "Long Range / Fast" channel settings. You're welcome to try and report back, but those channels have a [very low bitrate](/docs/developers/device/radio-settings#pre-defined). + +Either use a custom channel configuration with at an at least 1kbit data rate or use "Medium Range / Fast". + +Recommended channel setting is for 1.343kbps: + +```bash title="Recommended channel setting for S&F plugin" +meshtastic --setchan spread_factor 11 --setchan coding_rate 4 --setchan bandwidth 500 +``` + +With an aftermarket coaxial antenna or moxon antenna, that will give you roughly the same range as "Long Range / Slow" and 5x the bitrate. + +### Router setup + +:::warning +Don't enable the Store and Forward plugin on multiple routers! +::: + +* Configure your device as a [meshtastic router](router). +* Name your router node something that makes it easily identifiable, aka "Router". +* Configure the Store and Forward plugin + ```bash title="Required - Enable the plugin" + meshtastic --set store_forward_plugin_enabled true + ``` + ```bash title="Optional - Set maximum number of records to save to device" + meshtastic --set store_forward_plugin_records 100 + ``` +:::tip +Best to leave `store_forward_plugin_records` at the default (`0`) where the plugin will use 2/3 of your device's available PSRAM. This is about 11,000 records. +::: + +### Client Usage + +Currently, no special configuration is required. To request your history sent to you, send the command into the message field "SF". That's it. This will eventually change to make it easier. At the moment, that message will be sent to everyone on the mesh but we'll (eventually) make it easier to use where there'll be a button (or maybe it'll be transparent) and the command isn't sent as a text message to the mesh. + +Available Commands: + +| Command | Definition | +| :-----: | :---------------: | +| SF | Send the last few messages I may have missed | +| SFm | Send a 240 byte payload (Used for testing) | + +The Store and Forward plugin will only service one client at a time. If a second client requests messages while the S&F is busy, the S&F will send a private message to the second client that they will need to wait. diff --git a/docs/software/settings/wifi.md b/docs/software/settings/wifi.md index a2bb9352..69355b53 100644 --- a/docs/software/settings/wifi.md +++ b/docs/software/settings/wifi.md @@ -14,7 +14,7 @@ The ESP32 based devices have the ability to connect to WiFi as a client and also The device can be either a WiFi client or a software access point. It **cannot** operate as both at the same time. ::: -:::note +:::info The first time your device restarts after enabling the WiFi access point, it will take an additional 20-30 seconds to boot. This is to generate self-signed SSL keys. The keys will be saved for future reuse. ::: @@ -34,14 +34,140 @@ The first time your device restarts after enabling the WiFi access point, it wil A boolean value that toggles the [Software Access Point](#software-access-point) +#### Enable/Disable Software Access Point + + + + ```bash title="Enable SoftAP" + meshtastic --set wifi_ap_mode true + ``` + ```bash title="Disable SoftAP" + meshtastic --set wifi_ap_mode false + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### wifi_password In [SoftAP](#software-access-point) mode, this is the password to access your device's WiFi. In [Client](#wifi-client) mode, this is your WiFi Networks password. This string is case sensitive. + + + + ```bash title="Set WiFi password" + meshtastic --set wifi_password mypassword + ``` + ```bash title="Set WiFi password (with spaces)" + meshtastic --set wifi_password "my password" + ``` + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ### wifi_ssid In [SoftAP](#software-access-point) mode, this is the SSID broadcast to access your device's WiFi. In [Client](#wifi-client) mode, this is your WiFi Networks SSID. This string is case sensitive. + + + + ```bash title="Set WiFi network" + meshtastic --set wifi_ssid mynetwork + ``` + ```bash title="Set WiFi network (with spaces)" + meshtastic --set wifi_ssid "my network" + ``` + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + ## Details ### Software Access Point @@ -74,6 +200,8 @@ To disable WiFi completely, set `wifi_ap_mode` to `false`, and both `wifi_ssid` values={[ {label: 'CLI', value: 'cli'}, {label: 'Android', value: 'android'}, + {label: 'iOS', value: 'iOS'}, + {label: 'Web', value: 'web'}, ]}> @@ -90,7 +218,23 @@ meshtastic --set wifi_ssid "my wifi ssid" --set wifi_password "my wifi password" - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: @@ -104,6 +248,8 @@ In the above example, the device will join a network with the SSID `mywifissid` values={[ {label: 'CLI', value: 'cli'}, {label: 'Android', value: 'android'}, + {label: 'iOS', value: 'iOS'}, + {label: 'Web', value: 'web'}, ]}> @@ -123,7 +269,23 @@ meshtastic --set wifi_ssid "my wifi ssid" --set wifi_password "my wifi password" - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: @@ -137,6 +299,8 @@ In the above example, the device will broadcast a network with the SSID `mywifis values={[ {label: 'CLI', value: 'cli'}, {label: 'Android', value: 'android'}, + {label: 'iOS', value: 'iOS'}, + {label: 'Web', value: 'web'}, ]}> @@ -148,7 +312,23 @@ In the above example, the device will broadcast a network with the SSID `mywifis - TODO +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: + + + + +:::info +Configuring this setting is not yet available for the selected platform. If this is incorrect please update the documentation for this page. +::: diff --git a/docs/software/web/partitions.md b/docs/software/web/partitions.md index 7360348a..7ce289b3 100644 --- a/docs/software/web/partitions.md +++ b/docs/software/web/partitions.md @@ -3,6 +3,11 @@ id: web-partitions-software title: Managing ESP32 partitions sidebar_label: ESP32 partitions --- +:::caution +It has been reported that some of this information is out of date. + +FIXME - Investigate and rewrite document to reflect the current ESP32 Partition mitigation. +::: ## Insufficient space to upload web interface files diff --git a/docs/software/web/usage.md b/docs/software/web/usage.md index e9281512..6f7d92f8 100644 --- a/docs/software/web/usage.md +++ b/docs/software/web/usage.md @@ -3,6 +3,11 @@ id: web-usage-software title: Using the web interface sidebar_label: Usage --- +:::caution +It has been reported that some of this information is out of date. + +FIXME - Investigate and rewrite document to reflect the current web usage solution. +::: Assuming your device is connected to a wireless network, push the User Button (that's the middle button on the T-Beam) until you get to the Network settings screen. @@ -20,7 +25,7 @@ If you have just one Meshtastic device on your network, the easiest thing to do ### Problem: File not found: /static/index.html -Cause: This most likely means that the file system for the web server has not been loaded. You probably used esphome-flasher or some other GUI tool to flash the firmware. +Cause: This most likely means that the file system for the web server has not been loaded. You probably used esphome-flasher or some other GUI tool to flash the firmware. Solutions: diff --git a/docusaurus.config.js b/docusaurus.config.js index 91069abb..8a171280 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -17,14 +17,6 @@ const config = { colorMode: { respectPrefersColorScheme: true, }, - announcementBar: { - id: "play_store_workaround", - content: - 'Android app unavailable in the Google Play Store store. Install by side-loading from GitHub or Amazon.', - backgroundColor: "#ff9999", - textColor: "#091E42", - isCloseable: true, - }, navbar: { title: "Meshtastic", hideOnScroll: true, @@ -46,7 +38,7 @@ const config = { label: "Documentation", items: [ { - label: "About Meshtastic", + label: "Meshtastic Software", to: "docs/software", }, { @@ -65,13 +57,10 @@ const config = { label: "Contribute to Meshtastic", to: "docs/developers", }, - /* - TODO add Docusaurus and Vercel instructions for how to manage the docs { label: "About this Documentation", to: "docs/about-documentation", }, - */ { label: "Legal", to: "docs/legal", @@ -80,9 +69,9 @@ const config = { ], }, { - label: "Firmware", - to: "firmware", - activeBasePath: "firmware", + label: "Downloads", + to: "downloads", + activeBasePath: "downloads", }, { label: "Showcase", @@ -103,7 +92,73 @@ const config = { ], }, footer: { - copyright: `Powered by ▲ Vercel | Meshtastic® is a registered trademark of Geeksville Industries LLC`, + copyright: `Powered by ▲ Vercel | Meshtastic® is a registered trademark of Geeksville Industries LLC`, + links: [ + { + title: 'Learn', + items: [ + { + label: 'Getting Started', + to: 'docs/getting-started', + }, + { + label: 'About', + to: 'docs/about-documentation', + }, + { + label: 'Hardware', + to: 'docs/hardware', + }, + { + label: 'Settings', + to: 'docs/settings', + }, + ], + }, + { + title: 'Community', + items: [ + { + label: 'YouTube', + to: 'https://www.youtube.com/meshtastic', + }, + { + label: 'Discord', + to: 'https://discord.com/invite/UQJ5QuM7vq', + }, + { + label: 'Forum', + to: 'https://meshtastic.discourse.group', + }, + ], + }, + { + title: 'Legal', + items: [ + { + label: 'Privacy', + to: 'docs/legal/privacy', + }, + { + label: 'Licensing', + to: 'docs/legal/licensing', + }, + { + label: 'Trademark', + to: 'docs/legal/trademark', + }, + ], + }, + { + title: 'Resources', + items: [ + { + label: 'GitHub', + to: 'https://github.com/meshtastic', + }, + ], + }, + ], }, algolia: { apiKey: "01ad7e13d3fe392d2ad26da3c69dbc21", diff --git a/protobufs b/protobufs index 6c39b5bf..c703d579 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 6c39b5bf472677122b3ebf77b434af09038ff0dc +Subproject commit c703d579b20e184278546497246ce54b3bdd4118 diff --git a/sidebars.js b/sidebars.js index b55b8d6c..a2184338 100644 --- a/sidebars.js +++ b/sidebars.js @@ -102,6 +102,7 @@ module.exports = { "getting-started/faq", { "Flashing firmware": [ + "getting-started/meshtastic-flasher", "getting-started/flashing-esp32", "getting-started/flashing-nrf52", ], @@ -114,19 +115,20 @@ module.exports = { "software/settings/overview", "software/settings/channel", "software/settings/gps", + "software/settings/ham", "software/settings/mqtt", "software/settings/power", "software/settings/router", "software/settings/wifi", { Plugins: [ + "software/settings/canned-message-plugin", "software/settings/environmental-measurement-plugin", "software/settings/external-notification-plugin", - "software/settings/canned-message-plugin-settings", "software/settings/range-test-plugin", + "software/settings/rotary-encoder-plugin", "software/settings/serial-plugin", "software/settings/store-and-forward-plugin", - "software/settings/rotary-encoder-settings", ], Advanced: [ "software/settings/channel-advanced", @@ -191,6 +193,28 @@ module.exports = { }, ], }, + Documentation: { + "About Documentation": [ + "about-documentation/overview", + { + Dependencies: [ + "about-documentation/docusaurus", + "about-documentation/github", + "about-documentation/vercel", + ], + }, + { + Examples: [ + "about-documentation/serve-docs-locally", + ], + }, + { + "Style Guides": [ + "about-documentation/style-guides/style-guide-settings", + ], + }, + ], + }, Legal: { Legal: [ "legal/overview", diff --git a/src/pages/downloads/_components/DownloadCard.tsx b/src/pages/downloads/_components/DownloadCard.tsx new file mode 100644 index 00000000..b93ffb7c --- /dev/null +++ b/src/pages/downloads/_components/DownloadCard.tsx @@ -0,0 +1,141 @@ +import React from 'react'; + +export interface downloadCardProps { + client: string; + imgUrl: string; + url: string; + notes: string; + buttonText: string; +} + +export const DownloadCard = ({ + client, + imgUrl, + url, + notes, + buttonText, +}: downloadCardProps): JSX.Element => { + return ( +
+
+

{client}

+
+
+ { + buttonText + ? + + {buttonText} + + : + + + + } +
+
+ {notes ? notes : null} +
+
+ ); +}; + +export const PlaceholderCard = (): JSX.Element => { + return ( +
+
+
+
+
+
+   +
+
+
+
+
+
+ ); +}; diff --git a/src/pages/firmware/_components/FirmwareCard.tsx b/src/pages/downloads/_components/FirmwareCard.tsx similarity index 98% rename from src/pages/firmware/_components/FirmwareCard.tsx rename to src/pages/downloads/_components/FirmwareCard.tsx index 0a1238a0..0ec620c9 100644 --- a/src/pages/firmware/_components/FirmwareCard.tsx +++ b/src/pages/downloads/_components/FirmwareCard.tsx @@ -20,7 +20,7 @@ export const FirmwareCard = ({ style={{ display: "flex", justifyContent: "space-between" }} >

{variant}

- {release?.length && {release[0].name}} + {release?.length && {release[0].tag_name}}

{description}

@@ -40,7 +40,7 @@ export const FirmwareCard = ({ return ( ); diff --git a/src/pages/downloads/_components/HeaderText.tsx b/src/pages/downloads/_components/HeaderText.tsx new file mode 100644 index 00000000..2e59ff93 --- /dev/null +++ b/src/pages/downloads/_components/HeaderText.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +export const HeaderText = ({type, text, link}): JSX.Element => { + + const Header = type; + + return ( +
+ {text} + {link && } +
+ ); + +}; diff --git a/src/pages/downloads/index.tsx b/src/pages/downloads/index.tsx new file mode 100644 index 00000000..84c8f4b5 --- /dev/null +++ b/src/pages/downloads/index.tsx @@ -0,0 +1,147 @@ +import React from 'react'; + +import useSWR from 'swr'; + +// import { Endpoints } from '@octokit/types'; +import Layout from '@theme/Layout'; + +import { Release } from '../../utils/github'; +import { fetcher } from '../../utils/swr'; +import { + FirmwareCard, + PlaceholderFirmwareCard, +} from './_components/FirmwareCard'; +import { HeaderText } from './_components/HeaderText' +import { DownloadCard } from './_components/DownloadCard' + +const Firmware = (): JSX.Element => { + const { data, error } = useSWR( + "https://api.github.com/repos/meshtastic/meshtastic-device/releases", + fetcher + ); + + const beta = data?.filter((release) => release.prerelease === false); + + const alpha = data?.filter((release) => release.prerelease === true); + return ( + +
+
+ +
+
+
+ +
    + download the latest .apk," from Github", ]} + /> + +
+
+
+ +
    + {data && !error ? ( + <> + + +
    +
    +

    Bleeding

    +
    +
    +

    + Latest successful CI build. For those who want to break + things. +

    +
    + +
    + + ) : ( + <> + + + + + )} +
+ Once downloaded, follow the flashing instructions for ESP32 chipsets, NRF52 chipsets, or the GUI instructions for Meshtastic Flasher. +
+
+ Google Play and the Google Play logo are trademarks of Google LLC. +
+
+ + ); +}; + +export default Firmware; diff --git a/src/pages/firmware/index.tsx b/src/pages/firmware/index.tsx deleted file mode 100644 index c6518704..00000000 --- a/src/pages/firmware/index.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react'; - -import useSWR from 'swr'; - -// import { Endpoints } from '@octokit/types'; -import Layout from '@theme/Layout'; - -import { Release } from '../../utils/github'; -import { fetcher } from '../../utils/swr'; -import { - FirmwareCard, - PlaceholderFirmwareCard, -} from './_components/FirmwareCard'; - -const Firmware = (): JSX.Element => { - const { data, error } = useSWR( - "https://api.github.com/repos/meshtastic/meshtastic-device/releases", - fetcher - ); - - const beta = data?.filter((release) => release.prerelease === false); - - const alpha = data?.filter((release) => release.prerelease === true); - return ( - -
-
-
    - {data && !error ? ( - <> - - -
    -
    -

    Bleeding

    -
    -
    -

    - Latest successful CI build. For those who want to break - things. -

    -
    - -
    - - ) : ( - <> - - - - - )} -
-
-
-
- ); -}; - -export default Firmware; diff --git a/static/img/LED_on_TLoraV1.jpg b/static/img/LED_on_TLoraV1.jpg new file mode 100644 index 00000000..57c86ff9 Binary files /dev/null and b/static/img/LED_on_TLoraV1.jpg differ diff --git a/static/img/amazon-fire-button.png b/static/img/amazon-fire-button.png index b581f7ee..9580db40 100644 Binary files a/static/img/amazon-fire-button.png and b/static/img/amazon-fire-button.png differ diff --git a/static/img/android/android-accept-channel-c.png b/static/img/android/android-accept-channel-c.png index c1b0fa52..dc0f3252 100644 Binary files a/static/img/android/android-accept-channel-c.png and b/static/img/android/android-accept-channel-c.png differ diff --git a/static/img/android/android-accept-channel.png b/static/img/android/android-accept-channel.png index 40b28425..016a577f 100644 Binary files a/static/img/android/android-accept-channel.png and b/static/img/android/android-accept-channel.png differ diff --git a/static/img/android/android-advanced-settings-c.png b/static/img/android/android-advanced-settings-c.png index c93f3021..3ea2d346 100644 Binary files a/static/img/android/android-advanced-settings-c.png and b/static/img/android/android-advanced-settings-c.png differ diff --git a/static/img/android/android-advanced-settings.png b/static/img/android/android-advanced-settings.png index c6918eaf..bc6c0f86 100644 Binary files a/static/img/android/android-advanced-settings.png and b/static/img/android/android-advanced-settings.png differ diff --git a/static/img/android/android-bg-location-permissions.png b/static/img/android/android-bg-location-permissions.png index 2c3c3915..e3706e1e 100644 Binary files a/static/img/android/android-bg-location-permissions.png and b/static/img/android/android-bg-location-permissions.png differ diff --git a/static/img/android/android-change-channel-sm.png b/static/img/android/android-change-channel-sm.png index 13decea7..0d3c7059 100644 Binary files a/static/img/android/android-change-channel-sm.png and b/static/img/android/android-change-channel-sm.png differ diff --git a/static/img/android/android-change-channel.png b/static/img/android/android-change-channel.png index 73cd0fae..14ad35db 100644 Binary files a/static/img/android/android-change-channel.png and b/static/img/android/android-change-channel.png differ diff --git a/static/img/android/android-channel-owl-sm.png b/static/img/android/android-channel-owl-sm.png index a767b391..24f70913 100644 Binary files a/static/img/android/android-channel-owl-sm.png and b/static/img/android/android-channel-owl-sm.png differ diff --git a/static/img/android/android-channel-owl.png b/static/img/android/android-channel-owl.png index e0c16fe8..a3f166e6 100644 Binary files a/static/img/android/android-channel-owl.png and b/static/img/android/android-channel-owl.png differ diff --git a/static/img/android/android-channel-sm.png b/static/img/android/android-channel-sm.png index 4334946a..1b4fc120 100644 Binary files a/static/img/android/android-channel-sm.png and b/static/img/android/android-channel-sm.png differ diff --git a/static/img/android/android-channel.png b/static/img/android/android-channel.png index 306ef8a7..3ccd9775 100644 Binary files a/static/img/android/android-channel.png and b/static/img/android/android-channel.png differ diff --git a/static/img/android/android-cloud-cross.png b/static/img/android/android-cloud-cross.png index 2247bdf3..d32022ff 100644 Binary files a/static/img/android/android-cloud-cross.png and b/static/img/android/android-cloud-cross.png differ diff --git a/static/img/android/android-cloud-tick.png b/static/img/android/android-cloud-tick.png index eefe3074..a76009bc 100644 Binary files a/static/img/android/android-cloud-tick.png and b/static/img/android/android-cloud-tick.png differ diff --git a/static/img/android/android-cloud-up.png b/static/img/android/android-cloud-up.png index 6ee34eb4..8c5a2753 100644 Binary files a/static/img/android/android-cloud-up.png and b/static/img/android/android-cloud-up.png differ diff --git a/static/img/android/android-debug-sm.png b/static/img/android/android-debug-sm.png index 282488e3..b0ec0716 100644 Binary files a/static/img/android/android-debug-sm.png and b/static/img/android/android-debug-sm.png differ diff --git a/static/img/android/android-debug.png b/static/img/android/android-debug.png index 417c937f..7d006ec0 100644 Binary files a/static/img/android/android-debug.png and b/static/img/android/android-debug.png differ diff --git a/static/img/android/android-map-sm.png b/static/img/android/android-map-sm.png index dbde91fa..64ef05b2 100644 Binary files a/static/img/android/android-map-sm.png and b/static/img/android/android-map-sm.png differ diff --git a/static/img/android/android-map.png b/static/img/android/android-map.png index f78be714..4142cf5f 100644 Binary files a/static/img/android/android-map.png and b/static/img/android/android-map.png differ diff --git a/static/img/android/android-messages-sm.png b/static/img/android/android-messages-sm.png index 93ab51c5..10952eeb 100644 Binary files a/static/img/android/android-messages-sm.png and b/static/img/android/android-messages-sm.png differ diff --git a/static/img/android/android-messages.png b/static/img/android/android-messages.png index f3a68fb2..020960f2 100644 Binary files a/static/img/android/android-messages.png and b/static/img/android/android-messages.png differ diff --git a/static/img/android/android-new-channel-sm.png b/static/img/android/android-new-channel-sm.png index 2f391a09..2ded938f 100644 Binary files a/static/img/android/android-new-channel-sm.png and b/static/img/android/android-new-channel-sm.png differ diff --git a/static/img/android/android-new-channel.png b/static/img/android/android-new-channel.png index 0f223c37..22d90fec 100644 Binary files a/static/img/android/android-new-channel.png and b/static/img/android/android-new-channel.png differ diff --git a/static/img/android/android-nodes-sm.png b/static/img/android/android-nodes-sm.png index 82a969d7..2dfafa8a 100644 Binary files a/static/img/android/android-nodes-sm.png and b/static/img/android/android-nodes-sm.png differ diff --git a/static/img/android/android-nodes.png b/static/img/android/android-nodes.png index 46b9e6d7..82dd224d 100644 Binary files a/static/img/android/android-nodes.png and b/static/img/android/android-nodes.png differ diff --git a/static/img/android/android-open-with-c.png b/static/img/android/android-open-with-c.png index c5285c3a..008e978e 100644 Binary files a/static/img/android/android-open-with-c.png and b/static/img/android/android-open-with-c.png differ diff --git a/static/img/android/android-open-with.png b/static/img/android/android-open-with.png index c15924ec..4a10db16 100644 Binary files a/static/img/android/android-open-with.png and b/static/img/android/android-open-with.png differ diff --git a/static/img/android/android-settings-deselected-c.png b/static/img/android/android-settings-deselected-c.png index 7bfa3f57..2f0a14ae 100644 Binary files a/static/img/android/android-settings-deselected-c.png and b/static/img/android/android-settings-deselected-c.png differ diff --git a/static/img/android/android-settings-deselected.png b/static/img/android/android-settings-deselected.png index a092e5d1..7bdb7292 100644 Binary files a/static/img/android/android-settings-deselected.png and b/static/img/android/android-settings-deselected.png differ diff --git a/static/img/android/android-settings-mike-sm.png b/static/img/android/android-settings-mike-sm.png index 3755b8e3..901ed6fc 100644 Binary files a/static/img/android/android-settings-mike-sm.png and b/static/img/android/android-settings-mike-sm.png differ diff --git a/static/img/android/android-settings-mike.png b/static/img/android/android-settings-mike.png index 91ea909b..40ced876 100644 Binary files a/static/img/android/android-settings-mike.png and b/static/img/android/android-settings-mike.png differ diff --git a/static/img/android/android-settings-none-c.png b/static/img/android/android-settings-none-c.png index 5dcfc86a..53bb874a 100644 Binary files a/static/img/android/android-settings-none-c.png and b/static/img/android/android-settings-none-c.png differ diff --git a/static/img/android/android-settings-none-sm.png b/static/img/android/android-settings-none-sm.png index 4efbdda9..f33f0ff6 100644 Binary files a/static/img/android/android-settings-none-sm.png and b/static/img/android/android-settings-none-sm.png differ diff --git a/static/img/android/android-settings-none.png b/static/img/android/android-settings-none.png index 8ab8ba48..c7b45b59 100644 Binary files a/static/img/android/android-settings-none.png and b/static/img/android/android-settings-none.png differ diff --git a/static/img/android/android-settings-options-c.png b/static/img/android/android-settings-options-c.png index c4aced7e..1c55cfa1 100644 Binary files a/static/img/android/android-settings-options-c.png and b/static/img/android/android-settings-options-c.png differ diff --git a/static/img/android/android-settings-options.png b/static/img/android/android-settings-options.png index 8d678bc1..7894fdd4 100644 Binary files a/static/img/android/android-settings-options.png and b/static/img/android/android-settings-options.png differ diff --git a/static/img/android/android-settings-sm.png b/static/img/android/android-settings-sm.png index 136dd43c..8e41aa42 100644 Binary files a/static/img/android/android-settings-sm.png and b/static/img/android/android-settings-sm.png differ diff --git a/static/img/android/android-settings-theme-c.png b/static/img/android/android-settings-theme-c.png index 7c7ffd3a..5e0e6bcc 100644 Binary files a/static/img/android/android-settings-theme-c.png and b/static/img/android/android-settings-theme-c.png differ diff --git a/static/img/android/android-settings-theme.png b/static/img/android/android-settings-theme.png index 512f369d..1ef47069 100644 Binary files a/static/img/android/android-settings-theme.png and b/static/img/android/android-settings-theme.png differ diff --git a/static/img/android/android-settings.png b/static/img/android/android-settings.png index b9d519a4..9db3482e 100644 Binary files a/static/img/android/android-settings.png and b/static/img/android/android-settings.png differ diff --git a/static/img/android/android-stats-consent-sm.png b/static/img/android/android-stats-consent-sm.png index 61a82093..a84d1208 100644 Binary files a/static/img/android/android-stats-consent-sm.png and b/static/img/android/android-stats-consent-sm.png differ diff --git a/static/img/android/android-stats-consent.png b/static/img/android/android-stats-consent.png index 38c7e0ba..363bd229 100644 Binary files a/static/img/android/android-stats-consent.png and b/static/img/android/android-stats-consent.png differ diff --git a/static/img/android/default-channel.png b/static/img/android/default-channel.png index 4daa50a7..5ea1c3e3 100644 Binary files a/static/img/android/default-channel.png and b/static/img/android/default-channel.png differ diff --git a/static/img/atak-animation.gif b/static/img/atak-animation.gif index a5c383b2..e8e0dbce 100644 Binary files a/static/img/atak-animation.gif and b/static/img/atak-animation.gif differ diff --git a/static/img/codespaces/codespaces-languages-sm.png b/static/img/codespaces/codespaces-languages-sm.png index 20f602e9..7f51fcd5 100644 Binary files a/static/img/codespaces/codespaces-languages-sm.png and b/static/img/codespaces/codespaces-languages-sm.png differ diff --git a/static/img/codespaces/codespaces-languages.png b/static/img/codespaces/codespaces-languages.png index 798965b6..aa42cf1d 100644 Binary files a/static/img/codespaces/codespaces-languages.png and b/static/img/codespaces/codespaces-languages.png differ diff --git a/static/img/codespaces/codespaces-request-sm.png b/static/img/codespaces/codespaces-request-sm.png index 5e1d6670..6424dd89 100644 Binary files a/static/img/codespaces/codespaces-request-sm.png and b/static/img/codespaces/codespaces-request-sm.png differ diff --git a/static/img/codespaces/codespaces-request.png b/static/img/codespaces/codespaces-request.png index ea0a3779..cdde858a 100644 Binary files a/static/img/codespaces/codespaces-request.png and b/static/img/codespaces/codespaces-request.png differ diff --git a/static/img/codespaces/codespaces-waitinglist-sm.png b/static/img/codespaces/codespaces-waitinglist-sm.png index b7599cf4..55db7879 100644 Binary files a/static/img/codespaces/codespaces-waitinglist-sm.png and b/static/img/codespaces/codespaces-waitinglist-sm.png differ diff --git a/static/img/codespaces/codespaces-waitinglist.png b/static/img/codespaces/codespaces-waitinglist.png index 0268f602..ddb59aac 100644 Binary files a/static/img/codespaces/codespaces-waitinglist.png and b/static/img/codespaces/codespaces-waitinglist.png differ diff --git a/static/img/efficiency.svg b/static/img/efficiency.svg index 8f7b07d9..199cfc5e 100644 --- a/static/img/efficiency.svg +++ b/static/img/efficiency.svg @@ -1,144 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/static/img/hardware/heltec-v2.png b/static/img/hardware/heltec-v2.png index a4897c7e..9c6a48f4 100644 Binary files a/static/img/hardware/heltec-v2.png and b/static/img/hardware/heltec-v2.png differ diff --git a/static/img/hardware/heltec_v2_pinmap.png b/static/img/hardware/heltec_v2_pinmap.png new file mode 100644 index 00000000..8e1061cc Binary files /dev/null and b/static/img/hardware/heltec_v2_pinmap.png differ diff --git a/static/img/hardware/heltec_v2_vs_v21.png b/static/img/hardware/heltec_v2_vs_v21.png index c6166219..c68cd6c7 100644 Binary files a/static/img/hardware/heltec_v2_vs_v21.png and b/static/img/hardware/heltec_v2_vs_v21.png differ diff --git a/static/img/hardware/link.png b/static/img/hardware/link.png index fc8024b6..04ebb0a3 100644 Binary files a/static/img/hardware/link.png and b/static/img/hardware/link.png differ diff --git a/static/img/hardware/lora-v1.3.png b/static/img/hardware/lora-v1.3.png index 20a75e60..8a71ccea 100644 Binary files a/static/img/hardware/lora-v1.3.png and b/static/img/hardware/lora-v1.3.png differ diff --git a/static/img/hardware/lora-v1.3_pinmap.webp b/static/img/hardware/lora-v1.3_pinmap.webp new file mode 100644 index 00000000..109c7319 Binary files /dev/null and b/static/img/hardware/lora-v1.3_pinmap.webp differ diff --git a/static/img/hardware/lora-v1.png b/static/img/hardware/lora-v1.png index 7d8a67c4..2db34b44 100644 Binary files a/static/img/hardware/lora-v1.png and b/static/img/hardware/lora-v1.png differ diff --git a/static/img/hardware/lora-v2.0.png b/static/img/hardware/lora-v2.0.png index 4eb5538c..b0df6a7a 100644 Binary files a/static/img/hardware/lora-v2.0.png and b/static/img/hardware/lora-v2.0.png differ diff --git a/static/img/hardware/lora-v2.1-1.6.png b/static/img/hardware/lora-v2.1-1.6.png index ca293c0f..c4c98f7e 100644 Binary files a/static/img/hardware/lora-v2.1-1.6.png and b/static/img/hardware/lora-v2.1-1.6.png differ diff --git a/static/img/hardware/lora32-v2-1.6-button.jpg b/static/img/hardware/lora32-v2-1.6-button.jpg index 1a60b63b..4da2f88a 100644 Binary files a/static/img/hardware/lora32-v2-1.6-button.jpg and b/static/img/hardware/lora32-v2-1.6-button.jpg differ diff --git a/static/img/hardware/lora_v1_with_DHT22.jpg b/static/img/hardware/lora_v1_with_DHT22.jpg new file mode 100644 index 00000000..162efe9e Binary files /dev/null and b/static/img/hardware/lora_v1_with_DHT22.jpg differ diff --git a/static/img/hardware/lora_v1_with_DS18B20.jpg b/static/img/hardware/lora_v1_with_DS18B20.jpg new file mode 100644 index 00000000..731da8c6 Binary files /dev/null and b/static/img/hardware/lora_v1_with_DS18B20.jpg differ diff --git a/static/img/hardware/meshtastic-logo.png b/static/img/hardware/meshtastic-logo.png index 52d2efc2..2ec8180d 100644 Binary files a/static/img/hardware/meshtastic-logo.png and b/static/img/hardware/meshtastic-logo.png differ diff --git a/static/img/hardware/rak/RAK11200.png b/static/img/hardware/rak/RAK11200.png index 57f2cd6b..115ab2a2 100644 Binary files a/static/img/hardware/rak/RAK11200.png and b/static/img/hardware/rak/RAK11200.png differ diff --git a/static/img/hardware/rak/RAK11310.png b/static/img/hardware/rak/RAK11310.png index e093529b..b2cb75b1 100644 Binary files a/static/img/hardware/rak/RAK11310.png and b/static/img/hardware/rak/RAK11310.png differ diff --git a/static/img/hardware/rak/RAK12002.png b/static/img/hardware/rak/RAK12002.png index 5d337d41..66f8385a 100644 Binary files a/static/img/hardware/rak/RAK12002.png and b/static/img/hardware/rak/RAK12002.png differ diff --git a/static/img/hardware/rak/RAK12003.png b/static/img/hardware/rak/RAK12003.png index f60388a8..b83b9473 100644 Binary files a/static/img/hardware/rak/RAK12003.png and b/static/img/hardware/rak/RAK12003.png differ diff --git a/static/img/hardware/rak/RAK12004.png b/static/img/hardware/rak/RAK12004.png index c6081ada..ec59d55a 100644 Binary files a/static/img/hardware/rak/RAK12004.png and b/static/img/hardware/rak/RAK12004.png differ diff --git a/static/img/hardware/rak/RAK12005.png b/static/img/hardware/rak/RAK12005.png index aa3a73a5..dc2e9242 100644 Binary files a/static/img/hardware/rak/RAK12005.png and b/static/img/hardware/rak/RAK12005.png differ diff --git a/static/img/hardware/rak/RAK12006.png b/static/img/hardware/rak/RAK12006.png index a1c1d71f..77d70e29 100644 Binary files a/static/img/hardware/rak/RAK12006.png and b/static/img/hardware/rak/RAK12006.png differ diff --git a/static/img/hardware/rak/RAK12007.png b/static/img/hardware/rak/RAK12007.png index e5711e75..50065e2b 100644 Binary files a/static/img/hardware/rak/RAK12007.png and b/static/img/hardware/rak/RAK12007.png differ diff --git a/static/img/hardware/rak/RAK12009.png b/static/img/hardware/rak/RAK12009.png index c6081ada..ec59d55a 100644 Binary files a/static/img/hardware/rak/RAK12009.png and b/static/img/hardware/rak/RAK12009.png differ diff --git a/static/img/hardware/rak/RAK12010.png b/static/img/hardware/rak/RAK12010.png index 450d9c6a..6c8f3036 100644 Binary files a/static/img/hardware/rak/RAK12010.png and b/static/img/hardware/rak/RAK12010.png differ diff --git a/static/img/hardware/rak/RAK12011.png b/static/img/hardware/rak/RAK12011.png index 1d452cb8..d3f54497 100644 Binary files a/static/img/hardware/rak/RAK12011.png and b/static/img/hardware/rak/RAK12011.png differ diff --git a/static/img/hardware/rak/RAK12012.png b/static/img/hardware/rak/RAK12012.png index d9d8e51a..784c0f8e 100644 Binary files a/static/img/hardware/rak/RAK12012.png and b/static/img/hardware/rak/RAK12012.png differ diff --git a/static/img/hardware/rak/RAK12015.png b/static/img/hardware/rak/RAK12015.png index 5effc803..6db23c89 100644 Binary files a/static/img/hardware/rak/RAK12015.png and b/static/img/hardware/rak/RAK12015.png differ diff --git a/static/img/hardware/rak/RAK12500.png b/static/img/hardware/rak/RAK12500.png index f80ac81d..986c4c22 100644 Binary files a/static/img/hardware/rak/RAK12500.png and b/static/img/hardware/rak/RAK12500.png differ diff --git a/static/img/hardware/rak/RAK13001.png b/static/img/hardware/rak/RAK13001.png index 66f6e23f..1a762be7 100644 Binary files a/static/img/hardware/rak/RAK13001.png and b/static/img/hardware/rak/RAK13001.png differ diff --git a/static/img/hardware/rak/RAK13002.png b/static/img/hardware/rak/RAK13002.png index 5f27a596..417e860f 100644 Binary files a/static/img/hardware/rak/RAK13002.png and b/static/img/hardware/rak/RAK13002.png differ diff --git a/static/img/hardware/rak/RAK13003.png b/static/img/hardware/rak/RAK13003.png index 631dd203..5de380c8 100644 Binary files a/static/img/hardware/rak/RAK13003.png and b/static/img/hardware/rak/RAK13003.png differ diff --git a/static/img/hardware/rak/RAK13004.png b/static/img/hardware/rak/RAK13004.png index 8ff275f3..32ab0fea 100644 Binary files a/static/img/hardware/rak/RAK13004.png and b/static/img/hardware/rak/RAK13004.png differ diff --git a/static/img/hardware/rak/RAK13005.png b/static/img/hardware/rak/RAK13005.png index b88831f8..4ea065ee 100644 Binary files a/static/img/hardware/rak/RAK13005.png and b/static/img/hardware/rak/RAK13005.png differ diff --git a/static/img/hardware/rak/RAK13101.png b/static/img/hardware/rak/RAK13101.png index bad2bf9d..111e8142 100644 Binary files a/static/img/hardware/rak/RAK13101.png and b/static/img/hardware/rak/RAK13101.png differ diff --git a/static/img/hardware/rak/RAK14000.png b/static/img/hardware/rak/RAK14000.png index 4b639f92..22684f98 100644 Binary files a/static/img/hardware/rak/RAK14000.png and b/static/img/hardware/rak/RAK14000.png differ diff --git a/static/img/hardware/rak/RAK14001.png b/static/img/hardware/rak/RAK14001.png index 7e0dfea3..122b58c5 100644 Binary files a/static/img/hardware/rak/RAK14001.png and b/static/img/hardware/rak/RAK14001.png differ diff --git a/static/img/hardware/rak/RAK14002.png b/static/img/hardware/rak/RAK14002.png index 9e29db24..7203e526 100644 Binary files a/static/img/hardware/rak/RAK14002.png and b/static/img/hardware/rak/RAK14002.png differ diff --git a/static/img/hardware/rak/RAK14003.png b/static/img/hardware/rak/RAK14003.png index 5961ef84..dbc0125a 100644 Binary files a/static/img/hardware/rak/RAK14003.png and b/static/img/hardware/rak/RAK14003.png differ diff --git a/static/img/hardware/rak/RAK15000.png b/static/img/hardware/rak/RAK15000.png index f6298dea..dc953009 100644 Binary files a/static/img/hardware/rak/RAK15000.png and b/static/img/hardware/rak/RAK15000.png differ diff --git a/static/img/hardware/rak/RAK15001.png b/static/img/hardware/rak/RAK15001.png index d018bde3..97cba307 100644 Binary files a/static/img/hardware/rak/RAK15001.png and b/static/img/hardware/rak/RAK15001.png differ diff --git a/static/img/hardware/rak/RAK15002.png b/static/img/hardware/rak/RAK15002.png index 01ecc4d2..6831acf8 100644 Binary files a/static/img/hardware/rak/RAK15002.png and b/static/img/hardware/rak/RAK15002.png differ diff --git a/static/img/hardware/rak/RAK16000.png b/static/img/hardware/rak/RAK16000.png index f574cb61..bcd04591 100644 Binary files a/static/img/hardware/rak/RAK16000.png and b/static/img/hardware/rak/RAK16000.png differ diff --git a/static/img/hardware/rak/RAK16001.png b/static/img/hardware/rak/RAK16001.png index 6effe855..d046cfaf 100644 Binary files a/static/img/hardware/rak/RAK16001.png and b/static/img/hardware/rak/RAK16001.png differ diff --git a/static/img/hardware/rak/RAK17000.png b/static/img/hardware/rak/RAK17000.png index fe870b94..bf0c0f71 100644 Binary files a/static/img/hardware/rak/RAK17000.png and b/static/img/hardware/rak/RAK17000.png differ diff --git a/static/img/hardware/rak/RAK18000.png b/static/img/hardware/rak/RAK18000.png index 2bc1efaf..6d6c7581 100644 Binary files a/static/img/hardware/rak/RAK18000.png and b/static/img/hardware/rak/RAK18000.png differ diff --git a/static/img/hardware/rak/RAK18001.png b/static/img/hardware/rak/RAK18001.png index a10e0a09..7cd31ba7 100644 Binary files a/static/img/hardware/rak/RAK18001.png and b/static/img/hardware/rak/RAK18001.png differ diff --git a/static/img/hardware/rak/RAK19002.png b/static/img/hardware/rak/RAK19002.png index df0876a5..5ef51c5c 100644 Binary files a/static/img/hardware/rak/RAK19002.png and b/static/img/hardware/rak/RAK19002.png differ diff --git a/static/img/hardware/rak/RAK19003.png b/static/img/hardware/rak/RAK19003.png index 77568d10..67448409 100644 Binary files a/static/img/hardware/rak/RAK19003.png and b/static/img/hardware/rak/RAK19003.png differ diff --git a/static/img/hardware/rak/RAK19004.png b/static/img/hardware/rak/RAK19004.png index 23ff5a66..7267f78a 100644 Binary files a/static/img/hardware/rak/RAK19004.png and b/static/img/hardware/rak/RAK19004.png differ diff --git a/static/img/hardware/rak/RAK19005.png b/static/img/hardware/rak/RAK19005.png index fd97e5ba..0268c5b7 100644 Binary files a/static/img/hardware/rak/RAK19005.png and b/static/img/hardware/rak/RAK19005.png differ diff --git a/static/img/hardware/rak/RAK19006.png b/static/img/hardware/rak/RAK19006.png index 5750ec0a..a9173ee4 100644 Binary files a/static/img/hardware/rak/RAK19006.png and b/static/img/hardware/rak/RAK19006.png differ diff --git a/static/img/hardware/rak/RAK19008.png b/static/img/hardware/rak/RAK19008.png index fd97e5ba..0268c5b7 100644 Binary files a/static/img/hardware/rak/RAK19008.png and b/static/img/hardware/rak/RAK19008.png differ diff --git a/static/img/hardware/rak/RAK1901.png b/static/img/hardware/rak/RAK1901.png index 92b5246c..5d81ed88 100644 Binary files a/static/img/hardware/rak/RAK1901.png and b/static/img/hardware/rak/RAK1901.png differ diff --git a/static/img/hardware/rak/RAK1902.png b/static/img/hardware/rak/RAK1902.png index 34f1059e..d0d7482b 100644 Binary files a/static/img/hardware/rak/RAK1902.png and b/static/img/hardware/rak/RAK1902.png differ diff --git a/static/img/hardware/rak/RAK1903.png b/static/img/hardware/rak/RAK1903.png index 0546b079..b4248640 100644 Binary files a/static/img/hardware/rak/RAK1903.png and b/static/img/hardware/rak/RAK1903.png differ diff --git a/static/img/hardware/rak/RAK1904.png b/static/img/hardware/rak/RAK1904.png index 941ec5a2..d9bf0287 100644 Binary files a/static/img/hardware/rak/RAK1904.png and b/static/img/hardware/rak/RAK1904.png differ diff --git a/static/img/hardware/rak/RAK1906.png b/static/img/hardware/rak/RAK1906.png index 1dcdb463..cb33e019 100644 Binary files a/static/img/hardware/rak/RAK1906.png and b/static/img/hardware/rak/RAK1906.png differ diff --git a/static/img/hardware/rak/RAK1910.png b/static/img/hardware/rak/RAK1910.png index 35a830f6..df4960d0 100644 Binary files a/static/img/hardware/rak/RAK1910.png and b/static/img/hardware/rak/RAK1910.png differ diff --git a/static/img/hardware/rak/RAK1920.png b/static/img/hardware/rak/RAK1920.png index b840a5ea..fd656ffb 100644 Binary files a/static/img/hardware/rak/RAK1920.png and b/static/img/hardware/rak/RAK1920.png differ diff --git a/static/img/hardware/rak/RAK1921.png b/static/img/hardware/rak/RAK1921.png index 896fd50f..ed2bdb87 100644 Binary files a/static/img/hardware/rak/RAK1921.png and b/static/img/hardware/rak/RAK1921.png differ diff --git a/static/img/hardware/rak/RAK2305.png b/static/img/hardware/rak/RAK2305.png index a547fef7..2f7698f4 100644 Binary files a/static/img/hardware/rak/RAK2305.png and b/static/img/hardware/rak/RAK2305.png differ diff --git a/static/img/hardware/rak/RAK4631.png b/static/img/hardware/rak/RAK4631.png index ab970cf8..185953b3 100644 Binary files a/static/img/hardware/rak/RAK4631.png and b/static/img/hardware/rak/RAK4631.png differ diff --git a/static/img/hardware/rak/RAK4631_with_EnvSensor.jpg b/static/img/hardware/rak/RAK4631_with_EnvSensor.jpg new file mode 100644 index 00000000..b19d9d85 Binary files /dev/null and b/static/img/hardware/rak/RAK4631_with_EnvSensor.jpg differ diff --git a/static/img/hardware/rak/RAK5005-O.png b/static/img/hardware/rak/RAK5005-O.png index 3598ad82..bae60ffd 100644 Binary files a/static/img/hardware/rak/RAK5005-O.png and b/static/img/hardware/rak/RAK5005-O.png differ diff --git a/static/img/hardware/rak/RAK5801.png b/static/img/hardware/rak/RAK5801.png index 256238cd..03ee7fcc 100644 Binary files a/static/img/hardware/rak/RAK5801.png and b/static/img/hardware/rak/RAK5801.png differ diff --git a/static/img/hardware/rak/RAK5802.png b/static/img/hardware/rak/RAK5802.png index 90db6cc9..74ef875b 100644 Binary files a/static/img/hardware/rak/RAK5802.png and b/static/img/hardware/rak/RAK5802.png differ diff --git a/static/img/hardware/rak/RAK5804.png b/static/img/hardware/rak/RAK5804.png index 9a781779..c5d53cb7 100644 Binary files a/static/img/hardware/rak/RAK5804.png and b/static/img/hardware/rak/RAK5804.png differ diff --git a/static/img/hardware/rak/RAK5811.png b/static/img/hardware/rak/RAK5811.png index a681b868..9bb00743 100644 Binary files a/static/img/hardware/rak/RAK5811.png and b/static/img/hardware/rak/RAK5811.png differ diff --git a/static/img/hardware/rak/RAK5860.png b/static/img/hardware/rak/RAK5860.png index 6a529b1d..fa842b73 100644 Binary files a/static/img/hardware/rak/RAK5860.png and b/static/img/hardware/rak/RAK5860.png differ diff --git a/static/img/hardware/rak4631.png b/static/img/hardware/rak4631.png index a086a69b..c319b2e0 100644 Binary files a/static/img/hardware/rak4631.png and b/static/img/hardware/rak4631.png differ diff --git a/static/img/hardware/screen.png b/static/img/hardware/screen.png index 89cb18da..61af627e 100644 Binary files a/static/img/hardware/screen.png and b/static/img/hardware/screen.png differ diff --git a/static/img/hardware/t-beam-m8n.png b/static/img/hardware/t-beam-m8n.png index 1c2cd841..69986ce6 100644 Binary files a/static/img/hardware/t-beam-m8n.png and b/static/img/hardware/t-beam-m8n.png differ diff --git a/static/img/hardware/t-beam-meshtastic.png b/static/img/hardware/t-beam-meshtastic.png index d5ce5248..beb1ba00 100644 Binary files a/static/img/hardware/t-beam-meshtastic.png and b/static/img/hardware/t-beam-meshtastic.png differ diff --git a/static/img/hardware/t-beam-sx1262.png b/static/img/hardware/t-beam-sx1262.png index d71107f3..f9831aaa 100644 Binary files a/static/img/hardware/t-beam-sx1262.png and b/static/img/hardware/t-beam-sx1262.png differ diff --git a/static/img/hardware/t-beam-v0.7.png b/static/img/hardware/t-beam-v0.7.png index 9cf131be..57dca050 100644 Binary files a/static/img/hardware/t-beam-v0.7.png and b/static/img/hardware/t-beam-v0.7.png differ diff --git a/static/img/hardware/t-beam-v1.1.png b/static/img/hardware/t-beam-v1.1.png index 3b4e0a36..c53c77d3 100644 Binary files a/static/img/hardware/t-beam-v1.1.png and b/static/img/hardware/t-beam-v1.1.png differ diff --git a/static/img/hardware/t-beam_v0.7_pinmap.jpeg b/static/img/hardware/t-beam_v0.7_pinmap.jpeg new file mode 100644 index 00000000..e36de0c9 Binary files /dev/null and b/static/img/hardware/t-beam_v0.7_pinmap.jpeg differ diff --git a/static/img/hardware/t-beam_v1.1_pinmap.webp b/static/img/hardware/t-beam_v1.1_pinmap.webp new file mode 100644 index 00000000..1d01c409 Binary files /dev/null and b/static/img/hardware/t-beam_v1.1_pinmap.webp differ diff --git a/static/img/hardware/t-echo-lilygo.jpg b/static/img/hardware/t-echo-lilygo.jpg index 374cac48..0838fbee 100644 Binary files a/static/img/hardware/t-echo-lilygo.jpg and b/static/img/hardware/t-echo-lilygo.jpg differ diff --git a/static/img/hardware/t-echo.png b/static/img/hardware/t-echo.png index 88f502d0..adeb7373 100644 Binary files a/static/img/hardware/t-echo.png and b/static/img/hardware/t-echo.png differ diff --git a/static/img/homepage/battery.svg b/static/img/homepage/battery.svg index 2bd211a1..3aad487f 100644 --- a/static/img/homepage/battery.svg +++ b/static/img/homepage/battery.svg @@ -1,82 +1 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/homepage/encryption.svg b/static/img/homepage/encryption.svg index 05e3fc1e..2f45933a 100644 --- a/static/img/homepage/encryption.svg +++ b/static/img/homepage/encryption.svg @@ -1,64 +1 @@ - - - - - - image/svg+xml - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/homepage/extendable.svg b/static/img/homepage/extendable.svg index 46d8254e..71c38b06 100644 --- a/static/img/homepage/extendable.svg +++ b/static/img/homepage/extendable.svg @@ -1,64 +1 @@ - - - - - - image/svg+xml - - - - - - - - - + \ No newline at end of file diff --git a/static/img/homepage/messages.svg b/static/img/homepage/messages.svg index 5f911bbb..8ec7bc9b 100644 --- a/static/img/homepage/messages.svg +++ b/static/img/homepage/messages.svg @@ -1,85 +1 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/homepage/opensource.svg b/static/img/homepage/opensource.svg index 08fba33c..89d2d296 100644 --- a/static/img/homepage/opensource.svg +++ b/static/img/homepage/opensource.svg @@ -1,128 +1 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/homepage/platforms.svg b/static/img/homepage/platforms.svg index d5192d28..61076210 100644 --- a/static/img/homepage/platforms.svg +++ b/static/img/homepage/platforms.svg @@ -1,143 +1 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/static/img/insufficient-space.png b/static/img/insufficient-space.png index e6772297..828cc788 100644 Binary files a/static/img/insufficient-space.png and b/static/img/insufficient-space.png differ diff --git a/static/img/platformio-erase.png b/static/img/platformio-erase.png index 38543e3a..1930331c 100644 Binary files a/static/img/platformio-erase.png and b/static/img/platformio-erase.png differ diff --git a/static/img/plugins/store_and_forward/store_and_forward-overview.png b/static/img/plugins/store_and_forward/store_and_forward-overview.png index 65e75f20..8754a229 100644 Binary files a/static/img/plugins/store_and_forward/store_and_forward-overview.png and b/static/img/plugins/store_and_forward/store_and_forward-overview.png differ diff --git a/static/img/pygui.jpg b/static/img/pygui.jpg index 79cc33fa..b1c9ebdc 100644 Binary files a/static/img/pygui.jpg and b/static/img/pygui.jpg differ diff --git a/static/img/screen/mesh-channel.jpg b/static/img/screen/mesh-channel.jpg index 84238a3a..501434a6 100644 Binary files a/static/img/screen/mesh-channel.jpg and b/static/img/screen/mesh-channel.jpg differ diff --git a/static/img/screen/mesh-gps.jpg b/static/img/screen/mesh-gps.jpg index fb32f68b..ac39c4d2 100644 Binary files a/static/img/screen/mesh-gps.jpg and b/static/img/screen/mesh-gps.jpg differ diff --git a/static/img/screen/mesh-message.jpg b/static/img/screen/mesh-message.jpg index 23ff8613..6ff3358b 100644 Binary files a/static/img/screen/mesh-message.jpg and b/static/img/screen/mesh-message.jpg differ diff --git a/static/img/screen/mesh-node1.jpg b/static/img/screen/mesh-node1.jpg index a913fdb4..bc5e4fcf 100644 Binary files a/static/img/screen/mesh-node1.jpg and b/static/img/screen/mesh-node1.jpg differ diff --git a/static/img/screen/mesh-node2.jpg b/static/img/screen/mesh-node2.jpg index e2233ee0..56570879 100644 Binary files a/static/img/screen/mesh-node2.jpg and b/static/img/screen/mesh-node2.jpg differ diff --git a/static/img/screen/mesh-splash.jpg b/static/img/screen/mesh-splash.jpg index 19bd8c1e..6bcfc3e1 100644 Binary files a/static/img/screen/mesh-splash.jpg and b/static/img/screen/mesh-splash.jpg differ diff --git a/static/img/screen/mesh-wifi.jpg b/static/img/screen/mesh-wifi.jpg index 61ede8af..16b07d53 100644 Binary files a/static/img/screen/mesh-wifi.jpg and b/static/img/screen/mesh-wifi.jpg differ