Merge branch 'master' into credits

This commit is contained in:
Sacha Weatherstone 2022-11-12 14:05:38 +11:00 committed by GitHub
commit b50d3eb397
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
113 changed files with 3935 additions and 3292 deletions

View file

@ -291,7 +291,7 @@ Initial Requirements:
### Meshtastic channel configuration
Don't use this on the "Long Range / Slow" or "Long Range / Fast" channel settings. You're welcome to try and report back, but those channels have a [very low bitrate](/docs/about/overview/radio-settings#pre-defined).
Don't use this on the "Long Range / Slow" or "Long Range / Fast" channel settings. You're welcome to try and report back, but those channels have a [very low bitrate](/docs/overview/radio-settings#pre-defined).
Either use a custom channel configuration with at an at least 1kbit data rate or use "Medium Range / Fast".

View file

@ -17,29 +17,30 @@ Meshtastic is a team of volunteers, and as such there is always plenty of ways t
There are several developers, testers, and active users on [Discord](https://discord.gg/ktMAKGBnBs).
## Meshtastic Ecosystem
There are many technologies (and repositories) used in creating the Meshtastic ecosystem. Below is a breakdown:
## Protocol buffers
### Protocol Buffers
Most communication and interactions happen with protocol buffers. The [Meshtastic Protobuf Definitions](https://github.com/meshtastic/protobufs) repo is where all of the protocol buffer changes happen. See the [Protobuf API Reference](/docs/developers/protobufs/api) for more details.
## Firmware
### Device Firmware
The [firmware](https://github.com/meshtastic/firmware) is where all of the firmware development happens. This is where the code for the ESP32 and nRF52 based devices is developed. It is mainly C and C++ code.Think Arduino. It is where the first level of hardware interaction begins and ends.
## Modules
### Firmware Modules
[Modules](/docs/settings/moduleconfig) are also implemented mainly in the firmware repo above. Typically, you would add functionality in the protobufs repo and the device repo to implement module functionality. You probably also want to have some client/device use/interact with the module and that is where the Device support comes into play.
## Device Support
### CLI Apps (Device Interface)
The [meshtastic/Meshtastic-python](https://github.com/meshtastic/Meshtastic-python) repository is typically where the first device interaction takes place, but that is not a requirement. This repo has a command line utility that allows you to interact with most functionality with the devices. This python library can also be consumed for other applications.
- **Meshtastic Python CLI** - The [meshtastic/Meshtastic-python](https://github.com/meshtastic/Meshtastic-python) repository is typically where the first device interaction takes place, but that is not a requirement. This repo has a command line utility that allows you to interact with most functionality with the devices. This python library can also be consumed for other applications.
## Web Application
### Web Apps (Device Interface)
The [meshtastic/web](https://github.com/meshtastic/web) repository is where the hosted web server on the ESP32 devices in Typescript is developed. See the [Web interface overview](/docs/software/web-client) for more details.
The [meshtastic/meshtastic.js](https://github.com/meshtastic/meshtastic.js) repository is a JavaScript library that provides an interface for Meshtastic devices.
- **Meshtastic Web** - The [meshtastic/web](https://github.com/meshtastic/web) repository is where the hosted web server on the ESP32 devices in Typescript is developed. See the [Web interface overview](/docs/software/web-client) for more details.
- **Meshtastic JS** - The [meshtastic/meshtastic.js](https://github.com/meshtastic/meshtastic.js) repository is a JavaScript library that provides an interface for Meshtastic devices.
@sachaw has been making tons of progress on the web app and would love help with:
@ -48,13 +49,14 @@ The [meshtastic/meshtastic.js](https://github.com/meshtastic/meshtastic.js) repo
* Chat scroll lock
* Various module support
## Phone Apps
### Mobile Apps (Device Interface)
There are two phone apps that interact with the Meshtastic devices:
- The [meshtastic/Meshtastic-Android](https://github.com/meshtastic/Meshtastic-Android) repository repo contains the Kotlin code for Android based interactions with Meshtastic devices. See [here](/docs/development/android) for how to build/create a development environment for the Meshtastic Android App.
- The iOS app is in the process of a complete re-write in Swift and will have the new repo published soon. Note: There are a couple of earlier implementations.
- **Android App** - The [meshtastic/Meshtastic-Android](https://github.com/meshtastic/Meshtastic-Android) repository repo contains the Kotlin code for Android based interactions with Meshtastic devices. See the [Android development instructions](/docs/development/android) on how to create a development environment and build the Meshtastic Android App.
- **Apple Apps** - The iOS applications are in the process of a complete re-write in Swift and will have the new repo published soon. Note: There are a couple of earlier implementations.
## Documentation
### Documentation
This website is in the [Meshtastic](https://github.com/meshtastic/meshtastic) repository.

View file

@ -126,7 +126,7 @@ Push the left PWR button for about 10 seconds.
### How can I tell the device not to sleep?
- Android instructions see: [Android Usage](/docs/software/android/android-usage#configuration-options)
- Android instructions see: [Android Usage](/docs/software/android/usage#configuration-options)
- Python CLI instructions see: [Python Usage](/docs/software/python/cli/usage#changing-settings)
### Why does only one RAK Meshtastic Starter kit show up in my node list?

View file

@ -11,7 +11,7 @@ Meshtastic® is a project that enables you to use inexpensive LoRa radios as a l
### Features
- Long range ([_166km record by Puzzled Pancake_](/docs/about/overview/range-test#current-record))
- Long range ([_166km record by PuzzledPancake_](/docs/overview/range-tests#current-record))
- No phone required for mesh communication
- Encrypted communication
- Excellent battery life
@ -34,7 +34,7 @@ If you are interested in a more technical overview of how Meshtastic works, visi
className={'button button--outline button--lg cta--button'}
to={'/docs/overview'}
>
Overview
Technical Overview
</Link>
</div>
@ -42,10 +42,23 @@ If you are interested in a more technical overview of how Meshtastic works, visi
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).
<div className="indexCtasBody">
<Link
className={'button button--outline button--lg cta--button'}
to={'/docs/contributing'}
>
Contribute!
</Link>
</div>
<!--- FIXME add Github organization list/contributor list --->
## Start using Meshtastic!
Hopefully your "Getting Started" experience is straight forward and headache free. If you encounter any issues, please consider updating our documentation to improve future user experiences or reach out on the forum or Discord.
Our support is 100% volunteer based. We are passionate about the project and hope to help newcomers become Meshtastic experts!
<div className="indexCtasBody">
<Link
className={'button button--outline button--lg cta--button'}
@ -54,7 +67,3 @@ Meshtastic is an open source project available on GitHub. Our generous volunteer
Getting Started
</Link>
</div>
Hopefully your "Getting Started" experience is straight forward and headache free. If you encounter any issues, please consider updating our documentation to improve future user experiences or reach out on the forum or Discord.
Our support is 100% volunteer based. We are passionate about the project and hope to help newcomers become Meshtastic experts!

View file

@ -2,7 +2,8 @@
id: encryption
title: Meshtastic Encryption
sidebar_label: Encryption
sidebar_position: 2
slug: /overview/encryption
sidebar_position: 3
---
Cryptography is tricky, so we've tried to 'simply' apply standard crypto solutions to our implementation. However, the project developers are not cryptography experts. Therefore we ask two things:

View file

@ -1,8 +1,9 @@
---
id: mesh-alg
id: mesh-algo
title: Mesh Broadcast Algorithm
slug: /overview/mesh-algo
sidebar_label: Mesh Algorithm
sidebar_position: 1
sidebar_position: 2
---
## Current Algorithm
@ -25,7 +26,7 @@ This preamble allows receiving radios to synchronize clocks and start framing. W
This layer is conventional non-reliable LoRa packet transmission. The transmitted packet has the following representation before encoding for transmission:
| Offset | Length | Type | Usage |
| ------------ | ----------------------------- | ------- | ---------------------------------------------------------------------------------------- |
|:------------:|:-----------------------------:|:-------:|:---------------------------------------------------------------------------------------- |
| 0x00 | 1 byte | Integer | syncWord, always `0x2B`. |
| 0x01 | 4 bytes | Integer | Packet header: Destination. The destination's unique NodeID. `0xFFFFFFFF` for broadcast. |
| 0x05 | 4 bytes | Integer | Packet Header: Sender. The sender's unique NodeID. |
@ -37,7 +38,7 @@ This layer is conventional non-reliable LoRa packet transmission. The transmitte
#### Packet Header Flags
| Index | # of Bits | Usage |
| ------- | --------- | ------------------------------ |
|:-------:|:---------:|:------------------------------|
| 0 | 3 | HopLimit (see note in Layer 3) |
| 3 | 1 | WantAck |
| 4 .. 32 | 28 | Currently unused |
@ -50,7 +51,7 @@ This layer is conventional non-reliable LoRa packet transmission. The transmitte
- **Packet Header - Unique ID:** The ID is a large, 32 bit ID to ensure there is enough unique state to protect an encrypted payload from attack.
- **Payload:** An encrypted and packed protobuf encoding of the SubPacket protobuf. Only the SubPacket is encrypted, while headers are not. This allows the option of eventually allowing nodes to route packets without knowing anything about the encrypted payload. For more information, see the [encryption](/docs/about/overview/encryption) and [protobufs](/docs/developers/protobufs/api) documentation. Any data past the maximum length is truncated.
- **Payload:** An encrypted and packed protobuf encoding of the SubPacket protobuf. Only the SubPacket is encrypted, while headers are not. This allows the option of eventually allowing nodes to route packets without knowing anything about the encrypted payload. For more information, see the [encryption](/docs/overview/encryption) and [protobufs](/docs/developers/protobufs/api) documentation. Any data past the maximum length is truncated.
#### Carrier-Sense Multiple Access with Collision Avoidance (CSMA/CA)

View file

@ -1,67 +1,72 @@
---
id: radio-settings
title: Radio Settings
slug: /overview/radio-settings
sidebar_label: Radio Settings
sidebar_position: 3
sidebar_position: 1
---
We use the same channel maps as LoRaWAN (though this is not LoRaWAN).
(Note, not the same channel map as TTN for US frequencies.)
:::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.
:::
![freq table](/img/LoRa-Frequency-Bands.jpg)
:::info
Power limits will generally be lifted in the software if `is_licensed` is set to `true`. See [HAM Mode](/docs/faq#amateur-radio-ham) for more information.
:::
See [this site](https://www.rfwireless-world.com/Tutorials/LoRa-channels-list.html) for more information.
## LoRaWAN Europe Frequency Band
The maximum power allowed is +14dBm ERP (Effective Radiated Power, see [this site](https://en.wikipedia.org/wiki/Effective_radiated_power) for more information).
## Europe Frequency Bands
### 433 MHz
There are eight channels defined with a 0.2 MHz gap between them.
Channel zero starts at 433.175 MHz
The maximum power allowed for Europe is +14 dBm ERP ([Effective Radiated Power](https://en.wikipedia.org/wiki/Effective_radiated_power)).
### 870 MHz
The band range is from 433 to 434 MHz.
There are eight channels defined with a 0.3 MHz gap between them.
Channel zero starts at 865.20 MHz
There are four channels defined with the standard radio preset `LongFast`. After factory reset the radio will be set to channel 3 with a center frequency of 433.875 MHz.
## LoRaWAN for North America
### 868 MHz
LoRaWAN defines 64, 125 kHz channels from 902.3 to 914.9 MHz increments.
The maximum power allowed for Europe is +27 dBm ERP ([Effective Radiated Power](https://en.wikipedia.org/wiki/Effective_radiated_power)).
The maximum output power for North America is +30 dBm ERP.
The band range is from 869.40 to 869.65 MHz. This is less than the 863870 MHz range defined as SRD Band, but allows for a higher ERP and a duty cycle of 10%.
The band is from 902 to 928 MHz. It mentions channel number and its respective channel frequency. All the 13 channels are separated by 2.16 MHz with respect to the adjacent channels.
Channel zero starts at 903.08 MHz center frequency.
There is one channel defined with the standard radio preset `LongFast`. After factory reset the radio will be set to channel 0 with a center frequency of 869.525 MHz.
## Data-rates
## North America Frequency Bands
### About
### 915 MHz (ISM Band)
Various data-rates are selectable when configuring a channel and are inversely proportional to the theoretical range of the devices.
The maximum output power for North America is +30 dBm ERP ([Effective Radiated Power](https://en.wikipedia.org/wiki/Effective_radiated_power)).
Considerations:
The band range is from 902 to 928 MHz.
- Spreading Factor - How much we "spread" our data over time.
There are 104 channels defined with the standard radio preset `LongFast`. After factory reset the radio will be set to channel 19 with a center frequency of 906.875 MHz.
## Data Rates
### Considerations
Various data-rate options are available when configuring a channel and are inversely proportional to the theoretical range of the devices.
- **Spreading Factor** - How much we "spread" our data over time.
- Each step up in Spreading Factor doubles the airtime to transmit.
- Each step up in Spreading Factor adds about 2.5db extra link budget.
- Bandwidth - How big of a slice of the spectrum we use.
- **Bandwidth** - How big of a slice of the spectrum we use.
- Each doubling of the bandwidth is almost 3db less link budget.
- Bandwidths less than 31 may be unstable unless you have a high quality Crystal Oscillator.
- Coding Rate - How much redundancy we encode to resist noise.
- **Coding Rate** - How much redundancy we encode to resist noise.
- Increasing coding rate increases reliability while decreasing data-rate.
- 4/5 - 1.25x overhead
- 4/6 - 1.5x overhead
- 4/7 - 1.75x overhead
- 4/8 - 2x overhead
### Pre-Defined
### Predefined Channels
We have six predefined channels. 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 |
| :------------------ | :--------------- | :------------------ | :----------- | :---------- | :-------- | :---------- |
| Channel setting | Alt Channel Name | Data-Rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget |
| :------------------: | :---------------: | :------------------: | :-----------: | :----------: | :--------:| :---------- :|
| Short Range / Fast | Short Fast | 6.8 kbps | 7 / 128 | 4/8 | 250 | 137dB |
| Short Range / Slow | Short Slow | 3.9 kbps | 8 / 256 | 4/8 | 250 | 140dB |
| Medium Range / Fast | Medium Fast | 2.2 kbps | 9 / 512 | 4/8 | 250 | 143dB |
@ -70,7 +75,10 @@ We have six predefined channels. These are the most common settings and have bee
| Long Range / Slow | Long Slow | 0.18 kbps | 12 / 4096 | 4/8 | 125 | 154dB |
| Very Long Range - Slow | Very Long Slow | 0.05 kbps | 12 / 4096 | 4/8 | 31.25 | 160.1dB |
Note: 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. Data-rate in this table is actual measured but doesn't count mesh overhead, hops and re-transmissions.
:::note
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. Data-rate in this table is actual measured but doesn't count mesh overhead, hops and re-transmissions.
:::
### Custom Settings
@ -85,7 +93,7 @@ After applying the settings, you will need to restart the device. After your dev
Some example settings:
| Data-rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget | Note |
| :--------- | :----------- | :---------- | :-------- | :---------- | :----------------------------------------------------------------------- |
| :---------:| :-----------:| :----------:| :--------:| :----------:| :----------------------------------------------------------------------- |
| 37.50 kbps | 6 / 64 | 4/5 | 500 | 129dB | Fastest possible speed |
| 3.125 kbps | 8 / 256 | 4/5 | 125 | 143dB | |
| 1.953 kbps | 8 / 256 | 4/8 | 125 | 143dB | |
@ -104,7 +112,7 @@ These channel settings may have not been tested. Use at your own discretion. Sha
## Cryptography
The preshared key used by the devices can be modified.
The pre-shared key (PSK) used by the devices can be modified.
- 0 = No crypto
- 1 = Default channel key

View file

@ -1,25 +1,38 @@
---
id: range-tests
title: Range Tests
slug: /overview/range-tests
sidebar_label: Range Tests
sidebar_position: 1
sidebar_position: 4
---
## Current Record
- **Range:** 166km (103 miles)
- **Record Holder:** _PuzzledPancake_
- **Firmware Version:** 1.2
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/44)
**Modem Settings**
- **Frequency:** 868MHz
- **Bandwidth:** 125
- **Spread Factor:** 12
- **Coding Rate:** 4/8
- **Device A:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
- **Antenna:** Omnidirectional
- **Device B:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
- **Antenna:** Omnidirectional
**Node A**
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
- **Firmware Version:** 1.2
- **Antenna:** [868MHz 5dBi Antenna](https://ivent.co.nz/product/category/1000/868mhz%205dbi%20antenna%20193mm%20black%20sma%20%28m%29/38646)
**Node B**
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
- **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)
![Node A](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/9/99ec4bcc18b21f4e95ac1bcc0592b608c9c4f567_2_1332x1000.jpeg)
![Node B](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/1/1c8bd5fc41f7bab925404b657a9c481882de9313_2_1332x1000.jpeg)
**Resources Used**
- http://www.heywhatsthat.com

View file

@ -1,3 +1,4 @@
| Region Code | Description |
| :-------: | :--------: |
| `UNSET` | Unset |
@ -13,3 +14,4 @@
| `IN` | India |
| `NZ_865` | New Zealand 865MHz |
| `TH` | Thailand |
| `LORA_24` | 2.4 GHz band worldwide |

View file

@ -10,11 +10,15 @@ import TabItem from '@theme/TabItem';
The Bluetooth config options are: Enabled, Pairing Mode and Fixed PIN Value. Bluetooth config uses an admin message sending a `Config.Bluetooth` protobuf.
:::info
On ESP32 Bluetooth will be disabled if WiFi is enabled. The WiFi setting takes precedence.
:::
## Bluetooth Config Values
### Enabled
Enables Bluetooth
Enables Bluetooth.
### Pairing Mode
@ -26,32 +30,32 @@ Finally, `NO_PIN` disables PIN authentication.
### Fixed PIN
If your pairing mode is set to fixed PIN this is the value of that fixed 6 digit pin. Default value is 123456
If your pairing mode is set to fixed PIN this is the value of that fixed 6 digit pin. Default value is 123456. For all other pairing modes, this number is ignored.
## Bluetooth Module Config Client Availability
## Configure Bluetooth Config
<Tabs
groupId="settings"
defaultValue="apple"
defaultValue="cli"
values={[
{label: 'Android', value: 'android'},
{label: 'Apple', value: 'apple'},
{label: 'CLI', value: 'cli'},
{label: 'Flasher', value: 'flasher'},
{label: 'Web', value: 'web'},
]}>
<TabItem value="android">
:::info
Bluetooth module config is not available for Android.
Bluetooth config is not available for Android.
:::
</TabItem>
<TabItem value="apple">
:::info
All Bluetooth config values are available on iOS, iPadOS and macOS at Settings > Radio Configuration > Position.
:::
All Bluetooth config values are available on iOS, iPadOS and macOS.
1. Open the Meshtastic App
2. Navigate to: **Settings > Radio Configuration > Position**
</TabItem>
<TabItem value="cli">

View file

@ -105,14 +105,13 @@ values={[
{label: 'Android', value: 'android'},
{label: 'Apple', value: 'apple'},
{label: 'CLI', value: 'cli'},
{label: 'Flasher', value: 'flasher'},
{label: 'Web', value: 'web'},
]}>
<TabItem value="android">
:::info
All Channel config options are available on Android.
Limited Channel config options are available on android. QR code scanning is available.
:::
</TabItem>
@ -120,14 +119,16 @@ All Channel config options are available on Android.
<TabItem value="apple">
:::info
All Channel config options are available on iOS, iPadOS and macOS.
Channel settings are only available on Apple platforms by scanning QR codes.
:::
</TabItem>
<TabItem value="cli">
:::info
All Channel config options are available in the python CLI. Example commands are below:
:::
**Id**
@ -191,14 +192,6 @@ meshtastic --ch-set downlink_enabled false --ch-index 5
</TabItem>
<TabItem value="flasher">
:::info
All Channel config options are available in the Flasher.
:::
</TabItem>
<TabItem value="web">
:::info

View file

@ -16,27 +16,41 @@ The display config options are: Screen On Duration, Auto Carousel Interval, Alwa
How long the screen remains on after the user button is pressed or messages are received.
### Auto Carousel Interval
Automatically toggles to the next page on the screen like a carousel, based the specified interval.
### Always Point North
If this is set, the compass heading on the screen outside of the circle will always point north. This feature is off by default and the top of display represents your heading direction, the North indicator will move around the circle.
### GPS Format
The format used to display GPS coordinates on the device screen.
Acceptable values:
| Value | Description |
| :-------: | :--------------------------: |
| `gpsFormatDec` | Decimal Degrees |
| `gpsFormatDms` | Degrees Minutes Seconds |
| `gpsFormatUtm` | Universal Transverse Mercator |
| `gpsFormatMgrs` | Military Grid Reference System |
| `gpsFormatOlc` | Open Location Code (Plus Codes) |
| `gpsFormatOsgr` | Ordnance Survey Grid Reference |
| `DEC` | Decimal Degrees |
| `DMS` | Degrees Minutes Seconds |
| `UTM` | Universal Transverse Mercator |
| `MGRS` | Military Grid Reference System |
| `OLC` | Open Location Code (Plus Codes) |
| `OSGR` | Ordnance Survey Grid Reference |
### Prefered display units
switch between `METRIC` (default) and `IMPERIAL` units
### Flip Screen
If enabled, the screen will be rotated 180 degrees, for cases that mount the screen upside down
### OLED Defintion
The type of OLED Controller is auto-detected by default, but can be defined with this setting if the auto-detection fails.
Acceptable values:
| Value | Description |
| :-------: | :--------------------------: |
| `OLED_AUTO` | Auto detect display controller |
| `OLED_SSD1306` | Always use SSD1306 driver |
| `OLED_SH1106` | Always use SH1106 driver |
## Device Config Client Availability
@ -80,7 +94,7 @@ meshtastic --set display.auto_screen_carousel_secs 120
```
```shell title="Specify GPS format on device screen"
meshtastic --set display.gps_format GpsFormatUTM
meshtastic --set display.gps_format UTM
```
</TabItem>

View file

@ -9,7 +9,7 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import LoRaRegions from '../../blocks/_lora-regions.mdx';
The LoRa config options are: Region, Modem Preset, Max Hops, Transmit Power, Bandwidth, Spread Factor, Coding Rate, Frequency Offset, Transmit Enabled and Ignore Incoming Array. LoRa config uses an admin message sending a `Config.LoRa` protobuf.
The LoRa config options are: Region, Modem Preset, Max Hops, Transmit Power, Bandwidth, Spread Factor, Coding Rate, Frequency Offset, Transmit Enabled, Channel Number and Ignore Incoming Array. LoRa config uses an admin message sending a `Config.LoRa` protobuf.
## LoRa Config Values
@ -18,13 +18,15 @@ You must set your device's `lora.region` setting. This will ensure that you are
:::
### Region
Sets the region for your node. Default is `unset`.
Sets the region for your node. Default is `unset`. As long as this is not set, the node screen will display a message and not transmit any packets.
<LoRaRegions />
### Modem Preset
Use a sensible default for the modem. Default is `unset` which equates to `LONG_FAST`. Also 'Use Presets' has to be defined, which is the default. If 'Use Presets' is not defined, the modem will be configured manually with Bandwidth, Spread Factor, and Coding Rate.
### Max Hops
Maximum number of hops. This can't be greater than 7. Default is 3 which should be fine for most applications. _**Really, 3 is fine.**_
### Transmit Power
@ -36,7 +38,7 @@ In most cases you should use zero here. Units are in dBm.
Bandwidth in MHz
Certain bandwidth numbers are 'special' and will be converted to the appropriate floating point value: 31 -> 31.25MHz
Certain bandwidth numbers are 'special' and will be converted by the device firmware to the appropriate floating point value: 31 -> 31.25MHz
### Spread Factor
@ -56,7 +58,10 @@ A frequency offset that is added to to the calculated band center frequency. Use
Allows you to enable and disable transmit (TX) from the LoRa radio. Useful for hot-swapping antennas and other tests.
Defaults to false
Defaults to true
### Channel Number
This is controlling the actual hardware frequency the radio is transmitting on. A channel number between 1 and NUM_CHANNELS (whatever the max is in the current region). If this is ZERO/UNSET then the rule is "use the old channel name hash based algorithm to derive the channel number".
### Ignore Incoming Array
@ -95,7 +100,7 @@ LoRa config commands are available in the python CLI. Example commands are below
| Setting | Acceptable Values | Default |
| :----------: | :---------------------------------------------------------------------------: | :---------------: |
| lora.modem_preset | `LONG_FAST`, `LONG_SLOW`, `VERY_LONG_SLOW`, `MEDIUM_SLOW`, `MEDIUM_FAST`, `SHORT_SLOW`, `SHORT_FAST` | `LONG_FAST` |
| lora.region | `UNSET`, `US`, `EU_433`, `EU_868`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU` ,`IN`, `NZ_865`, `TH` | `UNSET` |
| lora.region | `UNSET`, `US`, `EU_433`, `EU_868`, `CN`, `JP`, `ANZ`, `KR`, `TW`, `RU` ,`IN`, `NZ_865`, `TH`, `LORA_24` | `UNSET` |
| lora.hop_limit | `1`,`2`,`3`,`4`,`5`,`6`,`7` | `3` |
</TabItem>
<TabItem value="flasher">

View file

@ -8,7 +8,7 @@ sidebar_label: Network
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
The Network config options are: WiFi Enabled, WiFi SSID, WiFi PSK, and NTP Server. Network config uses an admin message sending a `Config.Network` protobuf.
The Network config options are: WiFi Enabled, WiFi SSID, WiFi PSK, Ethernet Enabled, IPv4 Networking Mode, Static Address and NTP Server. Network config uses an admin message sending a `Config.Network` protobuf.
:::info
Enabling WiFi will disable Bluetooth. Only one connection method will work at a time.
@ -42,9 +42,23 @@ This is your WiFi Networks password.
Empty `""` by default. (Case Sensitive, Max Length: 64)
### Ethernet Enabled
Enables or Disables Ethernet.
Set to `false` (Disabled) by default.
### IPv4 Networking Mode
Set to `DHCP` by default. Change to `STATIC` to use a static IP address. Applies to both Ethernet and WiFi.
### IPv4 Static Address configuration
contains ip, gateway, subnet and dns server in case you want a static configuration.
:::tip
The first time your device restarts after enabling WiFi, it will take an additional 20-30 seconds to boot. This is to generate self-signed SSL keys. The keys will be saved for future reuse.
The first time your device restarts after enabling WiFi or Ethernet, it will take an additional 20-30 seconds to boot. This is to generate self-signed SSL keys. The keys will be saved for future reuse.
:::
## Network Config Client Availability

View file

@ -8,18 +8,12 @@ sidebar_label: Power
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
The power config options are: Charge Current, Power Saving, Shutdown after losing power, ADC Multiplier Override Wait Bluetooth Interval, Mesh Super Deep Sleep Timeout, Super Deep Sleep Interval, Light Sleep Interval and Minimum Wake Interval. Power config uses an admin message sending a `Config.Power` protobuf.
The power config options are: Power Saving, Shutdown after losing power, ADC Multiplier Override Wait Bluetooth Interval, Mesh Super Deep Sleep Timeout, Super Deep Sleep Interval, Light Sleep Interval and Minimum Wake Interval. Power config uses an admin message sending a `Config.Power` protobuf.
Power settings are advanced configuration, most users should choose a role under Device Config to manage power for their device and should never need to touch any of these settings.
## Power Config Values
### Charge Current
**Tbeam 1.1 only setting**
Sets the current of the battery charger using the AXP power chip on the Tbeam 1.1
### Power Saving
If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in we should try to minimize power consumption as much as possible.
@ -104,7 +98,6 @@ All Power config options are available in the python CLI.
| Setting | Acceptable Values | Default |
| :----------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------: |
| power.charge_current | `MAUnset`, `MA100`, `MA190`, `MA280`, `MA360`, `MA450`, `MA550`, `MA630`, `MA700`, `MA780`, `MA880`, `MA960`, `MA1000`, `MA1080`, `MA1160`, `MA1240`, `MA1320`: | `MAUnset` |
| power.is_power_saving | `true`, `false` | `false` |
| power.on_battery_shutdown_after_secs | `integer` (seconds) | Default of `0` is off |
| power.adc_multiplier_override | `2-4` (floating point value) | Default of `0` uses firmware values |
@ -115,11 +108,6 @@ All Power config options are available in the python CLI.
| power.min_wake_secs | `integer` (seconds) | Default of `0` is 10 seconds |
```shell title="Set / Unset charge current (Tbeam 1.1 only)"
meshtastic --set power.charge_current MAUnset
meshtastic --set power.charge_current MA100
```
```shell title="Enable / Disable Power Saving"
meshtastic --set power.is_power_saving true
meshtastic --set power.is_power_saving false

View file

@ -0,0 +1,129 @@
---
id: audio
title: Audio Module Configuration
slug: /settings/moduleconfig/audio
sidebar_label: Audio
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
The audio module config options are: Codec2 Enabled, Microphone ADC Channel, Speaker PWM GPIO, PTT GPIO, Audio Bitrate/Codec Mode. Audio Module config uses an admin message sending a `ConfigModule.Audio` protobuf.
With this **experimental** module, you can add a microphone and speaker to any ESP32 device that has a SX128x radio and operates on the 2.4 GHz ISM Band. The Sub-1GHz bands are not wide enough to support continuous audio packets on the mesh, even in the Short and Fast modes. Right now, the only device supported is the LilyGo TLora 2.1-1.8 board.
## Audio Module Config Values
### Codec2 Enabled
Enables the audio module.
### Microphone ADC Channel
The ADC channel to use for the microphone. The default is 6 which maps to GPIO 34 on the ESP32.
### Speaker PWM GPIO
The GPIO to use for the speaker. The default is GPIO 14 on the ESP32.
### PTT GPIO
The GPIO to use for the Push-To-Talk button. The default is GPIO 39 on the ESP32.
### Audio Bitrate/Codec Mode
The bitrate to use for audio. The default is `CODEC2_700B`. The available options are:
* CODEC2_DEFAULT
* CODEC2_3200
* CODEC2_2400
* CODEC2_1600
* CODEC2_1400
* CODEC2_1300
* CODEC2_1200
* CODEC2_700B
* CODEC2_700
## Audio Module Config Client Availability
<Tabs
groupId="settings"
defaultValue="apple"
values={[
{label: 'Android', value: 'android'},
{label: 'Apple', value: 'apple'},
{label: 'CLI', value: 'cli'},
{label: 'Flasher', value: 'flasher'},
{label: 'Web', value: 'web'},
]}>
<TabItem value="android">
:::info
Audio module config is not available for Android.
:::
</TabItem>
<TabItem value="apple">
:::info
Audio module config is not available on iOS, iPadOS and macOS.
:::
</TabItem>
<TabItem value="cli">
All audio module config options are available in the python CLI. Example commands are below:
| Setting | Acceptable Values | Default |
| :-------------------: | :-----------------: | :-----: |
| audio.enabled | `true`, `false` | `false` |
| audio.mic_chan | ADC Number 0-7 | Default of `6` is Unset |
| audio.amp_pin | GPIO Pin Number 1-33 | Default of `14` is Unset |
| audio.ptt_pin | GPIO Pin Number 1-39 | Default of `39` is Unset |
| audio.bitrate | `CODEC2_DEFAULT` `CODEC2_3200` `CODEC2_2400` `CODEC2_1600` `CODEC2_1400` `CODEC2_1300` `CODEC2_1200` `CODEC2_700B` `CODEC2_700` | `CODEC2_DEFAULT` |
```shell title="Enable / Disable Module"
meshtastic --set audio.enabled true
meshtastic --set audio.enabled false
```
```shell title="Set ADC Channel number 7"
meshtastic --set audio.mic_chan 7
```
```shell title="Set PWM to GPIO pin number 28"
meshtastic --set audio.amp_pin 28
```
```shell title="Set PTT to GPIO pin number 37"
meshtastic --set audio.ptt_pin 37
```
```shell title="Set Codec Bitrate"
meshtastic --set audio.bitrate CODEC2_DEFAULT
meshtastic --set audio.bitrate CODEC2_1400
```
</TabItem>
<TabItem value="flasher">
:::info
No audio module config options are available in the Flasher.
:::
</TabItem>
<TabItem value="web">
:::info
All audio module config options are available in the Web UI.
:::
</TabItem>
</Tabs>
:::warning
GPIO access is fundamentally dangerous because invalid options can physically damage or destroy your hardware. Ensure that you fully understand the schematic for your particular device before trying this as we do not offer a warranty. Use at your own risk.
This module requires attaching a peripheral accessory to your device. It will not work without one.
:::

View file

@ -37,7 +37,7 @@ Input event sources accepted by the canned message module.
| :----------: | :---------------------------------------------------------------------: |
| `_any` | Default. Allows any peripheral input device connected to the device. |
| `rotEnc1` | Basic Rotary Encoder |
| `upDownEnc1` | Up Down Encoder (use this also for RAK14006) |
| `upDownEnc1` | Up Down Encoder (use this also for RAK14006 Rotary Encoder) |
| `cardkb` | M5 Stack CardKB (this covers RAK14004 Keymatrix) |
### Rotary Encoder Enabled
@ -140,7 +140,7 @@ meshtastic --set canned_message.allow_input_source "rotEnc1"
```
```shell title="Enable/Disable rotary1"
meshtastic --set
meshtastic --set canned_message.rotary1_enabled 1
```
```shell title="Set/Unset Encoder Pin A"
@ -197,11 +197,28 @@ This module requires attaching a peripheral accessory to your device. It will no
## Hardware
To navigate through messages and select one, you will require some hardware attached to your device. Currently, the module is tested with a generic rotary encoder, but this is not a limitation further input methods can be added in the future.
To navigate through messages and select one, you will require some hardware attached to your device. Currently, the module is tested with a generic rotary encoder, an up/down/select 3 button logic and several I2C Keyboards. Further input methods will be added in the future.
### I2C Keymatrix
This is tested with the RAK14004 Keyboard. A keypress will immediately send the message attached to the button number. Buttons are numbered from upper left to lower right on the keypanels. So pressing the upper left button will send the first message. The second button will send the second message and so on.
**Caveat:** the RAK 3x4 keymatrix is missing the 4th button row while scanning, so you have to skip every 4th message slot. Button 1 sends message 1 and button 4 will send message 5
Example: 1|2|3||5|6|7||9|10|11||13|14|15 - the slots 4,8 and 12 can not be used.
### CardKB
The CardKB is fully supported in freetext mode and select mode. Use UP/DOWN/ENTER to select a predefined message and send it. For a freetext message, just type it in and press ENTER to send it.
If you don't want to broadcast your freetext message, you can use the CardKB to send it to a specific node. Just press TAB and select the target node with the LEFT/RIGHT keys. The message will be sent to the node with the matching name and node number. The target node will be remebered for your nexxt message.
### 3 Buttun up/down and RAK rotary encoder
Just use UP/DOWN/ENTER to select a predefined message and send it.
### Rotary encoder
Meshtastic supports hardwired rotary encoders as input devices. (Technically the Canned Message Module is independent of rotary encoders. It is described here, because no other module utilizes rotary encoders just yet.)
Meshtastic supports hardwired rotary encoders as input devices.
You will need a generic rotary encoder. The types listed below has five legs where two is dedicated to a "press" action, but any other types will likely do the job. You can also use a three-legged version, where the "press" action should be wired from an independent switch.

View file

@ -30,7 +30,7 @@ Specifies whether the external circuit is triggered when the device's GPIO is lo
### GPIO to monitor
Specifies the GPIO that your external circuit is attached to on the device.
Specifies the GPIO that your external circuit is attached to on the device. On devices that have a PWM buzzer, you can use the buzzer for notifications by setting this to the same pin the buzzer uses.
:::info
On ESP32 based boards, GPIOs 34 to 39 are GPIs input only pins. These pins do not have internal pull-up or pull-down resistors. They can not be used as outputs, so you can NOT use these pins as outputs.
@ -160,5 +160,4 @@ Ideas for external hardware:
## Known Problems
- This won't directly support a passive (normal) speaker as it does not generate any audio wave forms.
- This module only monitors text messages. We won't trigger on any other packet types.

View file

@ -10,6 +10,7 @@ Modules are included in the firmware and allow users to extend the functionality
| Name | Description |
|:----:|:-----------:|
| [Audio](/docs/settings/moduleconfig/audio) | enable Support for Codec2 Voice Comms on certain devices |
| [Canned Message](/docs/settings/moduleconfig/canned-message) | Set a number of predefined messages to send out directly from the device with the use of an input device like a rotary encoder. |
| [External Notification](/docs/settings/moduleconfig/external-notification) | Incoming messages are able to alert you using circuits you attach to the device (LEDs, Buzzers, etc) |
| [MQTT](/docs/settings/moduleconfig/mqtt) | Forward packets along to an MQTT server. This allows users on the local mesh to communicate with users on another mesh over the internet. |

View file

@ -24,13 +24,23 @@ If set, any packets you send will be echoed back to your device.
### Mode
Defaults to 'Simple'.
Available Values:
* `DEFAULT`
* `SIMPLE` operate as an dumb UART tunnel. What goes in will come out, Requires a channel named 'gpio'.
* `PROTO` not implemented yet, but will expose the Protobuf Client API on this serial port
* `TEXTMSG` Will send the string received over the serial port as a Text Message for Display on the other devices.
* `NMEA` Will output a NMEA 0183 Data stream containing the internal GPS or fixed position and other node locations as Waypoints (WPL).
### Receive GPIO Pin
Set the GPIO pin to the RXD pin you have set up.
### Transmit GPIO Pin
Set the GPIO pin to the RXD pin you have set up.
Set the GPIO pin to the TXD pin you have set up.
:::tip
Connect the TX pin to the other device's RX pin, and vice versa. Connect their grounds to each other (not necessary if they're both plugged into the same USB power source.)
@ -82,9 +92,9 @@ All serial module config options are available in the python CLI. Example comman
| :-------------------: | :-----------------: | :-----: |
| serial.enabled | `true`, `false` | `false` |
| serial.echo | `true`, `false` | `false` |
| serial.mode | `DEFAULT` `SIMPLE` `PROTO` `TEXTMSG` | `DEFAULT` |
| serial.mode | `DEFAULT` `SIMPLE` `PROTO` `TEXTMSG`, `NMEA` | `DEFAULT` |
| serial.rxd | GPIO Pin Number 1-39 | Default of `0` is Unset |
| serial.txd | GPIO Pin Number 1-39 | Defaunlt of `0` is Unset |
| serial.txd | GPIO Pin Number 1-33 | Default of `0` is Unset |
| serial.baud | `BAUD_DEFAULT` `BAUD_110` `BAUD_300` `BAUD_600` `BAUD_1200` `BAUD_2400` `BAUD_4800` `BAUD_9600` `BAUD_19200` `BAUD_38400` `BAUD_57600` `BAUD_115200` `BAUD_230400` `BAUD_460800` `BAUD_576000` `BAUD_921600` | `BAUD_DEFAULT` |
| serial.timeout | `integer` (seconds) | `0` |
@ -105,7 +115,7 @@ meshtastic --set serial.mode PROTO
```
```shell title="Set RXD to GPIO pin number 7"
meshtastic --set seria.rxd 7
meshtastic --set serial.rxd 7
```
```shell title="Set TXD to GPIO pin number 28"

View file

@ -4,7 +4,18 @@ title: Remote Node Administration
sidebar_label: Remote Nodes
---
This feature will allow you to use the multiple channels feature to enable remote administration of Meshtastic nodes. This will let you talk through the mesh to some far away node and change that node's settings. This is an advanced feature that (currently) few users would need. Also, keep in mind it is possible (if you are not careful) to assign settings to that remote node that cause it to completely drop off of your mesh. We advise network admins have a test node to test settings with before applying changes to a remote node to prevent this.
:::caution Disclaimer
This is an advanced feature that few users should need. Keep in mind that it is possible (if you are not careful) to assign settings to a remote node that cause it to completely drop off of your mesh. We advise network admins have a test node to test settings with before applying changes to a remote node to prevent this.
:::
This feature allows you to remotely administer Meshtastic nodes through the mesh.
## Prerequisites
For any node that you want to administer, you must:
1. Configure a channel with the channel name of `admin`.
2. Set the PSK for the `admin` channel with the same key you wish to administer other all other nodes of the mesh with.
## Creating the admin channel

View file

@ -9,38 +9,58 @@ 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.
- Use Android Studio to build/debug
- Use `git submodule update --init --recursive` to pull in the various submodules we depend on
- 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:
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:
```sh
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/
```
- Now you should be able to select "Run / Run" in the IDE and it will happily start running on your phone or the emulator.
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.
:::note
The emulators don't support Bluetooth, so some features can not be used in that environment.
:::
## Analytics setup
## Setup Analytics
- Analytics are included but can be disabled by the user on the settings screen
- On dev devices
Analytics are included but can be disabled by the user on the settings screen.
1. Configure analytics for development device
```sh
adb shell setprop debug.firebase.analytics.app com.geeksville.mesh
adb shell setprop log.tag.FirebaseCrashlytics DEBUG
```
for verbose logging:
2. Set verbose logging
```sh
adb shell setprop log.tag.FA VERBOSE
```
## Publishing to google play
## Publish to Google Play
:::info
Only available for core developers that publish releases.
:::
1. Add repository secrets:
- **KEYSTORE_FILENAME**
- Name of the `.jks`
- **KEYSTORE**
- Convert the `.jks` to base64:
```sh
openssl base64 < filename.jks | tr -d '\n' | tee filename.txt
```
- **KEYSTORE_PROPERTIES**
- `storePassword=nononononono`
- `keyPassword=nononononono`
- `keyAlias=upload`
- `storeFile=nononononono.jks`
2. Update protobufs
3. Go to Actions / Make Release / Run Workflow
4. Pick the Releases branch
5. Enter the version found in `app/gradle.build`
- Only supported if you are a core developer that needs to do releases

View file

@ -0,0 +1,7 @@
---
id: building
title: Apple
sidebar_label: Apple
---
TBD

View file

@ -12,7 +12,7 @@ This table is derived from the [protobufs](/docs/developers/protobufs/api#critic
:::
| Name | Number | Description |
| ------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------- |
|:------------------- :|:------:|:----------------------------------------------------------------------------------------------------------------------- |
| TxWatchdog | 1 | A software bug was detected while trying to send LoRa |
| SleepEnterWait | 2 | A software bug was detected on entry to sleep |
| NoRadio | 3 | No LoRa radio hardware could be found |

View file

@ -5,29 +5,42 @@ sidebar_label: Module API
sidebar_position: 3
---
This is a tutorial on how to write small modules which run on the device. Modules are bits of regular 'Arduino' code that can send and receive packets to other nodes/apps/PCs using our mesh.
This is a tutorial on how to write small modules which run on the device. Modules are bits of regular 'Arduino' code that can send and receive packets to other Nodes/Apps/PCs using the Meshtastic mesh.
## Key concepts
All modules should be subclasses of MeshModule. By inheriting from this class and creating an instance of your new module your module will be automatically registered to receive packets.
All modules should be sub-classes of MeshModule. By inheriting from this class and creating an instance of your new module - your module will be automatically registered to receive packets.
Messages are sent to particular port numbers (similar to UDP networking). Your new module should eventually pick its own port number (see below), but at first you can simply use PRIVATE_APP (which is the default).
Messages are sent to particular port numbers (similar to UDP networking). Your new module should eventually pick its own port number (see below). For development use, you can simply use `PRIVATE_APP` (which is the default).
Packets can be sent/received either as raw binary structures or as [Protobufs](https://developers.google.com/protocol-buffers).
Packets can be sent and received as either:
### Class hierarchy
1. Raw binary structures
2. [Protobufs](https://developers.google.com/protocol-buffers).
The relevant bits of the class hierarchy are as follows
- [MeshModule](http://github.com/meshtastic/firmware/tree/master/src/mesh/MeshModule.h) (in src/mesh/MeshModule.h) - you probably don't want to use this baseclass directly
- [SinglePortModule](http://github.com/meshtastic/firmware/tree/master/src/mesh/SinglePortModule.h) (in src/mesh/SinglePortModule.h) - for modules that send/receive from a single port number (the normal case)
- [ProtobufModule](http://github.com/meshtastic/firmware/tree/master/src/mesh/ProtobufModule.h) (in src/mesh/ProtobufModule.h) - for modules that send/receive a single particular Protobuf type. Inherit from this if you are using protocol buffers in your module.
## Class hierarchy
You will typically want to inherit from either SinglePortModule (if you are just sending/receiving raw bytes) or ProtobufModule (if you are sending/receiving protobufs). You'll implement your own handleReceived/handleReceivedProtobuf - probably based on the example code.
If your module needs to perform any operations at startup you can override and implement the setup() method to run your code.
The relevant bits of the class hierarchy are as follows:
If you need to send a packet you can call service.sendToMesh with code like this (from the examples):
### First Level: MeshModule
- [src/mesh/MeshModule.h](http://github.com/meshtastic/firmware/tree/master/src/mesh/MeshModule.h) - you probably don't want to use this base-class directly.
### Second Level: SinglePortModule
- [src/mesh/SinglePortModule.h](http://github.com/meshtastic/firmware/tree/master/src/mesh/SinglePortModule.h) - for modules that send/receive from a single port number (the normal case).
### Third Level: ProtobufModule
- [src/mesh/ProtobufModule.h](http://github.com/meshtastic/firmware/tree/master/src/mesh/ProtobufModule.h) - for modules that send/receive a single particular Protobuf type. Inherit from this if you are using protocol buffers in your module.
## Startup Operations
If your module needs to perform any operations at startup you can override and implement the `setup()` method to run your code.
If you need to send a packet you can call `service.sendToMesh` with code like this (from the examples):
```cpp
MeshPacket *p = allocReply();
@ -36,51 +49,51 @@ p->to = dest;
service.sendToMesh(p);
```
## Example modules
## Example Modules
A number of [key services](http://github.com/meshtastic/firmware/tree/master/src/modules) are implemented using the module API, these modules are as follows:
A number of [key services](http://github.com/meshtastic/firmware/tree/master/src/modules) are implemented using the Module API, These modules are as follows:
- [TextMessageModule](http://github.com/meshtastic/firmware/tree/master/src/modules/TextMessageModule.h) - receives text messages and displays them on the LCD screen/stores them in the local DB
- [NodeInfoModule](http://github.com/meshtastic/firmware/tree/master/src/modules/NodeInfoModule.h) - receives/sends User information to other nodes so that usernames are available in the databases
- [RemoteHardwareModule](http://github.com/meshtastic/firmware/tree/master/src/modules/RemoteHardwareModule.h) - a module that provides easy remote access to device hardware (for things like turning GPIOs on or off). Intended to be a more extensive example and provide a useful feature of its own. See [remote-hardware](/docs/hardware/peripheral/#remote-hardware) for details.
- [ReplyModule](http://github.com/meshtastic/firmware/tree/master/src/modules/ReplyModule.h) - a simple module that just replies to any packet it receives (provides a 'ping' service).
- [TextMessageModule](http://github.com/meshtastic/firmware/tree/master/src/modules/TextMessageModule.h) - Receives text messages and displays them on the LCD screen/stores them in the local DB.
- [NodeInfoModule](http://github.com/meshtastic/firmware/tree/master/src/modules/NodeInfoModule.h) - Receives/sends User information to other nodes so that usernames are available in the databases.
- [RemoteHardwareModule](http://github.com/meshtastic/firmware/tree/master/src/modules/RemoteHardwareModule.h) - A module that provides easy remote access to device hardware (for things like turning GPIOs on or off). Intended to be a more extensive example and provide a useful feature of its own. See [remote-hardware](/docs/hardware/peripheral/#remote-hardware) for details.
- [ReplyModule](http://github.com/meshtastic/firmware/tree/master/src/modules/ReplyModule.h) - A simple module that just replies to any packet it receives (provides a 'ping' service).
## Getting started
The easiest way to get started is:
- [Build and install](/docs/development/firmware/build) the standard codebase from GitHub.
- Copy [src/modules/ReplyModule.\*](http://github.com/meshtastic/firmware/tree/master/src/modules/ReplyModule.cpp) into src/modules/YourModule.*. Then change the port number from *PortNum_REPLY_APP* to *PortNum_PRIVATE_APP\*.
- Edit moduless/Moduless.cpp:setupModules() to add a call to create an instance of your module (see comment at head of that function)
- Rebuild with your new messaging goodness and install on the device
- Use the [meshtastic commandline tool](https://github.com/meshtastic/Meshtastic-python) to send a packet to your board, for example `meshtastic --dest 1234 --sendping`, where _1234_ is another mesh node to send the ping to.
1. [Build the firmware](/docs/development/firmware/build) codebase.
2. Copy the [ReplyModule](http://github.com/meshtastic/firmware/tree/master/src/modules/ReplyModule.cpp) as a template into `src/modules/`.
```sh
cp src/modules/ReplyModule.* src/modules/YourModule.*
```
3. Change the port number from `PortNum_REPLY_APP` to `PortNum_PRIVATE_APP`.
4. Edit the `setupModules()` function located at `modules/Moduless.cpp` to add a call to create an instance of your module (see comment at head of that function).
5. Rebuild with your new module and install on the device.
6. Use the [Meshtastic Python CLI tool](https://github.com/meshtastic/Meshtastic-python) to send a packet to your board, for example:
- `meshtastic --dest 1234 --sendping` where _1234_ is another mesh node to send the ping to.
## Threading
It is very common that you would like your module to be invoked periodically.
We use a crude/basic cooperative threading system to allow this on any of our supported platforms. Simply inherit from OSThread and implement runOnce(). See the OSThread [documentation](http://github.com/meshtastic/firmware/tree/master/src/concurrency/OSThread.h) for more details.
We use a crude/basic cooperative threading system to allow this on any of our supported platforms. Simply inherit from OSThread and implement `runOnce()`. See the OSThread [documentation](http://github.com/meshtastic/firmware/tree/master/src/concurrency/OSThread.h) for more details.
## Sending messages
If you would like to proactively send messages (rather than just responding to them), just call service.sendToMesh(). For an example of this see [NodeInfoModule::sendOurNodeInfo(...)](http://github.com/meshtastic/firmware/tree/master/src/modules/NodeInfoModule.cpp).
If you would like to proactively send messages (rather than just responding to them), just call `service.sendToMesh()`. For an example of this, see [NodeInfoModule::sendOurNodeInfo(...)](http://github.com/meshtastic/firmware/tree/master/src/modules/NodeInfoModule.cpp).
## Picking a port number
For any new 'apps' that run on the device or via sister apps on phones/PCs they should pick and use a unique 'portnum' for their application.
If you are making a new app using meshtastic, please send in a pull request to add your 'portnum' to [the master list](https://github.com/meshtastic/protobufs/blob/master/portnums.proto). PortNums should be assigned in the following range:
- **0-63** Core Meshtastic use; do not use for third party apps
- **64-127** Registered 3rd party apps. Send in a pull request that adds a new entry to portnums.proto to register your application
- **256-511** Use one of these portnums for your private applications that you don't want to register publicly
- **1024-66559** Are reserved for use by IP tunneling (see [here](/docs/development/firmware/portnum) for more information)
All other values are reserved.
See [Meshtastic Port Numbers](/docs/development/firmware/portnum)
## How to add custom protocol buffers
If you would like to use protocol buffers to define the structures you send over the mesh (recommended), here's how to do that.
- Create a new .proto file in the protos directory.
- Run "bin/regen-protos.sh" to regenerate the C code for accessing the protocol buffers. If you don't have the required nanopb tool, follow the instructions printed by the script to get it.
- Done! You can now use your new protobuf just like any of the existing protobufs in meshtastic.
1. Create a new `.proto` file in the protos directory.
2. Run `./bin/regen-protos.sh` to regenerate the C code for accessing the protocol buffers. If you don't have the required nanopb tool, follow the instructions printed by the script to get it.
3. Done! You can now use your new protobuf just like any of the existing protobufs in Meshtastic.

View file

@ -6,107 +6,16 @@ sidebar_label: Publish
## Publish Live
### Device
- Update protobufs
1. Generate protobuf docs
```shell
cd proto
git checkout master && git pull
cd ..
git add proto
git commit -m "updating proto submodule to latest"
run bin/regen-protos.sh
cd meshtastic
./scripts/gen-proto-docs.sh
```
- edit version.properties to set release version
- commit and push (or merge) to root of repo - this should cause GitHub to start a release build (see the CI actions)
- edit the draft release text and click publish
#### Update Protobufs
### Android
#### Pre-requisites
- Add repository secrets
- - KEYSTORE_FILENAME
- - - name of the .jks
- - KEYSTORE
- - - we will convert the .jks to base64
- - - openssl base64 < filename.jks | tr -d '\n' | tee filename.txt
- - KEYSTORE_PROPERTIES
- - - storePassword=nononononono
keyPassword=nononononono
keyAlias=upload
storeFile=nononononono.jks
#### Instructions - Automated
- Update protobufs
- Go to Actions / Make Release / Run Workflow
- Pick the Releases branch
- Enter the version found in app/gradle.build
### iOS
TBD
### Meshtastic-flasher
A `meshtastic-flasher` release consists of publishing the release to PyPi https://pypi.org/project/meshtastic-flasher/ as well as producing single-executable files that are downloadable from Github https://github.com/meshtastic/Meshtastic-gui-installer/releases.
#### Instructions - automated
- Go to Actions / Make Release / Run Workflow https://github.com/meshtastic/Meshtastic-gui-installer/actions/workflows/release.yml
- Draft & Publish release https://github.com/meshtastic/Meshtastic-gui-installer/releases
### Python
A python release consists of publishing the release to PyPi https://pypi.org/project/meshtastic/ as well as producing single-executable files that are downloadable from Github https://github.com/meshtastic/Meshtastic-python/releases.
#### Pre-requisites
No pre-requisites are needed locally to make a release. All builds are done via Github Actions currently.
To test/validate, you will need to run:
2. Build
```shell
pnpm build
```
pip3 install -r requirements.txt
pip install .
```
#### Instructions
- Update protobufs by running the "Update protobufs" workflow in Actions: https://github.com/meshtastic/Meshtastic-python/actions/workflows/update_protobufs.yml
- run the "smoke1" test (optional):
connect one device to the serial port and run:
```
pytest -m smoke1
```
- run unit tests: `pytest` (optional)
- run bin/test-release.sh (optional)
- Run the "Make Release" workflow in Actions: https://github.com/meshtastic/Meshtastic-python/actions/workflows/release.yml
- After the "Make Release" is done, go into Releases: https://github.com/meshtastic/Meshtastic-python/releases There should be a draft. Add the title, update the "What's Changed" (Tip: Click on the "Auto-generate release notes" button.). Uncheck the "This is a pre-release" (if applicable).
:::note
You need permissions in the GitHub project to make a build
:::
### Web
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).
3. Submit Pull Request
## Publish to Vercel

View file

@ -1,68 +0,0 @@
---
id: build
title: Building Meshtastic Firmware
sidebar_label: Building Firmware
---
Meshtastic uses [PlatformIO](https://platformio.org), a development environment that enables easy multi-platform development and centralized tooling.
## Setup the build environment
1. Install PlatformIO, following the instructions available [here](https://platformio.org/platformio-ide).
2. Clone the [`firmware`](https://github.com/meshtastic/firmware) repository. ([Instructions on cloning](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository))
3. Clone the repositories [Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
```shell
git submodule update --init
```
4. Some utilities and scripts use the Python programming language, Downloads available [here](https://www.python.org/downloads).
## Building
1. Open the newly cloned folder in [Visual Studio Code](https://code.visualstudio.com).
1. To select the device you you wish to build for, first open your [command palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette) (windows: `Ctrl + Shift + P` or mac: `command + Shift + P` ) and enter: `platformio: Switch Project Environment` and select your target.
1. To build the firmware, simply run `PlatformIO: Build` from your command palette.
1. Finally flashing the firmware to your device is as easy as running `PlatformIO: Upload`
## Adding your own Hardware
The build system is modular. Adding a new board variant for an already supported architecture is straigtforward.
### Building for your own DIY hardware or mod that you don't want to distribute
1. go to the `variants` folder in the firmware sourcecode and make a new directory for your hardware, let's call it `m5stack_atom` and copy an existing configuration you wanna modify
```shell
cd variants; mkdir m5stack_atom
cp heltec_v1/* m5stack_atom
cd m5stack_atom
```
2. modify the `platformio.ini` _in this subdirectory_ from the canonical define of the hardware variant (`HELTEC_V1` in this case) to `PRIVATE_HW` and make the `-I` on the `build_flags` point to the newly created dir.
```shell
[env:m5stack-atom]
extends = esp32_base
board = m5stack-atom
monitor_filters = esp32_exception_decoder
build_flags =
${esp32_base.build_flags} -D PRIVATE_HW -I variants/m5stack_atom
lib_deps =
${esp32_base.lib_deps}
```
3. edit the `variant.h` file _in this subdirectory_ to reflect the defines and configurations for your board. The example is very well commented.
4. build, run and debug until you are satisfied with the result.
### Adding a new off-the-shelf or DIY hardware that you want to distribute (e.g. add a new canon board)
1. do all of the above until your hardware runs fine
2. [Send in a proposal to add a new board](https://github.com/meshtastic/firmware/issues/new?assignees=&labels=enhancement%2Ctriage&template=New+Board.yml&title=%5BBoard%5D%3A+)
3. if approved, go to (https://github.com/meshtastic/protobufs) and send a Pull Request for the `mesh.proto` file, adding your board to the `HardwareModel` Enum.
4. change your define in `platformio.ini` from `PRIVATE_HW` to `YOUR_BOARD`. Adjust any macro guards in the code you need to support your board.
5. add your board identifier to `configuration.h` on the firmware repo and send in that Pull Request too.
6. wait for the Pulls to be merged back into Master.
7. profit :-)

View file

@ -0,0 +1,65 @@
---
id: build
title: Building Meshtastic Firmware
sidebar_label: Building Firmware
---
Meshtastic uses [PlatformIO](https://platformio.org), a development environment that enables easy multi-platform development and centralized tooling.
## Setup the Build Environment
1. [Install PlatformIO](https://platformio.org/platformio-ide)
2. Clone the [Meshtastic Firmware](https://github.com/meshtastic/firmware) repository
```sh
git clone https://github.com/meshtastic/firmware.git
```
3. Update the repository's [submodules](https://github.com/meshtastic/firmware/blob/master/.gitmodules)
```shell
git submodule update --init
```
## Build
1. Open the newly cloned folder in [Visual Studio Code](https://code.visualstudio.com).
2. To select the device you you wish to build, open your [command palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette):
- Windows: `Ctrl + Shift + P`
- Mac: `command + Shift + P`
3. Enter: `platformio: Switch Project Environment` and select your target.
4. To build the firmware, simply run `PlatformIO: Build` from your command palette.
5. Finally, flash the firmware to your device by running `PlatformIO: Upload`
## Adding Custom Hardware
The build system is modular. Adding a new board variant for an already supported architecture is straightforward.
### Build with Custom Hardware
1. Go to the `variants` folder in the firmware source code and make a new directory for your hardware, let's call it `m5stack_atom` and copy an existing configuration you wanna modify:
```shell
cd variants; mkdir m5stack_atom
cp heltec_v1/* m5stack_atom
cd m5stack_atom
```
2. Modify the `platformio.ini`_in this subdirectory_ from the canonical define of the hardware variant (`HELTEC_V1` in this case) to `PRIVATE_HW` and make the `-I` on the `build_flags` point to the newly created dir.
```shell
[env:m5stack-atom]
extends = esp32_base
board = m5stack-atom
monitor_filters = esp32_exception_decoder
build_flags =
${esp32_base.build_flags} -D PRIVATE_HW -I variants/m5stack_atom
lib_deps =
${esp32_base.lib_deps}
```
3. Edit the `variant.h` file _in this subdirectory_ to reflect the defines and configurations for your board. The example is very well commented.
4. Build, run and debug until you are satisfied with the result.
### Distribute / Publish Custom Builds
1. Perform all of the steps [building with custom hardware](#build-with-custom-hardware) until your hardware runs fine.
2. [Send a proposal](https://github.com/meshtastic/firmware/issues/new?assignees=&labels=enhancement%2Ctriage&template=New+Board.yml&title=%5BBoard%5D%3A+) to add a new board.
3. If approved, go to (https://github.com/meshtastic/protobufs) and send a Pull Request for the `mesh.proto` file, adding your board to the `HardwareModel` Enum.
4. Change your define in `platformio.ini` from `PRIVATE_HW` to `YOUR_BOARD`. Adjust any macro guards in the code you need to support your board.
5. Add your board identifier to `configuration.h` on the firmware repo and send in that Pull Request too.
6. Wait for the Pulls to be merged back into Master.
7. Profit :-)

View file

@ -4,18 +4,15 @@ title: OLED Localization Guide
sidebar_label: OLED Localization
---
# OLED localization guide
## 1. Create an extended ASCII custom font
Use a glyph editor to create a new font file. The easiest way is to use the online [glyph editor][glyphEditor] from the OLED library. [Glyph editor source code][glyphEditorSource]. Copy and paste the existing font, modify it according desired codepage and save the new font file in `graphics/font` folder.
1. Create an extended ASCII custom font. Use a glyph editor to create a new font file. The easiest way is to use the online [glyph editor](https://rawgit.com/ThingPulse/esp8266-oled-ssd1306/master/resources/glyphEditor.html) from the OLED library. ([glyph editor source code](https://github.com/ThingPulse/esp8266-oled-ssd1306/tree/master/resources))
1. Copy and paste the existing font.
2. Modify it according desired codepage and save the new font file in `graphics/font` folder.
Please note that the used font file format differs from common Adafruit GFX.
## 2. Update the `customFontTableLookup` function in `Screen.h`
To map the double-byte UTF-8 code to the corresponding extended ASCII character of the desired codepage update the `customFontTableLookup` function in the `Screen.h` file. You need to modify the `switch (last)` statement: use left byte from UTF-8 code in the `case` label to map charachter's right byte to its extended ASCII code by specifying an offset.
## 3. Define language and font in `Screen.cpp`
```
2. Update the `customFontTableLookup` function in `Screen.h`
1. To map the double-byte UTF-8 code to the corresponding extended ASCII character of the desired codepage update the `customFontTableLookup` function in the `Screen.h` file.
2. Modify the `switch (last)` statement: use left byte from UTF-8 code in the `case` label to map charachter's right byte to its extended ASCII code by specifying an offset.
3. Define language and font in `Screen.cpp`
```c
#ifdef OLED_{LANG_NAME}
#include "fonts/OLEDDisplayFonts{LANG_NAME}.h"
#endif
@ -28,8 +25,7 @@ To map the double-byte UTF-8 code to the corresponding extended ASCII character
#define FONT_SMALL ArialMT_Plain_10
#endif
```
## 4. Define language in `variant/*/platformio.ini`
4. Define language in `variant/*/platformio.ini`
```
build_flags =
${esp32_base.build_flags}
@ -37,6 +33,3 @@ build_flags =
-D OLED_{LANG_NAME}
-I variants/xxxxx
```
[glyphEditor]: <https://rawgit.com/ThingPulse/esp8266-oled-ssd1306/master/resources/glyphEditor.html>
[glyphEditorSource]: <https://github.com/ThingPulse/esp8266-oled-ssd1306/tree/master/resources>

View file

@ -4,20 +4,22 @@ title: Meshtastic Port Numbers
sidebar_label: Port Numbers
---
For any new apps that run on the device or via sister apps on phones/PCs they should pick and use a unique 'portnum' for their application.
Any new app that runs on the device or via sister apps on phones/PCs should pick and use a unique "portnum" for their applications use.
If you are making a new app using meshtastic, please send in a pull request to add your 'portnum' to this master table. PortNums should be assigned in the following range:
The current list of port numbers can be found listed in the [protobufs](/docs/developers/protobufs/api#portnumsproto)
## Assignment
PortNums should be assigned by the following ranges:
| Portnum | Usage |
| ------- | ---------------------------------------------------------------------------------------------------------------------- |
| 0-63 | Core Meshtastic use, do not use for third party apps |
|:-------:|:---------------------------------------------------------------------------------------------------------------------- |
| 0-63 | Core Meshtastic use, do not use for third party apps. |
| 64-127 | Registered 3rd party apps, send in a pull request that adds a new entry to portnums.proto to register your application |
| 256-511 | Use one of these portnums for your private applications that you do not want to register publicly |
All other values are reserved.
Note: This was formerly a Type enum named `typ` with the same id #
## Integration
We have changed to this 'portnum' based scheme for specifying app handlers for particular payloads. This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically.
The current list of port numbers can be found listed in the [protobufs](/docs/developers/protobufs/api#portnumsproto)
If you are making a new app using Meshtastic, please send a pull request to add your chosen "portnum" to this master table.

View file

@ -8,28 +8,25 @@ sidebar_label: Stacktraces
You may encounter a situation where your device crashes and are left with a stacktrace, below are two methods of decoding them.
### Manual
### Manually
:::info
This method uses the symbols of the `firmware.elf` file generated from your latest build, you may wish to rebuild to get up-to-date symbols.
:::
First save the backtrace string to a text file:
1. Save the backtrace string to a text file:
```text title="backtrace.txt"
Backtrace: 0x....
```
Now run the exception decoder:
2. Run the exception decoder:
```shell
bin/exception_decoder.py backtrace.txt
```
### Real-Time
In order to decode stack traces in real time, keep the following command (replacing `DEVICE_PORT` with your device's port) running in your terminal with the suspect device connected
### In Real-Time
In order to decode stack traces in real time, keep the following command (replacing `DEVICE_PORT` with your device's port) running in your terminal with the target device connected:
```shell
pio device monitor --port DEVICE_PORT -f esp32_exception_decoder
```

View file

@ -0,0 +1,53 @@
---
id: building
title: Building
sidebar_label: Building
---
A python release consists of publishing the release to PyPi https://pypi.org/project/meshtastic/ as well as producing single-executable files that are downloadable from Github https://github.com/meshtastic/Meshtastic-python/releases.
#### Pre-requisites
No pre-requisites are needed locally to make a release. All builds are done via Github Actions currently.
To test/validate, you will need to run:
```
pip3 install -r requirements.txt
pip install .
```
#### Instructions
- Update protobufs by running the "Update protobufs" workflow in Actions: https://github.com/meshtastic/Meshtastic-python/actions/workflows/update_protobufs.yml
- run the "smoke1" test (optional):
connect one device to the serial port and run:
```
pytest -m smoke1
```
- run unit tests: `pytest` (optional)
- run bin/test-release.sh (optional)
- Run the "Make Release" workflow in Actions: https://github.com/meshtastic/Meshtastic-python/actions/workflows/release.yml
- After the "Make Release" is done, go into Releases: https://github.com/meshtastic/Meshtastic-python/releases There should be a draft. Add the title, update the "What's Changed" (Tip: Click on the "Auto-generate release notes" button.). Uncheck the "This is a pre-release" (if applicable).
:::note
You need permissions in the GitHub project to make a build
:::
### Meshtastic-flasher
A `meshtastic-flasher` release consists of publishing the release to PyPi https://pypi.org/project/meshtastic-flasher/ as well as producing single-executable files that are downloadable from Github https://github.com/meshtastic/Meshtastic-gui-installer/releases.
#### Instructions - automated
- Go to Actions / Make Release / Run Workflow https://github.com/meshtastic/Meshtastic-gui-installer/actions/workflows/release.yml
- Draft & Publish release https://github.com/meshtastic/Meshtastic-gui-installer/releases

View file

@ -3,4 +3,5 @@ collapsible: true
position: 20
link:
type: generated-index
slug: /development/reference
title: Reference Material

View file

@ -96,6 +96,7 @@ TODO: REPLACE
| `RANGETEST_CONFIG` | `4` | TODO: REPLACE |
| `TELEMETRY_CONFIG` | `5` | TODO: REPLACE |
| `CANNEDMSG_CONFIG` | `6` | TODO: REPLACE |
| `AUDIO_CONFIG` | `7` | TODO: REPLACE |
@ -553,18 +554,6 @@ Note: these mappings must match ModemPreset Choice in the device code.
### Config.NetworkConfig.WiFiMode
| Name | Number | Description |
| ---- | ------ | ----------- |
| `CLIENT` | `0` | This mode is used to connect to an external WiFi network |
| `ACCESS_POINT` | `1` | In this mode the node will operate as an AP (and DHCP server) |
| `ACCESS_POINT_HIDDEN` | `2` | If set, the node AP will broadcast as a hidden SSID |
### Config.PositionConfig.PositionFlags
:::note `enum` description
@ -744,6 +733,7 @@ TODO: REPLACE
| range_test | [`ModuleConfig.RangeTestConfig`](#moduleconfigrangetestconfig) | The part of the config that is specific to the RangeTest module |
| telemetry | [`ModuleConfig.TelemetryConfig`](#moduleconfigtelemetryconfig) | The part of the config that is specific to the Telemetry module |
| canned_message | [`ModuleConfig.CannedMessageConfig`](#moduleconfigcannedmessageconfig) | The part of the config that is specific to the Canned Message module |
| audio | [`ModuleConfig.AudioConfig`](#moduleconfigaudioconfig) | The part of the config that is specific to the Audio module |
| version | uint32 | A version integer used to invalidate old save files when we make incompatible changes This integer is set at build time and is private to NodeDB.cpp in the device code. |
@ -857,12 +847,12 @@ The other fields are either not sent at all, or sent in the special 16 byte LORA
| Field | Type | Description |
| ----- | ---- | ----------- |
| from | fixed32 | The sending node number. Note: Our crypto implementation uses this field as well. See [crypto](/docs/about/overview/encryption) for details. FIXME - really should be fixed32 instead, this encoding only hurts the ble link though. |
| from | fixed32 | The sending node number. Note: Our crypto implementation uses this field as well. See [crypto](/docs/overview/encryption) for details. FIXME - really should be fixed32 instead, this encoding only hurts the ble link though. |
| to | fixed32 | The (immediatSee Priority description for more details.y should be fixed32 instead, this encoding only hurts the ble link though. |
| channel | uint32 | (Usually) If set, this indicates the index in the secondary_channels table that this packet was sent/received on. If unset, packet was on the primary channel. A particular node might know only a subset of channels in use on the mesh. Therefore channel_index is inherently a local concept and meaningless to send between nodes. Very briefly, while sending and receiving deep inside the device Router code, this field instead contains the 'channel hash' instead of the index. This 'trick' is only used while the payload_variant is an 'encrypted'. |
| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) payload_variant.decoded | [`Data`](#data) | TODO: REPLACE |
| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) payload_variant.encrypted | bytes | TODO: REPLACE |
| id | fixed32 | A unique ID for this packet. Always 0 for no-ack packets or non broadcast packets (and therefore take zero bytes of space). Otherwise a unique ID for this packet, useful for flooding algorithms. ID only needs to be unique on a _per sender_ basis, and it only needs to be unique for a few minutes (long enough to last for the length of any ACK or the completion of a mesh broadcast flood). Note: Our crypto implementation uses this id as well. See [crypto](/docs/about/overview/encryption) for details. FIXME - really should be fixed32 instead, this encoding only hurts the ble link though. |
| id | fixed32 | A unique ID for this packet. Always 0 for no-ack packets or non broadcast packets (and therefore take zero bytes of space). Otherwise a unique ID for this packet, useful for flooding algorithms. ID only needs to be unique on a _per sender_ basis, and it only needs to be unique for a few minutes (long enough to last for the length of any ACK or the completion of a mesh broadcast flood). Note: Our crypto implementation uses this id as well. See [crypto](/docs/overview/encryption) for details. FIXME - really should be fixed32 instead, this encoding only hurts the ble link though. |
| rx_time | fixed32 | The time this message was received by the esp32 (secs since 1970). Note: this field is _never_ sent on the radio link itself (to save space) Times are typically not sent over the mesh, but they will be added to any Packet (chain of SubPacket) sent to the phone (so the phone can know exact time of reception) |
| rx_snr | float | Never* sent over the radio links. Set during reception to indicate the SNR of this packet. Used to collect statistics on current link quality. |
| hop_limit | uint32 | If unset treated as zero (no forwarding, send to adjacent nodes only) if 1, allow hopping through one node, etc... For our usecase real world topologies probably have a max of about 3. This field is normally placed into a few of bits in the header. |
@ -1335,6 +1325,26 @@ Module Config
| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) payload_variant.range_test | [`ModuleConfig.RangeTestConfig`](#moduleconfigrangetestconfig) | TODO: REPLACE |
| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) payload_variant.telemetry | [`ModuleConfig.TelemetryConfig`](#moduleconfigtelemetryconfig) | TODO: REPLACE |
| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) payload_variant.canned_message | [`ModuleConfig.CannedMessageConfig`](#moduleconfigcannedmessageconfig) | TODO: REPLACE |
| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) payload_variant.audio | [`ModuleConfig.AudioConfig`](#moduleconfigaudioconfig) | TODO: REPLACE |
### ModuleConfig.AudioConfig
:::note `message` description
Audio Config for codec2 voice
:::
| Field | Type | Description |
| ----- | ---- | ----------- |
| codec2_enabled | bool | Whether Audio is enabled |
| mic_chan | uint32 | ADC where Microphone is connected |
| amp_pin | uint32 | DAC where Speaker is connected |
| ptt_pin | uint32 | PTT Pin |
| bitrate | [`ModuleConfig.AudioConfig.Audio_Baud`](#moduleconfigaudioconfigaudio_baud) | The audio sample rate to use for codec2 |
@ -1484,6 +1494,28 @@ Configuration for both device and environment metrics
### ModuleConfig.AudioConfig.Audio_Baud
:::note `enum` description
Baudrate for codec2 voice
:::
| Name | Number | Description |
| ---- | ------ | ----------- |
| `CODEC2_DEFAULT` | `0` | none |
| `CODEC2_3200` | `1` | none |
| `CODEC2_2400` | `2` | none |
| `CODEC2_1600` | `3` | none |
| `CODEC2_1400` | `4` | none |
| `CODEC2_1300` | `5` | none |
| `CODEC2_1200` | `6` | none |
| `CODEC2_700` | `7` | none |
| `CODEC2_700B` | `8` | none |
### ModuleConfig.CannedMessageConfig.InputEventChar
:::note `enum` description
@ -1611,6 +1643,7 @@ This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT val
| `ADMIN_APP` | `6` | Admin control packets. Payload is a [AdminMessage](/docs/developers/protobufs/api#adminmessage) message |
| `TEXT_MESSAGE_COMPRESSED_APP` | `7` | Compressed TEXT_MESSAGE payloads. |
| `WAYPOINT_APP` | `8` | Waypoint payloads. Payload is a [Waypoint](/docs/developers/protobufs/api#waypoint) message |
| `AUDIO_APP` | `9` | Audio Payloads. Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now |
| `REPLY_APP` | `32` | Provides a 'ping' service that replies to any packet it receives. Also serves as a small example module. |
| `IP_TUNNEL_APP` | `33` | Used for the python IP tunnel feature |
| `SERIAL_APP` | `64` | Provides a hardware serial interface to send and receive from the Meshtastic network. Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network. Maximum packet size of 240 bytes. Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. |

View file

@ -0,0 +1,11 @@
---
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,7 +0,0 @@
label: Connect to Device
collapsible: true
position: 3
link:
type: generated-index
title: Connect to Device
slug: /getting-started/connect-device

View file

@ -1,10 +0,0 @@
---
id: connect-ble
title: Connecting using Bluetooth
sidebar_label: Bluetooth
#pagination_next: /docs/getting-started
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

View file

@ -1,15 +0,0 @@
---
id: connect-network
title: Connecting over TCP/IP Network (ESP32 Only)
sidebar_label: Network (ESP32)
#pagination_next: /docs/getting-started
sidebar_position: 3
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
## WiFi
## Ethernet

View file

@ -1,10 +0,0 @@
---
id: connect-serial
title: Connecting using Serial
sidebar_label: Serial
#pagination_next: /docs/getting-started
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

View file

@ -1,5 +1,5 @@
---
id: meshtastic-flasher-esp32
id: python-flasher
title: Using Meshtastic Python Flasher
sidebar_label: Python Flasher
sidebar_position: 2

View file

@ -1,5 +1,5 @@
---
id: meshtastic-flasher-nrf52
id: python-flasher
title: Using Meshtastic Python Flasher
sidebar_label: Python Flasher
sidebar_position: 2

View file

@ -1,4 +1,5 @@
---
id: getting-started
title: Getting Started
sidebar_label: Getting Started
slug: /getting-started
@ -30,7 +31,7 @@ The NRF52 is much more power efficient than the esp32 and easier to update, but
- LILYGO® TTGO T-Echo
:::info
If your device is not listed above, please review our [supported hardware](/docs/supported-hardware) devices to determine which MCU your device has or contact us in [Discord](https://discord.gg/ktMAKGBnBs) with any questions.
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.
:::
## Setup Working Environment
@ -47,18 +48,33 @@ Some cables only provide _charging_, verify that your cable is also capable of _
There is no definitive way to determine the difference in cables if you aren't willing to pull it apart. Trying out a few cables will be the best way to verify.
Once you've located a working data cable, [install the correct serial driver](#install-serial-drivers) and [test for driver installation](#test-for-driver-installation).
Once you've located a working data cable, [install the correct serial driver](#install-serial-drivers) and [test for driver installation](#test-driver-installation).
### Install serial drivers
<div className="indexCtasBody">
<div class="split left">
<div class="centered">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/serial-drivers'}
to={'/docs/getting-started/serial-drivers/esp32'}
>
Install Serial Drivers
Install ESP32 Drivers
</Link>
</div>
</div>
<div class="split right">
<div class="centered">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/serial-drivers/nrf52'}
>
Install NRF52 Drivers
</Link>
</div>
</div>
</div>
### Test driver installation
@ -120,9 +136,13 @@ If you do not see your device:
## Flash Firmware
### ESP32
:::info
If you have a RAK4631-R (the RUI3 bootloader version of the RAK4631), you must [convert the bootloader](/docs/guides/convert-rak4631r) for use with the Arduino before flashing Meshtastic firmware.
:::
<div className="indexCtasBody">
<div class="split left">
<div class="centered">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/flashing-firmware/esp32/'}
@ -130,12 +150,10 @@ If you do not see your device:
Flash ESP32 Firmware
</Link>
</div>
</div>
### NRF52
For RAK4631 users, if you have a RAK4631-R (the RUI3 bootloader version of the RAK4631), you must [convert it to use the Arduino bootloader](/docs/getting-started/flashing-firmware/nrf52/#convert-rak4631-r-to-rak4631)
<div className="indexCtasBody">
<div class="split right">
<div class="centered">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/flashing-firmware/nrf52/'}
@ -143,58 +161,20 @@ For RAK4631 users, if you have a RAK4631-R (the RUI3 bootloader version of the R
Flash NRF52 Firmware
</Link>
</div>
## Connect to Device
Depending on your device, there are 3 ways to connect to your device:
### Serial
<div className="indexCtasBody">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/connect-device/connect-serial'}
>
Connect using Serial
</Link>
</div>
</div>
### Bluetooth
## Connect and Configure Device
<div className="indexCtasBody">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/connect-device/connect-ble'}
>
Connect using Bluetooth
</Link>
</div>
### Network
Connecting over network is only supported on ESP32 devices.
<div className="indexCtasBody">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/connect-device/connect-network'}
>
Connect over Network
</Link>
</div>
## Configure Device
The initial configuration of the device includes setting the regional settings...
After connecting to the device for the first time, you should set the regional settings for the radio as well as other optional settings such as the name of the device.
<div className="indexCtasBody">
<Link target="_blank"
className={'button button--outline button--lg cta--button'}
to={'/docs/getting-started/initial-config'}
>
Configure Device
Connect and Configure Device
</Link>
</div>

View file

@ -1,103 +0,0 @@
---
title: Initial Configuration
sidebar_label: Initial Configuration
slug: /getting-started/initial-config
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import LoRaRegions from '../blocks/_lora-regions.mdx';
## Connection Supported Clients
Depending on your connection, some configuration options are not fully supported. Find out which Client is best for your type of connection.
<Tabs
groupId="settings"
defaultValue="serial"
values={[
{label: 'Serial', value: 'serial'},
{label: 'Bluetooth', value: 'ble'},
{label: 'Network', value: 'network'},
]}>
<TabItem value="serial">
- [Python CLI](/docs/software/python/cli/)
- [Web Client](https://client.meshtastic.org)
</TabItem>
<TabItem value="ble">
- [Web Client](https://client.meshtastic.org)
</TabItem>
<TabItem value="network">
- [Web Client](https://client.meshtastic.org)
</TabItem>
</Tabs>
### Configure Regional Settings
<LoRaRegions />
<Tabs
groupId="settings"
defaultValue="apple"
values={[
{label: 'Android', value: 'android'},
{label: 'Apple', value: 'apple'},
{label: 'CLI', value: 'cli'},
{label: 'Flasher', value: 'flasher'},
{label: 'Web', value: 'web'},
]}>
<TabItem value="android">
:::info
Region and Modem Preset can be configured on Android.
:::
</TabItem>
<TabItem value="apple">
:::info
Configuration of Region, Modem Preset and Hop Limit is available on iOS, iPadOS and macOS at Settings > Radio Configuration > LoRa.
:::
</TabItem>
<TabItem value="cli">
```sh
meshtastic --set lora.region <REGION CODE>
```
</TabItem>
<TabItem value="flasher">
:::info
No LoRa config options are available in the Flasher.
:::
</TabItem>
<TabItem value="web">
:::info
All LoRa config options are available in the Web UI.
:::
</TabItem>
</Tabs>

View file

@ -0,0 +1,114 @@
---
id: initial-config
title: Initial Configuration
sidebar_label: Initial Configuration
slug: /getting-started/initial-config
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import LoRaRegions from '../blocks/_lora-regions.mdx';
## Supported Clients per Connection Type
Depending on your connection, some configuration options are not fully supported. Find out which client is best for your type of connection.
<Tabs
groupId="settings"
defaultValue="serial"
values={[
{label: 'Serial', value: 'serial'},
{label: 'Bluetooth', value: 'ble'},
{label: 'Network', value: 'network'},
]}>
<TabItem value="serial">
- [Python CLI](/docs/software/python/cli/)
- [Web Client](https://client.meshtastic.org)
- [Android App](/docs/category/android-app)
</TabItem>
<TabItem value="ble">
- [Android App](/docs/category/android-app)
- [Web Client](https://client.meshtastic.org)
- [iOS App](/docs/category/apple-apps)
</TabItem>
<TabItem value="network">
:::info
Connecting over network is only supported on ESP32 devices.
:::
- [Web Client](https://client.meshtastic.org)
- [Android App](/docs/category/android-app)
- [iOS App](/docs/category/apple-apps)
- [Python CLI](/docs/software/python/cli/)
</TabItem>
</Tabs>
## Set Regional Settings
In order to start communicating over the mesh, you must set your region. This setting controls which frequency range your device uses and should be set according to your regional location.
<Tabs
groupId="settings"
defaultValue="apple"
values={[
{label: 'Android', value: 'android'},
{label: 'Apple', value: 'apple'},
{label: 'CLI', value: 'cli'},
{label: 'Web', value: 'web'},
]}>
<TabItem value="android">
1. Follow the [installation](/docs/software/android/installation) and [usage](/docs/software/python/cli/usage) instructions for [Meshtastic Android](/docs/category/android-app).
2. Open the app, connect to the device from your phone over USB Serial or Bluetooth.
3. Once paired, Click "UNSET" next to the device name.
4. Select the region from the list according to your regional location.
</TabItem>
<TabItem value="apple">
:::info
Configuration of Region, Modem Preset and Hop Limit is available on iOS, iPadOS and macOS at Settings > Radio Configuration > LoRa.
:::
</TabItem>
<TabItem value="cli">
1. Install [Meshtastic PythonCLI](/docs/software/python/cli/installation)
```sh
pip3 install --upgrade pytap2
pip3 install --upgrade meshtastic
```
2. Run the following command, replacing `<REGION-CODE>` with the region code listed above according to your regional location.
```sh
meshtastic --set lora.region <REGION-CODE>
```
</TabItem>
<TabItem value="web">
1. Open the Meshtastic Web interface: [client.meshtastic.org](https://client.meshtastic.org)
2. Navigate to the **LoRa** menu.
3. Under **Regional Settings**, set your **Region** according to your regional location.
4. Click **Save**.
</TabItem>
</Tabs>
### Region Codes
<LoRaRegions />

View file

@ -1,8 +1,7 @@
---
id: installing-esp32-serial-drivers
id: esp32
title: ESP32 Serial Drivers
sidebar_label: ESP32 Drivers
#pagination_next: /docs/getting-started
sidebar_position: 1
---

View file

@ -1,5 +1,5 @@
---
id: installing-nrf52-serial-drivers
id: nrf52
title: NRF52 Serial Drivers
sidebar_label: NRF52 Drivers
sidebar_position: 2

View file

@ -1,37 +1,33 @@
---
id: peripherals
title: A Note on Peripherals
sidebar_label: Peripherals
sidebar_position: 2
id: gpio-peripherals
title: Configuring GPIO Peripherals
sidebar_label: Setup GPIO Peripherals
slug: /hardware/peripheral/
sidebar_position: 6
---
## Firmware Versions
The device firmware runs on the nodes to build the mesh for communication. Each different make and model of device requires a different build of the Meshtastic firmware in order to run properly. Thankfully, due to the design of Meshtastic, it is possible to port the firmware to new devices as they become available. The firmware currently runs on a range of ESP32 based devices, but there is also increasing support for the nRF52 microprocessor with some more recent devices coming to market.
The current firmware has support for a screen to display received messages, along with information about nodes on the mesh, and more detailed information about the device on which it is running.
The latest firmware can be downloaded from the [Downloads](/downloads) page. If you wish to view the code or contribute to development of the firmware, please visit the device code <a href="https://github.com/meshtastic/firmware">GitHub page</a>.
:::info
Please be aware that there are significant changes between version branches 1.2.x and 1.3.x which mean that devices need to be running the same branch of firmware to be able to talk to each other. Python, Android, and other software applications will also need to be running the same branch to be able to talk to the device.
:::
## Remote Hardware
:::warning
GPIO access is fundamentally dangerous because invalid options can physically damage or destroy your hardware. Ensure that you fully understand the schematic for your particular device before trying this as we do not offer a warranty. Use at your own risk.
:::
:::note
The device firmware runs on the nodes to build the mesh for communication. Each different make and model of device requires a different build of the Meshtastic firmware in order to run properly. Thankfully, due to the design of Meshtastic, it is possible to port the firmware to new devices as they become available. The firmware currently runs on a range of ESP32 based devices, but there is also increasing support for the nRF52 microprocessor with some more recent devices coming to market.
The current firmware has support for a screen to display received messages, along with information about nodes on the mesh, and more detailed information about the device on which it is running.
The latest firmware can be downloaded from the [Downloads](/downloads) page. If you wish to view the code or contribute to development of the firmware, please visit the device code [GitHub page](https://github.com/meshtastic/firmware).
:::info
Please be aware that there are significant changes between version branches 1.2.x and 1.3.x which mean that devices need to be running the same branch of firmware to be able to talk to each other. Python, Android, and other software applications will also need to be running the same branch to be able to talk to the device.
This feature uses a preinstalled module in the device code and associated command line flags/classes in the python code. You'll need to be running at least version 1.2.23 (or later) of the python and device code to use this feature.
:::
You can get the latest python tool/library with `pip3 install --upgrade meshtastic` on Windows/Linux/OS-X. See the [python section](/docs/software/python/cli/installation) for more details.
## Remote Hardware
### Supported operations in the initial release
### Supported Operations
- Set any GPIO
- Read any GPIO
@ -39,41 +35,38 @@ You can get the latest python tool/library with `pip3 install --upgrade meshtast
### Setup
You can get the latest python tool/library with `pip3 install --upgrade meshtastic` on Windows/Linux/OS-X. See the [python section](/docs/software/python/cli/installation) for more details.
To prevent access from untrusted users, you must first make a `gpio` channel that is used for authenticated access to this feature. You'll need to install this channel on both the local and remote node.
The procedure using the python command line tool is:
1. Connect local device via USB
2. Create a gpio channel
2. Create a GPIO channel:
```shell
meshtastic --ch-add gpio
```
:::tip
If doing local testing, may want to change the speed of the channel at this time, too. (ex: "meshtastic --ch-mediumfast")
:::
3. Check the channel has been created and copy the long "Complete URL" that contains all the channels on that device
3. If doing local testing, you may also want to change the speed of the channel:
```sh
meshtastic --ch-mediumfast
```
4. Check the channel has been created and copy the long "Complete URL" that contains all the channels on that device:
```shell
meshtastic --info
```
4. Connect the remote device via USB (or use the [remote admin](/docs/configuration/remote-admin) feature to reach it through the mesh)
5. Set it to join the gpio channel you created
5. Connect the remote device via USB (or use the [remote admin](/docs/configuration/remote-admin) feature to reach it through the mesh)
6. Set it to join the gpio channel you created:
```shell
meshtastic --seturl theurlyoucopiedinstep3
```
Now both devices should be able to talk over the `gpio` channel. Send a text message from one the other other verify. Also run "--nodes" to verify the second node shows up.
Now both devices should be able to talk over the `gpio` channel. Send a text message from one the other other verify. Also run `--nodes` to verify the second node shows up.
### A little bit of information about masks
### Masks
To determine the appropriate mask for the pin(s) that you want to know. The python program (and output) below might help:
```
```python
>>> for i in range(1,45):
... print(f'GPIO:{i} mask:{hex(2**i)}')
...
@ -123,66 +116,66 @@ GPIO:43 mask:0x80000000000
GPIO:44 mask:0x100000000000
```
### How to easily test GPIO operations?
## Testing GPIO Operations
You can add a simple LED and resistor to validate that the GPIO operations work as expected. Used the tutorial at https://www.instructables.com/Slide-Switch-With-Arduino-Uno-R3/ as a guide.
You can programmatically do operations from your own python code by using the Meshtastic `RemoteHardwareClient` class. See the [Python API](/docs/software/python/cli/installation) documentation for more details.
Need:
You can add a simple LED and resistor to validate that the GPIO operations work as expected. Use [this tutorial](https://www.instructables.com/Slide-Switch-With-Arduino-Uno-R3/) as a guide.
- 2 Meshtastic devices (one device could be on a local computer, and the other one just has to be powered and is the one with the LED to be connected to it)
- 2 wires (black and yellow; they can be any color but typically black is used for ground)
- breadboard (optional)
- 1 LED
- 1 220Ω resistor (somewhat optional, but recommended)
### Requirements
Prep:
- (x2) Meshtastic devices (one device could be on a local computer, and the other one just has to be powered and is the one with the LED to be connected to it)
- (x2) wires (black and yellow; they can be any color but typically black is used for ground)
- (x1) LED
- (x1) 220Ω resistor (somewhat optional, but recommended)
- (x1) Breadboard (optional)
- disconnect the remote device from power (battery/usb)
- add a resistor from yellow wire to the one end of the LED (either end of the resistor is ok, either end of the LED is ok)
- add the yellow wire from a GPIO pin that will not cause any issues (ex: for TLoraV1, we can use GPIO21)
- add the black "ground" wire from the ground pin on the device (ex: for TLoraV1 it is the end pin next to the RST button) to the other end of the LED
- power on the device
### Preparation
Validation:
By default, the pin may be "off" or "on". (It will most likely "off".) See the steps below for running commands. In the example of GPIO21, the mask would be 0x200000.
1. Disconnect the remote device from power (battery/usb)
2. Add a resistor from yellow wire to the one end of the LED (either end of the resistor is OK, either end of the LED is OK)
3. Add the yellow wire from a GPIO pin that will not cause any issues (ex: for TLoraV1, we can use GPIO21)
4. Add the black "ground" wire from the ground pin on the device (ex: for TLoraV1 it is the end pin next to the RST button) to the other end of the LED
5. Power on the device
[<img alt="T-Lora v1 with LED on GPIO 21" src="/img/LED_on_TLoraV1.jpg" style={{zoom:'25%'}} />](/img/LED_on_TLoraV1.jpg)
### Validation
### Doing GPIO operations
By default, the pin may be "off" or "on". (It will most likely "off".) See the steps below for running commands. In the example of GPIO21, the mask would be `0x200000`.
You can programmatically do operations from your own python code by using the Meshtastic `RemoteHardwareClient` class. See the [python API](/docs/software/python/cli/installation) documentation for more details.
![T-Lora v1 with LED on GPIO 21](/img/LED_on_TLoraV1.jpg)
### Using GPIOs from the python CLI
Writing a GPIO (ex: turn "on" GPIO4):
## Using GPIOs from the Python CLI
```shell title="Expected output"
$ meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest \!28979058
Connected to radio
Writing GPIO mask 0x10 with value 0x10 to !28979058
### Writing a GPIO
```shell title="Example: turning 'on' GPIO4"
meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest 28979058
# Connected to radio
# Writing GPIO mask 0x10 with value 0x10 to !28979058
```
Reading a GPIO (ex: read GPIO4):
### Reading a GPIO
```shell title="Expected output"
$ meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest \!28979058
Connected to radio
Reading GPIO mask 0x10 from !28979058
GPIO read response gpio_value=16
```shell title="Example: read GPIO4"
meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest 28979058
# Connected to radio
# Reading GPIO mask 0x10 from !28979058
# GPIO read response gpio_value=16
```
:::note
If the mask and the gpio_value match, then the value is "on". If the gpio_value is 0, then the value is "off".
:::
Watching for GPIO changes (ex: watching GPIO4 for changes):
### Watching for GPIO Changes
```shell title="Expected output"
$ meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest \!28979058
Connected to radio
Watching GPIO mask 0x10 from !28979058
Received RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
Received RemoteHardware typ=GPIOS_CHANGED, gpio_value=0
Received RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
< press ctrl-c to exit >
```shell title="Example: watching GPIO4 for changes"
meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest 28979058
# Connected to radio
# Watching GPIO mask 0x10 from !28979058
# Received RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
# Received RemoteHardware typ=GPIOS_CHANGED, gpio_value=0
# Received RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
# < press ctrl-c to exit >
```

View file

@ -0,0 +1,10 @@
---
id: writing-modules
title: Creating New Modules
sidebar_label: Create a Module
sidebar_position: 5
---
import NewModule from '../development/device/module-api.mdx'
<NewModule components={props.components} />

View file

@ -1,6 +1,6 @@
label: Antennas
collapsible: true
position: 1
position: 2
link:
type: generated-index
title: Antennas

View file

@ -1,116 +0,0 @@
---
id: lora
title: LILYGO® TTGO Lora devices
sidebar_label: LILYGO® Lora
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
LILYGO® Lora23 v1-2.1 * Versions other than 2.1 not recommended with a battery
<Tabs
groupId="t-lora"
defaultValue="v1"
values={[
{label: 'Lora V1', value: 'v1'},
{label: 'Lora V1.3', value: 'v1.3'},
{label: 'Lora V2.0', value: 'v2.0'},
{label: 'Lora V2.1-1.6', value:'v2.1'}
]}>
<TabItem value="v1">
- ESP32 - WiFi & Bluetooth
- SX1276 - LoRa Transceiver
- Frequency options:
- 868 MHz
- 915 MHz
- Built in 0.96 inch OLED display
- U.FL antenna connector
- Reset and Program switches
- No GPS
- Firmware file: `firmware-tlora-v1-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/32840238513.html)
[<img alt="LILYGO® TTGO Lora V1" src="/img/hardware/lora-v1.png" style={{zoom:'25%'}} />](/img/hardware/lora-v1.png)
</TabItem>
<TabItem value="v1.3">
- ESP32 - WiFi & Bluetooth
- SX127x - LoRa Transceiver
- Frequency options:
- 868 MHz
- 915 MHz
- Built in 0.96 inch OLED display
- U.FL antenna connector
- Reset and Program switches
- No GPS
- Firmware file: `firmware-tlora_v1_3-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/4000628100802.html)
[<img alt="LILYGO® TTGO Lora V1.3" src="/img/hardware/lora-v1.3.png" style={{zoom:'25%'}} />](/img/hardware/lora-v1.3.png)
[<img alt="LILYGO® TTGO Lora V1.3 pin map" src="/img/hardware/lora-v1.3_pinmap.webp" style={{zoom:'25%'}} />](/img/hardware/lora-v1.3_pinmap.webp)
</TabItem>
<TabItem value="v2.0">
- ESP32 - WiFi & Bluetooth
- SX127x - LoRa Transceiver
- Frequency options:
- 433 MHz
- 868 MHz
- 915 MHz
- Built in 0.96 inch OLED display
- U.FL antenna connector
- Power and Reset switches
- microSD connector
- No GPS
- Firmware file: `firmware-tlora-v2-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/32846302183.html)
[<img alt="LILYGO® TTGO Lora V2" src="/img/hardware/lora-v2.0.png" style={{zoom:'25%'}} />](/img/hardware/lora-v2.0.png)
</TabItem>
<TabItem value="v2.1">
- ESP32 - WiFi & Bluetooth
- SX127x - LoRa Transceiver
- Frequency options:
- 433 MHz
- 868 MHz
- 915 MHz
- Built in 0.96 inch OLED display
- SMA antenna connector
- Power and Reset switches
- microSD connector
- No GPS
- Firmware file: `firmware-tlora-v2-1-1.6-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/32915894264.html)
<br />
:::warning
Early versions of some of these boards contained the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged.
:::
[<img src="/img/hardware/lora-v2.1-1.6.png" alt="LILYGO® TTGO Lora V2.1-1.6" style={{zoom:'25%'}} />](/img/hardware/lora-v2.1-1.6.png)
Shorting IO12 to ground will progress the screen pages, wake up the device, etc. A simple push switch can be added for this purpose.
[<img src="/img/hardware/lora32-v2-1.6-button.jpg" style={{zoom:'30%'}} />](/img/hardware/lora32-v2-1.6-button.jpg)
[<img src="/img/hardware/lora32-v2-1.6-button-example.jpg" style={{zoom:'30%'}} />](/img/hardware/lora32-v2-1.6-button.jpg)
</TabItem>
</Tabs>
Further information on the LILYGO® LoRa and T-beam devices can be found on LILYGO®'s [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series).

View file

@ -0,0 +1,15 @@
---
id: buttons
title: Hardware Buttons
sidebar_label: Buttons
sidebar_position: 3
---
## Functionality
- **Reset Button**
- _**Single press**_ resets the device.
- **Program button**
- _**Single press**_ changes the page of information displayed on the screen.
- _**Long press**_ adjusts the contrast of the screen.
- _**Triple press**_ sends a broadcast message of the device position.

View file

@ -0,0 +1,24 @@
---
id: enclosures
title: Enclosures
sidebar_label: Enclosures
sidebar_position: 3
---
import Tropho from '/img/enclosures/3dp-tropho-lora32.png';
## Created by tropho/TonyG
### TTGO LoRa32 v2.1.1.6 Case
Download from [Printables](https://www.printables.com/model/131389-ttgo-lora32-v2116-case-for-meshtastic) or purchase from the creator's [Etsy Store](https://www.etsy.com/listing/1285837219/ttgo-lora-21-16-case).
#### Required Hardware
- (x4) M3x16mm socket-head cap screws
- (x4) M3 Nuts
- (x2) M2 Screws (to secure TTGO LoRa32 board to frame)
- (x1) LiPo battery pack (1,000mAh)
- (x1) Momentary micro push button for PRG (6x6x5mm)
<img src={Tropho} width="600" align="left" />

View file

@ -0,0 +1,14 @@
---
id: gpio
title: GPIO
sidebar_label: GPIO
sidebar_position: 4
---
## GPIO IO12
For the Lora V2.1-1.6, Shorting IO12 to ground will progress through the screen pages and/or wake up the device. A simple push switch can be added for this purpose.
<img src="/img/hardware/lora32-v2-1.6-button.jpg" width="400" align="left"/>
<img src="/img/hardware/lora32-v2-1.6-button-example.jpg" width="400" align="left"/>

View file

@ -0,0 +1,144 @@
---
id: lora
title: LILYGO® TTGO Lora Devices
sidebar_label: LILYGO® Lora
sidebar_position: 6
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
Further information on the LILYGO® LoRa devices can be found on LILYGO®'s [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series).
<Tabs
groupId="t-lora"
defaultValue="v1"
values={[
{label: 'Lora V1', value: 'v1'},
{label: 'Lora V1.3', value: 'v1.3'},
{label: 'Lora V2.0', value: 'v2.0'},
{label: 'Lora V2.1-1.6', value:'v2.1'}
]}>
<TabItem value="v1">
:::warning
Not recommended with a battery! These boards contain the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged.
:::
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX1276
- **Frequency options**
- 915 MHz
- 868 MHz
- **Connectors**
- Micro USB
- Antenna: U.FL antenna connector
**Features**
- Built in 0.96 inch OLED display
**Resources**
- Firmware file: `firmware-tlora-v1-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32840238513.html)
![LILYGO® TTGO Lora V1](/img/hardware/lora-v1.png)
</TabItem>
<TabItem value="v1.3">
:::warning
Not recommended with a battery! These boards contain the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged.
:::
- **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
**Resources**
- Firmware file: `firmware-tlora_v1_3-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4000628100802.html)
![LILYGO® TTGO Lora V1.3](/img/hardware/lora-v1.3.png)
![LILYGO® TTGO Lora V1.3 pin map](/img/hardware/lora-v1.3_pinmap.webp)
</TabItem>
<TabItem value="v2.0">
:::warning
Not recommended with a battery! These boards contain the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged.
:::
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX127x
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- **Connectors**
- Micro USB
- Antenna: U.FL antenna connector
**Features**
- Built in 0.96 inch OLED display
- Power and Reset switches
- microSD connector
- No GPS
**Resources**
- Firmware file: `firmware-tlora-v2-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32846302183.html)
![LILYGO® TTGO Lora V2](/img/hardware/lora-v2.0.png)
</TabItem>
<TabItem value="v2.1">
:::caution
Not recommended with a battery. Early versions of some of these boards contained the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged.
:::
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX127x
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- **Connectors**
- Micro USB
- Antenna: SMA antenna connector
**Features**
- Built in 0.96 inch OLED display
- Power and Reset switches
- microSD connector
- No GPS
**Resources**
- Firmware file: `firmware-tlora-v2-1-1.6-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32915894264.html)
![TTGO Lora V2.1-1.6](/img/hardware/lora-v2.1-1.6.png)
</TabItem>
</Tabs>

View file

@ -1,33 +0,0 @@
---
id: nano-g1
title: Nano G1 device
sidebar_label: Nano G1
sidebar_position: 4
---
The Nano G1 is the first dedicated hardware to be designed from scratch purely for Meshtastic by Neil Hao. It has been designed to be small and compact with the inclusion of a high quality internal PCB antenna.
Only the US 915 MHz version is available currently. There should be an EU 868 MHz version available in the future.
### Features
- Meshtastic pre-installed
- ESP32 WROOM microprocessor - WiFi & Bluetooth
- Semtech SX1276 - LoRa Transceiver
- Frequency options:
- 915 MHz
- Additional ultra-low noise amplifier to improve LoRa receiver sensitivity
- ATGM336H-5N-71 Whole Constellation Positioning and Navigation Module (Supports GPS, BDS and GLONASS)
- Built in 915Mhz Lora PCB Antenna (VSWR <=1.5 @ 915 MHz)
- User button
- 1.3 inch OLED screen
- Buzzer
### Resources
- Firmware file: `firmware-nano-g1-1.x.x.bin`
- [Purchase link](https://www.tindie.com/products/neilhao/meshtastic-mesh-device-nano-edition/)
[<img alt="Nano G1" src="/img/hardware/nano-g1-front.jpg" style={{zoom:'25%'}} />](/img/hardware/nano-g1-front.jpg)
Further information on the Nano G1 can be found on [Unit Engineering's Wiki](https://uniteng.com/wiki/doku.php?id=meshtastic:nano).

View file

@ -0,0 +1,13 @@
---
id: buttons
title: Hardware Buttons
sidebar_label: Buttons
sidebar_position: 3
---
## Functionality
- **Program button**
- _**Single press**_ changes the page of information displayed on the screen.
- _**Long press**_ adjusts the contrast of the screen.
- _**Triple press**_ sends a broadcast message of the device position.

View file

@ -0,0 +1,42 @@
---
id: nano-g1
title: Nano G1 device
sidebar_label: Nano G1
sidebar_position: 4
---
The Nano G1 is the first dedicated hardware device to be designed from scratch purely for Meshtastic by Neil Hao. It has been designed to be small and compact with the inclusion of a high quality internal PCB antenna.
### Specifications
- **MCU**
- ESP32 WROOM (WiFi & Bluetooth)
- Bluetooth 4.2
- **LoRa Transceiver**
- Semtech SX1276
- Additional ultra-low noise amplifier to improve LoRa receiver sensitivity
- **Frequency options**
- US-915 MHz
- **Navigation Module**
- ATGM336H-5N-71 (Supports GPS, BDS and GLONASS)
- **Antenna**
- Built in 915Mhz Lora PCB Antenna (VSWR <=1.5 @ 915 MHz)
- **Connectors**
- USB-C
### Features
- Meshtastic pre-installed
- User button
- 1.3 inch OLED screen
- Buzzer
### Resources
- Firmware file: `firmware-nano-g1-1.x.x.bin`
- [Purchase link](https://www.tindie.com/products/neilhao/meshtastic-mesh-device-nano-edition/)
Further information on the Nano G1 can be found on [Unit Engineering's Wiki](https://uniteng.com/wiki/doku.php?id=meshtastic:nano).
![Nano G1](/img/hardware/nano-g1-front.jpg)

View file

@ -0,0 +1,136 @@
---
id: base-board
title: RAK WisBlock Base Boards
sidebar_label: Base Boards
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
## WisBlock Base
<Tabs
groupId="rakbase board"
defaultValue="RAK19007"
values={[
{label: 'RAK5005-O', value: 'RAK5005-O'},
{label: 'RAK19007', value:'RAK19007'},
{label: 'RAK19003', value: 'RAK19003'},
{label: 'RAK19001', value: 'RAK19001'}
]}>
<TabItem value="RAK5005-O">
### RAK5005-O
- [RAK5005-O](https://store.rakwireless.com/products/rak5005-o-base-board) - The original WisBlock Base Board.
- **Slots**
- (x1) Core Module slot
- (x1) WisBlock IO Module slot
- (x4) WisBlock Sensor Module slots
- **Buttons**
- (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
- **Screen Support**
- OLED screen support (OLED screen sold separately)
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
alt="RAK4631 5005"
src="/img/hardware/rak4631_5005.png"
style={{ zoom: '50%' }}
/>
</TabItem>
<TabItem value="RAK19007">
### 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
- 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, 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).
</TabItem>
<TabItem value="RAK19003">
### RAK19003
- [RAK19003](https://store.rakwireless.com/products/wisblock-base-board-rak19003) - WisBlock's Mini Base Board.
- **Slots**
- (x1) Core Module slot
- (x1) WisBlock IO Module slot
- (x2) WisBlock Sensor Module slots
- **Buttons**
- (x1) Reset Button
- It is currently not possible to add a user button to this board.
- **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
- Micro USB 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)
<img
alt="RAK4631 19003"
src="/img/hardware/rak4631_19003.png"
style={{ zoom: '50%' }}
/>
</TabItem>
<TabItem value="RAK19001">
### 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
- 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)
- 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)
Further information on the RAK19001 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19001/Overview/#product-description).
</TabItem>
</Tabs>

View file

@ -0,0 +1,30 @@
---
id: buttons
title: Hardware Buttons
sidebar_label: Buttons
sidebar_position: 3
---
## Functionality
Button functionality for RAK devices greatly depends on the device specific configuration. If your device has any of the following buttons, the functionality is generally the same for all RAK devices:
### RAK5005-O / RAK19007 / RAK19003
- **Program button**
- _**Single press**_ changes the page of information displayed on the screen.
- _**Double press (nRF52 only)**_ puts the device in bootloader mode and mounts a drive to your computer.
- _**Long press**_ signals the device to shutdown.
- _**Triple press**_ sends a broadcast message of the device position.
### RAK19001
- **Program button**
- _**Single press**_ changes the page of information displayed on the screen.
- _**Double press (nRF52 only)**_ puts the device in bootloader mode and mounts a drive to your computer.
- _**Long press**_ signals the device to shutdown.
- _**Triple press**_ sends a broadcast message of the device position.
- **User Button**
- _Not yet implemented by Meshtastic_

View file

@ -0,0 +1,107 @@
---
id: core-module
title: RAK WisBlock Core Modules
sidebar_label: Core Modules
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
## WisBlock Core
<Tabs
groupId="rakcore"
defaultValue="RAK4631"
values={[
{label: 'RAK4631', value: 'RAK4631'},
{label: 'RAK11200', value: 'RAK11200'}
]}>
<TabItem value="RAK4631">
### RAK4631
:::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/guides/convert-rak4631r).
:::
- [RAK4631](https://store.rakwireless.com/products/rak4631-lpwan-node?variant=37505443856582)
- **MCU**
- nRF52840
- Bluetooth BLE 5.0
- Very low power consumption
- **Meshtastic Firmware**
- [`firmware-rak4631-2.X.X.xxxxxxx.uf2`](/downloads)
- **LoRa transceiver**
- SX1262
- **Frequency Options**
- 433 MHz
- 470 MHz
- 799 MHz
- 865 MHz
- 868 MHz
- 915 MHz
- 920 MHz
- 923 MHz
- **Connectors**
- U.FL antenna
Further information on the RAK4631 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Overview/#product-description).
<img
alt="RAK4631 Core Module"
src="/img/hardware/rak4631.png"
style={{ zoom: '50%' }}
/>
</TabItem>
<TabItem value="RAK11200">
### RAK11200 / RAK13300
:::caution Note
Only supported on the RAK5005-O base board.
:::
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**
- 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).
- [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).
<img
alt="RAK4631 5005 11200"
src="/img/hardware/rak11200.jpg"
style={{ zoom: '50%' }}
/>
</TabItem>
</Tabs>

View file

@ -0,0 +1,41 @@
---
id: enclosures
title: Enclosures
sidebar_label: Enclosures
sidebar_position: 3
---
## Created by KeithMon/Voltaic Enclosures
### Solar Base Station
Download from [Printables](https://www.printables.com/model/297089-meshtastic-solar-base-station-node-enclosure-for-3) or purchase from the creator's [Etsy Store](https://www.etsy.com/listing/1312727008/meshtastic-solar-base-station-off-grid).
![rak19003-micro](/img/enclosures/3dp-kmon-basestation.png)
## Created by tropho/TonyG
### RAK5005 Case
Download from [Printables](https://www.printables.com/model/286651-rak5005-case-for-meshtastic) or purchase from the creator's [Etsy Store](https://www.etsy.com/listing/1158237722/meshtastic-rak5005-case).
![rak5005](/img/enclosures/3dp-tropho-rak5005.png)
### RAK19007 Case
Download from [Printables](https://www.printables.com/model/286657-rak19007-case-for-meshtastic) or purchase from the creator's [Etsy Store](https://www.etsy.com/listing/1302265084/meshtastic-rak19007-case).
![rak19007](/img/enclosures/3dp-tropho-rak19007.png)
### RAK19003 Case
Download from [Printables](https://www.printables.com/model/286662-rak19003-case-for-meshtastic) or purchase from the creator's [Etsy Store](https://www.etsy.com/listing/1316287559/meshtastic-rak19003-case).
![rak19003](/img/enclosures/3dp-tropho-rak19003.png)
### RAK19003 (Micro) Case
Download from [Printables](https://www.printables.com/model/286664-rak19003-micro-case-for-meshtastic) or purchase from the creator's [Etsy Store](https://www.etsy.com/listing/1302260756/meshtastic-rak19003-micro-case).
![rak19003-micro](/img/enclosures/3dp-tropho-rak19003-micro.png)

View file

@ -0,0 +1,26 @@
---
id: wisBlock
title: RAK WisBlock Devices
sidebar_label: RAK WisBlock
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
<!-- RAK LOGO here? -->
The RAK WisBlock is a modular hardware system that can be used to build Meshtastic devices.
RAK Wireless currently sells a [Meshtastic Starter kit](https://store.rakwireless.com/products/wisblock-meshtastic-starter-kit) that has the minimum you need to get started.
If you wish to purchase parts separately, you will need a [WisBlock Base Board](/docs/hardware/devices/rak/base-board) and a [WisBlock Core Module](/docs/hardware/devices/rak/core-module). Please ensure you choose the correct operating frequency for your country when purchasing.
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.
## Resources
- RAK's Wisblock [Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock)
- RAK's [GitHub Page](https://github.com/RAKWireless/WisBlock) for the WisBlock

View file

@ -0,0 +1,76 @@
---
id: peripherals
title: Supported Peripherals
sidebar_label: Peripherals
sidebar_position: 3
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
<Tabs
groupId="rakmodules"
defaultValue="GPS"
values={[
{label: 'GPS Module', value: 'GPS'},
{label: 'Buzzer', value: 'Buzzer'},
{label: 'I/O Module', value: 'IO'},
{label: 'Environmental Sensor', value:'BME680'}
]}>
<TabItem value="GPS">
To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](https://store.rakwireless.com/collections/wisblock-sensor/products/rak1910-max-7q-gnss-location-sensor). It is supported on slot A of the 5005 board via UART.
- uBlox MAX-7Q GPS module
- GPS and GLONASS satellite support
Further information on the RAK1910 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1910/Overview/#product-description).
To add a GPS to the RAK19003 base board, you need the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via I<sup>2</sup>C on slot B for firmware versions 1.49 and above.
- uBlox Zoe-M8Q GNSS receiver
- GPS, GLONASS, QZSS and BeiDou satellite support
Further information on the RAK12500 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12500/Overview/#product-description).
</TabItem>
<TabItem value="Buzzer">
The [RAK18001 Buzzer Module](https://store.rakwireless.com/products/wisblock-buzzer-module-rak18001) is currently being tested for integration with the External Notifications plugin. There is currently a known conflict with buzzer if the module is placed in Slot D, although other slots should work.
Further information on the RAK18001 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK18001/Overview/#product-description).
</TabItem>
<TabItem value="IO">
The [RAK13002 IO Module](https://store.rakwireless.com/collections/wisblock-interface/products/adapter-module-rak13002) can be used to, among other things, add a user button to the RAK base boards (excluding the RAK19003 Mini base board). It features a number of different interface options:
- 2x I<sup>2</sup>C interfaces
- 2x UART interfaces
- 1x SPI interface
- Upto 6x GPIOs
- 2x ADC interfaces
- 3.3v Power rails
There is development activity in progress to get sensors such as this added to the Meshtastic Core.
Further information on the RAK13002 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13002/Overview).
</TabItem>
<TabItem value="BME680">
The [RAK1906 Environmental Sensor](https://store.rakwireless.com/products/rak1906-bme680-environment-sensor) is based on the Bosch BME680 module and has the following features:
- Temperature measurement (Range -40&deg;C to +85&deg;C)
- Humidity measurement (Range 0% to 100%)
- Barometer measurement (Range 300 to 1100 hPa)
- Air Quality measurement
There is development activity in progress to get sensors such as this added to the Meshtastic Core.
Further information on the RAK1906 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1906/Overview/#product-description).
</TabItem>
</Tabs>

View file

@ -0,0 +1,58 @@
---
id: screens
title: Screens
sidebar_label: Screens
sidebar_position: 2
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
There are currently two different screens supported by the RAK WisBlock system:
<Tabs
groupId="rakscreens"
defaultValue="OLED"
values={[
{label: 'OLED Display', value: 'OLED'},
{label: 'E-Ink Display', value: 'E-Ink'}
]}>
<TabItem value="OLED">
The [RAK1921 OLED display](https://store.rakwireless.com/products/rak1921-oled-display-panel) is a 0.96 inch monochrome display.
- 0.96 inch OLED display
- Resolution 128 x 64 pixels
- I<sup>2</sup>C interface
This item requires soldering.
Further information on the RAK1921 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1921/Overview/#product-description).
Similar modules are widely available from other suppliers, but do check the boards as some have the VDD and GND pins swapped round.
[<img alt="0.96 inch OLED display" src="/img/hardware/screen.png" style={{zoom:'25%'}} />](/img/hardware/screen.png)
</TabItem>
<TabItem value="E-Ink">
The [RAK1400 EPD module](https://store.rakwireless.com/products/wisblock-epd-module-rak14000) is an ultra low power E-Ink display with three user buttons.
- 2.13 inch black and white E-Ink display
- Three button module
- Resolution 212 x 104 pixels
- Occupies the IO Port of a Wisblock Base
- Firmware for 5005 with RAK14000 e-paper: [`firmware-rak4631_eink-1.3.x.uf2`](/downloads)
<img
alt="RAK4631 5005 14000"
src="/img/hardware/rak4631_5005_epaper.jpg"
style={{ zoom: '50%' }}
/>
Please note only the white-black display is supported at this time, the white-black-red display may work, but is not supported.
Further information on the RAK14000 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK14000/Overview/#product-description).
</TabItem>
</Tabs>

View file

@ -1,339 +0,0 @@
---
id: wisBlock
title: RAK WisBlock
sidebar_label: RAK WisBlock
sidebar_position: 1
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
The RAK WisBlock is a low power modular hardware system that can be used to build Meshtastic devices. Soldering is only required for the optional OLED screen.
RAK Wireless currently sell a [Meshtastic Starter kit](https://store.rakwireless.com/products/wisblock-meshtastic-starter-kit) that has the minimum you need to get started. If you wish to purchase parts separately, you will need a [base board](https://store.rakwireless.com/collections/wisblock-base), a [core 4631 LPWAN module](https://store.rakwireless.com/collections/wisblock-core/products/rak4631-lpwan-node), and optionally a GPS Sensor, screen or other module to build a Meshtastic device. Please ensure you choose the correct operating frequency for your country when purchasing.
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.
## RAK base boards
<Tabs
groupId="rakbase board"
defaultValue="RAK5005-O"
values={[
{label: 'RAK5005-O', value: 'RAK5005-O'},
{label: 'RAK19003', value: 'RAK19003'},
{label: 'RAK19001', value: 'RAK19001'},
{label: 'RAK19007', value:'RAK19007'}
]}>
<TabItem value="RAK5005-O">
[RAK5005-O](https://store.rakwireless.com/products/rak5005-o-base-board) - The original WisBlock Base Board
- Reset button
- OLED screen support (OLED screen sold separately)
- Connector for 3.7v LiPo battery (with charge controller)
- Connector for 5v solar panel (max 5.5v)
- 1x Core Module slot
- 1x WisBlock IO Module slot
- 4x WisBlock Sensor Module slots
- I<sup>2</sup>C, UART, GPIOs and analog input accessible with solder contacts
- Micro USB port for debugging and power
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).
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).
- [Update the bootloader](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Quickstart/#updating-the-bootloader) on first use! This can be done easily with [Meshtastic-flasher](https://github.com/meshtastic/Meshtastic-gui-installer).
- Firmware for 5005 base board: [`firmware-rak4631-1.x.x.uf2`](/downloads)
<img
alt="RAK4631 5005"
src="/img/hardware/rak4631_5005.png"
style={{ zoom: '50%' }}
/>
</TabItem>
<TabItem value="RAK19003">
[RAK19003](https://store.rakwireless.com/products/wisblock-base-board-rak19003) - WisBlock Mini Base Board
- Reset button
- OLED screen support (OLED screen sold separately)
- Connector for 3.7v LiPo battery (with charge controller)
- Connector for 5v solar panel (max 5.5v)
- 1x Core Module slot
- 2x WisBlock Sensor Module slots
- I<sup>2</sup>C, UART and BOOT headers accessible with solder contacts
- Micro USB port for debugging and power
Further information on the RAK19003 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19003/Overview/#product-description).
It is currently not possible to add a user button to this board.
- [Update the bootloader](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Quickstart/#updating-the-bootloader) on first use! This can be done easily with [Meshtastic-flasher](https://github.com/meshtastic/Meshtastic-gui-installer).
- Firmware for 19003 base board: [`firmware-rak4631-1.x.x.uf2`](/downloads)
<img
alt="RAK4631 19003"
src="/img/hardware/rak4631_19003.png"
style={{ zoom: '50%' }}
/>
</TabItem>
<TabItem value="RAK19001">
[RAK19001](https://store.rakwireless.com/products/rak19001-wisblock-dual-io-base-board) - WisBlock Dual IO Base Board
:::caution
This board should work with the RAK5005-O firmware, however this is currently unconfirmed.
:::
- Reset and user definable buttons
- OLED screen support (OLED screen sold separately)
- Connector for 3.7v LiPo battery (with charge controller)
- Separate connector for non-rechargeable batteries
- Connector for 5v solar panel (max 5.5v)
- 1x Core Module slot
- 2x WisBlock IO Module slot
- 6x WisBlock Sensor Module slots
- I<sup>2</sup>C, SPI, UART, BOOT and GPIOs accessible with solder contacts
- USB-C port for debugging and power
- Battery selector switch
Further information on the RAK19001 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19001/Overview/#product-description).
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).
</TabItem>
<TabItem value="RAK19007">
[RAK19007](https://store.rakwireless.com/products/rak19007-wisblock-base-board-2nd-gen) - WisBlock Base Board - 2nd Generation
This is an upgrade to the original RAK5005-O base board.
:::caution
This board should work with the RAK5005-O firmware, however this is currently unconfirmed.
:::
- Reset button
- OLED screen support (OLED screen sold separately)
- Connector for 3.7v LiPo battery (with charge controller)
- Connector for 5v solar panel (max 5.5v)
- 1x Core Module slot
- 1x WisBlock IO Module slot
- 4x WisBlock Sensor Module slots
- I<sup>2</sup>C, UART, BOOT and GPIOs accessible with solder contacts
- USB-C port for debugging and power
Further information on the RAK19007 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19007/Overview/#product-description).
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).
</TabItem>
</Tabs>
Flashing the firmware is a simple process. Connect your device to your computer via USB, click the reset button twice, and a drive will appear. On Windows, Linux, or Mac, drag the appropriate .uf2 firmware file onto the root of the drive and the device will restart and the firmware will be updated. Or, you can use [Meshtastic-flasher](https://github.com/meshtastic/Meshtastic-gui-installer). RAK have also provided [Installation instructions](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Quickstart/#rak4631-lora-mesh-via-meshtastic) for Meshtastic.
## Core Module
There are two core modules supported by Meshtastic:
<Tabs
groupId="rakcore"
defaultValue="RAK4631"
values={[
{label: 'RAK4631', value: 'RAK4631'},
{label: 'RAK11200', value: 'RAK11200'}
]}>
<TabItem value="RAK4631">
The main supported code is the [WisBlock LPWAN Module RAK4631](https://store.rakwireless.com/products/rak4631-lpwan-node).
(Please note this is different to the RAK4631-R which uses different firmware incompatible with Meshtastic).
- nRF52840 microprocessor - Bluetooth BLE 5.0 and very low power consumption
- SX1262 - LoRa transceiver
- Frequency options:
- 433 MHz
- 470 MHz
- 799 MHz
- 865 MHz
- 868 MHz
- 915 MHz
- 920 MHz
- 923 MHz
- U.FL antenna connector
<img
alt="RAK4631 Core Module"
src="/img/hardware/rak4631.png"
style={{ zoom: '50%' }}
/>
Further information on the RAK4631 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Overview/#product-description).
</TabItem>
<TabItem value="RAK11200">
The [RAK11200](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200) is currently only supported on the RAK5005-O base board. This provides the benefits of WiFi, but sacrifices the very low power consumption of the nRF microprocessor used on the RAK4631.
- ESP32-WROVER microprocessor - Bluetooth 4.2 & WiFi 802.11 b/g/n
Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description).
The RAK11200 does not contain a LoRa transceiver, and this 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.
The RAK13300 has the following specifications:
- SX1262 - LoRa transceiver
- Frequency options:
- 433 MHz
- 470 MHz
- 864 MHz
- 865 MHz
- 868 MHz
- 915 MHz
- 920 MHz
- 923 MHz
- U.FL antenna connector
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 for 5005 with 11200: [`firmware-11200-1.3.x.bin`](/downloads)
<img
alt="RAK4631 5005 11200"
src="/img/hardware/rak11200.jpg"
style={{ zoom: '50%' }}
/>
</TabItem>
</Tabs>
## Screens
There are currently two different screens supported by the RAK WisBlock system:
<Tabs
groupId="rakscreens"
defaultValue="OLED"
values={[
{label: 'OLED Display', value: 'OLED'},
{label: 'E-Ink Display', value: 'E-Ink'}
]}>
<TabItem value="OLED">
The [RAK1921 OLED display](https://store.rakwireless.com/products/rak1921-oled-display-panel) is a 0.96 inch monochrome display.
- 0.96 inch OLED display
- Resolution 128 x 64 pixels
- I<sup>2</sup>C interface
This item requires soldering.
Further information on the RAK1921 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1921/Overview/#product-description).
Similar modules are widely available from other suppliers, but do check the boards as some have the VDD and GND pins swapped round.
[<img alt="0.96 inch OLED display" src="/img/hardware/screen.png" style={{zoom:'25%'}} />](/img/hardware/screen.png)
</TabItem>
<TabItem value="E-Ink">
The [RAK1400 EPD module](https://store.rakwireless.com/products/wisblock-epd-module-rak14000) is an ultra low power E-Ink display with three user buttons.
- 2.13 inch black and white E-Ink display
- Three button module
- Resolution 212 x 104 pixels
- Occupies the IO Port of a Wisblock Base
- Firmware for 5005 with RAK14000 e-paper: [`firmware-rak4631_eink-1.3.x.uf2`](/downloads)
<img
alt="RAK4631 5005 14000"
src="/img/hardware/rak4631_5005_epaper.jpg"
style={{ zoom: '50%' }}
/>
Please note only the white-black display is supported at this time, the white-black-red display may work, but is not supported.
Further information on the RAK14000 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK14000/Overview/#product-description).
</TabItem>
</Tabs>
## Supported modules
<Tabs
groupId="rakmodules"
defaultValue="GPS"
values={[
{label: 'GPS Module', value: 'GPS'},
{label: 'Buzzer', value: 'Buzzer'},
{label: 'I/O Module', value: 'IO'},
{label: 'Environmental Sensor', value:'BME680'}
]}>
<TabItem value="GPS">
To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](https://store.rakwireless.com/collections/wisblock-sensor/products/rak1910-max-7q-gnss-location-sensor). It is supported on slot A of the 5005 board via UART.
- uBlox MAX-7Q GPS module
- GPS and GLONASS satellite support
Further information on the RAK1910 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1910/Overview/#product-description).
To add a GPS to the RAK19003 base board, you need the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via I<sup>2</sup>C on slot B for firmware versions 1.49 and above.
- uBlox Zoe-M8Q GNSS receiver
- GPS, GLONASS, QZSS and BeiDou satellite support
Further information on the RAK12500 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12500/Overview/#product-description).
</TabItem>
<TabItem value="Buzzer">
The [RAK18001 Buzzer Module](https://store.rakwireless.com/products/wisblock-buzzer-module-rak18001) is currently being tested for integration with the External Notifications plugin. There is currently a known conflict with buzzer if the module is placed in Slot D, although other slots should work.
Further information on the RAK18001 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK18001/Overview/#product-description).
</TabItem>
<TabItem value="IO">
The [RAK13002 IO Module](https://store.rakwireless.com/collections/wisblock-interface/products/adapter-module-rak13002) can be used to, among other things, add a user button to the RAK base boards (excluding the RAK19003 Mini base board). It features a number of different interface options:
- 2x I<sup>2</sup>C interfaces
- 2x UART interfaces
- 1x SPI interface
- Upto 6x GPIOs
- 2x ADC interfaces
- 3.3v Power rails
There is development activity in progress to get sensors such as this added to the Meshtastic Core.
Further information on the RAK13002 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13002/Overview).
</TabItem>
<TabItem value="BME680">
The [RAK1906 Environmental Sensor](https://store.rakwireless.com/products/rak1906-bme680-environment-sensor) is based on the Bosch BME680 module and has the following features:
- Temperature measurement (Range -40&deg;C to +85&deg;C)
- Humidity measurement (Range 0% to 100%)
- Barometer measurement (Range 300 to 1100 hPa)
- Air Quality measurement
There is development activity in progress to get sensors such as this added to the Meshtastic Core.
Further information on the RAK1906 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1906/Overview/#product-description).
</TabItem>
</Tabs>
## RAK Wireless' Resources
- RAK's Wisblock [Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock)
- RAK's [GitHub Page](https://github.com/RAKWireless/WisBlock) for the WisBlock

View file

@ -1,32 +0,0 @@
---
id: station-g1
title: Station G1 device
sidebar_label: Station G1
sidebar_position: 3
---
The Station G1 is the first dedicated hardware to be designed from scratch purely for Meshtastic Licensed (HAM) Operation by Neil Hao. It has been designed to be small and compact with the inclusion of 35dBm high power PA.
Only the US 915 MHz version is available currently. There should be an EU 433 MHz version available in the future.
### Features
- Meshtastic pre-installed
- ESP32 WROOM microprocessor - WiFi & Bluetooth
- Semtech SX1262 - LoRa Transceiver
- Frequency options:
- 915 MHz
- Additional 35dBm Lora Power Amplifier to boost the transmit power
- User button
- 1.3 inch OLED screen
- Optional GPS Module and IO Extension Socket
- Optional 12V Battery Docker which can be used as Backup Power, or in scenarios that require mobility
### Resources
- Firmware file: `firmware-station-g1-1.x.x.bin`
- [Purchase link](https://www.tindie.com/products/neilhao/meshtastic-mesh-device-station-edition/)
[<img alt="Station G1" src="https://uniteng.com/wiki/lib/exe/fetch.php?media=meshtastic:meshtastic_mesh_device_station_edition_overview.jpg" style={{zoom:'25%'}} />](https://uniteng.com/wiki/lib/exe/fetch.php?media=meshtastic:meshtastic_mesh_device_station_edition_overview.jpg)
Further information on the Station G1 can be found on [Unit Engineering's Wiki](https://uniteng.com/wiki/doku.php?id=meshtastic:station).

View file

@ -0,0 +1,13 @@
---
id: buttons
title: Hardware Buttons
sidebar_label: Buttons
sidebar_position: 3
---
## Functionality
- **Program button**
- _**Single press**_ changes the page of information displayed on the screen.
- _**Long press**_ adjusts the contrast of the screen.
- _**Triple press**_ sends a broadcast message of the device position.

View file

@ -0,0 +1,43 @@
---
id: station-g1
title: Station G1 device
sidebar_label: Station G1
sidebar_position: 3
---
The Station G1 is the second dedicated hardware device to be designed from scratch purely for Meshtastic Licensed (HAM) Operation by Neil Hao. It has been designed to be small and compact with the inclusion of 35dBm high power PA.
### Specifications
- **MCU**
- ESP32 WROOM (WiFi & Bluetooth)
- Bluetooth 4.2
- **LoRa Transceiver**
- Semtech SX1262
- Additional 35dBm LoRa Power Amplifier to boost transmit power
- **Frequency options**
- US-915 MHz
- EU-868 MHz
- **Navigation Module**
- ATGM336H-5N-71 (Supports GPS, BDS and GLONASS)
- **Antenna**
- SMA Socket
- **Connectors**
- USB-C
### Features
- Meshtastic pre-installed
- User button
- 1.3 inch OLED screen
- Optional GPS Module and IO Extension Socket
- Optional [12V Battery Docker](https://shop.uniteng.com/product/12v-battery-docker-for-station-edition-g1/) which can be used as Backup Power, or in scenarios that require mobility
### Resources
- Firmware file: `firmware-station-g1-1.x.x.bin`
- [Purchase link](https://www.tindie.com/products/neilhao/meshtastic-mesh-device-station-edition/)
Further information on the Station G1 can be found on [Unit Engineering's Wiki](https://uniteng.com/wiki/doku.php?id=meshtastic:station).
![Station G1](/img/hardware/station-g1.jpg)

View file

@ -1,138 +0,0 @@
---
id: tbeam
title: LILYGO® TTGO T-Beam devices
sidebar_label: LILYGO® T-Beam
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
There are several versions of the T-Beam
<Tabs
groupId="t-beam"
defaultValue="1.1"
values={[
{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 v0.7', value:'0.7'}
]}>
<TabItem value="1.1">
- Meshtastic preinstalled
- ESP32 - WiFi & Bluetooth
- SX1276 - LoRa Transceiver
- Frequency options:
- 433 MHz
- 868 MHz
- 915 MHz
- 923 MHz
- NEO-6M - GPS receiver
- SMA antenna connector
- Power, Program and Reset switches
- **Comes with 0.96 inch OLED display (some soldering required to assemble)**
- Firmware file: `firmware-tbeam-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/4001178678568.html)
[<img alt="LILYGO® TTGO T-Beam Meshtastic" src="/img/hardware/t-beam-meshtastic.png" style={{zoom:'25%'}} />](/img/hardware/t-beam-meshtastic.png)
<!--[<img alt="LILYGO® TTGO T-Beam v1.1" src="/img/hardware/t-beam-v1.1.png" style={{zoom:'35%'}} />](/img/hardware/t-beam-v1.1.png)-->
[<img alt="LILYGO® TTGO T-Beam v1.1 pinmap" src="/img/hardware/t-beam_v1.1_pinmap.webp" style={{zoom:'35%'}} />](/img/hardware/t-beam_v1.1_pinmap.webp)
</TabItem>
<TabItem value="m8n">
- ESP32 - WiFi & Bluetooth
- SX1276 - LoRa Transceiver
- Frequency options:
- 433 MHz
- 868 MHz
- 915 MHz
- 923 MHz
- **NEO-M8N - GNSS receiver (supports GPS, GLONASS, Galileo, BeiDou) - better GPS sensitivity**
- U.FL antenna connector
- Power, Program and Reset switches
- Screen sold separately
- Firmware file: `firmware-tbeam-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/33047631119.html)
[<img alt="LILYGO® TTGO T-Beam M8N" src="/img/hardware/t-beam-m8n.png" style={{zoom:'25%'}} />](/img/hardware/t-beam-m8n.png)
</TabItem>
<TabItem value="sx1262">
- ESP32 - WiFi & Bluetooth
- **SX1262 - LoRa Transceiver - improved performance**
- Frequency options:
- 433 MHz
- 868 MHz
- 915 MHz
- 923 MHz
- **NEO-M8N - GNSS receiver (supports GPS, GLONASS, Galileo, BeiDou) - better GPS sensitivity**
- U.FL antenna connector
- Power, Program and Reset switches
- Screen sold separately
- Firmware file: `firmware-tbeam-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/4001287221970.html)
[<img alt="LILYGO® TTGO T-Beam M8N & SX1262" src="/img/hardware/t-beam-sx1262.png" style={{zoom:'25%'}} />](/img/hardware/t-beam-sx1262.png)
</TabItem>
<TabItem value="0.7">
:::note
This is an earlier version of the T-Beam board, and due to changes in the design in subsequent iterations this board uses a specific firmware file different from the other T-Beam boards.
`firmware-tbeam0.7-1.x.x.bin` is the correct firmware. `firmware-tbeam-1.x.x.bin` is incompatible. For all other T-Beam boards `firmware-tbeam-1.x.x.bin` is the correct selection.
:::
- ESP32 - WiFi & Bluetooth
- SX1276 - LoRa Transceiver
- Frequency options:
- 433 MHz
- 868 MHz
- 915 MHz
- NEO-6M - GPS receiver
- SMA antenna connector
- Power, Program and Reset switches
- No GPS
- Screen sold separately
- Firmware file: `firmware-tbeam0.7-1.x.x.bin`
- [Purchase link](https://www.aliexpress.com/item/4000469332610.html)
[<img alt="LILYGO TTGO T-Beam v0.7" src="/img/hardware/t-beam-v0.7.png" style={{zoom:'25%'}} />](/img/hardware/t-beam-v0.7.png)
[<img alt="LILYGO TTGO T-Beam v0.7 pinmap" src="/img/hardware/t-beam_v0.7_pinmap.jpeg" style={{zoom:'25%'}} />](/img/hardware/t-beam_v0.7_pinmap.jpeg)
</TabItem>
</Tabs>
Further information on the LILYGO® T-Beam and LoRa devices can be found on LILYGO®'s [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series).
:::note
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 650mm, often approaching 700mm.
:::
## Screen
- 0.96 inch OLED I<sup>2</sup>C display
- [Purchase link](https://www.aliexpress.com/item/32922106384.html)
[<img alt="0.96 inch OLED display" src="/img/hardware/screen.png" style={{zoom:'25%'}} />](/img/hardware/screen.png)
To attach the screen, connect VCC to 3v3, GND to GND, SCL to pin 22, and SDA to pin 21 as per the below image.
[<img alt="Connecting the OLED screen to a T-Beam" src="/img/hardware/t-beam-screen.jpg" style={{zoom:'50%'}} />](/img/hardware/t-beam-screen.jpg)

View file

@ -0,0 +1,17 @@
---
id: buttons
title: Hardware Buttons
sidebar_label: Buttons
sidebar_position: 3
---
## Functionality
- **Reset Button (right)**
- _**Single press**_ resets the device.
- **Power Button (left)**
- _**Long press**_ powers the device off or turns it back on again.
- **Program button (middle)**
- _**Single press**_ changes the page of information displayed on the screen.
- _**Long press**_ adjusts the contrast of the screen.
- _**Triple press**_ sends a broadcast message of the device position.

View file

@ -0,0 +1,23 @@
---
id: enclosures
title: Enclosures
sidebar_label: Enclosures
sidebar_position: 3
---
## Created by tropho/TonyG
### T-Beam V5 Case
Download from [Printables](https://www.printables.com/model/127253-t-beam-case-for-meshtastic-v5) or purchase from the creator's [Etsy Store](https://www.etsy.com/listing/1173559418/meshtastic-t-beam-case-for-neo-m8n).
#### Required Hardware
- (x4) M3x16mm socket-head cap screws
- (x4) M3 nuts
- (x4) M2x4mm screws (no nuts) to secure T-Beam to the frame
<img src="/img/enclosures/3dp-tropho-tbeam.jpg" width="400" align="left"/>
<!-- ![TrophoTbeam](/img/enclosures/3dp-tropho-tbeam.jpg) -->

View file

@ -0,0 +1,155 @@
---
id: tbeam
title: LILYGO® TTGO T-Beam Devices
sidebar_label: LILYGO® T-Beam
sidebar_position: 5
---
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.
Further information on the LILYGO® T-Beam devices can be found on LILYGO®'s [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series).
<Tabs
groupId="t-beam"
defaultValue="sx1262"
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'}
]}>
<TabItem value="0.7">
:::caution Firmware Version Notice
This is an earlier version of the T-Beam board. Due to changes in the design this board uses a specific firmware file different from the other T-Beam boards.
:::
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX1276
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- **Navigation Module**
- NEO-6M (GPS receiver)
- **Connectors**
- Micro USB
- Antenna: SMA antenna connector
**Features**
- Meshtastic preinstalled
- Power, Program and Reset switches
- Screen sold separately
- No GPS
**Resources**
- Firmware file: `firmware-tbeam0.7-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4000469332610.html)
![T-Beam v0.7](/img/hardware/t-beam-v0.7.png)
![T-Beam v0.7 pin map](/img/hardware/t-beam_v0.7_pinmap.jpeg)
</TabItem>
<TabItem value="1.1">
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX1276
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- 923 MHz
- **Navigation Module**
- NEO-6M (GPS receiver)
- **Connectors**
- Micro USB
- Antenna: SMA antenna connector
**Features**
- Meshtastic preinstalled
- Power, Program and Reset switches
- **Comes with 0.96 inch OLED display** (soldering required to assemble)
**Resources**
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4001178678568.html)
![TTGO T-Beam v1.1](/img/hardware/t-beam-v1.1.png)
![TTGO T-Beam v1.1 pinmap](/img/hardware/t-beam_v1.1_pinmap.webp)
</TabItem>
<TabItem value="m8n">
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- Semtech SX1276
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- 923 MHz
- **Navigation Module**
- **NEO-M8N - GNSS receiver (supports GPS, GLONASS, Galileo, BeiDou)** (better GPS sensitivity)
- **Connectors**
- Micro USB
- Antenna: U.FL antenna connector
**Features**
- Meshtastic preinstalled
- Power, Program and Reset switches
- Screen sold separately
**Resources**
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/33047631119.html)
![TTGO T-Beam M8N](/img/hardware/t-beam-m8n.png)
</TabItem>
<TabItem value="sx1262">
- **MCU**
- ESP32 (WiFi & Bluetooth)
- **LoRa Transceiver**
- **Semtech SX1262** (improved performance)
- **Frequency options**
- 433 MHz
- 868 MHz
- 915 MHz
- 923 MHz
- **Navigation Module**
- **NEO-M8N - GNSS receiver (supports GPS, GLONASS, Galileo, BeiDou)** (better GPS sensitivity)
- **Connectors**
- Micro USB
- Antenna: U.FL antenna connector
**Features**
- Meshtastic preinstalled
- Power, Program and Reset switches
- Screen sold separately
**Resources**
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4001287221970.html)
![T-Beam M8N & SX1262](/img/hardware/t-beam-sx1262.png)
</TabItem>
</Tabs>

View file

@ -0,0 +1,24 @@
---
id: screens
title: Screens
sidebar_label: Screens
sidebar_position: 2
---
## 0.96 inch OLED I<sup>2</sup>C display
- [Purchase link](https://www.aliexpress.com/item/32922106384.html)
![0.96 inch OLED display](/img/hardware/screen.png)
### Pin map
To attach the screen:
1. Connect VCC to 3v3
2. Connect GND to GND
3. Connect SCL to pin 22
4. Connect SDA to pin 21
![Connecting the OLED screen to a T-Beam](/img/hardware/t-beam-screen.jpg)

View file

@ -1,45 +0,0 @@
---
id: techo
title: LILYGO® TTGO T-Echo devices
sidebar_label: LILYGO® T-Echo
sidebar_position: 2
---
The T-Echo is the latest device to be release by LILYGO® supporting a low power consumption micro-controller.
### Features
- nRF52840 - Bluetooth BLE 5.0, NFC and very low power consumption
- SX1262 - LoRa transceiver
- 1.54" eInk display
- L76K - GNSS receiver - Supporting GPS, BeiDou, GLONASS & QZSS
- Reset, Program and capacitive touch buttons
- U.FL antenna connector
- Optional BME280 - Humidity and Pressure Sensor
- Comes with a case and battery
- Firmware file: `firmware-t-echo-2.x.x.uf2`
- [Purchase link](https://www.aliexpress.com/item/1005002842456390.html)
- TTGO's [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGO-T-Echo) for the T-Echo
<img
alt="LILYGO T-Echo"
src="/img/hardware/t-echo.png"
style={{ zoom: '15%' }}
/>
### T-Echo button functions
- Capacitive top button
- A short press refreshes the current screen
- Button 1
- A single press resets the device
- A double press puts the device into bootloader mode ready to receive a new firmware
- Button 2
- A single press changes the page displayed on the device
- A double press turns the screen backlight on/off
- A long press turns the device off
[<img alt="LILYGO T-Echo" src="/img/hardware/t-echo-lilygo.jpg" style={{zoom:'25%'}} />](/img/hardware/t-echo-lilygo.jpg)

View file

@ -0,0 +1,21 @@
---
id: buttons
title: Hardware Buttons
sidebar_label: Buttons
sidebar_position: 3
---
## Functionality
- **Capacitive Touch Button (Top)**
- _**Short press**_ _currently no functionality_
- **Reset Button (Button 1)**
- _**Single press**_ resets the device.
- _**Double press**_ puts the device into bootloader mode ready to receive new firmware.
- **Program/Power Button (Button 2)**
- _**Single press**_ changes the page displayed on the device.
- _**Double press**_ turns the screen backlight on/off
- _**Long press**_ signals the device to shutdown.
![TechoButtons](/img/hardware/t-echo-lilygo.jpg)

View file

@ -0,0 +1,16 @@
---
id: enclosures
title: Enclosures
sidebar_label: Enclosures
sidebar_position: 3
---
## Created by BrianN
### T-Echo Expedition Case
Download from [Thingiverse](https://www.thingiverse.com/thing:5028720).
<img src="/img/enclosures/3dp-briann-techo-exp.jpg" width="400" align="left"/>
<!-- ![T-Echo Expedition](/img/enclosures/3dp-briann-techo-exp.jpg) -->

View file

@ -0,0 +1,37 @@
---
id: techo
title: LILYGO® TTGO T-Echo devices
sidebar_label: LILYGO® T-Echo
sidebar_position: 2
---
The T-Echo is the latest device to be release by LILYGO® supporting a low power consumption micro-controller.
### Specifications
- **MCU**
- nRF52840
- Bluetooth BLE 5.0 & NFC
- Very low power consumption
- **LoRa Transceiver**
- Semtech SX1262
- **Frequency options**
- 915 MHz
- **Navigation Module**
- L76K GNSS receiver (Supports GPS, BeiDou, GLONASS & QZSS)
- **Connectors**
- U.FL antenna connector
### Features
- Reset, Program and capacitive touch buttons
- 1.54" eInk display
- Optional BME280 - Humidity and Pressure Sensor
- Comes with a case and battery
### Resources
- Firmware file: `firmware-t-echo-2.x.x.uf2`
- [Purchase link](https://www.aliexpress.com/item/1005002842456390.html)
- TTGO's [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGO-T-Echo) for the T-Echo
![LILYGO T-Echo](/img/hardware/t-echo.png)

View file

@ -1,8 +0,0 @@
---
id: 3dprinted-enclosure
title: 3D Printed Enclosures
sidebar_label: 3D Printed
sidebar_position: 1
---
... WIP

View file

@ -1,7 +0,0 @@
label: Enclosures
collapsible: true
position: 3
link:
type: generated-index
title: Enclosures
slug: enclosures

View file

@ -1,16 +0,0 @@
---
id: buttons
title: Buttons
sidebar_label: Buttons
sidebar_position: 3
---
A number of devices have buttons that can be used to interact with the firmware. These buttons have a number of different functions:
- Reset button - This is present on most devices.
- Power button - This is present on some devices. A long press powers the device off or turns it back on again.
- Program button - This is present of some devices and has a number of functions:
- Single press - This changes the page of information displayed on the screen.
- Double press - This sets the Bluetooth pairing code to `123456` (useful if you do not have a screen on the device).
- Long press - This adjusts the contrast of the screen.
- Long press during reboot - This turns on the software WiFi access point on devices that support WiFi.

View file

@ -1,32 +0,0 @@
---
id: screens
title: Screens
sidebar_label: Screens
sidebar_position: 2
---
A number of devices have screens capable of displaying the messages received, information about the mesh, and other details. On powering the device it will display the Meshtastic splash screen with the version number for a couple of seconds:
![Splash screen](/img/screen/mesh-splash.jpg)
The screen is split up into pages, through which you can navigate using the program button as described above. The first page to be displayed will be the message screen where received messages are displayed along with the name of the node it came from. The devices will automatically switch to this page when a new message is received.
![Message page](/img/screen/mesh-message.jpg)
The next pages display information about the nodes that are currently on the mesh. This includes the distance and direction to that node, the signal strength, and the time last seen.
![Node page](/img/screen/mesh-node1.jpg) ![Node page](/img/screen/mesh-node2.jpg)
The next page shows information about the device, battery power, current / total nodes, number of GPS satellites seen, channel name, last digits of the MAC address, and a brief log including the names of the last nodes to join the mesh.
![Channel page](/img/screen/mesh-channel.jpg)
The final page shows current battery voltage and percent charge, as well as noting how long the device has been online and the current GPS time, and GPS location.
![GPS page](/img/screen/mesh-gps.jpg)
If the device WiFi has been enabled (only possible on ESP32 devices), another page appears displaying information about the WiFi settings, IP address, and number of devices connected to the WiFi.
![WiFi page](/img/screen/mesh-wifi.jpg)
With a further press of the program button, the screen will cycle round to the message page.

View file

@ -10,7 +10,7 @@ sidebar_position: 9
This project is still pretty young but moving at a pretty good pace. Not all features are fully implemented in the current alpha builds.
- We don't make these devices and they haven't been tested by UL or the FCC. If you use them, you are experimenting and we can't promise they won't burn your house down ;-)
- The encryption implementation is good but see this list of [caveats](/docs/about/overview/encryption#summary-of-strengthsweaknesses-of-our-current-implementation) to determine risks you might face.
- The encryption implementation is good but see this list of [caveats](/docs/overview/encryption#summary-of-strengthsweaknesses-of-our-current-implementation) to determine risks you might face.
## Legal FAQ

View file

@ -8,4 +8,4 @@ You are hereby granted a two-year non-exclusive license to use the Meshtastic®
We ask that you include a line in your support text that states:
> Meshtastic® is a registered trademark of Geeksville Industries LLC. Meshtastic software components are released under various licenses, see GitHub for details. No warranty is provided - use at your own risk.
> Meshtastic® is a registered trademark of Meshtastic LLC. Meshtastic software components are released under various licenses, see GitHub for details. No warranty is provided - use at your own risk.

View file

@ -4,11 +4,11 @@ title: Trademark Rules & Brand Guidelines
sidebar_label: Trademark
---
Meshtastic® is a registered trademark of Geeksville Industries LLC. Meshtastic software components are released under various licenses, see [GitHub](https://github.com/meshtastic) for details. No warranty is provided - use at your own risk.
Meshtastic® is a registered trademark of Meshtastic LLC. Meshtastic software components are released under various licenses, see [GitHub](https://github.com/meshtastic) for details. No warranty is provided - use at your own risk.
# Meshtastic Trademark Policy
Meshtastic, and Meshtastic logo ("Meshtastic Logo"), either separately or in combination, are hereinafter referred to as "Meshtastic Trademarks" and are trademarks of the Geeksville Industries LLC. Except as provided in these guidelines, you may not use the Meshtastic Trademarks or any confusingly similar mark as a trademark for your product, or use the Meshtastic Trademarks in any other manner that might cause confusion in the marketplace, including but not limited to in advertising, on websites, or on software. In fact, the law obligates trademark owners to police their marks and prevent the use of confusingly similar names by third parties. If you have questions about this policy, please contact the Trademark Supervisor by enquiring at [trademark@meshtastic.org](mailto:trademark@meshtastic.org).
Meshtastic, and Meshtastic logo ("Meshtastic Logo"), either separately or in combination, are hereinafter referred to as "Meshtastic Trademarks" and are trademarks of the Meshtastic LLC. Except as provided in these guidelines, you may not use the Meshtastic Trademarks or any confusingly similar mark as a trademark for your product, or use the Meshtastic Trademarks in any other manner that might cause confusion in the marketplace, including but not limited to in advertising, on websites, or on software. In fact, the law obligates trademark owners to police their marks and prevent the use of confusingly similar names by third parties. If you have questions about this policy, please contact the Trademark Supervisor by enquiring at [trademark@meshtastic.org](mailto:trademark@meshtastic.org).
# Usage That Does Not Require Written Permission
@ -120,7 +120,7 @@ One of the purposes of Meshtastic is to encourage the use of Meshtastic software
When using the Meshtastic Trademarks you must provide the proper trademark symbols and a trademark attribution statement.
Acceptable: Use for the first instance of the Meshtastic Logo include the ® mark, and include the statement "The Meshtastic logo trademark is the trademark of Geeksville Industries LLC."
Acceptable: Use for the first instance of the Meshtastic Logo include the ® mark, and include the statement "The Meshtastic logo trademark is the trademark of Meshtastic LLC."
Unacceptable: Never using the ® mark for Meshtastic Logo, nor a trademark statement per the guidelines.
@ -154,6 +154,6 @@ Except as prohibited by law, the person or entity who is using the Meshtastic Tr
## Logo Usage Guidelines
The Meshtastic logo is a trademark of Geeksville Industries LLC. In order to protect and grow the Meshtastic brand, we have a distinguishable logo. When displaying the Meshtastic logo, please follow our standard Trademark Guidelines. Other sizes and resolutions of the logo, some suitable for print, can be found [here](https://github.com/meshtastic/design).
The Meshtastic logo is a trademark of Meshtastic LLC. In order to protect and grow the Meshtastic brand, we have a distinguishable logo. When displaying the Meshtastic logo, please follow our standard Trademark Guidelines. Other sizes and resolutions of the logo, some suitable for print, can be found [here](https://github.com/meshtastic/design).
To join the discussion about Meshtastic Trademark policies, and participate in shaping future policy visit the [Meshtastic Discourse](http://meshtastic.discourse.group) or [Meshtastic Discord](https://discord.com/invite/UQJ5QuM7vq).

View file

@ -1,5 +1,5 @@
---
id: android-installation
id: installation
title: Android Application Installation
sidebar_label: Installation
sidebar_position: 1
@ -44,6 +44,20 @@ It is recommended that you follow the [Meshtastic Discourse Alpha Testers](https
_Google Play and the Google Play logo are trademarks of Google LLC._
### Install with Obtainium
1. Download and Install the Obtanium app from [Github](https://github.com/ImranR98/Obtainium).
2. Open the Obtanium app and navigate to `+ Add App`.
3. Enter the Meshtastic Android Github Releases address as follows: `https://github.com/meshtastic/Meshtastic-Android/releases`.
4. Under `Additional Options for Github` toggle as desired `Include prereleases`* or `Fallback to older releases` and press `Add`.
5. The first time you add an application, obtainium will prompt you for permission to install unknown apps, you will need to toggle `Allow from this source` and press back. Obtainium will download the Android .APK from the Github release page.
6. Press `Install`. Android Installer will prompt "Do you want to install this app?" press `Install`.
7. Press `Open`.
Obtanium will provide notifications when a new release version of the Meshtastic App is available and allow you to update it from within the app.
*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.
### Install by Sideloading
The app can also be sideloaded by downloading the .APK from the [Github Releases](https://github.com/meshtastic/Meshtastic-Android/releases/latest) page.

View file

@ -1,5 +1,5 @@
---
id: android-usage
id: usage
title: Android Application Usage
sidebar_label: Usage
sidebar_position: 2

View file

@ -1,5 +1,5 @@
---
id: apple-apps-usage
id: usage
title: Apple Application Usage
sidebar_label: Usage
---

View file

@ -0,0 +1,10 @@
---
title: Community
slug: /software/community
sidebar_label: Community
sidebar_position: 10
---
## Simulator
- https://github.com/GUVWAF/Meshtasticator

View file

@ -91,12 +91,14 @@ sudo apt install -y python3 python3-pip python3-venv
</Tabs>
### Install App
### Install or Upgrade App
For **Windows**, the [installer](https://github.com/meshtastic/Meshtastic-gui-installer/releases/download/winapp1.0.3/meshtastic-flasher.zip) will manage installing python and flasher updates automatically.
For **macOS** and **Linux**, it is recommended that you install using `pip`.
Note: Update an existing installation using `pip install meshtastic-flasher -U`
<Tabs
groupId="operating-system"
defaultValue="linux"

View file

@ -17,8 +17,8 @@
"@docusaurus/core": "2.2.0",
"@docusaurus/plugin-content-docs": "2.2.0",
"@docusaurus/preset-classic": "2.2.0",
"@headlessui/react": "^1.7.3",
"@heroicons/react": "^2.0.12",
"@headlessui/react": "^1.7.4",
"@heroicons/react": "^2.0.13",
"@leenguyen/react-flip-clock-countdown": "^1.3.1",
"@mdx-js/react": "^1.6.22",
"@meshtastic/meshtasticjs": "^0.6.113",
@ -32,17 +32,17 @@
"react-icons": "^4.6.0",
"react-responsive-carousel": "^3.2.23",
"swr": "^1.3.0",
"tailwindcss": "^3.2.1",
"tailwindcss": "^3.2.3",
"url-search-params-polyfill": "^8.1.1",
"use-breakpoint": "^3.0.3"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "2.2.0",
"@meshtastic/eslint-config": "^1.0.8",
"@tailwindcss/typography": "^0.5.7",
"@tailwindcss/typography": "^0.5.8",
"@tsconfig/docusaurus": "^1.0.6",
"@types/node": "^18.11.9",
"@types/react": "^18.0.24",
"@types/react": "^18.0.25",
"@types/react-dom": "^18.0.8",
"prettier": "^2.7.1",
"typescript": "^4.8.4"

File diff suppressed because it is too large Load diff

@ -1 +1 @@
Subproject commit a0fe9ec8614cd27af7691869ccbd20c39e48a086
Subproject commit c82c15aac71b9134d96c03dbe319916739cc8314

View file

@ -6,4 +6,4 @@ sidebar_label: c
# Error : Something happened
Please go to [Android Usage](/docs/software/android/android-usage#join-a-channel) for more information.
Please go to [Android Usage](/docs/software/android/usage#join-a-channel) for more information.

View file

@ -6,4 +6,4 @@ sidebar_label: d
# Error : Something happened
Please go to [Android Usage](/docs/software/android/android-usage#join-a-channel) for more information.
Please go to [Android Usage](/docs/software/android/usage#join-a-channel) for more information.

View file

@ -27,17 +27,12 @@ export const FirmwareCard = ({
<div className="card__body">
<p>{description}</p>
</div>
<div className="card__footer">
{release?.length ? (
<>
<a
href={release[0].assets[1]?.browser_download_url}
className="button button--secondary button--block"
>
Download
</a>
<div className="card__footer mt-auto">
<div className="margin-top--sm">
<h3>Older versions</h3>
<details>
<summary>
Older Versions
</summary>
{release.slice(1, 6).map((release) => {
return (
<div key={release.id}>
@ -47,7 +42,16 @@ export const FirmwareCard = ({
</div>
);
})}
</details>
</div>
{release?.length ? (
<>
<a
href={release[0].assets[1]?.browser_download_url}
className="button button--secondary button--block margin-top--sm"
>
Download {variant}
</a>
</>
) : (
<button disabled className="button button--secondary button--block">

View file

@ -35,7 +35,7 @@ const Firmware = (): JSX.Element => {
>
<div className="container mt-8 flex flex-col gap-3">
<h1 className="m-2">Flasher</h1>
<div className="flex w-full overflow-hidden rounded-xl xl:h-64">
<div className="flex w-full overflow-hidden rounded-xl">
<div className="flex w-1/5 bg-gradient-to-r from-green-500 to-primary">
<BoltIcon className="m-auto h-20" />
</div>
@ -47,7 +47,7 @@ const Firmware = (): JSX.Element => {
<div className="card__body">
<p>Desktop application to flash fimware to your devices.</p>
</div>
<div className="card__footer" style={{ marginTop: '1rem' }}>
<div className="card__footer mt-auto">
<a
href="https://github.com/meshtastic/Meshtastic-gui-installer/releases/latest"
className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
@ -68,7 +68,7 @@ const Firmware = (): JSX.Element => {
boards.
</p>
</div>
<div className="card__footer" style={{ marginTop: '1rem' }}>
<div className="card__footer mt-auto">
<a
href="https://flasher.meshtastic.org/"
className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
@ -87,12 +87,12 @@ const Firmware = (): JSX.Element => {
Devices such as T-Echo and RAK4631 are flashed via filesystem.
</p>
</div>
<div className="card__footer" style={{ marginTop: '1rem' }}>
<div className="card__footer mt-auto">
<a
href="/docs/getting-started/flashing-firmware/nrf52/drag-n-drop"
className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
>
view Instructions
View Instructions
</a>
</div>
</div>
@ -100,18 +100,24 @@ const Firmware = (): JSX.Element => {
</div>
{/* */}
<h1 className="m-2">Apps</h1>
<div className="flex w-full overflow-hidden rounded-xl lg:h-48">
<div className="flex w-full overflow-hidden rounded-xl">
<div className="flex w-1/5 bg-gradient-to-r from-rose-500 to-primary">
<ComputerDesktopIcon className="m-auto h-20" />
</div>
<div className="flex w-full flex-col bg-primary lg:flex-row">
<div className="flex p-4 lg:w-1/3">
<div className="flex flex-grow rounded-md border-2 border-secondary bg-primary py-4 shadow-md hover:brightness-90 lg:py-0">
<div className="flex w-full flex-col columns-3 bg-primary lg:flex-row">
<div className="card m-4 border-2 border-secondary">
<div className="card__header">
<h3>Apple</h3>
</div>
<div className="card__body flex items-center">
<div className="m-auto">
<FaApple className="h-20 w-20" />
</div>
<div className="m-auto flex flex-col gap-3">
<h2>Apple</h2>
</div>
<div className="card__body">
Available on MacOS & iOS. Requires MacOS Ventura or iOS 16+.
</div>
<div className="card__footer mt-auto">
<a
target="_blank"
rel="noopener noreferrer"
@ -123,19 +129,24 @@ const Firmware = (): JSX.Element => {
</a>
</div>
</div>
<div className="card m-4 border-2 border-secondary">
<div className="card__header">
<h3>Android</h3>
</div>
<div className="flex p-4 lg:w-1/3">
<div className="relative flex flex-grow rounded-md border-2 border-secondary bg-primary py-4 shadow-md hover:brightness-90 lg:py-0">
<div className="card__body flex items-center">
<div className="m-auto">
<FaAndroid className="h-20 w-20" />
</div>
<div className="m-auto flex flex-col gap-3">
<h2>Android</h2>
</div>
<div className="card__body">
Sideloading also available.
</div>
<div className="card__footer mt-auto">
<a
className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
target="_blank"
rel="noopener noreferrer"
href="https://meshtastic.org/docs/software/android/android-installation"
href="https://meshtastic.org/docs/software/android/installation"
className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
>
F-Droid
<ArrowTopRightOnSquareIcon className="m-auto ml-2 h-4" />
@ -144,35 +155,39 @@ const Firmware = (): JSX.Element => {
target="_blank"
rel="noopener noreferrer"
href="https://play.google.com/store/apps/details?id=com.geeksville.mesh&referrer=utm_source=downloads-page"
className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
className="mt-4 flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
>
Play Store
<ArrowTopRightOnSquareIcon className="m-auto ml-2 h-4" />
</a>
</div>
</div>
<div className="card m-4 border-2 border-secondary">
<div className="card__header">
<h3>Web</h3>
</div>
<div className="flex p-4 lg:w-1/3">
<div className="flex flex-grow rounded-md border-2 border-secondary bg-primary py-4 shadow-md hover:brightness-90 lg:py-0">
<div className="card__body flex items-center">
<div className="m-auto">
<GlobeAltIcon className="h-20 w-20" />
</div>
<div className="m-auto flex flex-col gap-3">
<h2>Web</h2>
</div>
<div className="card__body">
Requires Chromium based browsers.
</div>
<div className="card__footer mt-auto">
<a
target="_blank"
rel="noopener noreferrer"
href="https://client.meshtastic.org"
className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200"
>
meshtastic.org
client.meshtastic.org
<ArrowTopRightOnSquareIcon className="m-auto ml-2 h-4" />
</a>
</div>
</div>
</div>
</div>
</div>
{/* */}
<h1 className="m-2">Firmware</h1>
<div className="flex w-full overflow-hidden rounded-xl">
@ -202,12 +217,12 @@ const Firmware = (): JSX.Element => {
things.
</p>
</div>
<div className="card__footer" style={{ marginTop: '1rem' }}>
<div className="card__footer mt-auto">
<a
href="https://nightly.link/meshtastic/firmware/workflows/main/master/built.zip"
className="button button--secondary button--block"
>
Download
Download Bleeding
</a>
</div>
</div>

Some files were not shown because too many files have changed in this diff Show more