This commit is contained in:
Nestpebble 2024-10-30 22:36:25 +00:00
commit b9d1abbe24
60 changed files with 279 additions and 149 deletions

View file

@ -6,7 +6,7 @@ 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.
If you have a question, please post it on our [Meshtastic Discussions page](https://github.com/orgs/meshtastic/discussions) instead. This system is reserved specifically 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

View file

@ -44,7 +44,7 @@ If you are interested in a more technical overview of how Meshtastic works, visi
## Contributors
Meshtastic is an open source project available on GitHub. Our generous volunteers donate their personal time to write and maintain this codebase. If you would like to contribute see our [GitHub](https://github.com/meshtastic), join our [Discord server](https://discord.gg/ktMAKGBnBs), and read up on our [forum](https://meshtastic.discourse.group).
Meshtastic is an open source project available on GitHub. Our generous volunteers donate their personal time to write and maintain this codebase. If you would like to contribute see our [GitHub](https://github.com/meshtastic), join our [Discord server](https://discord.gg/ktMAKGBnBs), and read up on our [Meshtastic Discussions](https://github.com/orgs/meshtastic/discussions).
<div className="indexCtasBody">
<Link

View file

@ -7,7 +7,7 @@ sidebar_position: 1
description: "Maximize your Meshtastic device's potential with detailed radio settings instructions, including frequency bands, data rates, and encryption options."
---
import {FrequencyCalculator} from "/src/components/tools/FrequencyCalculator";
import { FrequencyCalculator } from "/src/components/tools/FrequencyCalculator";
:::info
Meshtastic is **not** LoRaWAN, Helium or TTN (TheThingsNetwork). Meshtastic uses the full spectrum frequency range designated to LoRa technology per region. This allows for several hundred possible frequency channels in the US region alone.
@ -80,7 +80,7 @@ Various data-rate options are available when configuring a frequency slot and ar
We have eight LoRa radio presets. These are the most common settings and have been proven to work well:
| Channel setting | Alt Channel Name | Data-Rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget |
|:----------------------:|:----------------:|:----------:|:------------:|:-----------:|:---------:|:-----------:|
| :--------------------: | :--------------: | :--------: | :----------: | :---------: | :-------: | :---------: |
| Short Range / Turbo | Short Turbo | 21.88 kbps | 7 / 128 | 4/5 | 500[^1] | 140dB |
| Short Range / Fast | Short Fast | 10.94 kbps | 7 / 128 | 4/5 | 250 | 143dB |
| Short Range / Slow | Short Slow | 6.25 kbps | 8 / 256 | 4/5 | 250 | 145.5dB |
@ -97,7 +97,6 @@ The link budget used by these calculations assumes a transmit power of 22dBm and
![link budget vs data rate plot](/img/about/link-budget-vs-data-rate.webp)
### Custom Settings
Custom settings can be applied by using [supported software](/docs/software).
@ -121,10 +120,10 @@ 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 frequency slot settings may not have been tested. Use at your own discretion. Share on https://meshtastic.discourse.group with your successes or failure.
These frequency slot settings may not have been tested. Use at your own discretion. Share on the [Meshtastic Discussions page](https://github.com/orgs/meshtastic/discussions) with your successes or failure.
## Cryptography
The pre-shared key (PSK) used by the devices can be an AES128 or AES256 sequence. Alternatively, encryption can be turned off, which may be useful if you are operating under a Ham Radio license.
The pre-shared key (PSK) used by the devices can be an AES128 or AES256 sequence. Alternatively, encryption can be turned off, which may be useful if you are operating under a Ham Radio license.
[^1]: Short Turbo is the fastest preset and the only one with 500kHz bandwidth. It is not legal to use in all regions due to this wider bandwidth.
[^1]: Short Turbo is the fastest preset and the only one with 500kHz bandwidth. It is not legal to use in all regions due to this wider bandwidth.

View file

@ -58,7 +58,6 @@ Default Very Long Slow
<img src="/img/records/MartinR7-message-trace.webp" alt="Trace" />
#### Previous Ground Record: 254km
- **Range:** 254km (158 miles)
@ -117,11 +116,11 @@ Default Long_Fast
- **Firmware Version:** 1.2
- **Antenna:** [868MHz Vertical 6dBi](https://ivent.co.nz/product/category/1000/868mhz%20vertical%206dbi%20antenna/38606)
![Topographical Map](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/a/a0a26e4d40a5b9ccba9185eb70e2eaf66f0b0587_2_1380x888.jpeg)
![Topographical Map](/img/records/topographical_map.webp)
![Node A](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/9/99ec4bcc18b21f4e95ac1bcc0592b608c9c4f567_2_1332x1000.jpeg)
![Node A](/img/records/node_a.webp)
![Node B](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/1/1c8bd5fc41f7bab925404b657a9c481882de9313_2_1332x1000.jpeg)
![Node B](/img/records/node_b.webp)
<h5>Resources Used</h5>- http://www.heywhatsthat.com

View file

@ -124,6 +124,10 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group.
- [LithMesh Signal Group](https://signal.group/#CjQKIBScbOkXSG2bkFh_omdxjOM-XqYIU4eERDmGEDrm3jjmEhDyZhh-EeCLSfjfV-DoPvEQ)
## Mexico
- [Meshtastic Mexico Community](https://radioaficionados.mx/meshtastic)
## Netherlands, The
- [Meshtastic Netherlands Telegram](https://t.me/meshtastic_nl)
@ -254,6 +258,14 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group.
- [Cypress, Texas Meshtastic Club](https://discord.gg/KzuwNRwE6q)
- [DFW / North Texas Mesh](https://discord.gg/jyzYRTtyMD)
### Virginia
- [MadisonMesh](https://madisonmesh.com/)
### Wisconsin
- [Meshconsin](https://meshconsin.org)
### Washington
- [Puget Mesh](https://PugetMesh.org)

View file

@ -12,7 +12,7 @@ The serial module config options are: Enabled, Echo, Mode, Receive GPIO, Transmi
This is an interface to talk to and control your Meshtastic device over a serial port. The module can be set to different [modes](#mode), each fulfilling a different use-case.
![image](https://user-images.githubusercontent.com/9000580/205529843-962c3187-8411-452c-b729-42c58b1571f5.png)
![image](/img/modules/Serial/jet.webp)
<object
data="https://www.youtube.com/embed/HdOiGKBtapw?autohide=1&autoplay=0"
@ -53,7 +53,7 @@ Available Values:
Set the GPIO pin to the RXD pin you have set up.
:::tip
With RAK4631, the default pins are TXD1 and RXD1 on the baseboard. For this device, setting [GPS Mode](/docs/configuration/radio/position/#gps-mode) to `Not_Present` will prevent a pin conflict.
With the RAK4631 on the RAK19007 and some versions of the RAK19003 baseboards, the default pins are TXD1 (16) and RXD1 (15). For this device, setting [GPS Mode](/docs/configuration/radio/position/#gps-mode) to `Not_Present` is necessary. For other versions of the RAK19003 baseboard, the pins TXD0 (20) and RXD0 (19) are accessible.
:::
### Transmit GPIO Pin

View file

@ -12,7 +12,11 @@ The Telemetry Module provides four types of data over the mesh: Device metrics (
Supported sensors connected to the I2C bus of the device will be automatically detected at startup. The Environment Telemetry, Air Quality, and Health Telemetry modules must be enabled for them to be instrumented and their readings sent over the mesh.
<object data="https://www.youtube.com/embed/6jj1s-fsPlc?autohide=1&autoplay=0" width="100%" height="400"></object>
<object
data="https://www.youtube.com/embed/6jj1s-fsPlc?autohide=1&autoplay=0"
width="100%"
height="400"
></object>
### Currently Supported Sensor Types
@ -35,7 +39,6 @@ Supported sensors connected to the I2C bus of the device will be automatically d
| MAX30102 | 0x57 | Heart Rate, Oxygen Saturation, and body temperature |
| MLX90614 | 0x5A | Body temperature |
## Module Config Values
### Environment Telemetry Enabled
@ -52,7 +55,7 @@ Default is `1800` seconds (30 minutes).
How often we should send Device Metrics over the mesh.
Default is `1800` seconds (30 minutes).
Default is `1800` seconds (30 minutes).
Device Metrics to a connected client app will always be sent once per minute, regardless of this setting.
@ -80,6 +83,16 @@ This option is used to configure the interval (in seconds) that should be used t
Default is `1800` seconds (30 minutes).
### Power Metrics Enabled
This option is used to enable/disable the sending of power telemetry as gathered by an attached supported voltage/current sensor. Note that this does not need to be enabled to monitor the voltage of the battery.
Default is `false`.
### Power Metrics Interval
This option is used to configure the interval (in seconds) that should be used to send power metrics from an attached supported sensor over the mesh network.
### Health Telemetry Enabled
This option is used to enable/disable the sending of health data from an attached supported sensor over the mesh network.
@ -139,15 +152,17 @@ All telemetry module config options are available in the python CLI. Example com
## Settings
| Setting | Acceptable Values | Default |
| :---------------------------------------: | :-----------------: | :---------------------------------------: |
| Setting | Acceptable Values | Default |
| :---------------------------------------: | :-----------------: | :----------------------------------------: |
| telemetry.device_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
| telemetry.environment_display_fahrenheit | `true`, `false` | `false` |
| telemetry.environment_measurement_enabled | `true`, `false` | `false` |
| telemetry.environment_screen_enabled | `true`, `false` | `false` |
| telemetry.environment_display_fahrenheit | `true`, `false` | `false` |
| telemetry.environment_measurement_enabled | `true`, `false` | `false` |
| telemetry.environment_screen_enabled | `true`, `false` | `false` |
| telemetry.environment_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
| telemetry.air_quality_enabled | `true`, `false` | `false` |
| telemetry.air_quality_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
| telemetry.air_quality_enabled | `true`, `false` | `false` |
| telemetry.air_quality_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
| telemetry.power_measurement_enabled | `true`, `false` | `false` |
| telemetry.power_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
| telemetry.health_measurement_enabled | `true`, `false` | `false` |
| telemetry.health_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
| telemetry.health_screen_enabled | `true`, `false` | `false` |

View file

@ -119,7 +119,7 @@ Setting this to option to 'true' means the device will ignore any messages it re
Acceptable values: `true`, `false`
Default is `false`. When set to `true`, this configuration indicates that the user approves their packets to be uploaded to MQTT. If set to `false`, nodes receiving your packets are requested not to forward packets to MQTT.
Default is `false`. When set to `true`, this configuration indicates that the user approves their packets to be uploaded to MQTT. If set to `false`, nodes receiving your packets are requested not to forward packets to MQTT. This configuration only applies to Channels configured with the `defaultpsk` and `eventpsk` keys set in the Meshtastic Firmware; Channels with custom keys ignore this setting.
**Important:** This is not a cryptographic solution but a polite request that is enforced in the official firmware.

View file

@ -10,15 +10,22 @@ sidebar_position: 1
If you would like to develop this application we'd love your help! These build instructions are brief and should be improved, please send a PR if you can.
1. Use Android Studio to build/debug
2. Use `git submodule update --init --recursive` to pull in the various sub-modules we depend on.
3. There are a few config files which you'll need to copy from templates included in the project. Run the following commands to do so:
2. Clone the repository and after successful cloning, change the working directory to Meshtastic-Android/
```shell
git clone https://github.com/meshtastic/Meshtastic-Android.git && cd Meshtastic-Android/
```
3. Pull in the various sub-modules we depend on.
```shell
git submodule update --init --recursive
```
4. There are a few config files which you'll need to copy from templates included in the project. Run the following commands to do so:
```shell
rm ./app/google-services.json
cp ./app/google-services-example.json ./app/google-services.json
rm ./app/src/main/res/values/curfirmwareversion.xml
cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/
```
4. Now you should be able to select "Run / Run" in the IDE and it will happily start running on your phone or the emulator.
5. Now you should be able to select "Run / Run" in the IDE and it will happily start running on your phone or the emulator.
:::note
The emulators don't support Bluetooth, so some features can not be used in that environment.

View file

@ -6,31 +6,31 @@ sidebar_position: 5
description: Technical Overview of Encryption Employed with Meshtastic from Firmware 2.5.0 Onwards
---
## PSK for Channels, PKC for Direct Messages (DMs) and Admin Messages
## PSK for Channels, PKC for Direct Messages and Admin Messages
Starting with firmware version 2.5.0, which introduces Public Key Cryptography (PKC) for Direct Messages (DMs) and additionally incorporating the use of Session IDs for Admin Messages, the security architecture of Meshtastic has reached a new level of robustness.
Up to version 2.4.x of the firmware, Meshtastic relied entirely on Pre-Shared Key (PSK) cryptography for all messaging. Starting with firmware version 2.5.0, Meshtastic introduced Public Key Cryptography (PKC) for Direct Messages (DMs) and added Session IDs for Admin Messages. Together, these enhancements bring the security architecture of Meshtastic to a new level of robustness.
Below is a detailed overview of how PSK, PKC, and Session IDs are integrated into your system to secure Channels, Direct Messages, and Admin Messages.
### 1. Chat Channels Using Pre-Shared Key (PSK)
### 1. Chat Channels Using PSK
- **PSK Overview:**
- Chat Channels continue to utilize a Pre-Shared Key (PSK) for encrypting communications.
- Chat Channels continue to utilize a PSK for encrypting communications.
- All participants share the same PSK for their Channels, which is used for both encryption and decryption within the channel.
- **Security Considerations:**
- **Confidentiality:** Only participants with the correct PSK can access messages within the Chat Channel.
- **Key Management:** Secure distribution and regular rotation of the PSK are essential to maintaining the channel's security.
### 2. Direct Messages (DMs) Now Using PKC
### 2. DMs Now Using PKC
- **PKC Implementation for DMs:**
- **Public/Private Key Pairs:** Each node is equipped with a unique public/private key pair. The private key is securely stored on the node, and the public key is shared with other nodes, allowing for secure, authenticated communication.
- **Encryption and Signature:**
- **Encryption:** DMs are encrypted using the recipients public key, ensuring only the recipient with the corresponding private key can decrypt the message.
- **Digital Signatures:** Messages are signed with the senders private key before encryption, allowing the recipient to verify the senders identity and the messages integrity using the senders public key.
- **Digital Signatures:** DMs are signed with the senders private key before encryption, allowing the recipient to verify the senders identity and the messages integrity using the senders public key.
- **Security Enhancements with PKC:**
- **Message Confidentiality and Integrity:** With PKC, each DM is encrypted and signed, ensuring that only the intended recipient can read the message, and verifying that it has not been tampered with.

View file

@ -88,6 +88,4 @@ In summary - wavelengths in Europe fair well in plain sight, curve over not-so-t
## Discussion
To comment on / join in antenna range [Meshtastic discourse](https://meshtastic.discourse.group/t/antenna-improved-range/227/35?u=sens8tion)
There, you will also find reference to Meshtastic range achievements and aerial recommendations. (Note we've stopped short of making specific supplier aerial recommendations in this wiki.)
For further insights, join the conversation on antenna range and performance at [Meshtastic Discussions on GitHub.](https://github.com/orgs/meshtastic/discussions)

View file

@ -114,7 +114,7 @@ Image Source: [Heltec](<https://resource.heltec.cn/download/WiFi_LoRa32_V3/HTIT-
- [Rokland](https://store.rokland.com/collections/heltec-products/products/heltec-wifi-lora-32v3)
- International
- [Heltec](https://heltec.org/project/wifi-lora-32-v3/)
- [AliExpress](https://www.aliexpress.us/item/3256805256690400.html)
- [AliExpress](https://www.aliexpress.us/item/3256807466584635.html)
</TabItem>

View file

@ -5,6 +5,19 @@ sidebar_label: Buttons
sidebar_position: 1
---
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
<Tabs
groupId="t-beam buttons"
queryString="t-beam"
defaultValue="t-beam"
values={[
{label: 'T-Beam', value: 't-beam'},
{label: 'T-Beam Supreme', value:'t-beam-supreme'},
]}>
<TabItem value="t-beam">
## Functionality
- **Power Button (left):**
@ -23,3 +36,32 @@ sidebar_position: 1
width="200"
align="center-right"
/>
</TabItem>
<TabItem value = "t-beam-supreme">
:::info
Be aware that the button layout differs on the T-Beam Supreme model.
:::
## Functionality
- **Power Button (middle):**
- **Long press:** Powers the device on or off.
- **Reset Button (right):**
- **Single press:** Resets the device.
- **User/Program Button (left):**
- **Long press:** Will signal the device to shutdown after 5 seconds.
- **Single press:** Changes the information page displayed on the device's screen.
- **Double press:** Sends an adhoc ping of the device's position to the network.
- **Triple press:** Disables the device's GPS. Repeat to re-enable. (_This will be indicated on both information screen pages on the device's display as shown below_)
<img src="/img/hardware/GPS-disabled.webp" width="200" align="center-left" />
<img
src="/img/hardware/GPS-disabled-by-button.webp"
width="200"
align="center-right"
/>
</TabItem>
</Tabs>

View file

@ -37,17 +37,33 @@ The RAK5005-O is no longer in production. It is recommended to use the RAK19007
- (x1) Reset Button
- It may be possible to add a user button using the [13002 IO module](https://store.rakwireless.com/collections/wisblock-interface/products/adapter-module-rak13002).
- **Connectors**
- Connector for 3.7v LiPo battery (with charge controller)
- Connector for 5v solar panel (max 5.5v)
- I<sup>2</sup>C, UART, GPIOs and analog input accessible with solder contacts
- Micro USB port for debugging and power
- JST PHR-2 connector for 3.7v LiPo battery (with charge controller)
- JST-ZHR-2 connector for 5v solar panel (max 5.5v)
- I<sup>2</sup>C, UART, GPIOs and analog input accessible with solder contacts
- Micro USB port for debugging and power
- **Screen Support**
- OLED screen support (OLED screen sold separately)
- OLED screen support (OLED screen sold separately)
:::note
The RAK5005 (without the -O) is not compatible.
:::
### Connectors Diagram
<img
alt="RAK19001-O Connectors"
src="/img/hardware/rak5005-0_connectors.web"
style={{ zoom: "50%" }}
/>
### Voltages
- JST PHR-2 connector for 3.7v LiPo battery.
- Charge controller max charge rate is 500mAh.
- Minimum input voltage for charging is 3.3v, maximum 4.3v.
- JST ZHR-2 connector for 5v solar panel.
- Minimum input voltage to charge is 4.4v, maximum 5.5v.
Further information on the RAK5005-O can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5005-O/Overview/#product-description).
<img
@ -63,23 +79,39 @@ Further information on the RAK5005-O can be found on the [RAK Documentation Cent
## RAK19007
- [RAK19007](https://store.rakwireless.com/products/rak19007-wisblock-base-board-2nd-gen) - WisBlock Base Board (2nd Generation, an upgrade to the RAK5005-O)
- **Slots**
- (x1) Core Module slot
- (x1) WisBlock IO Module slot
- (x4) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button
- To add a user button, you can utilize the AIN1 pin, which is exposed as pin 31 in the firmware.
- **Connectors**
- Connector for 3.7v LiPo battery (with charge controller)
- Connector for 5v solar panel (max 5.5v)
- I<sup>2</sup>C, UART, BOOT and GPIOs accessible with solder contacts
- USB-C port for debugging and power
- **Screen Support**
- OLED screen support (OLED screen sold separately)
- **Slots**
- (x1) Core Module slot
- (x1) WisBlock IO Module slot
- (x4) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button
- To add a user button, you can utilize the AIN1 pin, which is exposed as pin 31 in the firmware.
- **Connectors**
- JST PHR-2 connector for 3.7v LiPo battery.
- JST ZHR-2 connector for 5v solar panel.
- I<sup>2</sup>C, UART, BOOT and GPIOs accessible with solder contacts
- USB-C port for debugging and power
- **Screen Support**
- OLED screen support (OLED screen sold separately)
Further information on the RAK19007 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19007/Overview/#product-description).
### Connectors Diagram
<img
alt="RAK19007 Connectors"
src="/img/hardware/rak19007_connectors.webp"
style={{ zoom: "50%" }}
/>
### Voltages
- JST PHR-2 connector for 3.7v LiPo battery.
- Charge controller max charge rate is 350mAh.
- Minimum input voltage for charging is 3.3v, maximum 4.3v.
- JST ZHR-2 connector for 5v solar panel.
- Minimum input voltage to charge is 4.4v, maximum 5.5v.
### Resources
- Purchase Links:
@ -96,22 +128,38 @@ Further information on the RAK19007 can be found on the [RAK Documentation Cente
## RAK19003
- [RAK19003](https://store.rakwireless.com/products/wisblock-base-board-rak19003) - WisBlock's Mini Base Board.
- **Slots**
- (x1) Core Module slot
- (x2) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button
- There is a 3rd party sensor module that breaks out the user button, available [here](https://www.etsy.com/de/listing/1254963521/mini-io-expansion-board-for-rak-wireless).
- **Connectors**
- Connector for 3.7v LiPo battery (with charge controller)
- Connector for 5v solar panel (max 5.5v)
- I<sup>2</sup>C, UART and BOOT headers accessible with solder contacts
- USB-C port for debugging and power
- **Screen Support**
- OLED screen support (OLED screen sold separately)
- **Slots**
- (x1) Core Module slot
- (x2) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button
- There is a 3rd party sensor module that breaks out the user button, available [here](https://www.etsy.com/de/listing/1254963521/mini-io-expansion-board-for-rak-wireless).
- **Connectors**
- JST PHR-2 connector for 3.7v LiPo battery.
- JST ZHR-2 connector for 5v solar panel.
- I<sup>2</sup>C, UART and BOOT headers accessible with solder contacts
- USB-C port for debugging and power
- **Screen Support**
- OLED screen support (OLED screen sold separately)
Further information on the RAK19003 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19003/Overview/#product-description)
### Connectors Diagram
<img
alt="RAK19003 Connectors"
src="/img/hardware/rak19003_connectors.webp"
style={{ zoom: "50%" }}
/>
### Voltages
- JST PHR-2 connector for 3.7v LiPo battery.
- Charge controller max charge rate is 350mAh.
- Minimum input voltage for charging is 3.3v, maximum 4.3v.
- JST ZHR-2 connector for 5v solar panel.
- Minimum input voltage to charge is 4.4v, maximum 5.5v.
### Resources
- Purchase Links:
@ -132,26 +180,45 @@ Further information on the RAK19003 can be found on the [RAK Documentation Cente
## RAK19001
- [RAK19001](https://store.rakwireless.com/products/rak19001-wisblock-dual-io-base-board) - WisBlock's Dual IO Base Board.
- **Slots**
- (x1) Core Module slot
- (x2) WisBlock IO Module slot
- (x6) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button
- (x1) User-defined push button switch
- (x1) Battery selector switch
- On this board the PIN for user button (IO5) is available as a solder contact on the upper header row.
- **Connectors**
- Connector for 3.7v LiPo battery (with charge controller)
- Connector for 5v solar panel (max 5.5v)
- Separate connector for non-rechargeable batteries
- I<sup>2</sup>C, SPI, UART, BOOT and GPIOs accessible with solder contacts
- USB-C port for debugging and power
- **Screen Support**
- OLED screen support (OLED screen sold separately)
- **Slots**
- (x1) Core Module slot
- (x2) WisBlock IO Module slot
- (x6) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button
- (x1) User-defined push button switch
- (x1) Battery selector switch
- On this board the PIN for user button (IO5) is available as a solder contact on the upper header row.
- **Connectors**
- JST PHR-2 connector for 3.7v LiPo battery (with charge controller)
- JST ZHR-2 connector for 5v solar panel (max 5.5v)
- Separate FGH20005-S02M2W1B connector for non-rechargeable batteries
- I<sup>2</sup>C, SPI, UART, BOOT and GPIOs accessible with solder contacts
- USB-C port for debugging and power
- **Screen Support**
- OLED screen support (OLED screen sold separately)
Further information on the RAK19001 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19001/Overview/#product-description).
### Connectors Diagram
<img
alt="RAK19001 Connectors"
src="/img/hardware/rak19001_connectors.webp"
style={{ zoom: "50%" }}
/>
### Voltages
- JST PHR-2 connector for 3.7v LiPo battery.
- Charge controller max charge rate is 500mAh.
- Minimum input voltage for charging is 3.3v, maximum 4.3v.
- JST ZHR-2 connector for 5v solar panel.
- Minimum input voltage to charge is 4.4v, maximum 5.5v.
- FGH20005-S02M2W1B connector for non-rechargable battery.
- Minimum required is 3.3v, typical 3.7v, maximum 5.5v.
- Active battery is selected with the battery selector switch.
### Resources
- Purchase Links:

View file

@ -14,6 +14,6 @@ If you opt-in to analytics on the Android app (thank you - that helps us know wh
The search engine for this website is provided by Algolia, please see their [privacy policy](https://www.algolia.com/policies/privacy) for details of what information they collect.
This is an open-source project run by hobbyists, and we try to be completely transparent. If you have questions on this policy, please [post on the forum](https://meshtastic.discourse.group/), and we'll reply/clarify/correct.
This is an open-source project run by hobbyists, and we try to be completely transparent. If you have questions on this policy, please [post on the Meshtastic Discussions page](https://github.com/orgs/meshtastic/discussions), and we'll reply/clarify/correct.
Keep being awesome!

View file

@ -41,8 +41,6 @@ The minimum Android version is 5.0 (Lollipop 2014, first BLE support), however A
There is a Play Store [testing program](https://play.google.com/apps/testing/com.geeksville.mesh) with the latest cutting edge changes, though this may come with extra bugs.
It is recommended that you follow the [Meshtastic Discourse Alpha Testers](https://meshtastic.discourse.group/c/development/alpha-testers) channel if you decide to join.
_Google Play and the Google Play logo are trademarks of Google LLC._
### Install by Sideloading
@ -73,4 +71,4 @@ If you do sideload, you may have to give your browser permissions to run a packa
Obtainium allows you to install and update Open-Source Apps directly from their releases pages, and receive notifications when new releases are made available.
\*Alpha releases include the latest cutting edge changes which may come with extra bugs. It is recommended that you follow the [Meshtastic Discourse Alpha Testers](https://meshtastic.discourse.group/c/development/alpha-testers) channel if you decide to use these versions.
\*Alpha releases include the latest cutting edge changes which may come with extra bugs. It is recommended that you follow the Meshtastic Alpha Testers Channel on [Discord](https://discord.com/invite/ktMAKGBnBs) if you decide to use these versions.

View file

@ -7,31 +7,30 @@ sidebar_position: 3
## Using MQTT with Node-RED
Node-RED is a free cross-platform programming tool for wiring together hardware, APIs, and online services developed originally by IBM for IOT. It is widely used for home automation by many non-professional programmers and runs well on Pi's. Node-RED has many plug-in modules written by the community.
Node-RED is a free cross-platform programming tool for wiring together hardware, APIs, and online services developed originally by IBM for IOT. It is widely used for home automation by many non-professional programmers and runs well on Pi's. Node-RED has many plug-in modules written by the community.
I will use this platform as a practical example on how to interface with the MQTT features of Meshtastic. Everything can be done from GUI's without using command line.
### Enabling MQTT
Use http://client.meshtastic.org/ , the python CLI, or an Apple or Android app to connect to your device and adjust these settings.
1. Settings--> Radio Config--> Network
1. Settings--> Radio Config--> Network
- On the node that will act as the gateway between the mesh and MQTT enable a network connection (i.e. Wifi, Ethernet).
- Save
- On the node that will act as the gateway between the mesh and MQTT enable a network connection (i.e. Wifi, Ethernet).
- Save
2. Settings--> Module Config--> MQTT config
2. Settings--> Module Config--> MQTT config
- Configure the MQTT gateway's network configuration.
- Verify Encryption Enabled is OFF.
- (optional) Turn JSON Output Enabled ON.
- Save
3. Channel Editor
- Go to Channel Editor and enable Uplink and Downlink on the channels you wish to publish to MQTT.
- Save
- Save
### Using Node-RED with Meshtastic
There are three common approaches:
1. Using JSON-encoded messages
@ -39,6 +38,7 @@ There are three common approaches:
3. Using protobuf-encoded messages with a protobuf decode node and the Meshtastic protobuf definitions
The JSON output only publishes the following subset of the messages on a Meshtastic network:
- Text Message
- Telemetry
- Device Metrics
@ -54,11 +54,12 @@ The JSON output only publishes the following subset of the messages on a Meshtas
> Protobufs are mesh native.
#### 1. Using JSON-encoded messages
:::note
:::note
JSON is not supported on the nRF52 platform.
:::
Make sure that option *JSON Output Enabled* is set in MQTT module options and you have a channel called "mqtt".
Make sure that option _JSON Output Enabled_ is set in MQTT module options and you have a channel called "mqtt".
Below is a valid JSON envelope for information sent by MQTT to a device for broadcast onto the mesh. The `to` field is optional and can be omitted for broadcast. The `channel` field is also optional and can be omitted to send to the primary channel.
@ -71,7 +72,9 @@ Below is a valid JSON envelope for information sent by MQTT to a device for broa
"payload": text or a json object go here
}
```
#### 2. Using protobuf-encoded messages with the Meshtastic decode node
Install Node-Red plug-in:
https://flows.nodered.org/node/@meshtastic/node-red-contrib-meshtastic
@ -80,10 +83,9 @@ More info is in the plug-in source repository.
There is an example flow using this mechanism available
https://github.com/scruplelesswizard/meshtastic-node-red
#### 3. Using protobuf-encoded messages with a protobuf decode node and the Meshtastic protobuf definitions
If you don't want to depend on JSON decoding on the device, you can decode the protobuf messages off-device. To do that you will need to get the .proto files from https://github.com/meshtastic/protobufs. They function as a schema and are required for decoding in Node-RED. Save the files where the node-RED application can access them and note the file path of the "mqtt.proto" file.
If you don't want to depend on JSON decoding on the device, you can decode the protobuf messages off-device. To do that you will need to get the .proto files from https://github.com/meshtastic/protobufs. They function as a schema and are required for decoding in Node-RED. Save the files where the node-RED application can access them and note the file path of the "mqtt.proto" file.
Install Node-RED plug-ins to your Node-RED application for an embedded MQTT server and a protobuf decoder.
https://flows.nodered.org/node/node-red-contrib-aedes
@ -91,20 +93,20 @@ https://flows.nodered.org/node/node-red-contrib-protobuf
Drag, drop, and wire the nodes like this. For this example, I ran Node-RED on a Windows machine. Note that file paths might be specified differently on different platforms. MQTT server wild cards are usually the same. A "+" is a single level wildcard for a specific topic level. A "#" is a multiple level wildcard that can be used at the end of a topic filter. The debug messages shown are what happens when the inject button sends a JSON message with a topic designed to be picked up by the specified Meshtastic device and then having it rebroadcast the message.
[<img src="/documents/mqtt/NodeRedTwo.jpg" style={{zoom:'50%'}} />](/documents/mqtt/NodeRedTwo.jpg)
[<img src="/documents/mqtt/NodeRedThree.jpg" style={{zoom:'50%'}} />](/documents/mqtt/NodeRedThree.jpg)
[<img src="/documents/mqtt/NR_nodes.jpg" style={{zoom:'50%'}} />](/documents/mqtt/NR_nodes.jpg)
[<img src="/documents/mqtt/NodeRedTwo.webp" style={{zoom:'50%'}} />](/documents/mqtt/NodeRedTwo.webp)
[<img src="/documents/mqtt/NodeRedThree.webp" style={{zoom:'50%'}} />](/documents/mqtt/NodeRedThree.webp)
[<img src="/documents/mqtt/NR_nodes.webp" style={{zoom:'50%'}} />](/documents/mqtt/NR_nodes.webp)
The aedes broker must be set up on the same flow as the other nodes. By activating the Publish debug node, you can see all the published messages.
[<img src="/documents/mqtt/Broker1.jpg" style={{zoom:'50%'}} />](/documents/mqtt/Broker1.jpg)
[<img src="/documents/mqtt/Broker1.webp" style={{zoom:'50%'}} />](/documents/mqtt/Broker1.webp)
Receiving a json mqtt message is very simple.
[<img src="/documents/mqtt/Consume.jpg" style={{zoom:'50%'}} />](/documents/mqtt/Consume.jpg)
[<img src="/documents/mqtt/Consume.webp" style={{zoom:'50%'}} />](/documents/mqtt/Consume.webp)
Injecting a json message to be sent by a device is also very simple. You do need the correct envelope.
[<img src="/documents/mqtt/Inject.jpg" style={{zoom:'50%'}} />](/documents/mqtt/Inject.jpg)
[<img src="/documents/mqtt/Inject.webp" style={{zoom:'50%'}} />](/documents/mqtt/Inject.webp)
Forwarding a text message from one device, through a broker, to another broker/device/channel would look like this.
[<img src="/documents/mqtt/Forward.jpg" style={{zoom:'50%'}} />](/documents/mqtt/Forward.jpg)
[<img src="/documents/mqtt/Forward.webp" style={{zoom:'50%'}} />](/documents/mqtt/Forward.webp)
If you want to decode text and position messages without json, it gets complicated:
[<img src="/documents/mqtt/DecodeNewest.jpg" style={{zoom:'50%'}} />](/documents/mqtt/DecodeNewest.jpg)
[<img src="/documents/mqtt/DecodeNewest.webp" style={{zoom:'50%'}} />](/documents/mqtt/DecodeNewest.webp)
If you are interested in my flow for this it is here:
```json
@ -669,10 +671,10 @@ If you are interested in my flow for this it is here:
(documents/mqtt/Flow.txt)
Node-red can rapidly (minutes vs days) put together some pretty impressive output when paired with meshtastic. Here is the output of that flow geofencing and mapping via mqtt data.
[<img src="/documents/mqtt/Mapping.jpg" style={{zoom:'50%'}} />](/documents/mqtt/Mapping.jpg)
[<img src="/documents/mqtt/Mapping.webp" style={{zoom:'50%'}} />](/documents/mqtt/Mapping.webp)
Advanced use, such as encoding Position and sending it to a device via MQTT without using JSON can get a little complicated. An example of how it can be done is below.
[<img src="/documents/mqtt/EncodingPosition.jpg" style={{zoom:'50%'}} />](/documents/mqtt/EncodingPosition.jpg)
[<img src="/documents/mqtt/EncodingPosition.webp" style={{zoom:'50%'}} />](/documents/mqtt/EncodingPosition.webp)
The flow is:
```json
@ -1001,4 +1003,4 @@ Sending a position to a device for broadcast to the mesh is much easier with JSO
```
An example of doing this in node-red:
[<img src="/documents/mqtt/PosJSON.jpg" style={{zoom:'50%'}} />](/documents/mqtt/PosJSON.jpg)
[<img src="/documents/mqtt/PosJSON.webp" style={{zoom:'50%'}} />](/documents/mqtt/PosJSON.webp)

View file

@ -4,7 +4,7 @@ title: Meshtastic Python CLI installation
sidebar_label: Installation
slug: /software/python/cli/installation
sidebar_position: 1
description: This page offers comprehensive instructions on methods of installing the Meshtastic Python CLI across different operating systems.
description: This page offers comprehensive instructions on methods of installing the Meshtastic Python CLI across different operating systems.
---
import Tabs from "@theme/Tabs";
@ -54,7 +54,7 @@ values={[
- You should see something like:
- `ID 10c4:ea60 Silicon Labs CP210x UART Bridge` for CP210X
- `ID 1a86:55d4 QinHeng Electronics USB Single Serial` for CH9102
- If there is no seral device shown that matches the device you are using, please review our [Install Serial Drivers](/docs/getting-started/serial-drivers/) page before proceeding.
- If there is no seral device shown that matches the device you are using, please review our [Install Serial Drivers](/docs/getting-started/serial-drivers/) page before proceeding.
- Check that your computer has Python 3 installed.
@ -102,10 +102,10 @@ values={[
```shell
sudo apt install pipx && pipx install meshtastic
```
- If using `pipx` it may be necessary to update `$PATH` by running:
```shell
pipx ensurepath
```
- If using `pipx` it may be necessary to update `$PATH` by running:
```shell
pipx ensurepath
```
</TabItem>
<TabItem value="macos">
@ -210,7 +210,7 @@ When installing Python, make sure to select the option to "Add Python to PATH" o
```
:::note
Be aware that the Meshtastic CLI is not able to control the nodes over USB through termux, but you can control devices over Wifi using the `--host x.x.x.x` option with the device IP address (ESP32 or Pico W only). Wifi connection is currently under development and may not be working properly just yet. If you would like to provide feedback or test this feature, please visit our [forum](https://meshtastic.discourse.group) or join our [Discord server](https://discord.gg/ktMAKGBnBs) for more information.
Be aware that the Meshtastic CLI is not able to control the nodes over USB through termux, but you can control devices over Wifi using the `--host x.x.x.x` option with the device IP address (ESP32 or Pico W only). Wifi connection is currently under development and may not be working properly just yet. If you would like to provide feedback or test this feature, please join our [Discord server](https://discord.gg/ktMAKGBnBs) for more information.
:::
</TabItem>
@ -218,7 +218,6 @@ Be aware that the Meshtastic CLI is not able to control the nodes over USB throu
**You may need to close and re-open the CLI. The path variables may or may not update for the current session when installing.**
### Standalone Installation (Ubuntu only)
1. Download the `meshtastic_ubuntu` executable from the [Releases](https://github.com/meshtastic/Meshtastic-python/releases) page.
@ -227,6 +226,7 @@ Be aware that the Meshtastic CLI is not able to control the nodes over USB throu
```shell
chmod +x meshtastic_ubuntu && mv meshtastic_ubuntu meshtastic
```
3. To run the CLI:
```shell

View file

@ -14,7 +14,7 @@ The `meshtastic` command is not run within python but is a script run from your
## Viewing Serial Output
The `--noproto` command in the Meshtastic Python CLI is used to disable the API and function merely as a "dumb serial terminal." This mode of operation allows both the API and device functionalities to remain accessible for regular use, while simultaneously providing a window into the raw serial output. This feature can be particularly useful for debugging, development, or understanding the low-level communication between devices. Depends on a physically cabled serial connection. It will connect but not display information over a network (--host) or Bluetooth (--ble) connection.
The `--noproto` command in the Meshtastic Python CLI is used to disable the API and function merely as a "dumb serial terminal." This mode of operation allows both the API and device functionalities to remain accessible for regular use, while simultaneously providing a window into the raw serial output. This feature can be particularly useful for debugging, development, or understanding the low-level communication between devices. Depends on a physically cabled serial connection. It will connect but not display information over a network (--host) or Bluetooth (--ble) connection.
```shellsession title="Example Usage"
user@host % meshtastic --noproto
@ -112,12 +112,12 @@ Writing modified channels to device
Toggling `set-ham` changes your device settings in the following ways.
| Setting | `set-ham` Default | Normal Default |
| :----------: | :---------------: | :------------------------------------------------------------------------: |
| Setting | `set-ham` Default | Normal Default |
| :----------: | :---------------: | :----------------------------------------------------------------------------: |
| `IsLicensed` | `true` | See [User Config - IsLicensed](/docs/configuration/radio/user#is-licensed-ham) |
| `LongName` | _Your CallSign_ | See [User Config - LongName](/docs/configuration/radio/user#long-name) |
| `ShortName` | _Abrv CallSign_ | See [User Config - ShortName](/docs/configuration/radio/user#short-name) |
| `PSK` | `""` | See [Channel Settings - PSK](#changing-the-preshared-key) |
| `PSK` | `""` | See [Channel Settings - PSK](#changing-the-preshared-key) |
## Changing the preshared key
@ -190,6 +190,7 @@ meshtastic --ble AA11BB22-CC33-DD44-EE55-FF6677889900 --info
```shell
meshtastic --ble Meshtastic_1234 --nodes
```
#### Export device config with --export-config
```shell
@ -214,8 +215,6 @@ This is a collection of common questions and answers from our friendly forum.
### Permission denied: /dev/ttyUSB0
As previously discussed on the [forum](https://meshtastic.discourse.group/t/question-on-permission-denied-dev-ttyusb0/590/3?u=geeksville)
This indicates an OS permission problem for access by your user to the USB serial port. Typically this is fixed by the following.
```shell
@ -236,4 +235,4 @@ There is a problem with Big Sur and pyserial. The workaround is to install a new
```shell
pip3 install -U --pre pyserial
```
```

View file

@ -29,7 +29,7 @@ DFU
: Device Firmware Update, a state which a device is placed into for it to receive a firmware update
ESP32 | [Drivers](/docs/getting-started/serial-drivers/esp32/) | [Firmware](/docs/getting-started/flashing-firmware/esp32/)
: A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired.
: A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired.
Firmware | [Guide](https://meshtastic.org/docs/getting-started/flashing-firmware/)
: The low-level software programmed onto a Meshtastic device, controlling its hardware functions and enabling it to communicate within the mesh network using LoRa technology. Firmware
@ -73,9 +73,12 @@ Packet
Protobuf | [Reference](/docs/development/reference/protobufs/)
: Protocol Buffers, a method developed by Google for serializing structured data, used in Meshtastic for efficient communication protocol between devices.
PSK | [Encryption](/docs/overview/encryption/)
Pre-Shared Key (PSK) | [Encryption](/docs/overview/encryption/)
: Pre-Shared Key, a secret code or passphrase used in Meshtastic channels for encryption, ensuring that only devices with the matching PSK can communicate within that specific channel.
Public Key Cryptography (PKC) | [Encryption](/docs/overview/encryption/)
: A cryptographic method introduced in Meshtastic v2.5 for Direct Messages and Admin Messages, where each device uses a unique public and private key pair. The public key, shared with other devices, enables secure message encryption, while the private key allows only the intended recipient to decrypt and authenticate the message. This approach enhances privacy and integrity for both direct device-to-device communication and sensitive admin functions.
Repeater | [Role Definitions](/docs/configuration/radio/device/#roles)
: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.

View file

@ -2997,8 +2997,8 @@ packages:
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
engines: {node: '>= 6'}
http-proxy-middleware@2.0.6:
resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==}
http-proxy-middleware@2.0.7:
resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/express': ^4.17.13
@ -9380,7 +9380,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
http-proxy-middleware@2.0.6(@types/express@4.17.21):
http-proxy-middleware@2.0.7(@types/express@4.17.21):
dependencies:
'@types/http-proxy': 1.17.15
http-proxy: 1.18.1
@ -12130,7 +12130,7 @@ snapshots:
express: 4.21.0
graceful-fs: 4.2.11
html-entities: 2.5.2
http-proxy-middleware: 2.0.6(@types/express@4.17.21)
http-proxy-middleware: 2.0.7(@types/express@4.17.21)
ipaddr.js: 2.2.0
launch-editor: 2.9.1
open: 8.4.2

View file

@ -7,10 +7,10 @@ export default function GiscusComponent() {
return (
<Giscus
repo="meshtastic/meshtastic"
repoId="MDEwOlJlcG9zaXRvcnkzMzkzMDEyMjI="
repo="meshtastic/discussions"
repoId="R_kgDONDs6gA"
category="Blog Post Comments"
categoryId="DIC_kwDOFDlTZs4Choq7"
categoryId="DIC_kwDONDs6gM4Cjy3h"
mapping="pathname"
term="specific-term" //If you didn't select "Discussion title contains a specific term", omit.
strict="1"

View file

@ -65,17 +65,6 @@ const SocialCards: SocialCardProps[] = [
/>
),
},
{
color: "bg-[#ffffff]",
link: "https://meshtastic.discourse.group",
children: (
<img
alt="discourse"
className="m-auto h-10"
src="/img/homepage/Discourse-Logo-White.svg"
/>
),
},
{
color: "bg-[#FF4500]",
link: "https://reddit.com/r/meshtastic",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB