Merge branch 'master' into linuxNative

This commit is contained in:
Ben Lipsey 2023-08-07 14:22:15 -07:00 committed by GitHub
commit 9cb5a70740
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 2732 additions and 1822 deletions

1
.npmrc Normal file
View file

@ -0,0 +1 @@
@buf:registry=https://buf.build/gen/npm/v1

View file

@ -11,9 +11,9 @@ Meshtastic® is a project that enables you to use inexpensive LoRa radios as a l
### Features
- Long range ([_206km record by StarWatcher, CVR, rook, kboxlabs_](/docs/overview/range-tests#current-record))
- Long range ([_254km record by kboxlabs_](/docs/overview/range-tests#current-record))
- No phone required for mesh communication
- Decentralised communication - no dedicated router required
- Decentralized communication - no dedicated router required
- Encrypted communication
- Excellent battery life
- Send and receive text messages between members of the mesh

View file

@ -109,7 +109,7 @@ Some example settings:
The link budget used by these calculations assumes a transmit power of 17dBm and an antenna with 0dB gain. Adjust your link budget assumptions based on your actual devices.
These channel settings may not have been tested. Use at your own discretion. Share on <https://meshtastic.discourse.group> with your successes or failure.
These channel settings may not have been tested. Use at your own discretion. Share on https://meshtastic.discourse.group with your successes or failure.
## Cryptography

View file

@ -8,9 +8,9 @@ sidebar_position: 4
## Current Record
- **Range:** 206km (128 miles)
- **Record Holders:** _StarWatcher, CVR, rook, kboxlabs_
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/130)
- **Range:** 254km (158 miles)
- **Record Holders:** _kboxlabs_
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/137)
### Modem Settings
@ -22,10 +22,49 @@ Default Long_Fast
### Node A
- **Device:** [RAK4631 Core](https://meshtastic.org/docs/hardware/devices/rak/core-module) with [RAK 5005-O Base Board](https://meshtastic.org/docs/hardware/devices/rak/base-board)
- **Firmware Version:** 2.1.17
- **Antenna:** 902-928MHz 5.8 dBi Slinkdsco Outdoor
### Node B
- **Device:** [RAK4631 Core](https://meshtastic.org/docs/hardware/devices/rak/core-module) with [RAK 19003 Mini Base Board](https://meshtastic.org/docs/hardware/devices/rak/base-board)
- **Firmware Version:** 2.1.18
- **Antenna:** Standard LoRa 915MHz 60mm 2dBi Omnidirectional
<img src="/img/records/kboxlabs_sender.png" alt="Sending Node" />
<img src="/img/records/kboxlabs_receiver.png" alt="Receiving Node" />
<img src="/img/records/kboxlabs_map.png" alt="Geographic Locations" />
## Previous Record
- **Range:** 206km (128 miles)
- **Record Holders:** _StarWatcher, CVR, rook, kboxlabs_
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/130)
<!-- trunk-ignore(markdownlint/MD024) -->
### Modem Settings
Default Long_Fast
- **Frequency:** 915MHz
- **Bandwidth:** 250
- **Spread Factor:** 11
- **Coding Rate:** 4/8
<!-- trunk-ignore(markdownlint/MD024) -->
### Node A
- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/tbeam)
- **Firmware Version:** 2.1.10
- **Antenna:** Stock Antenna
<!-- trunk-ignore(markdownlint/MD024) -->
### Node B
- **Device:** [LILYGO TTGO T-Beam](/docs/hardware/devices/tbeam)
@ -38,6 +77,7 @@ Default Long_Fast
<!-- trunk-ignore(markdownlint/MD024) -->
## Previous Record
- **Range:** 166km (103 miles)

View file

@ -48,7 +48,7 @@ Each channel is assigned one of 3 roles:
1. `PRIMARY` or `1`
- This is the first channel that is created for you on initial setup.
- Only one primary channel can exist and can not be disabled.
- Direct messages are only available on this channel.
- Periodic broadcasts like position and telemetry are only sent over this channel.
2. `SECONDARY` or `2`
- Can modify the encryption key (PSK).
3. `DISABLED` or `0`

View file

@ -35,7 +35,7 @@ This setting defines the device's behavior for how messages are rebroadcasted.
| Value | Description |
| :-----------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| `ALL` | ALL (Default) - This setting will rebroadcast ALL messages from its primary mesh as well as other meshes with the same modem settings, including when encryption settings differ. |
| `All_SKIP_DECODING` | ALL_SKIP_DECODING - Same as behavior as ALL, but skips packet decoding and simply rebroadcasts them. **Only available with Repeater role.** |
| `ALL_SKIP_DECODING` | ALL_SKIP_DECODING - Same as behavior as ALL, but skips packet decoding and simply rebroadcasts them. **Only available with Repeater role.** |
| `LOCAL_ONLY` | LOCAL_ONLY - Ignores observed messages from foreign meshes that are open or those which it cannot decrypt. Only rebroadcasts message on the nodes local primary / secondary channels. |
### Serial Console

View file

@ -36,7 +36,7 @@ The presets are designed to provide further options for optimizing either speed
1. A high number of devices exist in the mesh, or messages are sent very frequently. Faster speeds (and therefore lower radio time per device) can help with mesh network congestion.
2. Maximum range is desired, for long range scenarios where a several second delay in message receipt is acceptable (for instance, attempting to send messages from a town to a distant mountain top).
The Presets available are as follows, and follow a linear pattern of Fastest <--> Slowest, and Shortest <--> Longest range:
The Presets available are as follows, and follow a linear pattern of Fastest \<\-\-\> Slowest, and Shortest \<\-\-\> Longest range:
1. `SHORT_FAST` (Fastest, highest bandwidth, lowest airtime, shortest range)
@ -81,7 +81,7 @@ Please be aware that values < 62.5kHz may require a TCXO on some hardware device
### Spread Factor
A number from 7 to 12. Indicates the number of chirps per symbol as 1<<spread_factor.
A number from 7 to 12. Indicates the number of chirps per symbol as 1[\<\<]spread_factor.
### Coding Rate

View file

@ -32,7 +32,7 @@ How long should we try to get our position during each GPS update interval attem
Acceptable values: `true` or `false`
True by default
False by default
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.

View file

@ -84,13 +84,13 @@ Since authentication is also eventually needed for our other transports (TCP and
### JavaScript
See: <https://github.com/meshtastic/meshtastic.js>
See: https://github.com/meshtastic/meshtastic.js
A reference client written in JavaScript will provide a JavaScript API for using this transport. That client will do HTTP connections, use the generated protobuf JavaScript code and provide an API that hides all of this REST plumbing. The two key methods will be `sendToRadio(packet)` and `onFromRadio(callback)`.
### Protoman
See: <https://github.com/spluxx/Protoman>
See: [https://github.com/spluxx/Protoman]
Protoman is able to interface with the Meshtastic REST API out of the box. This is useful for manual testing of the endpoints.
@ -100,4 +100,4 @@ HTTP and HTTPS are both supported on the ESP32 using self signed certificates on
## Related documents
- Interesting slide pack on the concept: <https://www.slideshare.net/mokeefe/javaone-2009-ts5276-restful-protocol-buffers>
- Interesting slide pack on the concept: [https://www.slideshare.net/mokeefe/javaone-2009-ts5276-restful-protocol-buffers]

View file

@ -20,14 +20,14 @@ interface = meshtastic.serial_interface.SerialInterface()
interface.sendText("hello mesh")
ourNode = interface.getNode('^local')
print(f'Our node preferences:{ourNode.radioConfig.preferences}')
print(f'Our node preferences:{ourNode.localConfig}')
# update a value
print('Changing a preference...')
ourNode.radioConfig.preferences.gps_update_interval = 60
ourNode.localConfig.position.gps_update_interval = 60
print(f'Our node preferences now:{ourNode.radioConfig.preferences}')
ourNode.writeConfig()
print(f'Our node preferences now:{ourNode.localConfig}')
ourNode.writeConfig("position")
interface.close()
```
@ -57,23 +57,7 @@ interface.close()
Note: Be sure to change the IP address in the code above to a valid IP address for your setup.
You can get and update settings like this:
```python
import meshtastic
import meshtastic.serial_interface
interface = meshtastic.serial_interface.SerialInterface()
ourNode = interface.getNode('^local')
print(ourNode.radioConfig.preferences)
ourNode.radioConfig.preferences.gps_update_interval = 60
print(ourNode.radioConfig.preferences)
ourNode.writeConfig()
interface.close()
```
For the rough notes/implementation plan see [TODO](https://github.com/meshtastic/Meshtastic-python/blob/master/TODO). See the API for full details of how to use the library.
For the rough notes/implementation plan see [TODO](https://github.com/meshtastic/python/blob/master/TODO.md). See the API for full details of how to use the library.
## A note to developers of this lib

View file

@ -1,10 +0,0 @@
---
id: building
title: Building
sidebar_label: Building
---
Releases are automatically generated for every commit as per out [CI](https://github.com/meshtastic/web/blob/master/.github/workflows/main.yml). This performs two actions:
1. Generates a perpetually updated [GitHub release](https://github.com/meshtastic/web/releases/tag/latest) with an accompanying `build.tar` that a automatically get's pulled by the firmware CI at build time.
2. A hosted version is deployed to [client.meshtastic.org](https://client.meshtastic.org).

View file

@ -1,100 +1,66 @@
---
id: web-interface
title: Development Overview of the Web Interface
sidebar_label: Web Interface
title: Web Client Development
sidebar_label: Web Client
sidebar_position: 4
---
## Considerations
## Overview
We have a total of 458,752 bytes (448KB) available on the SPIFFS (Serial Peripheral Interface Flash File System) -- the on-board storage of the ESP32. Of that space, let's not use more than half of that (224KB) in order to leave space for other uses.
The Meshtastic web interface can be hosted or served from a node.
Right now, the Meshtastic Device Preferences as well as SSL keys use that space. We can imagine other future uses as well, such as logging chat messages and possibly saving received signal strength with GPS coordinates to create coverage heat maps.
The official hosted version can be found at [https://client.meshtastic.org](https://client.meshtastic.org).
## Static Files
The version served from a node can be accessed by first [connecting your node to your network](/docs/settings/config/network) and then navigating to http://meshtastic.local (or your_node_ip.local).
Static files can be placed in the /data folder. All files should be compressed in the .gz format with a .gz extension regardless of the file type.
As an example, this would mean we will have files such as:
## Development & Building
- style.css.gz
- meshtastic.js.gz
- meshtasticlogo.png.gz
### Development
Unless otherwise stated, files in the `/data` folder of the source code will be stored in `/static` on the device.
Clone the [Meshtastic Web Repo](https://github.com/meshtastic/web) repository
```shell
git clone https://github.com/meshtastic/web.git
cd web
```
## Application Interface
Install the dependencies.
We make extensive use of [Meshtastic.js](https://github.com/meshtastic/meshtastic.js).
```bash
pnpm i
```
### Building
## Embedded Server
Build the project:
### Root
```bash
pnpm build
```
When requesting to the root of the web server, the either /static/index.html or /static/index.html.gz will be fetched from the file system and served to the client. We require that the file is in the gzip format. Serving an uncompressed file is not supported. If both index.html and index.html.gz are on the filesystem, index.html will be served and index.html.gz will be ignored.
Start the development server:
### /static
```bash
pnpm dev
```
All files stored in /data/static in the Meshtastic source code will be available in /static on the Meshtastic device.
### Packaging
If a file is uploaded in a .gz format, the .gz extension will be stripped prior to being served to the client. Keep your filenames as short as possible. Short filenames work better than long file names.
Build the project:
An experimental file system browser with upload and delete capability is available by going to either:
```bash
pnpm build
```
- http://meshtastic.local/static
- https://meshtastic.local/static
GZip the output:
There are known issues with uploading files with large file sizes.
```bash
pnpm package
```
The current preferred method to upload data is through PlatformIO and the file system browser is provided without guarantees.
### /restart
## Releases
A post to this location will cause the device to restart.
Releases are automatically generated for every commit as per out [CI](https://github.com/meshtastic/web/blob/master/.github/workflows/main.yml). This performs two actions:
### /favicon.ico
The Meshtastic logo in .ico format.
### /hotspot-detect.html
Used by the Apple Captive Portal Assistant.
### /upload
Endpoint to upload files. Used by the file manager.
### /json/report
Return a report of airtime statistics and current status.
Formula to calculate when the current time period will roll over:
`data.airtime.seconds_per_period - (data.airtime.seconds_since_boot % data.airtime.seconds_per_period)`
### /json/scanNetworks
Returns a json data structure of WiFi networks in the area. It's recommended to call this at least 2 or 3 times and combine the results.
We purposely exclude open (insecure) networks from the list.
### /json/spiffs/browse/static
Returns a json data structure with the contents of /static.
If a filename includes a '.gz' extension, will also return a modified version of the filename with the extension stripped. This is to support the functionality in /static (see above).
### /json/spiffs/delete/static
Delete file specified by the parameter "delete". Use the method "DELETE".
eg: /json/spiffs/delete/static?delete=static/something.txt
### Performance
As a general guide, the ESP32 will return HTTP requests significantly faster than HTTPS requests. For responses of 1kb or less, expect the following for real world performance:
HTTP - 3.0 requests / sec
HTTPS - 0.4 requests / sec
The bottleneck of HTTPS is with the SSL handshake. We will get better performance serving one large file rather than multiple small files.
1. Generates a perpetually updated [GitHub release](https://github.com/meshtastic/web/releases/tag/latest) with an accompanying `build.tar` that a automatically get's pulled by the firmware CI at build time.
2. A hosted version is deployed to [client.meshtastic.org](https://client.meshtastic.org).

View file

@ -1,67 +0,0 @@
---
id: esp32-partitions
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
This problem seems to occur when your board has the partitioning structure set incorrectly. This typically occurs when the board has had a firmware other than Meshtastic on it previously. In this situation, the file upload page on the device typically shows a free space of around 48,000 bytes, rather than the ~300,000 bytes that it should have free.
![Meshtastic.local's upload page showing insufficient storage space](/img/insufficient-space.png)
There are a number of methods that essentially involve erasing the flash and then re-uploading the Meshtastic firmware.
## Install Script
The most reliable way to fix this problem is to use the install script that is included in the meshtastic firmware zip. If that doesnt work, these other methods may work:
## Alternative methods
### Using the Arduino IDE:
https://meshtastic.discourse.group/t/solved-help-installing-with-other-than-esphome-flasher/2214/9
### Using Pio in Windows
```powershell
pio run --target erase --environment tbeam
```
Then re-install the firmware ie using ESPHome Flasher.
Requires: [Python](https://www.python.org), [Pio](https://pypi.org/project/pio), command to be run in the root directory of the firmware project once youve cloned it (this last requirement is an assumption based on pio not knowing what a tbeam is, may also require Visual Studio Code and PlatformIO as these were installed during use).
### Esptool.py
@1984 posted another method using the python based esptool.py to erase and re-flash the firmware:
```shell
esptool.py --baud 921600 erase_flash
esptool.py --baud 921600 write_flash 0x1000 system-info.bin
esptool.py --baud 921600 write_flash 0x00390000 spiffs-*.bin
esptool.py --baud 921600 write_flash 0x10000 firmware-tbeam-EU865-1.1.42.bin
```
Requires: [Python](https://www.python.org) and [esptool.py](https://github.com/espressif/esptool)
### Visual Studio & PlatformIO
There is also the method of using the Visual Studio IDE. This requires having Visual Studio and PlatformIO installed, along with having cloned the firmware code as per the [build instructions](/docs/development/firmware/build). After loading the project in Visual Studio, select the PlatformIO alien icon, then find the appropriate device, and then click the Erase Flash command.
![Erasing the flash using PlatformIO in Visual Studio Code](/img/platformio-erase.png)
https://meshtastic.discourse.group/t/configuring-channel-via-python-api/1948/17
Requires: [Visual Studio Code](https://code.visualstudio.com), [PlatformIO](https://platformio.org), cloned copy of the Meshtastic Firmware project
## How do I know it's worked?
Once it has been successfully erased and re-flashed, visiting https://192.168.42.1/static should leave you with free space on the order of 300,000 bytes, rather than the ~48,000 bytes you currently have. You can then upload the files from the meshtastic web release.
Occasionally, this may glitch may appear when uploading the larger app.js.gz file, but a further erase and flash typically solves this.

View file

@ -21,7 +21,7 @@ values={[
<TabItem value="android">
:::info
As of this writing, the current Android release of the nRF DFU app (v2.3.0) is not compatible with Meshtastic firmware updates.
As of this writing, the current Android release of the nRF DFU app (v2.3.0) is not compatible with Meshtastic firmware updates. Please use the instructions below for updating via OTA with the nRF Connect App.
:::
OTA firmware updates are available for Android using an older release of the more advanced nRF Connect App __version 4.24.3__ which is available for download from the [Nordic Semiconductor GitHub page](https://github.com/NordicSemiconductor/Android-nRF-Connect/releases/tag/v4.24.3).

View file

@ -18,25 +18,33 @@ This guide assumes that you have already purchased the devices you will be using
to see your options.
:::
Before you begin, it's important to determine which kind of hardware you're using. Meshtastic works with devices that have either of these two types of Micro-Controller Units (MCU):
Before you begin, it's important to determine which kind of hardware you're using. Meshtastic works with devices that have these types of Micro-Controller Units (MCU):
### ESP32
The ESP32 chip is older and consumes more power than the nRF52 chip, but is equipped with both WiFi and Bluetooth. Supported ESP32 devices:
The ESP32 chip is older and consumes more power than the nRF52 chip, but is equipped with both WiFi and Bluetooth. Supported ESP32 devices include:
- LILYGO® TTGO T-Beam
- LILYGO® TTGO Lora
- Nano G1
- Station G1
- Heltec V3 and Wireless Stick Lite V3
- RAK11200 Core module for RAK WisBlock modular boards
### nRF52
The nRF52 chip is much more power efficient than the ESP32 chip and easier to update, but is only equipped with Bluetooth. Supported nRF52 devices:
The nRF52 chip is much more power efficient than the ESP32 chip and easier to update, but is only equipped with Bluetooth. Supported nRF52 devices include:
- RAK WisBlock
- RAK4631 Core module for RAK WisBlock modular boards
- LILYGO® TTGO T-Echo
### RP2040
The RP2040 is a dual-core ARM chip developed by Raspberry Pi. Supported RP2040 devices include:
- Raspberry Pi Pico + Waveshare LoRa Module (Note: **Bluetooth and Wi-Fi on the Pico W is not yet supported by Meshtastic**)
- RAK11310 Core module for RAK WisBlock modular boards
:::info
If your device is not listed above, please review our [supported devices](/docs/supported-hardware) to determine which MCU your device has or contact us in [Discord](https://discord.gg/ktMAKGBnBs) with any questions.

View file

@ -9,8 +9,8 @@ Testing of antennas can be both simple and complex. At its simplest, testing inv
If you have sufficient range with your existing aerial, skip this section. If you don't, consider either getting more nodes and / or replace the stock aerial with one tuned (to your region transmitter's frequency):
- A quarter wave _tuned_ stubby aerial (<10cm for fit-in-pocket) should have a real-world range of a couple of km without significant obstacles (buildings / hills).
- Aerial criteria: 50 Ohm, appropriate connector (usually SMA male or U.FL), low VSWR (<2) (at tuning frequency - see its datasheet), gain > 0 dBi .
- A quarter wave _tuned_ stubby aerial (\<10cm for fit-in-pocket) should have a real-world range of a couple of km without significant obstacles (buildings / hills).
- Aerial criteria: 50 Ohm, appropriate connector (usually SMA male or U.FL), low VSWR (\<2) (at tuning frequency - see its datasheet), gain > 0 dBi .
- Caution, avoid suppliers who:
- don't state the aerial's tuned frequency and its specific purpose (LoRa network)
- claim huge gain figures on omni-directional aerials

View file

@ -1,7 +1,7 @@
---
id: heltec
title: HELTEC® Lora 32
sidebar_label: HELTEC® Lora 32
title: HELTEC® LoRa 32
sidebar_label: HELTEC® LoRa 32
sidebar_position: 7
---
@ -12,91 +12,35 @@ import TabItem from "@theme/TabItem";
groupId="heltec"
defaultValue="v3"
values={[
{label: 'Lora32 V1', value: 'v1'},
{label: 'Lora32 V2.0', value: 'v2.0'},
{label: 'Lora32 V2.1', value: 'v2.1'},
{label: 'Lora32 V3', value:'v3'},
{label: 'Wireless Stick Lite V3', value:'Wireless Stick Lite V3'}
{label: 'LoRa32 V2.1', value: 'v2.1'},
{label: 'LoRa32 V3', value:'v3'},
{label: 'Wireless Stick Lite V3', value:'Wireless Stick Lite V3'},
{label: 'Wireless Tracker', value: 'tracker'},
{label: 'Wireless Paper', value: 'paper'}
]}>
<TabItem value="v1">
:::warning
Not recommended! Very old board with design issues. Support is being phased out. Use V3 in new projects.
:::
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX1276
- **Frequency options**
- 433 MHz
- 915 MHz
- 868 MHz
- **Connectors**
- Micro USB
- Antenna: U.FL antenna connector
## Features
- Built in 0.96 inch OLED display
- User and Reset switches
- No GPS
## Resources
- Firmware file: `firmware-heltec-v1-X.X.X.xxxxxxx.bin`
</TabItem>
<TabItem value="v2.0">
:::warning
Not recommended because of design issues! Support is being phased out. Use V3 in new projects.
:::
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX127x
- **Frequency options**
- 915 MHz
- 868 MHz
- **Connectors**
- Micro USB
- Antenna: U.FL antenna connector
## Features
- Built in 0.96 inch OLED display
- User and Reset switches
- No GPS
## Resources
- Firmware file: `firmware-heltec-v2.0-X.X.X.xxxxxxx.bin`
</TabItem>
<TabItem value="v2.1">
:::warning
Not recommended because of design issues! Support is being phased out. Use V3 in new projects.
:::
- **MCU**
- **MCU:**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- **LoRa Transceiver:**
- Semtech SX127x
- **Frequency options**
- **Frequency Options:**
- 433 MHz
- 868 MHz
- 915 MHz
- **Connectors**
- **Connectors:**
- Micro USB
- Antenna: U.FL antenna connector
- Antenna:
- U.FL/IPEX antenna connector for LoRa
## Features
- Built in 0.96 inch OLED display
- User and Reset switches
- User and Reset Buttons
- No GPS
## Resources
@ -106,64 +50,168 @@ Not recommended because of design issues! Support is being phased out. Use V3 in
</TabItem>
<TabItem value="v3">
- **MCU**
- ESP32-S3 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX126x
- **Frequency options**
- 868 MHz
- 915 MHz
- **Connectors**
- USB-C
- Antenna: U.FL antenna connector
:::info
This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable.
:::
- **MCU:**
- ESP32-S3FN8 (WiFi & Bluetooth)
- **LoRa Transceiver:**
- Semtech SX1262
- **Frequency Options:**
- 433 MHz
- 470 - 510 MHz
- 863 - 870 MHz
- 902 - 928 MHz
- **Connectors:**
- USB-C
- Antenna:
- Dedicated 2.4 GHz metal spring antenna for WiFi/Bluetooth
- U.FL/IPEX antenna connector for LoRa
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- Built in 0.96 inch OLED display
- User and Reset switches
- User and Reset Buttons
- No GPS
### Pin Map
![HTIT-WSL_V3_PIN_MAP](/img/hardware/HTIT-WB32LA(F)_V3.png)
Image Source: [Heltec](https://resource.heltec.cn/download/WiFi_LoRa32_V3/HTIT-WB32LA(F)_V3.png)
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-heltec-v3-X.X.X.xxxxxxx.bin`
- Purchase link: [Heltec](https://heltec.org/project/wifi-lora-32-v3/)
- Purchase link: [AliExpress](https://www.aliexpress.us/item/3256805256690400.html)
</TabItem>
<TabItem value="Wireless Stick Lite V3">
- **MCU**
- ESP32-S3 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX126x
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- **Connectors**
- USB-C
- Antenna: IPEX/u.FL antenna connector
:::info
This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable.
:::
- **MCU:**
- ESP32-S3FN8 (WiFi & Bluetooth)
- **LoRa Transceiver:**
- Semtech SX1262
- **Frequency Options:**
- 433 MHz
- 470 - 510 MHz
- 863 - 870 MHz
- 902 - 928 MHz
- **Connectors:**
- USB-C
- Antenna:
- Dedicated 2.4 GHz stamped metal antenna for WiFi/Bluetooth
- U.FL/IPEX antenna connector for LoRa
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- No display.
- User and Reset switches.
- Additional GPIO availability.
- No GPS.
- User and Reset Buttons
- Additional GPIO availability
- No GPS
### Meshtastic I2C Definitions
- SCL: GPIO47
- SDA: GPIO48
<!-- trunk-ignore(markdownlint/MD024) -->
### Pin Map
![HTIT-WSL_V3_PIN_MAP](/img/hardware/HTIT-WSL_V3_PIN_MAP.png)
Image Source: [Heltec](https://resource.heltec.cn/download/Wireless_Stick_Lite_V3/HTIT-WSL_V3.png)
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-heltec-wsl-v3-X.X.X.xxxxxxx.bin`
- Purchase link: [Heltec](https://heltec.org/project/wireless-stick-lite-v2/)
- Purchase link: [AliExpress](https://www.aliexpress.us/item/3256805256996507.html)
</TabItem>
<TabItem value="tracker">
:::info
This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable.
:::
- **MCU:**
- ESP32-S3FN8 (WiFi & Bluetooth)
- **LoRa Transceiver:**
- Semtech SX1262
- **Frequency Options:**
- 470 - 510 MHz
- 863 - 870 MHz
- 902 - 928 MHz
- **Connectors:**
- USB-C
- Antenna:
- Dedicated 2.4 GHz metal spring antenna for WiFi/Bluetooth
- U.FL/IPEX antenna connector for LoRa and GNSS
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- Onboard 0.96-inch LCD display
- User and Reset Buttons
<!-- trunk-ignore(markdownlint/MD024) -->
## Pin Map
![HT-Tracker_V1 Pin Map](/img/hardware/HT-Tracker_V1_Pin_Map.png)
Image Source: [Heltec](https://heltec.org/project/wireless-tracker/)
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-heltec-wireless-tracker-X.X.X.xxxxxxx.bin`
- Purchase link: [Heltec](https://heltec.org/project/wireless-tracker/)
- Purchase link: [AliExpress](https://www.aliexpress.us/item/3256805495189423.html)
</TabItem>
<TabItem value="paper">
:::info
This device may have issues charging a connected battery if utilizing a USB-C to USB-C cable. It's recommended to use a USB-A to USB-C cable.
:::
- **MCU:**
- ESP32-S3FN8 (WiFi & Bluetooth)
- **LoRa Transceiver:**
- Semtech SX1262
- **Frequency Options:**
- 470 - 510 MHz
- 863 - 870 MHz
- 902 - 928 MHz
- **Connectors:**
- USB-C
- Antenna:
- U.FL/IPEX antenna connector for LoRa
- Integrated 2.4 GHz PCB antenna
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- Onboard 2.13-inch black and white E-Ink display screen
- User and Reset switches
- No GPS
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-heltec-wireless-paper-X.X.X.xxxxxxx.bin`
- Purchase link: [Heltec](https://heltec.org/project/wireless-paper/)
- Purchase link: [AliExpress](https://www.aliexpress.us/item/3256805461611876.html)
</TabItem>
</Tabs>

View file

@ -20,7 +20,7 @@ The Nano G1 is the first dedicated hardware device to be designed from scratch p
- **Navigation Module**
- ATGM336H-5N-71 (Supports GPS, BDS and GLONASS)
- **Antenna**
- Built in 915Mhz Lora PCB Antenna (VSWR <=1.5 @ 915 MHz)
- Built in 915Mhz Lora PCB Antenna (VSWR \<=1.5 @ 915 MHz)
- **Connectors**
- USB-C

View file

@ -15,27 +15,26 @@ groupId="rakcore"
defaultValue="RAK4631"
values={[
{label: 'RAK4631', value: 'RAK4631'},
{label: 'RAK11200', value: 'RAK11200'}
{label: 'RAK11200', value: 'RAK11200'},
{label: 'RAK11310', value: 'RAK11310'}
]}>
<TabItem value="RAK4631">
### RAK4631
## RAK4631 - nRF52
:::info
Please be aware of the difference between the RAK4631 (Arduino bootloader) and the RAK4631-R (RUI3 bootloader). Meshtastic requires the Arduino bootloader. If you have a RAK4631-R, please see the [instructions for converting the bootloader](/docs/getting-started/flashing-firmware/nrf52/convert-rak4631r).
:::
- [RAK4631](https://store.rakwireless.com/products/rak4631-lpwan-node?variant=37505443856582)
- RAK4631
- **MCU**
- nRF52840
- Bluetooth BLE 5.0
- Very low power consumption
- **Meshtastic Firmware**
- [`firmware-rak4631-2.X.X.xxxxxxx.uf2`](/downloads)
- **LoRa transceiver**
- **LoRa Transceiver:**
- SX1262
- **Frequency Options**
- **Frequency Options:**
- 433 MHz
- 470 MHz
- 799 MHz
@ -44,12 +43,16 @@ Please be aware of the difference between the RAK4631 (Arduino bootloader) and t
- 915 MHz
- 920 MHz
- 923 MHz
- **Connectors**
- U.FL antenna
- **Connectors:**
- U.FL/IPEX antenna connector for LoRa
Further information on the RAK4631 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Overview/#product-description).
### RAK4631 Resources
US Distributor - Purchase link: [Rokland - US915 Mhz](https://store.rokland.com/products/rak-wireless-rak4631-nordic-nrf52840-ble-core-module-for-lorawan-with-lora-sx1262)
- Firmware file: `firmware-rak4631-X.X.X.xxxxxxx.uf2`
- Further information on the RAK4631 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Overview/#product-description).
- US Distributor - Purchase link: [Rokland - US915 Mhz](https://store.rokland.com/products/rak-wireless-rak4631-nordic-nrf52840-ble-core-module-for-lorawan-with-lora-sx1262)
- Purchase Link: [RAK Wireless Store](https://store.rakwireless.com/products/rak4631-lpwan-node?variant=37505443856582)
- Purchase Link: [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256801470104151.html)
<img
alt="RAK4631 Core Module"
@ -60,41 +63,27 @@ US Distributor - Purchase link: [Rokland - US915 Mhz](https://store.rokland.com/
</TabItem>
<TabItem value="RAK11200">
### RAK11200 / RAK13300
## RAK11200 - ESP32
:::caution Note
Only supported on the RAK5005-O / RAK19007 and the RAK19001 base board.
:::info
Only supported on the RAK5005-O / RAK19007 and the RAK19001 base boards.
:::
The RAK11200 does not contain a LoRa transceiver, and thus needs to be added separately in the form of the [RAK13300 LPWAN module](https://store.rakwireless.com/products/rak13300-wisblock-lpwan). This occupies the IO Port of the base board.
- [RAK11200](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200)
- **MCU**
- RAK11200
- **MCU:**
- ESP32-WROVER
- Bluetooth 4.2
- WiFi 802.11 b/g/n
- High power consumption (relative to nRF52)
- **Meshtastic Firmware**
- [`firmware-rak11200-2.X.X.xxxxxx.bin`](/downloads)
Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description).
### RAK11200 Resources
- [RAK13300](https://store.rakwireless.com/products/rak13300-wisblock-lpwan)
- **LoRa transceiver**
- SX1262
- **Frequency Options**
- 433 MHz
- 470 MHz
- 864 MHz
- 865 MHz
- 868 MHz
- 915 MHz
- 920 MHz
- 923 MHz
- **Connectors**
- U.FL antenna
Further information on the RAK13300 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13300/Overview/#product-description).
- Firmware file: `firmware-rak11200-X.X.X.xxxxxxx.bin`
- Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description).
- Purchase Link: [RAK Wireless Store](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200)
- Purchase Link: [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256802312474717.html)
<img
alt="RAK4631 5005 11200"
@ -102,5 +91,42 @@ Further information on the RAK13300 can be found on the [RAK Documentation Cente
style={{ zoom: "50%" }}
/>
</TabItem>
<TabItem value="RAK11310">
## RAK11310 - RP2040
:::info
**Please note, this core module does NOT include BLE/WiFi.**
:::
- **MCU:**
- Raspberry Pi RP2040
- Dual M0+ Core
- 133MHz CPU Clock
- **LoRa Transceiver:**
- SX1262
- **Frequency Options:**
- 433 MHz
- 470 MHz
- 864 MHz
- 865 MHz
- 868 MHz
- 915 MHz
- 920 MHz
- 923 MHz
- **Connectors:**
- U.FL/IPEX antenna connector for LoRa
### RAK11310 Resources
- Firmware file: `firmware-rak11310-X.X.X.xxxxxxx.uf2`
- Further information on the RAK11310 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11310/Overview/#product-description).
- Purchase Link: [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module)
- Purchase Link: [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html)
</TabItem>
</Tabs>

View file

@ -18,7 +18,7 @@ If you wish to purchase parts separately, you will need a [WisBlock Base Board](
You can optionally purchase peripherals such as a GPS module, Screen, Sensor, or other various modules.
Please see the RAK documentation for the correct way to connect your hardware to ensure that you do not damage the device. There is currently no pin required to pair RAK devices via BLE.
Please see the RAK documentation for the correct way to connect your hardware to the baseboard to ensure that you do not damage the device.
## Resources

View file

@ -0,0 +1,50 @@
---
id: raspberry-pi
title: Raspberry Pi Pico
sidebar_label: Raspberry Pi Pico
sidebar_position: 9
---
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
The Raspberry Pi Pico series is a range of tiny, fast, and versatile boards built using RP2040, the flagship microcontroller chip designed by Raspberry Pi in the UK.
:::info
Only the Pico W has WiFi/BLE capabilities. However, Meshtastic does not currently support the Pico W's WiFi/BLE
:::
### Pico
- **MCU:**
- Raspberry Pi RP2040
- Dual M0+ Core
- 133MHz CPU Clock
- **Connectors (On Pico):**
- Micro-USB on Pico
:::note
Please be aware that the Raspberry Pi Pico must be used in combination with a [Waveshare LoRa Module](https://www.waveshare.com/product/raspberry-pi/boards-kits/raspberry-pi-pico-cat/pico-lora-sx1262-868m.htm), which provides the necessary SX1262 LoRa radio. Please ensure to select the correct frequency for your region.
:::
- **LoRa Transceiver (On LoRa Module):**
- SX1262
- **Frequency Options:**
- 410 - 525 MHz
- 863 - 870 MHz
- 902 - 930 MHz
- **Connectors (On LoRa Module):**
- U.FL/IPEX antenna connector for LoRa
- 1.25mm 2-Pin JST for battery
### Pico Resources
- Firmware file:`firmware-pico-X.X.X.xxxxxxx.uf2`
- [Offical Website for the Raspberry Pi Pico](https://www.raspberrypi.com/products/raspberry-pi-pico/), including official reseller links.

View file

@ -8,7 +8,7 @@ sidebar_position: 2
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
All T-beam models have an 18650 size battery holder on the rear of the device. This is designed to the original specification of the 18650 and only fits unprotected flat top 18650 cells. Button top and protected cells are typically longer than 65mm, often approaching 70mm.
All T-beam models (with the exception of the S3-Core) have an 18650 size battery holder on the rear of the device. This is designed to the original specification of the 18650 and only fits unprotected flat top 18650 cells. Button top and protected cells are typically longer than 65mm, often approaching 70mm.
Further information on the LILYGO® T-Beam devices can be found on LILYGO®'s [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series).
@ -19,7 +19,9 @@ values={[
{label: 'T-Beam v0.7', value:'0.7'},
{label: 'T-Beam v1.1', value: '1.1'},
{label: 'T-Beam with M8N', value: 'm8n'},
{label: 'T-Beam with M8N & SX1262', value: 'sx1262'}
{label: 'T-Beam with M8N & SX1262', value: 'sx1262'},
{label: 'T-Beam S3-Core', value: 's3core'},
{label: 'T-Beam Supreme', value: 'supreme'}
]}>
<TabItem value="0.7">
@ -75,12 +77,14 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
- Micro USB
- Antenna: SMA antenna connector
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- Meshtastic preinstalled
- Power, Program and Reset switches
- **Comes with 0.96 inch OLED display** (soldering required to assemble)
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
@ -109,12 +113,14 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
- Micro USB
- Antenna: U.FL antenna connector
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- Meshtastic preinstalled
- Power, Program and Reset switches
- Screen sold separately
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
@ -141,12 +147,14 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
- Micro USB
- Antenna: U.FL antenna connector
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- Meshtastic preinstalled
- Power, Program and Reset switches
- Screen sold separately
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
@ -156,4 +164,77 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
![T-Beam M8N & SX1262](/img/hardware/t-beam-sx1262.png)
</TabItem>
<TabItem value = "s3core">
- **MCU**
- ESP32-S3 (WiFi & Bluetooth 5LE)
- **LoRa Transceiver**
- **Semtech SX1262** (improved performance)
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- **Navigation Module**
- **NEO-M10S - GNSS receiver (supports GPS, GLONASS, Galileo, BeiDou)** (better GPS sensitivity)
- **Quectel L76K - (supports GPS, Beidou, GLONASS)** (lower price)
- **Connectors**
- USB-C
- Antenna: U.FL antenna connector
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- SoftRF preinstalled (flashing to Meshtastic required)
- Boot and Reset switches
- Can be used standalone without 'Supreme' daughterboard in a headless configuration
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-tbeam-s3-core-X.X.X.xxxxxxx.bin`
- Purchase Link: [AliExpress](https://www.aliexpress.com/item/1005005418286231.html)
![T-Beam S3-Core](/img/hardware/T-BEAM-S3Core.jpg)
</TabItem>
<TabItem value = "supreme">
- **MCU**
- ESP32-S3 (WiFi & Bluetooth 5LE)
- **LoRa Transceiver**
- **Semtech SX1262** (improved performance)
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- **Navigation Module**
- **NEO-M10S - GNSS receiver (supports GPS, GLONASS, Galileo, BeiDou)** (better GPS sensitivity)
- **Quectel L76K - (supports GPS, Beidou, GLONASS)** (lower price)
- **Connectors**
- USB-C
- Antenna: U.FL antenna connector
<!-- trunk-ignore(markdownlint/MD024) -->
## Features
- Includes T-Beam S3-Core Module
- SoftRF preinstalled (flashing to Meshtastic required)
- Power, Boot and Reset switches
- 1.3" OLED included
- BME280 Air pressure sensor
- QMI8658 IMU
- QMC6310 Magnetometer
- PCF8563 RTC
- Micro-SD reader (not implemented in Meshtastic)
<!-- trunk-ignore(markdownlint/MD024) -->
## Resources
- Firmware file: `firmware-tbeam-s3-core-X.X.X.xxxxxxx.bin`
- Purchase Link: [AliExpress](https://www.aliexpress.com/item/1005005418286231.html)
![T-Beam Supreme](/img/hardware/T-BEAM-S3-Supreme.jpg)
</TabItem>
</Tabs>

View file

@ -22,3 +22,5 @@ sidebar_label: Trademark Grants
- Details: Paul primarily designs enclosures and assembles complete Meshtastic Radios for sale using modules from TTGO, Heltec and RAK. He runs an online shop for Meshtastic powered devices which carry the "Meshtastic" and M logos. The use of the Meshtastic Logo and Trademarks does not imply Paul is sponsored or endorsed by Meshtastic. Paul also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason.
- Grant: [Keith Monaghan](http://voltaicenclosures.com/)
- Details: Keith is a contributer of computer aided design (CAD)/3D designs primarily for device enclosures and accessories, and runs an online shop for Meshtastic powered devices which carry the "Meshtastic" and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Keith is sponsored or endorsed by Meshtastic. Keith also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason.
- Grant: [Neil Hao](https://shop.uniteng.com/)
- Details: Neil is a contributer of hardware designs, and runs an online shop for Meshtastic powered devices which carry the "Meshtastic" and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Neil is sponsored or endorsed by Meshtastic. Neil also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason.

View file

@ -17,22 +17,29 @@ You can find the settings available for MQTT [here](/docs/settings/moduleconfig/
Using or emitting packets directly in/from smart home control software such as Home Assistant or other consumers that can work with JSON messages.
When MQTT is enabled, the Meshtastic device simply uplinks and/or downlinks every raw protobuf packet that it sees to the MQTT broker. In addition, some packet types are serialized or deserialized from/to JSON messages for easier use in consumers. All packets are sent to the broker, whether they originate from another device on the mesh, or the gateway node itself.
When MQTT is enabled, the Meshtastic device simply uplinks and/or downlinks every raw protobuf MeshPacket that it sees to the MQTT broker, encapsulated in a [ServiceEnvelope protobuf](https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.ServiceEnvelope). In addition, some packet types are serialized or deserialized from/to JSON messages for easier use in consumers. All packets are sent to the broker, whether they originate from another device on the mesh, or the gateway node itself.
Packets may be encrypted. If you use the default meshtastic MQTT server, packets are always encrypted. If you use a custom MQTT broker (ie set `mqtt.address`), the `mqtt.encryption_enabled` setting applies, which by default is false.
IMPORTANT: When MQTT is turned on, you are potentially broadcasting your entire mesh traffic onto the public internet. This includes messages and position information.
### MQTT Topics
### MQTT [Topics](https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices)
The device will uplink and downlink raw ([protobuf](https://developers.google.com/protocol-buffers)) packets to the `msh/` prefix:
If no specific [root topic](/docs/settings/moduleconfig/mqtt#root-topic) is configured, the default root topic will be `msh/`.
Each device that is connected to MQTT will publish its MQTT state ("`online`"/"`offline`") to:
`msh/2/c/ShortFast/!12345678` where
`msh/2/stat/USERID`, where `USERID` is the user ID of the gateway device (the one connected to MQTT).
- `!12345678` is the address of the gateway device.
- `ShortFast` is the channel name.
For each channel where uplink and/or downlink is enabled two other topics might be used.
The payload is a raw protobuf. Looking at the MQTT traffic with a program like `mosquitto_sub` will tell you it's working, but you won't get much useful information out of it. For example:
#### Protobufs topic
A gateway node will uplink and/or downlink raw ([protobuf](https://developers.google.com/protocol-buffers)) MeshPackets to the topic:
`msh/2/c/CHANNELNAME/USERID`, where `CHANNELNAME` is the name of the channel.
For example: `msh/2/c/LongFast/!abcd1234`
The payload is a raw protobuf, whose definitions for Meshtastic can be found [here](https://github.com/meshtastic/protobufs/blob/master/meshtastic). Reference guides for working with protobufs in several popular programming languages can be found [here](https://protobuf.dev/reference/). Looking at the MQTT traffic with a program like `mosquitto_sub` will tell you it's working, but you won't get much useful information out of it. For example:
```text
苓????"!
@ -40,7 +47,12 @@ The payload is a raw protobuf. Looking at the MQTT traffic with a program like `
ShortFast !937bed1c
```
Packets from the following [port numbers](/docs/development/firmware/portnum) are serialized to JSON and then forwarded to the `msh/2/json/CHANNELID/DEVICEID` topic: `TEXT_MESSAGE_APP`, `ENVIRONMENTAL_MEASUREMENT_APP`, `NODEINFO_APP` and `POSITION_APP`.
If [encryption_enabled](/docs/settings/moduleconfig/mqtt#encryption-enabled) is set to true, the payload of the MeshPacket will remain encrypted with the key for the specified channel.
#### JSON topic
If [JSON is enabled](/docs/settings/moduleconfig/mqtt/#json-enabled), packets from the following [port numbers](/docs/development/firmware/portnum) are serialized to JSON: `TEXT_MESSAGE_APP`, `ENVIRONMENTAL_MEASUREMENT_APP`, `NODEINFO_APP` and `POSITION_APP`. These are then forwarded to the topic:
`msh/2/json/CHANNELNAME/USERID`.
An example of a received `NODEINFO_APP` message:
@ -62,6 +74,22 @@ An example of a received `NODEINFO_APP` message:
}
```
The meaning of these fields is as follows:
- "`id`" is the unique ID for this message.
- "`channel`" is the channel index this message was received on.
- "`from`" is the unique node number of the node on the mesh that sent this message, represented as a signed decimal number.
- "`id`" inside the payload of a `NODEINFO_APP` message is the user ID of the node that sent it, which is currently just the hexadecimal representation of the node number.
- "`hardware`" is the [hardware model](https://github.com/meshtastic/protobufs/blob/master/meshtastic/mesh.proto#L215) of the node sending the `NODEINFO_APP` message.
- "`longname`" is the long name of the device that sent the `NODEINFO_APP` message.
- "`shortname`" is the short name of the device that sent the `NODEINFO_APP` message.
- "`sender`" is the user ID of the gateway device, which is in this case the same node that sent the `NODEINFO_APP` message (the hexadecimal value `7efeee00` represented by an integer in decimal is `2130636288`).
- "`timestamp`" is the Unix Epoch when the message was received, represented as an integer in decimal.
- "`to`" is the node number of the destination of the message. In this case, "-1" means it was a broadcast message (this is the decimal integer representation of `0xFFFFFFFF`).
- "`type`" is the type of the message, in this case it was a `NODEINFO_APP` message.
The "from" field can thus be used as a stable identifier for a specific node. Note that (like the "`id`" and "`to`" fields) in JSON this is a signed value, whereas in protobufs it is unsigned.
If the message received contains valid JSON in the payload, the JSON is deserialized and added as a JSON object rather than a string containing the serialized JSON.
**Sent messages** will be checked if the MQTT payload contains a valid JSON-encoded envelope:
@ -90,34 +118,6 @@ Check out [MQTT Settings](/docs/settings/moduleconfig/mqtt) for full information
`uplink_enabled` will tell the device to publish mesh packets to MQTT.
`downlink_enabled` will tell the device to subscribe to MQTT, and forward any packets from there onto the mesh.
### Topics
The "mesh/crypt/CHANNELID/NODEID/PORTID" [topic](https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices) will be used for messages sent from/to a mesh.
Gateway nodes will forward any MeshPacket from a local mesh channel with uplink_enabled. The packet (encapsulated in a ServiceEnvelope) will remain encrypted with the key for the specified channel.
For any channels in the local node with downlink_enabled, the gateway node will forward packets from MQTT to the local mesh. It will do this by subscribing to mesh/crypt/CHANNELID/# and forwarding relevant packets.
If the channelid 'well known'/public it could be decrypted by a web service (if the web service was provided with the associated channel key), in which case it will be decrypted by a web service and appear at "mesh/clear/CHANNELID/NODEID/PORTID". Note: This is not in the initial deliverable.
#### Service Envelope
The payload published on mesh/... will always be wrapped in a [ServiceEnvelope protobuf](https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.ServiceEnvelope).
ServiceEnvelope will include the message, and full information about arrival time, who forwarded it, source channel, source mesh id, etc...
#### NODEID
The unique ID for a node. A hex string that starts with an ! symbol.
#### USERID
A user ID string. This string is either a user ID if known or a nodeid to simply deliver the message to whoever the local user is of a particular device (i.e. person who might see the screen). FIXME, see what riot.im uses and perhaps use that convention? Or use the signal +phone number convention? Or the email address?
#### CHANNELID
FIXME, figure out how channelids work
### Gateway nodes
Any meshtastic node that has a direct connection to the internet (either via a helper app or installed WiFi/4G/satellite hardware) can function as a "Gateway node".

View file

@ -17,6 +17,27 @@ Shows a help message that describes the arguments.
```shell title="Usage"
meshtastic -h
```
### --export-config
Export the configuration of the device. (to be consumed by the '--configure' command).
To create to a file with the connected device's configuration, this command's output must be piped to a yaml file.
```shell title="Usage"
meshtastic --export-config > example_config.yaml
```
```title="Usage"shell
meshtastic --export-config
```
### --configure
Configure radio using a yaml file.
```shell title="Usage"
meshtastic --configure example_config.yaml
```
### --port PORT
@ -51,6 +72,38 @@ Read and display the radio config information.
meshtastic --port /dev/ttyUSB0 --info
```
### --set-canned-message
Set the canned message plugin messages separated by pipes `|` (up to 200 characters).
```shell title="Usage"
meshtastic --set-canned-message "I need an alpinist!|Call Me|Roger Roger|Keep Calm|On my way"
```
### --get-canned-message
Show the canned message plugin message.
```shell title="Usage"
meshtastic --get-canned-message
```
### --set-ringtone RINGTONE
Set the Notification Ringtone (up to 230 characters).
```shell title="Usage"
meshtastic --set-ringtone "LeisureSuit:d=16,o=6,b=56:f.5,f#.5,g.5,g#5,32a#5,f5,g#.5,a#.5,32f5,g#5,32a#5,g#5,8c#.,a#5,32c#,a5,a#.5,c#.,32a5,a#5,32c#,d#,8e,c#.,f.,f.,f.,f.,f,32e,d#,8d,a#.5,e,32f,e,32f,c#,d#.,c#"
```
### --get-ringtone
Show the stored ringtone.
```shell title="Usage"
meshtastic --get-ringtone
```
### --nodes
Prints a node list in a pretty, formatted table.
@ -67,19 +120,22 @@ Displays the QR code that corresponds to the current channel.
meshtastic --qr
```
### --get GET
### --get [config_section]
Gets a preferences field.
Configuration values are described in: [Configuration](https://meshtastic.org/docs/settings).
```shell title="Usage"
meshtastic --get lora
meshtastic --get lora.region
```
### --set [config_section].[option] [value]
### --set [config_section].[option]&nbsp; [value]
Sets a preferences field.
Configuration values are described in this section: [Configuration Sections](https://meshtastic.org/docs/settings/config)
Configuration values are described in: [Configuration](https://meshtastic.org/docs/settings).
```shell title="Usage"
meshtastic --set lora.region Unset
@ -95,7 +151,7 @@ meshtastic --seturl https://www.meshtastic.org/c/GAMiIE67C6zsNmlWQ-KE1tKt0fRKFci
### --ch-index CH_INDEX
Set the specified channel index
Set the specified channel index.
```shell title="Usage"
meshtastic --ch-index 1 --ch-disable
@ -141,17 +197,57 @@ Set a channel parameter.
meshtastic --ch-set id 1234 --ch-index 0
```
### --ch-vlongslow
Change modem preset to `VERY_LONG_SLOW`.
```shell title="Usage"
meshtastic --ch-vlongslow
```
### --ch-longslow
Change to the standard long-range (but slow) channel.
Change modem preset to `LONG_SLOW`.
```shell title="Usage"
meshtastic --ch-longslow
```
### --ch-longfast
Change modem preset to (the default) `LONG_FAST`.
```shell title="Usage"
meshtastic --ch-longfast
```
### --ch-medslow
Change modem preset to `MEDIUM_SLOW`.
```shell title="Usage"
meshtastic --ch-medslow
```
### --ch-medfast
Change modem preset to `MEDIUM_FAST`.
```shell title="Usage"
meshtastic --ch-medfast
```
### --ch-shortslow
Change modem preset to `SHORT_SLOW`.
```shell title="Usage"
meshtastic --ch-shortslow
```
### --ch-shortfast
Change to the standard fast (but short range) channel.
Change modem preset to `SHORT_FAST`.
```shell title="Usage"
meshtastic --ch-shortfast
@ -162,7 +258,15 @@ meshtastic --ch-shortfast
Set device owner name.
```shell title="Usage"
meshtastic --dest '!28979058' --set-owner "MeshyJohn"
meshtastic --set-owner "MeshyJohn"
```
### --set-owner-short SET_OWNER_SHORT
Set device owner short name (4 characters max).
```shell title="Usage"
meshtastic --set-owner-short "MJ"
```
### --set-ham SET_HAM
@ -175,7 +279,7 @@ meshtastic --set-ham KI1345
### --dest DEST
The destination node id for any sent commands
The destination node id for any sent commands. Used for [Remote Node Administration](/docs/configuration/remote-admin)
```shell title="Usage"
meshtastic --dest '!28979058' --set-owner "MeshyJohn"
@ -183,7 +287,7 @@ meshtastic --dest '!28979058' --set-owner "MeshyJohn"
### --sendtext SENDTEXT
Send a text message. Can specify a channel index ('--ch-index') or a destination ('--dest')
Send a text message. Can specify a channel index ('--ch-index') or a destination ('--dest').
```shell title="Usage"
meshtastic --sendtext "Hello Mesh!"
@ -197,12 +301,52 @@ Send a ping message (which requests a reply).
meshtastic --sendping
```
### --reboot
### --traceroute TRACEROUTE
Tell the destination node to reboot.
Traceroute from connected node to a destination. You need pass the destination ID as an argument. Only nodes that have the encryption key can be traced.
```shell title="Usage"
meshtastic --dest '!28979058' --reboot
meshtastic --traceroute 'ba4bf9d0'
```
### --ack
Used in combination with --sendtext to wait for an acknowledgment.
```shell title="Usage"
meshtastic --sendtext "Hello Mesh!" --ack
```
### --reboot
Tell the node to reboot.
```shell title="Usage"
meshtastic --reboot
```
### --shutdown
Tell the node to shutdown.
```shell title="Usage"
meshtastic --shutdown
```
### --factory-reset
Tell the node to install the default config.
```shell title="Usage"
meshtastic --factory-reset
```
### --reset-nodedb
Tell the node to clear its list of nodes.
```shell title="Usage"
meshtastic --reset-nodedb
```
### --reply
@ -309,46 +453,10 @@ Show program's version number and exit.
meshtastic --version
```
### --configure
Configure all of the radio configuration from a yaml file.
```shell title="Usage"
meshtastic --configure example_config.yaml
```
### --export-config
Export the configuration of the device. (to be consumed by the '--configure' command)
To create to a file with the connected device's configuration, this command's output must be piped to a yaml file
```shell title="Usage"
meshtastic --export-config > example_config.yaml
```
```title="Usage"shell
meshtastic --export-config
```
### --support
Print out info that would be helpful supporting any issues.
```shell title="Usage"
meshtastic --support
```
## Deprecated Arguments
### --setchan
Deprecated - use "--ch-set param value" instead.
### --set-router
Deprecated - use "--set is_router true" instead.
### --unset-router
Deprecated - use "--set is_router false" instead.
```

View file

@ -9,7 +9,7 @@ sidebar_position: 1
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
This library provides a command line interface (CLI) for Meshtastic nodes and provides an easy API for sending and receiving messages over mesh radios, in addition to changing user settings. Using the command line is currently the most powerful. Events are delivered using a publish-subscribe model, and you can subscribe to only the message types you are interested in.
This library provides a command line interface (CLI) for managing the user settings of Meshtastic nodes and provides an easy API for sending and receiving messages over mesh radios. Events are delivered using a publish-subscribe model, and you can subscribe to only the message types you are interested in.
The [Meshtastic-python repo](https://github.com/meshtastic/Meshtastic-python) and [API documentation](https://python.meshtastic.org) are excellent sources of information.

View file

@ -27,9 +27,9 @@ to keep the Bluetooth link alive for eight hours (any usage of the Bluetooth pro
```shell title="Expected Output"
# You should see a result similar to this:
mydir$ meshtastic --set bluetooth.wait_bluetooth_secs 28800
mydir$ meshtastic --set power.wait_bluetooth_secs 28800
Connected to radio...
Setting bluetooth.wait_bluetooth_secs to 28800
Setting power.wait_bluetooth_secs to 28800
Writing modified preferences to device...
```
@ -51,14 +51,14 @@ For a full list of preferences which can be set (and their documentation) can be
### Changing channel settings
The channel settings can also be changed, either by using a standard (shareable) meshtastic URL or you can set particular channel parameter (for advanced users).
The channel settings can also be changed, either by using a standard (shareable) meshtastic URL or you can set a particular channel parameter (for advanced users).
:::warning
Meshtastic encodes the radio channel and PSK in the channel's URL. All nodes must connect to the channel again by using the URL provided after a change in this section by performing the `--info` switch.
:::
```shell
meshtastic --ch-set name mychan --ch-index 1 --ch-set channel_num 4 --info
meshtastic --ch-set name mychan --ch-index 1 --info
```
You can even set the channel preshared key to a particular AES128 or AES256 sequence.
@ -69,14 +69,14 @@ meshtastic --ch-index 1 --ch-set psk 0x1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2
Use `--ch-set psk none --ch-index 0` to turn off encryption.
Use `--ch-set psk random --ch-index 0` will assign a new (high quality) random AES256 key to the primary channel (similar to what the Android app does when making new channels).
Use `--ch-set psk random --ch-index 0` to assign a new (high quality) random AES256 key to the primary channel (similar to what the Android app does when making new channels).
Use `--ch-set psk default --ch-index 0` to restore the standard 'default' (minimally secure, because it is in the source code for anyone to read) AES128 key.
All `ch-set` commands need to have the `ch-index` parameter specified:
```shell
meshtastic --ch-index 1 --ch-set name mychan --ch-set channel_num 4 --info
meshtastic --ch-index 1 --ch-set name mychan --info
```
### Ham radio support
@ -85,7 +85,7 @@ Meshtastic is designed to be used without a radio operator license. If you do ha
```shell title="Expected Output"
# You should see a result similar to this:
mydir$ meshtastic --port /dev/ttyUSB1 --set-ham KI1345
mydir$ meshtastic --set-ham KI1345
Connected to radio
Setting Ham ID to KI1345 and turning off encryption
Writing modified channels to device
@ -130,7 +130,7 @@ This indicates an OS permission problem for access by your user to the USB seria
sudo usermod -a -G dialout <username>
```
If the adding the user to the dialout group does not work, you can use the following command to find out which group to add your user to.
If adding your user to the dialout group does not work, you can use the following command to find out which group to add your user to.
In this example (from Arch Linux) the group was "uucp"
```shell

View file

@ -12,38 +12,38 @@
"clear": "docusaurus clear"
},
"dependencies": {
"@algolia/client-search": "^4.17.0",
"@docusaurus/core": "2.4.1",
"@docusaurus/plugin-content-docs": "2.4.1",
"@docusaurus/preset-classic": "2.4.1",
"@docusaurus/theme-common": "^2.4.1",
"@docusaurus/theme-mermaid": "^2.4.1",
"@headlessui/react": "^1.7.14",
"@algolia/client-search": "^4.19.1",
"@docusaurus/core": "3.0.0-alpha.0",
"@docusaurus/plugin-content-docs": "3.0.0-alpha.0",
"@docusaurus/preset-classic": "3.0.0-alpha.0",
"@docusaurus/theme-common": "3.0.0-alpha.0",
"@docusaurus/theme-mermaid": "3.0.0-alpha.0",
"@headlessui/react": "^1.7.16",
"@heroicons/react": "^2.0.18",
"@mdx-js/react": "^1.6.22",
"@meshtastic/meshtasticjs": "2.1.9-0",
"@mdx-js/react": "^2.3.0",
"@meshtastic/meshtasticjs": "2.1.22-3",
"autoprefixer": "^10.4.14",
"base64-js": "^1.5.1",
"dotenv": "^16.0.3",
"dotenv": "^16.3.1",
"framer-motion": "^6.5.1",
"postcss": "^8.4.23",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-icons": "^4.8.0",
"postcss": "^8.4.27",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.10.1",
"react-responsive-carousel": "^3.2.23",
"swr": "^2.1.5",
"tailwindcss": "^3.3.2",
"url-search-params-polyfill": "^8.1.1",
"use-breakpoint": "^3.0.7"
"swr": "^2.2.0",
"tailwindcss": "^3.3.3",
"url-search-params-polyfill": "^8.2.4",
"use-breakpoint": "^3.1.1"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "2.4.1",
"@docusaurus/module-type-aliases": "3.0.0-alpha.0",
"@tailwindcss/typography": "^0.5.9",
"@tsconfig/docusaurus": "^1.0.7",
"@types/node": "^20.1.7",
"@types/react": "^18.2.6",
"@types/react-dom": "^18.2.4",
"rome": "^12.1.0",
"typescript": "^5.0.4"
"@tsconfig/docusaurus": "^2.0.0",
"@types/node": "^20.4.8",
"@types/react": "^18.2.18",
"@types/react-dom": "^18.2.7",
"rome": "^12.1.3",
"typescript": "^5.1.6"
}
}

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 KiB

After

Width:  |  Height:  |  Size: 551 KiB