Lint Markdown files
|
@ -21,7 +21,7 @@ Everyone contributes in a different way. Join the [Meshtastic Discord](https://d
|
||||||
|
|
||||||
### What versions of Android does the Meshtastic Android App require?
|
### What versions of Android does the Meshtastic Android App require?
|
||||||
|
|
||||||
Minimum requirement is Android 5 (Lollipop 2014, first BLE support), however at least Android 6 (Marshmallow 2015) is recommended as Bluetooth is more stable. While Android 5/6 are officially supported by Meshtastic, it is *not* recommended that you purchase devices with these versions due to their limited OS support and limited battery life due to age. Many newer models exist that are very affordable. A good resource to use when researching affordable devices is the [LineageOS Supported Devices List](https://wiki.lineageos.org/devices/).
|
Minimum requirement is Android 5 (Lollipop 2014, first BLE support), however at least Android 6 (Marshmallow 2015) is recommended as Bluetooth is more stable. While Android 5/6 are officially supported by Meshtastic, it is _not_ recommended that you purchase devices with these versions due to their limited OS support and limited battery life due to age. Many newer models exist that are very affordable. A good resource to use when researching affordable devices is the [LineageOS Supported Devices List](https://wiki.lineageos.org/devices/).
|
||||||
|
|
||||||
### What does the icon next to the message mean?
|
### What does the icon next to the message mean?
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ Hold down the left PWR button for about 10 seconds and the display should turn o
|
||||||
|
|
||||||
Push the left PWR button for about 1 second.
|
Push the left PWR button for about 1 second.
|
||||||
|
|
||||||
### Functionality of the T-Beam Buttons ###
|
### Functionality of the T-Beam Buttons
|
||||||
|
|
||||||
[T-Beam Buttons](/docs/hardware/devices/tbeam/buttons) explained here
|
[T-Beam Buttons](/docs/hardware/devices/tbeam/buttons) explained here
|
||||||
|
|
||||||
|
@ -140,16 +140,17 @@ Meshtastic can be used by both unlicensed people and licensed HAM operators.
|
||||||
If you use your HAM radio license with Meshtastic, consider both the privileges and restrictions:
|
If you use your HAM radio license with Meshtastic, consider both the privileges and restrictions:
|
||||||
|
|
||||||
#### Privileges
|
#### Privileges
|
||||||
|
|
||||||
- Increased Transmit Power
|
- Increased Transmit Power
|
||||||
- Up to 1500W transmit power! [FCC Part 97.313](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-D/section-97.313)
|
- Up to 1500W transmit power! [FCC Part 97.313](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-D/section-97.313)
|
||||||
- Higher Gain Antennas
|
- Higher Gain Antennas
|
||||||
|
|
||||||
#### Restrictions
|
#### Restrictions
|
||||||
- Plain-Text Only
|
|
||||||
- On amateur radio bands, encryption is illegal. [FCC Part 97.113.C](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-B/section-97.113)
|
|
||||||
- Lack of Privacy
|
|
||||||
- As a HAM operator, it is a requirement that you identify yourself by your call sign periodically when transmitting. Your call sign will be publicly transmitted at least once every 10 minutes at minimum. [FCC Part 97.119.A](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-B/section-97.119)
|
|
||||||
|
|
||||||
|
- Plain-Text Only
|
||||||
|
- On amateur radio bands, encryption is illegal. [FCC Part 97.113.C](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-B/section-97.113)
|
||||||
|
- Lack of Privacy
|
||||||
|
- As a HAM operator, it is a requirement that you identify yourself by your call sign periodically when transmitting. Your call sign will be publicly transmitted at least once every 10 minutes at minimum. [FCC Part 97.119.A](https://www.ecfr.gov/current/title-47/chapter-I/subchapter-D/part-97/subpart-B/section-97.119)
|
||||||
|
|
||||||
### How do I set my HAM call sign?
|
### How do I set my HAM call sign?
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ slug: /introduction
|
||||||
sidebar_position: 1
|
sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
import Link from '@docusaurus/Link';
|
import Link from "@docusaurus/Link";
|
||||||
|
|
||||||
Meshtastic® is a project that enables you to use inexpensive LoRa radios as a long range off-grid communication platform in areas without existing or reliable communications infrastructure. This project is 100% community driven and open source!
|
Meshtastic® is a project that enables you to use inexpensive LoRa radios as a long range off-grid communication platform in areas without existing or reliable communications infrastructure. This project is 100% community driven and open source!
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@ If you are interested in a more technical overview of how Meshtastic works, visi
|
||||||
|
|
||||||
<div className="indexCtasBody">
|
<div className="indexCtasBody">
|
||||||
<Link
|
<Link
|
||||||
className={'button button--outline button--lg cta--button'}
|
className={"button button--outline button--lg cta--button"}
|
||||||
to={'/docs/overview'}
|
to={"/docs/overview"}
|
||||||
>
|
>
|
||||||
Technical Overview
|
Technical Overview
|
||||||
</Link>
|
</Link>
|
||||||
|
@ -45,8 +45,8 @@ Meshtastic is an open source project available on GitHub. Our generous volunteer
|
||||||
|
|
||||||
<div className="indexCtasBody">
|
<div className="indexCtasBody">
|
||||||
<Link
|
<Link
|
||||||
className={'button button--outline button--lg cta--button'}
|
className={"button button--outline button--lg cta--button"}
|
||||||
to={'/docs/contributing'}
|
to={"/docs/contributing"}
|
||||||
>
|
>
|
||||||
Contribute!
|
Contribute!
|
||||||
</Link>
|
</Link>
|
||||||
|
@ -54,7 +54,7 @@ Meshtastic is an open source project available on GitHub. Our generous volunteer
|
||||||
|
|
||||||
<!--- FIXME add Github organization list/contributor list --->
|
<!--- FIXME add Github organization list/contributor list --->
|
||||||
|
|
||||||
## Start using Meshtastic!
|
## 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.
|
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.
|
||||||
|
|
||||||
|
@ -62,8 +62,8 @@ Our support is 100% volunteer based. We are passionate about the project and hop
|
||||||
|
|
||||||
<div className="indexCtasBody">
|
<div className="indexCtasBody">
|
||||||
<Link
|
<Link
|
||||||
className={'button button--outline button--lg cta--button'}
|
className={"button button--outline button--lg cta--button"}
|
||||||
to={'/docs/getting-started'}
|
to={"/docs/getting-started"}
|
||||||
>
|
>
|
||||||
Getting Started
|
Getting Started
|
||||||
</Link>
|
</Link>
|
||||||
|
|
|
@ -55,62 +55,59 @@ I'm assuming that meshtastic is being used to hike in places where someone capab
|
||||||
|
|
||||||
I'm guessing that the network behaves somewhat like a store-and-forward network - or, at least, that the goal is to avoid establishing a two-way connection to transmit data. I'm afraid I haven't worked with mesh networks much, but remember studying them briefly in school about ten years ago.
|
I'm guessing that the network behaves somewhat like a store-and-forward network - or, at least, that the goal is to avoid establishing a two-way connection to transmit data. I'm afraid I haven't worked with mesh networks much, but remember studying them briefly in school about ten years ago.
|
||||||
|
|
||||||
|
|
||||||
## Phased Proposal for the Meshtastic Security Framework
|
## Phased Proposal for the Meshtastic Security Framework
|
||||||
|
|
||||||
### Phase 1 - Fixed network encryption with AES-CTR
|
### Phase 1 - Fixed network encryption with AES-CTR
|
||||||
|
|
||||||
The current implementation provides optional confidentiality to members of a configured network:
|
The current implementation provides optional confidentiality to members of a configured network:
|
||||||
* Encryption is implemented in devices/nodes with network-wide encryption keys.
|
|
||||||
* Encryption is optional and is turned off when devices are in 'Ham mode'.
|
- Encryption is implemented in devices/nodes with network-wide encryption keys.
|
||||||
* There is no encryption supported in the clients (iOS, Android) to facilitate distribution as mass market software.
|
- Encryption is optional and is turned off when devices are in 'Ham mode'.
|
||||||
* Pairing from client-to-device is by:
|
- There is no encryption supported in the clients (iOS, Android) to facilitate distribution as mass market software.
|
||||||
* direct USB cable
|
- Pairing from client-to-device is by:
|
||||||
* BT pairing
|
- direct USB cable
|
||||||
* Devices are 'promiscuous' and will pair with any near-by client. Network confidentiality requires physical protextion of all nodes.
|
- BT pairing
|
||||||
|
- Devices are 'promiscuous' and will pair with any near-by client. Network confidentiality requires physical protextion of all nodes.
|
||||||
|
|
||||||
### Phase 2 - Strong device and client identity
|
### Phase 2 - Strong device and client identity
|
||||||
|
|
||||||
**Phase 2 security goals:**
|
**Phase 2 security goals:**
|
||||||
* Know who sent a message (strong binding of messages to a particular node and/or terminal device)
|
|
||||||
* This would be an optional feature for a message
|
- Know who sent a message (strong binding of messages to a particular node and/or terminal device)
|
||||||
* Optionaly enforce identity based restrictions on some actions performed at nodes and/or clients
|
- This would be an optional feature for a message
|
||||||
* Optional support of strong pairing of a client to a device/node and restrict ability to manage and receive messages based on the pairing.
|
- Optionaly enforce identity based restrictions on some actions performed at nodes and/or clients
|
||||||
* The BT paring and the cryptographic paring are separate (to simplify pahse 1 deployment and testing)
|
- Optional support of strong pairing of a client to a device/node and restrict ability to manage and receive messages based on the pairing.
|
||||||
* Above features should be architected to be ‘cryptographically strong’ and algorithm agile.
|
- The BT paring and the cryptographic paring are separate (to simplify pahse 1 deployment and testing)
|
||||||
|
- Above features should be architected to be ‘cryptographically strong’ and algorithm agile.
|
||||||
|
|
||||||
**Phase 2 Proposed mechanisms:**
|
**Phase 2 Proposed mechanisms:**
|
||||||
* Proposed initial algorithms
|
|
||||||
- Ed25519 for signatures based on NaCl libraries and iOS support for Ed25519
|
- Proposed initial algorithms
|
||||||
* Clients and nodes to generate local identity Ed25519 keys
|
- Ed25519 for signatures based on NaCl libraries and iOS support for Ed25519
|
||||||
* Devices maintain knowledge of owner public key
|
- Clients and nodes to generate local identity Ed25519 keys
|
||||||
* Devices maintain knowledge of some peers public keys and associated information (name, etc.)
|
- Devices maintain knowledge of owner public key
|
||||||
* Experimental protobuf message type with
|
- Devices maintain knowledge of some peers public keys and associated information (name, etc.)
|
||||||
* cipher suite indicator (csi)
|
- Experimental protobuf message type with
|
||||||
* wrapped data using a cipher suite identifier to indicate use of Ed25519 wrapping identified algorithms.
|
- cipher suite indicator (csi)
|
||||||
Wrapped data to contain any of the existing message types.
|
- wrapped data using a cipher suite identifier to indicate use of Ed25519 wrapping identified algorithms.
|
||||||
* initial ‘cipher suite’ **only** signs a message
|
Wrapped data to contain any of the existing message types.
|
||||||
* new signed/authenticated messages to:
|
- initial ‘cipher suite’ **only** signs a message
|
||||||
* device->client: provide ownership status of device (owner is identifed by a public key)
|
- new signed/authenticated messages to:
|
||||||
* client->device: set owner key (must be existing device owner or owner null)
|
- device->client: provide ownership status of device (owner is identifed by a public key)
|
||||||
* any->all. Broadcast public key and associated info (crude initial key distribution)
|
- client->device: set owner key (must be existing device owner or owner null)
|
||||||
|
- any->all. Broadcast public key and associated info (crude initial key distribution)
|
||||||
|
|
||||||
### Phase 3 and 3+:
|
### Phase 3 and 3+:
|
||||||
* Device/node e2e message confidentiality (1-to-1)
|
|
||||||
* NO client side encryption
|
|
||||||
* All encryption turned off for a network in 'Ham mode'
|
|
||||||
* Protect messages sent over LoRa from eavesdroppers outside of a well identified group
|
|
||||||
- multicast group key distribution / discovery (1-to-n)
|
|
||||||
* Privacy
|
|
||||||
* BT MAC layer address privatization
|
|
||||||
* Node address privatization (Use use if based on device public key and schedule based aliasing)
|
|
||||||
* Private peer discovery
|
|
||||||
* Private service announcement and discovery
|
|
||||||
* Device/node security (hardening key storage, tamper resistance, side channel protection, etc.)
|
|
||||||
* Public key pairing process for client-to-device also sets up BT (no BT pin)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- Device/node e2e message confidentiality (1-to-1)
|
||||||
|
- NO client side encryption
|
||||||
|
- All encryption turned off for a network in 'Ham mode'
|
||||||
|
- Protect messages sent over LoRa from eavesdroppers outside of a well identified group
|
||||||
|
- multicast group key distribution / discovery (1-to-n)
|
||||||
|
- Privacy
|
||||||
|
- BT MAC layer address privatization
|
||||||
|
- Node address privatization (Use use if based on device public key and schedule based aliasing)
|
||||||
|
- Private peer discovery
|
||||||
|
- Private service announcement and discovery
|
||||||
|
- Device/node security (hardening key storage, tamper resistance, side channel protection, etc.)
|
||||||
|
- Public key pairing process for client-to-device also sets up BT (no BT pin)
|
||||||
|
|
|
@ -65,16 +65,15 @@ Various data-rate options are available when configuring a channel and are inver
|
||||||
|
|
||||||
We have six predefined channels. These are the most common settings and have been proven to work well:
|
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 / 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 |
|
| 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 |
|
| Medium Range / Fast | Medium Fast | 2.2 kbps | 9 / 512 | 4/8 | 250 | 143dB |
|
||||||
| Medium Range / Slow | Medium Slow | 1.2 kbps | 10 / 1024 | 4/8 | 250 | 146dB |
|
| Medium Range / Slow | Medium Slow | 1.2 kbps | 10 / 1024 | 4/8 | 250 | 146dB |
|
||||||
| Long Range / Fast | Long Fast | 0.67 kbps (default) | 11 / 2048 | 4/8 | 250 | 148.5dB |
|
| Long Range / Fast | Long Fast | 0.67 kbps (default) | 11 / 2048 | 4/8 | 250 | 148.5dB |
|
||||||
| Long Range / Slow | Long Slow | 0.18 kbps | 12 / 4096 | 4/8 | 125 | 154dB |
|
| 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 |
|
| Very Long Range - Slow | Very Long Slow | 0.05 kbps | 12 / 4096 | 4/8 | 31.25 | 160.1dB |
|
||||||
|
|
||||||
|
|
||||||
:::note
|
:::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.
|
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.
|
||||||
|
@ -93,18 +92,18 @@ After applying the settings, you will need to restart the device. After your dev
|
||||||
Some example settings:
|
Some example settings:
|
||||||
|
|
||||||
| Data-rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget | Note |
|
| Data-rate | SF / Symbols | Coding Rate | Bandwidth | Link Budget | Note |
|
||||||
| :---------:| :-----------:| :----------:| :--------:| :----------:| :----------------------------------------------------------------------- |
|
| :--------: | :----------: | :---------: | :-------: | :---------: | :----------------------------------------------------------------------- |
|
||||||
| 37.50 kbps | 6 / 64 | 4/5 | 500 | 129dB | Fastest possible speed |
|
| 37.50 kbps | 6 / 64 | 4/5 | 500 | 129dB | Fastest possible speed |
|
||||||
| 3.125 kbps | 8 / 256 | 4/5 | 125 | 143dB | |
|
| 3.125 kbps | 8 / 256 | 4/5 | 125 | 143dB | |
|
||||||
| 1.953 kbps | 8 / 256 | 4/8 | 125 | 143dB | |
|
| 1.953 kbps | 8 / 256 | 4/8 | 125 | 143dB | |
|
||||||
| 1.343 kbps | 11 / 2048 | 4/8 | 500 | 145dB | |
|
| 1.343 kbps | 11 / 2048 | 4/8 | 500 | 145dB | |
|
||||||
| 1.099 kbps | 9 / 512 | 4/8 | 125 | 146dB | |
|
| 1.099 kbps | 9 / 512 | 4/8 | 125 | 146dB | |
|
||||||
| 0.814 kbps | 10 / 1024 | 4/6 | 125 | 149dB | |
|
| 0.814 kbps | 10 / 1024 | 4/6 | 125 | 149dB | |
|
||||||
| 0.610 kbps | 10 / 1024 | 4/8 | 125 | 149dB | |
|
| 0.610 kbps | 10 / 1024 | 4/8 | 125 | 149dB | |
|
||||||
| 0.488 kbps | 11 / 2048 | 4/6 | 125 | 152dB | |
|
| 0.488 kbps | 11 / 2048 | 4/6 | 125 | 152dB | |
|
||||||
| 0.336 kbps | 11 / 2048 | 4/8 | 125 | 152dB | |
|
| 0.336 kbps | 11 / 2048 | 4/8 | 125 | 152dB | |
|
||||||
| 0.073 kbps | 12 / 4096 | 4/5 | 31 | 160dB | Twice the range and/or coverage of "Long Slow", low resilience to noise |
|
| 0.073 kbps | 12 / 4096 | 4/5 | 31 | 160dB | Twice the range and/or coverage of "Long Slow", low resilience to noise |
|
||||||
| 0.046 kbps | 12 / 4096 | 4/8 | 31 | 160dB | Twice the range and/or coverage of "Long Slow", high resilience to noise |
|
| 0.046 kbps | 12 / 4096 | 4/8 | 31 | 160dB | Twice the range and/or coverage of "Long Slow", high resilience to noise |
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -12,18 +12,21 @@ sidebar_position: 4
|
||||||
- **Record Holder:** _PuzzledPancake_
|
- **Record Holder:** _PuzzledPancake_
|
||||||
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/44)
|
- **Source:** [Meshtastic Discourse](https://meshtastic.discourse.group/t/practical-range-test-results/692/44)
|
||||||
|
|
||||||
**Modem Settings**
|
### Modem Settings
|
||||||
|
|
||||||
- **Frequency:** 868MHz
|
- **Frequency:** 868MHz
|
||||||
- **Bandwidth:** 125
|
- **Bandwidth:** 125
|
||||||
- **Spread Factor:** 12
|
- **Spread Factor:** 12
|
||||||
- **Coding Rate:** 4/8
|
- **Coding Rate:** 4/8
|
||||||
|
|
||||||
**Node A**
|
### Node A
|
||||||
|
|
||||||
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
|
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
|
||||||
- **Firmware Version:** 1.2
|
- **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)
|
- **Antenna:** [868MHz 5dBi Antenna](https://ivent.co.nz/product/category/1000/868mhz%205dbi%20antenna%20193mm%20black%20sma%20%28m%29/38646)
|
||||||
|
|
||||||
**Node B**
|
### Node B
|
||||||
|
|
||||||
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
|
- **Device:** [LILYGO TTGO T-Beam w/ SX1262](/docs/hardware/devices/tbeam)
|
||||||
- **Firmware Version:** 1.2
|
- **Firmware Version:** 1.2
|
||||||
- **Antenna:** [868MHz Vertical 6dBi](https://ivent.co.nz/product/category/1000/868mhz%20vertical%206dbi%20antenna/38606)
|
- **Antenna:** [868MHz Vertical 6dBi](https://ivent.co.nz/product/category/1000/868mhz%20vertical%206dbi%20antenna/38606)
|
||||||
|
@ -34,5 +37,6 @@ sidebar_position: 4
|
||||||
|
|
||||||
![Node B](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/1/1c8bd5fc41f7bab925404b657a9c481882de9313_2_1332x1000.jpeg)
|
![Node B](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/1/1c8bd5fc41f7bab925404b657a9c481882de9313_2_1332x1000.jpeg)
|
||||||
|
|
||||||
**Resources Used**
|
### Resources Used
|
||||||
- http://www.heywhatsthat.com
|
|
||||||
|
- http://www.heywhatsthat.com
|
||||||
|
|
|
@ -1,20 +1,19 @@
|
||||||
|
| Region Code | Description |
|
||||||
| Region Code | Description |
|
| :---------: | :---------------------: |
|
||||||
| :-------: | :--------: |
|
| `UNSET` | Unset |
|
||||||
| `UNSET` | Unset |
|
| `US` | United States |
|
||||||
| `US` | United States |
|
| `EU_433` | European Union 433MHz |
|
||||||
| `EU_433` | European Union 433MHz |
|
| `EU_868` | European Union 868MHz |
|
||||||
| `EU_868` | European Union 868MHz |
|
| `CN` | China |
|
||||||
| `CN` | China |
|
| `JP` | Japan |
|
||||||
| `JP` | Japan |
|
| `ANZ` | Australia & New Zealand |
|
||||||
| `ANZ` | Australia & New Zealand |
|
| `KR` | Korea |
|
||||||
| `KR` | Korea |
|
| `TW` | Taiwan |
|
||||||
| `TW` | Taiwan |
|
| `RU` | Russia |
|
||||||
| `RU` | Russia |
|
| `IN` | India |
|
||||||
| `IN` | India |
|
| `NZ_865` | New Zealand 865MHz |
|
||||||
| `NZ_865` | New Zealand 865MHz |
|
| `TH` | Thailand |
|
||||||
| `TH` | Thailand |
|
| `LORA_24` | 2.4 GHz band worldwide |
|
||||||
| `LORA_24` | 2.4 GHz band worldwide |
|
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
EU_433 and EU_868 have to adhere to an hourly duty cycle limitation of 10%. Your device will stop transmitting if you reach it, until it is allowed again.
|
EU_433 and EU_868 have to adhere to an hourly duty cycle limitation of 10%. Your device will stop transmitting if you reach it, until it is allowed again.
|
||||||
|
|
|
@ -5,10 +5,10 @@ slug: /settings/config/bluetooth
|
||||||
sidebar_label: Bluetooth
|
sidebar_label: Bluetooth
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
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.
|
The Bluetooth config options are: Enabled, Pairing Mode and Fixed PIN Value. Bluetooth config uses an admin message sending a `Config.Bluetooth` protobuf.
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
ESP32 Devices: Bluetooth will be disabled if WiFi is enabled. The WiFi setting takes precedence.
|
ESP32 Devices: Bluetooth will be disabled if WiFi is enabled. The WiFi setting takes precedence.
|
||||||
|
@ -82,11 +82,11 @@ All Bluetooth module config options are available in the python CLI. Example com
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :-----------------------: | :-----------------: | :-----: |
|
| :------------------: | :---------------------------------: | :----------: |
|
||||||
| `bluetooth.enabled` | `true`, `false` | `true` |
|
| `bluetooth.enabled` | `true`, `false` | `true` |
|
||||||
| `bluetooth.mode` | `RANDOM_PIN`, `FIXED_PIN`, `NO_PIN` | `RANDOM_PIN` |
|
| `bluetooth.mode` | `RANDOM_PIN`, `FIXED_PIN`, `NO_PIN` | `RANDOM_PIN` |
|
||||||
| `bluetooth.fixedPin` | `integer` (6 digits) | `123456` |
|
| `bluetooth.fixedPin` | `integer` (6 digits) | `123456` |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
@ -107,6 +107,7 @@ meshtastic --set bluetooth.enabled false
|
||||||
meshtastic --set bluetooth.mode FIXED_PIN
|
meshtastic --set bluetooth.mode FIXED_PIN
|
||||||
meshtastic --set bluetooth.fixed_pin 111111
|
meshtastic --set bluetooth.fixed_pin 111111
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="web">
|
<TabItem value="web">
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ slug: /settings/config/channels
|
||||||
sidebar_label: Channels
|
sidebar_label: Channels
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The Channels config options are: Index, Roles, and Settings. Channel config uses an admin message sending a `Channel` protobuf which also consists of a `ChannelSettings` protobuf.
|
The Channels config options are: Index, Roles, and Settings. Channel config uses an admin message sending a `Channel` protobuf which also consists of a `ChannelSettings` protobuf.
|
||||||
|
|
||||||
|
@ -26,16 +26,16 @@ The channel index begins at 0 and ends at 7.
|
||||||
|
|
||||||
_Indexing_ can not be modified.
|
_Indexing_ can not be modified.
|
||||||
|
|
||||||
| Index | Channel | Default Role | Purpose |
|
| Index | Channel | Default Role | Purpose |
|
||||||
| :--------------------: | :----------------: | :----------------: | :----------------: |
|
| :---: | :-----: | :----------: | :-----------------------: |
|
||||||
| 0 | 1 | `PRIMARY` | Used as `default` channel |
|
| 0 | 1 | `PRIMARY` | Used as `default` channel |
|
||||||
| 1 | 2 | `DISABLED` | User defined |
|
| 1 | 2 | `DISABLED` | User defined |
|
||||||
| 2 | 3 | `DISABLED` | User defined |
|
| 2 | 3 | `DISABLED` | User defined |
|
||||||
| 3 | 4 | `DISABLED` | User defined |
|
| 3 | 4 | `DISABLED` | User defined |
|
||||||
| 4 | 5 | `DISABLED` | User defined |
|
| 4 | 5 | `DISABLED` | User defined |
|
||||||
| 5 | 6 | `DISABLED` | User defined |
|
| 5 | 6 | `DISABLED` | User defined |
|
||||||
| 6 | 7 | `DISABLED` | User defined |
|
| 6 | 7 | `DISABLED` | User defined |
|
||||||
| 7 | 8 | `DISABLED` | User defined |
|
| 7 | 8 | `DISABLED` | User defined |
|
||||||
|
|
||||||
:::note
|
:::note
|
||||||
You can **not** have `DISABLED` channels in-between active channels such as `PRIMARY` and `SECONDARY`. Active channels must be consecutive.
|
You can **not** have `DISABLED` channels in-between active channels such as `PRIMARY` and `SECONDARY`. Active channels must be consecutive.
|
||||||
|
@ -46,14 +46,14 @@ You can **not** have `DISABLED` channels in-between active channels such as `PRI
|
||||||
Each channel is assigned one of 3 roles:
|
Each channel is assigned one of 3 roles:
|
||||||
|
|
||||||
1. `PRIMARY` or `1`
|
1. `PRIMARY` or `1`
|
||||||
- This is the first channel that is created for you on initial setup.
|
- This is the first channel that is created for you on initial setup.
|
||||||
- Only one primary channel can exist and can not be disabled.
|
- Only one primary channel can exist and can not be disabled.
|
||||||
- Direct messages are only available on this channel.
|
- Direct messages are only available on this channel.
|
||||||
2. `SECONDARY` or `2`
|
2. `SECONDARY` or `2`
|
||||||
- Can modify the encryption key (PSK).
|
- Can modify the encryption key (PSK).
|
||||||
3. `DISABLED` or `0`
|
3. `DISABLED` or `0`
|
||||||
- The channel is no longer available for use.
|
- The channel is no longer available for use.
|
||||||
- The channel settings are set to default.
|
- The channel settings are set to default.
|
||||||
|
|
||||||
## Channel Settings Values
|
## Channel Settings Values
|
||||||
|
|
||||||
|
@ -73,10 +73,10 @@ Set to `0` by default.
|
||||||
|
|
||||||
A short identifier for the channel. _(< 12 bytes)_
|
A short identifier for the channel. _(< 12 bytes)_
|
||||||
|
|
||||||
| Reserved Name | Purpose |
|
| Reserved Name | Purpose |
|
||||||
| :--------------------: | :----------------: |
|
| :------------: | :----------------------------------------------------------------------------------------------------------------------------: |
|
||||||
| `""` (default) | If left empty on the Primary channel, this designates the `default` channel. |
|
| `""` (default) | If left empty on the Primary channel, this designates the `default` channel. |
|
||||||
| `admin` | On Secondary channels, the name `admin` (case sensitive) designates the `admin` channel used to administer nodes over the mesh |
|
| `admin` | On Secondary channels, the name `admin` (case sensitive) designates the `admin` channel used to administer nodes over the mesh |
|
||||||
|
|
||||||
### PSK
|
### PSK
|
||||||
|
|
||||||
|
@ -140,13 +140,13 @@ meshtastic --ch-set name "My Channel" --ch-set psk random --ch-set uplink_enable
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
**Id**
|
### Id
|
||||||
|
|
||||||
```shell title="Set the PRIMARY channel ID"
|
```shell title="Set the PRIMARY channel ID"
|
||||||
meshtastic --ch-set id 1234 --ch-index 0
|
meshtastic --ch-set id 1234 --ch-index 0
|
||||||
```
|
```
|
||||||
|
|
||||||
**Name**
|
### Name
|
||||||
|
|
||||||
```shell title="Set channel name for the PRIMARY channel"
|
```shell title="Set channel name for the PRIMARY channel"
|
||||||
# without spaces
|
# without spaces
|
||||||
|
@ -155,7 +155,7 @@ meshtastic --ch-set name MyChannel --ch-index 0
|
||||||
meshtastic --ch-set name "My Channel" --ch-index 0
|
meshtastic --ch-set name "My Channel" --ch-index 0
|
||||||
```
|
```
|
||||||
|
|
||||||
**PSK**
|
### PSK
|
||||||
|
|
||||||
If you use Meshtastic for exchanging messages you don't want other people to see, `random` is the setting you should use. Selecting `default` or any of the `simple` values from the following table will use publicly known encryption keys. They're shipped with Meshtastic source code and thus, anyone can listen to messages encrypted by them. They're great for testing and public channels.
|
If you use Meshtastic for exchanging messages you don't want other people to see, `random` is the setting you should use. Selecting `default` or any of the `simple` values from the following table will use publicly known encryption keys. They're shipped with Meshtastic source code and thus, anyone can listen to messages encrypted by them. They're great for testing and public channels.
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ meshtastic --ch-set psk 0x1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a
|
||||||
meshtastic --ch-set psk none --ch-index 0
|
meshtastic --ch-set psk none --ch-index 0
|
||||||
```
|
```
|
||||||
|
|
||||||
**Uplink / Downlink**
|
### Uplink / Downlink
|
||||||
|
|
||||||
For configuring gateways, please see [MQTT](/docs/settings/moduleconfig/mqtt)
|
For configuring gateways, please see [MQTT](/docs/settings/moduleconfig/mqtt)
|
||||||
|
|
||||||
|
|
|
@ -5,32 +5,34 @@ slug: /settings/config/device
|
||||||
sidebar_label: Device
|
sidebar_label: Device
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The device config options are: Role, Serial Output, and Debug Log. Device config uses an admin message sending a `Config.Device` protobuf.
|
The device config options are: Role, Serial Output, and Debug Log. Device config uses an admin message sending a `Config.Device` protobuf.
|
||||||
|
|
||||||
## Device Config Values
|
## Device Config Values
|
||||||
|
|
||||||
### Role
|
### Role
|
||||||
|
|
||||||
Sets the role of node.
|
Sets the role of node.
|
||||||
|
|
||||||
Acceptable values:
|
Acceptable values:
|
||||||
|
|
||||||
| Value | Description |
|
| Value | Description |
|
||||||
| :-------: | :---------------------------------------------------------------------------------------: |
|
| :-------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
||||||
| `CLIENT` | Client (default) - App connected client. |
|
| `CLIENT` | Client (default) - App connected client. |
|
||||||
| `CLIENT_MUTE` | Client Mute - Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh. |
|
| `CLIENT_MUTE` | Client Mute - Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh. |
|
||||||
| `ROUTER` | Router - Mesh packets will prefer to be routed over this node. This node will not be used by client apps. The WiFi/BLE radios and the OLED screen will be put to sleep. |
|
| `ROUTER` | Router - Mesh packets will prefer to be routed over this node. This node will not be used by client apps. The WiFi/BLE radios and the OLED screen will be put to sleep. |
|
||||||
| `ROUTER_CLIENT` | Router Client - Mesh packets will prefer to be routed over this node. The Router Client can be used as both a Router and an app connected Client. |
|
| `ROUTER_CLIENT` | Router Client - Mesh packets will prefer to be routed over this node. The Router Client can be used as both a Router and an app connected Client. |
|
||||||
|
|
||||||
|
|
||||||
### Serial Console
|
### Serial Console
|
||||||
|
|
||||||
Acceptable values: `true` or `false`
|
Acceptable values: `true` or `false`
|
||||||
|
|
||||||
Disabling this will disable the SerialConsole by not initializing the StreamAPI.
|
Disabling this will disable the SerialConsole by not initializing the StreamAPI.
|
||||||
|
|
||||||
### Debug Log
|
### Debug Log
|
||||||
|
|
||||||
Acceptable values: `true` or `false`
|
Acceptable values: `true` or `false`
|
||||||
|
|
||||||
By default we turn off logging as soon as an API client connects. Set this to true to leave the debug log outputting even when API is active.
|
By default we turn off logging as soon as an API client connects. Set this to true to leave the debug log outputting even when API is active.
|
||||||
|
@ -74,7 +76,7 @@ All device config options are available in the python CLI. Example commands are
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
|--------------------------|----------------------------------------------------|----------|
|
| ------------------------ | -------------------------------------------------- | -------- |
|
||||||
| device.debug_log_enabled | `true`, `false` | `false` |
|
| device.debug_log_enabled | `true`, `false` | `false` |
|
||||||
| device.role | `CLIENT`, `CLIENT_MUTE`, `ROUTER`, `ROUTER_CLIENT` | `CLIENT` |
|
| device.role | `CLIENT`, `CLIENT_MUTE`, `ROUTER`, `ROUTER_CLIENT` | `CLIENT` |
|
||||||
| device.serial_enabled | `true`, `false` | `true` |
|
| device.serial_enabled | `true`, `false` | `true` |
|
||||||
|
|
|
@ -5,52 +5,59 @@ slug: /settings/config/display
|
||||||
sidebar_label: Display
|
sidebar_label: Display
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The display config options are: Screen On Duration, Auto Carousel Interval, Always Point North and GPS Format. Display config uses an admin message sending a `Config.Display` protobuf.
|
The display config options are: Screen On Duration, Auto Carousel Interval, Always Point North and GPS Format. Display config uses an admin message sending a `Config.Display` protobuf.
|
||||||
|
|
||||||
## Device Config Values
|
## Device Config Values
|
||||||
|
|
||||||
### Screen On Duration
|
### Screen On Duration
|
||||||
|
|
||||||
How long the screen remains on after the user button is pressed or messages are received.
|
How long the screen remains on after the user button is pressed or messages are received.
|
||||||
|
|
||||||
### Auto Carousel Interval
|
### Auto Carousel Interval
|
||||||
|
|
||||||
Automatically toggles to the next page on the screen like a carousel, based the specified interval.
|
Automatically toggles to the next page on the screen like a carousel, based the specified interval.
|
||||||
|
|
||||||
### Always Point North
|
### 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.
|
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
|
### GPS Format
|
||||||
|
|
||||||
The format used to display GPS coordinates on the device screen.
|
The format used to display GPS coordinates on the device screen.
|
||||||
|
|
||||||
Acceptable values:
|
Acceptable values:
|
||||||
|
|
||||||
| Value | Description |
|
| Value | Description |
|
||||||
| :-------: | :--------------------------: |
|
| :----: | :-----------------------------: |
|
||||||
| `DEC` | Decimal Degrees |
|
| `DEC` | Decimal Degrees |
|
||||||
| `DMS` | Degrees Minutes Seconds |
|
| `DMS` | Degrees Minutes Seconds |
|
||||||
| `UTM` | Universal Transverse Mercator |
|
| `UTM` | Universal Transverse Mercator |
|
||||||
| `MGRS` | Military Grid Reference System |
|
| `MGRS` | Military Grid Reference System |
|
||||||
| `OLC` | Open Location Code (Plus Codes) |
|
| `OLC` | Open Location Code (Plus Codes) |
|
||||||
| `OSGR` | Ordnance Survey Grid Reference |
|
| `OSGR` | Ordnance Survey Grid Reference |
|
||||||
|
|
||||||
### Prefered display units
|
### Prefered display units
|
||||||
|
|
||||||
switch between `METRIC` (default) and `IMPERIAL` units
|
switch between `METRIC` (default) and `IMPERIAL` units
|
||||||
|
|
||||||
### Flip Screen
|
### Flip Screen
|
||||||
|
|
||||||
If enabled, the screen will be rotated 180 degrees, for cases that mount the screen upside down
|
If enabled, the screen will be rotated 180 degrees, for cases that mount the screen upside down
|
||||||
|
|
||||||
### OLED Defintion
|
### OLED Defintion
|
||||||
|
|
||||||
The type of OLED Controller is auto-detected by default, but can be defined with this setting if the auto-detection fails.
|
The type of OLED Controller is auto-detected by default, but can be defined with this setting if the auto-detection fails.
|
||||||
|
|
||||||
Acceptable values:
|
Acceptable values:
|
||||||
|
|
||||||
| Value | Description |
|
| Value | Description |
|
||||||
| :-------: | :--------------------------: |
|
| :------------: | :----------------------------: |
|
||||||
| `OLED_AUTO` | Auto detect display controller |
|
| `OLED_AUTO` | Auto detect display controller |
|
||||||
| `OLED_SSD1306` | Always use SSD1306 driver |
|
| `OLED_SSD1306` | Always use SSD1306 driver |
|
||||||
| `OLED_SH1106` | Always use SH1106 driver |
|
| `OLED_SH1106` | Always use SH1106 driver |
|
||||||
|
|
||||||
## Device Config Client Availability
|
## Device Config Client Availability
|
||||||
|
|
||||||
|
@ -91,7 +98,7 @@ All display config options are available in the python CLI. Example commands are
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
|-----------------------------------|--------------------------------------------|------------------------------|
|
| --------------------------------- | ------------------------------------------ | ---------------------------- |
|
||||||
| display.auto_screen_carousel_secs | `integer` | Default of `0` is 10 minutes |
|
| display.auto_screen_carousel_secs | `integer` | Default of `0` is 10 minutes |
|
||||||
| display.compass_north_top | `false`, `true` | `false` |
|
| display.compass_north_top | `false`, `true` | `false` |
|
||||||
| display.flip_screen | `fasle`, `true` | `false` |
|
| display.flip_screen | `fasle`, `true` | `false` |
|
||||||
|
|
|
@ -8,14 +8,14 @@ sidebar_position: 1
|
||||||
|
|
||||||
There are several config sections in the Meshtastic firmware, these are broken out so they can be sent as small admin messages over the mesh.
|
There are several config sections in the Meshtastic firmware, these are broken out so they can be sent as small admin messages over the mesh.
|
||||||
|
|
||||||
| Name | Description |
|
| Name | Description |
|
||||||
|:----:|:-----------:|
|
| :------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
||||||
| [Bluetooth](/docs/settings/config/bluetooth) | Bluetooth config options are: Enabled, Pairing Mode and Fixed PIN. |
|
| [Bluetooth](/docs/settings/config/bluetooth) | Bluetooth config options are: Enabled, Pairing Mode and Fixed PIN. |
|
||||||
| [Channels](/docs/settings/config/channels) | Channels config options are: Index, Role and Settings. |
|
| [Channels](/docs/settings/config/channels) | Channels config options are: Index, Role and Settings. |
|
||||||
| [Device](/docs/settings/config/device) | Device config options are: Device Role, Serial Output, Debug Log and Factory Reset. |
|
| [Device](/docs/settings/config/device) | Device config options are: Device Role, Serial Output, Debug Log and Factory Reset. |
|
||||||
| [Display](/docs/settings/config/display) | Display config options are: Screen On Duration, Auto Carousel Interval, Always Point North, and GPS Format. |
|
| [Display](/docs/settings/config/display) | Display config options are: Screen On Duration, Auto Carousel Interval, Always Point North, and GPS Format. |
|
||||||
| [LoRa](/docs/settings/config/lora) | The LoRa config options are: Region, Modem Preset, Max Hops, Transmit Power, Bandwidth, Spread Factor, Coding Rate, Frequency Offset, Transmit Disabled and Ignore Incoming Array. |
|
| [LoRa](/docs/settings/config/lora) | The LoRa config options are: Region, Modem Preset, Max Hops, Transmit Power, Bandwidth, Spread Factor, Coding Rate, Frequency Offset, Transmit Disabled and Ignore Incoming Array. |
|
||||||
| [Network](/docs/settings/config/network) | Network config options are: WiFi Enabled, WiFi SSID, WiFi PSK, WiFi Mode and NTP Server. |
|
| [Network](/docs/settings/config/network) | Network config options are: WiFi Enabled, WiFi SSID, WiFi PSK, WiFi Mode and NTP Server. |
|
||||||
| [Position](/docs/settings/config/position) | Position config options are: GPS Enabled, GPS Update Interval, GPS Attempt Time, Fixed Position, Smart Broadcast, Broadcast Interval and Position Packet Flags. |
|
| [Position](/docs/settings/config/position) | Position config options are: GPS Enabled, GPS Update Interval, GPS Attempt Time, Fixed Position, Smart Broadcast, Broadcast Interval and Position Packet Flags. |
|
||||||
| [Power](/docs/settings/config/power) | 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](/docs/settings/config/power) | 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. |
|
||||||
| [User](/docs/settings/config/user) | The user config options are: Long Name, Short Name, and Is Licensed |
|
| [User](/docs/settings/config/user) | The user config options are: Long Name, Short Name, and Is Licensed |
|
||||||
|
|
|
@ -5,11 +5,11 @@ slug: /settings/config/lora
|
||||||
sidebar_label: LoRa
|
sidebar_label: LoRa
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
import LoRaRegions from '../../blocks/_lora-regions.mdx';
|
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, Channel Number 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
|
## LoRa Config Values
|
||||||
|
|
||||||
|
@ -18,14 +18,17 @@ You must set your device's `lora.region` setting. This will ensure that you are
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### Region
|
### Region
|
||||||
|
|
||||||
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.
|
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 />
|
<LoRaRegions />
|
||||||
|
|
||||||
### Modem Preset
|
### 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.
|
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
|
### 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.**_
|
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
|
### Transmit Power
|
||||||
|
@ -61,6 +64,7 @@ Allows you to enable and disable transmit (TX) from the LoRa radio. Useful for h
|
||||||
Defaults to true
|
Defaults to true
|
||||||
|
|
||||||
### Channel Number
|
### 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".
|
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
|
### Ignore Incoming Array
|
||||||
|
@ -110,18 +114,17 @@ LoRa config commands are available in the python CLI. Example commands are below
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| 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.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`, `LORA_24` | `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` |
|
| lora.hop_limit | `1`,`2`,`3`,`4`,`5`,`6`,`7` | `3` |
|
||||||
| lora.override_duty_cycle | `false`, `true` | `false` |
|
| lora.override_duty_cycle | `false`, `true` | `false` |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
Because the device will reboot after each command is sent via CLI, it is recommended when setting multiple values in a config section that commands be chained together as one.
|
Because the device will reboot after each command is sent via CLI, it is recommended when setting multiple values in a config section that commands be chained together as one.
|
||||||
|
|
||||||
|
|
||||||
```shell title="Example:"
|
```shell title="Example:"
|
||||||
meshtastic --set lora.region US --set lora.modem_preset LONG_FAST
|
meshtastic --set lora.region US --set lora.modem_preset LONG_FAST
|
||||||
```
|
```
|
||||||
|
|
|
@ -5,8 +5,8 @@ slug: /settings/config/network
|
||||||
sidebar_label: Network
|
sidebar_label: Network
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
@ -56,7 +56,6 @@ Set to `DHCP` by default. Change to `STATIC` to use a static IP address. Applies
|
||||||
|
|
||||||
contains ip, gateway, subnet and dns server in case you want a static configuration.
|
contains ip, gateway, subnet and dns server in case you want a static configuration.
|
||||||
|
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
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.
|
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.
|
||||||
:::
|
:::
|
||||||
|
@ -103,12 +102,12 @@ All Network config options are available in the python CLI.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :-----------: | :---------------: | :-----: |
|
| :------------------: | :---------------: | :--------------: |
|
||||||
| network.ntp_server | string | `0.pool.ntp.org` |
|
| network.ntp_server | string | `0.pool.ntp.org` |
|
||||||
| network.wifi_enabled | `true`, `false` | `false` |
|
| network.wifi_enabled | `true`, `false` | `false` |
|
||||||
| network.wifi_psk | string | `""` |
|
| network.wifi_psk | string | `""` |
|
||||||
| network.wifi_ssid | string | `""` |
|
| network.wifi_ssid | string | `""` |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
@ -162,7 +161,7 @@ With `network.wifi_ssid` & `network.wifi_psk` populated, the device will know to
|
||||||
|
|
||||||
If you have a screen attached to your device, the final page will display something similar to the following:
|
If you have a screen attached to your device, the final page will display something similar to the following:
|
||||||
|
|
||||||
```
|
```text
|
||||||
WiFi: Software AP (Admin)
|
WiFi: Software AP (Admin)
|
||||||
IP: 192.168.42.1 (0/4)
|
IP: 192.168.42.1 (0/4)
|
||||||
SSID: myNetwork
|
SSID: myNetwork
|
||||||
|
|
|
@ -5,16 +5,17 @@ slug: /settings/config/position
|
||||||
sidebar_label: Position
|
sidebar_label: Position
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The position config options are: GPS Enabled, GPS Update Interval, GPS Attempt Time, Fixed Position, Smart Broadcast, Broadcast Interval and Position Packet Flags. Position config uses an admin message sending a `Config.Position` protobuf.
|
The position config options are: GPS Enabled, GPS Update Interval, GPS Attempt Time, Fixed Position, Smart Broadcast, Broadcast Interval and Position Packet Flags. Position config uses an admin message sending a `Config.Position` protobuf.
|
||||||
|
|
||||||
Position data from GPS is provided by either the radio or your paired phone. Position data is not required to use Meshtastic but time calculations require at least one device on the mesh have either a GPS or internet connection for time.
|
Position data from GPS is provided by either the radio or your paired phone. Position data is not required to use Meshtastic but time calculations require at least one device on the mesh have either a GPS or internet connection for time.
|
||||||
|
|
||||||
## Position Config Values
|
## Position Config Values
|
||||||
|
|
||||||
### GPS Disabled
|
### GPS Disabled
|
||||||
|
|
||||||
Acceptable values: `true` or `false`
|
Acceptable values: `true` or `false`
|
||||||
|
|
||||||
Defaults to false. Should the device GPS be disabled for this node?
|
Defaults to false. Should the device GPS be disabled for this node?
|
||||||
|
@ -25,7 +26,7 @@ How often should we try to get GPS position (in seconds), or zero for the defaul
|
||||||
|
|
||||||
### GPS Attempt Time
|
### GPS Attempt Time
|
||||||
|
|
||||||
How long should we try to get our position during each GPS update interval attempt? (in seconds) Or if zero, use the default of 30 seconds.
|
How long should we try to get our position during each GPS update interval attempt? (in seconds) Or if zero, use the default of 30 seconds.
|
||||||
|
|
||||||
### Fixed Position
|
### Fixed Position
|
||||||
|
|
||||||
|
@ -36,6 +37,7 @@ Off by default
|
||||||
If set, this node is at a fixed position. The device will generate GPS updates at the regular GPS update interval, but use whatever the last lat/lon/alt it saved for the node. The lat/lon/alt can be set by an internal GPS or with the help of the mobile device's GPS.
|
If set, this node is at a fixed position. The device will generate GPS updates at the regular GPS update interval, but use whatever the last lat/lon/alt it saved for the node. The lat/lon/alt can be set by an internal GPS or with the help of the mobile device's GPS.
|
||||||
|
|
||||||
### Smart Broadcast
|
### Smart Broadcast
|
||||||
|
|
||||||
Acceptable values: `true` or `false`
|
Acceptable values: `true` or `false`
|
||||||
|
|
||||||
On by default
|
On by default
|
||||||
|
@ -54,27 +56,25 @@ If smart broadcast is of we should send our position this often (but only if it
|
||||||
|
|
||||||
The GPS updates will be sent out every Broadcast Interval, with either the actual GPS location, or an empty location if no GPS fix was achieved. This defaults to broadcast every 15 minutes.
|
The GPS updates will be sent out every Broadcast Interval, with either the actual GPS location, or an empty location if no GPS fix was achieved. This defaults to broadcast every 15 minutes.
|
||||||
|
|
||||||
### Position Flags
|
### Position Flags
|
||||||
|
|
||||||
Bit field of boolean configuration options for POSITION messages (bitwise OR of PositionFlags)
|
Bit field of boolean configuration options for POSITION messages (bitwise OR of PositionFlags)
|
||||||
|
|
||||||
| Value | Description |
|
| Value | Description |
|
||||||
| :-----------: | :---------------------------------------------------------: |
|
| :----------------: | :--------------------------------------------------------------: |
|
||||||
| UNSET | Required for compilation |
|
| UNSET | Required for compilation |
|
||||||
| ALTITUDE | Include an altitude value (if available) |
|
| ALTITUDE | Include an altitude value (if available) |
|
||||||
| ALTITUDE_MSL | Altitude value is MSL |
|
| ALTITUDE_MSL | Altitude value is MSL |
|
||||||
| GEOIDAL_SEPARATION | Include geoidal separation |
|
| GEOIDAL_SEPARATION | Include geoidal separation |
|
||||||
| DOP | Include the DOP value ; PDOP used by default, see below |
|
| DOP | Include the DOP value ; PDOP used by default, see below |
|
||||||
| HVDOP | If POS_DOP set, send separate HDOP / VDOP values instead of PDOP |
|
| HVDOP | If POS_DOP set, send separate HDOP / VDOP values instead of PDOP |
|
||||||
| SATINVIEW | Include number of "satellites in view" |
|
| SATINVIEW | Include number of "satellites in view" |
|
||||||
| SEQ_NO | Include a sequence number incremented per packet |
|
| SEQ_NO | Include a sequence number incremented per packet |
|
||||||
| TIMESTAMP | Include positional timestamp (from GPS solution) |
|
| TIMESTAMP | Include positional timestamp (from GPS solution) |
|
||||||
| HEADING | Include positional heading (from GPS solution) |
|
| HEADING | Include positional heading (from GPS solution) |
|
||||||
| SPEED | Include positional speed (from GPS solution) |
|
| SPEED | Include positional speed (from GPS solution) |
|
||||||
|
|
||||||
|
## Position Config Client Availability
|
||||||
|
|
||||||
## Position Config Client Availability
|
|
||||||
|
|
||||||
<Tabs
|
<Tabs
|
||||||
groupId="settings"
|
groupId="settings"
|
||||||
|
@ -112,15 +112,15 @@ All Position config commands are available in the python CLI. Example commands a
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :----------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------: |
|
| :---------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------: |
|
||||||
| position.gps_enabled | `true`, `false` | `true` |
|
| position.gps_enabled | `true`, `false` | `true` |
|
||||||
| position.gps_update_interval | `integer` (seconds) | Default `0` is 30 Seconds |
|
| position.gps_update_interval | `integer` (seconds) | Default `0` is 30 Seconds |
|
||||||
| position.gps_attempt_time | `integer` (seconds) | Default of `0` is 30 Seconds |
|
| position.gps_attempt_time | `integer` (seconds) | Default of `0` is 30 Seconds |
|
||||||
| position.fixed_position | `true`, `false` | `false` |
|
| position.fixed_position | `true`, `false` | `false` |
|
||||||
| position.position_broadcast_smart_enabled | `true`, `false` | `true` |
|
| position.position_broadcast_smart_enabled | `true`, `false` | `true` |
|
||||||
| position.position_broadcast_secs | `integer` (seconds) | Default of `0` is 15 Minutes |
|
| position.position_broadcast_secs | `integer` (seconds) | Default of `0` is 15 Minutes |
|
||||||
| position.flags | `UNSET`, `ALTITUDE`, `ALTITUDE_MSL`, `GEOIDAL_SEPARATION`, `DOP`, `HVDOP`, `PDOP`, `SATINVIEW`, `SEQ_NO`, `TIMESTAMP`, `HEADING`, `SPEED` | `UNSET` |
|
| position.flags | `UNSET`, `ALTITUDE`, `ALTITUDE_MSL`, `GEOIDAL_SEPARATION`, `DOP`, `HVDOP`, `PDOP`, `SATINVIEW`, `SEQ_NO`, `TIMESTAMP`, `HEADING`, `SPEED` | `UNSET` |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,10 @@ slug: /settings/config/power
|
||||||
sidebar_label: Power
|
sidebar_label: Power
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
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.
|
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 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.
|
||||||
|
|
||||||
|
@ -22,8 +22,7 @@ If set, we are powered from a low-current source (i.e. solar), so even if it loo
|
||||||
|
|
||||||
Automatically shut down a device after a defined time period if power is lost.
|
Automatically shut down a device after a defined time period if power is lost.
|
||||||
|
|
||||||
### ADC Multiplier Override
|
### ADC Multiplier Override `Fixes issues on Heltec v2`
|
||||||
**Fixes issues on Heltec v2**
|
|
||||||
|
|
||||||
Ratio of voltage divider for battery pin e.g. 3.20 (R1=100k, R2=220k)
|
Ratio of voltage divider for battery pin e.g. 3.20 (R1=100k, R2=220k)
|
||||||
|
|
||||||
|
@ -51,9 +50,7 @@ While in Light Sleep if Mesh Super Deep Sleep Timeout Seconds is exceeded we wil
|
||||||
|
|
||||||
`0` for default of one year
|
`0` for default of one year
|
||||||
|
|
||||||
### Light Sleep Interval
|
### Light Sleep Interval `ESP32 Only Setting`
|
||||||
|
|
||||||
**ESP32 Only Setting**
|
|
||||||
|
|
||||||
In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
|
In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
|
||||||
|
|
||||||
|
@ -104,16 +101,16 @@ All Power config options are available in the python CLI.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :----------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------: |
|
| :----------------------------------: | :--------------------------: | :---------------------------------: |
|
||||||
| power.is_power_saving | `true`, `false` | `false` |
|
| power.is_power_saving | `true`, `false` | `false` |
|
||||||
| power.on_battery_shutdown_after_secs | `integer` (seconds) | Default of `0` is off |
|
| 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 |
|
| power.adc_multiplier_override | `2-4` (floating point value) | Default of `0` uses firmware values |
|
||||||
| power.wait_bluetooth_secs | `integer` (seconds) | Default of `0` is 1 minute |
|
| power.wait_bluetooth_secs | `integer` (seconds) | Default of `0` is 1 minute |
|
||||||
| power.mesh_sds_timeout_secs | `integer` (seconds) | Default of `0` is 2 hours |
|
| power.mesh_sds_timeout_secs | `integer` (seconds) | Default of `0` is 2 hours |
|
||||||
| power.sds_secs | `integer` (seconds) | Default of `0` is 1 year |
|
| power.sds_secs | `integer` (seconds) | Default of `0` is 1 year |
|
||||||
| power.ls_secs | `integer` (seconds) | Default of `0` is 1 hour |
|
| power.ls_secs | `integer` (seconds) | Default of `0` is 1 hour |
|
||||||
| power.min_wake_secs | `integer` (seconds) | Default of `0` is 10 seconds |
|
| power.min_wake_secs | `integer` (seconds) | Default of `0` is 10 seconds |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
@ -161,6 +158,7 @@ meshtastic --set power.ls_secs 120
|
||||||
meshtastic --set power.min_wake_secs 0
|
meshtastic --set power.min_wake_secs 0
|
||||||
meshtastic --set power.min_wake_secs 120
|
meshtastic --set power.min_wake_secs 120
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="web">
|
<TabItem value="web">
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ slug: /settings/config/user
|
||||||
sidebar_label: User
|
sidebar_label: User
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The user config options are: Long Name, Short Name, and Is Licensed. User config uses an admin message sending a `User` protobuf.
|
The user config options are: Long Name, Short Name, and Is Licensed. User config uses an admin message sending a `User` protobuf.
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ slug: /hardware/peripheral/
|
||||||
sidebar_position: 6
|
sidebar_position: 6
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
## Firmware Versions
|
## Firmware Versions
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
|
@ -47,7 +46,7 @@ The procedure using the python command line tool is:
|
||||||
meshtastic --ch-add gpio
|
meshtastic --ch-add gpio
|
||||||
```
|
```
|
||||||
3. If doing local testing, you may also want to change the speed of the channel:
|
3. If doing local testing, you may also want to change the speed of the channel:
|
||||||
```sh
|
```shell
|
||||||
meshtastic --ch-mediumfast
|
meshtastic --ch-mediumfast
|
||||||
```
|
```
|
||||||
4. Check the channel has been created and copy the long "Complete URL" that contains all the channels on that device:
|
4. Check the channel has been created and copy the long "Complete URL" that contains all the channels on that device:
|
||||||
|
@ -144,7 +143,6 @@ By default, the pin may be "off" or "on". (It will most likely "off".) See the s
|
||||||
|
|
||||||
![T-Lora v1 with LED on GPIO 21](/img/LED_on_TLoraV1.jpg)
|
![T-Lora v1 with LED on GPIO 21](/img/LED_on_TLoraV1.jpg)
|
||||||
|
|
||||||
|
|
||||||
## Using GPIOs from the Python CLI
|
## Using GPIOs from the Python CLI
|
||||||
|
|
||||||
### Writing a GPIO
|
### Writing a GPIO
|
||||||
|
|
|
@ -5,8 +5,8 @@ slug: /settings/moduleconfig/audio
|
||||||
sidebar_label: Audio
|
sidebar_label: Audio
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The audio module config options are: Codec2 Enabled, PTT GPIO, Audio Bitrate/Codec Mode, I2S Word Select, I2S Data IN, I2S Data OUT and I2S Clock. Audio Module config uses an admin message sending a `ConfigModule.Audio` protobuf.
|
The audio module config options are: Codec2 Enabled, PTT GPIO, Audio Bitrate/Codec Mode, I2S Word Select, I2S Data IN, I2S Data OUT and I2S Clock. Audio Module config uses an admin message sending a `ConfigModule.Audio` protobuf.
|
||||||
|
|
||||||
|
@ -26,15 +26,15 @@ The GPIO to use for the Push-To-Talk button. The default is GPIO 39 on the ESP32
|
||||||
|
|
||||||
The bitrate to use for audio. The default is `CODEC2_700B`. The available options are:
|
The bitrate to use for audio. The default is `CODEC2_700B`. The available options are:
|
||||||
|
|
||||||
* CODEC2_DEFAULT
|
- CODEC2_DEFAULT
|
||||||
* CODEC2_3200
|
- CODEC2_3200
|
||||||
* CODEC2_2400
|
- CODEC2_2400
|
||||||
* CODEC2_1600
|
- CODEC2_1600
|
||||||
* CODEC2_1400
|
- CODEC2_1400
|
||||||
* CODEC2_1300
|
- CODEC2_1300
|
||||||
* CODEC2_1200
|
- CODEC2_1200
|
||||||
* CODEC2_700B
|
- CODEC2_700B
|
||||||
* CODEC2_700
|
- CODEC2_700
|
||||||
|
|
||||||
### I2S Word Select
|
### I2S Word Select
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ The GPIO to use for the DIN signal in the I2S interface.
|
||||||
The GPIO to use for the SCK signal in the I2S interface.
|
The GPIO to use for the SCK signal in the I2S interface.
|
||||||
|
|
||||||
:::info What is this?
|
:::info What is this?
|
||||||
These Pins comprise an I2S digital audio interface. Meshtastic uses it in monoaural mode. The software will use the logical 'LEFT' Stereo channel for the microphone and the logical 'RIGHT' Stereo channel for the speaker, so configure your breakouts accordingly. Audio is Half-Duplex, so we can re-use part of the pins for a bi-directional configuration. There's __no__ default pin assigment, setting these is mandatory.
|
These Pins comprise an I2S digital audio interface. Meshtastic uses it in monoaural mode. The software will use the logical 'LEFT' Stereo channel for the microphone and the logical 'RIGHT' Stereo channel for the speaker, so configure your breakouts accordingly. Audio is Half-Duplex, so we can re-use part of the pins for a bi-directional configuration. There's **no** default pin assigment, setting these is mandatory.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Audio Module Config Client Availability
|
## Audio Module Config Client Availability
|
||||||
|
@ -94,15 +94,15 @@ All audio module config options are available in the python CLI. Example command
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :-------------------: | :-----------------: | :-----: |
|
| :-----------: | :-----------------------------------------------------------------------------------------------------------------------------: | :----------------------: |
|
||||||
| audio.enabled | `true`, `false` | `false` |
|
| audio.enabled | `true`, `false` | `false` |
|
||||||
| audio.ptt_pin | GPIO Pin Number 1-39 | Default of `39` 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` |
|
| audio.bitrate | `CODEC2_DEFAULT` `CODEC2_3200` `CODEC2_2400` `CODEC2_1600` `CODEC2_1400` `CODEC2_1300` `CODEC2_1200` `CODEC2_700B` `CODEC2_700` | `CODEC2_DEFAULT` |
|
||||||
| audio.i2s_ws | GPIO Pin Number 1-34 | no Default |
|
| audio.i2s_ws | GPIO Pin Number 1-34 | no Default |
|
||||||
| audio.i2s_sd | GPIO Pin Number 1-39 | no Default |
|
| audio.i2s_sd | GPIO Pin Number 1-39 | no Default |
|
||||||
| audio.i2s_din | GPIO Pin Number 1-34 | no Default |
|
| audio.i2s_din | GPIO Pin Number 1-34 | no Default |
|
||||||
| audio.i2s_sck | GPIO Pin Number 1-34 | no Default |
|
| audio.i2s_sck | GPIO Pin Number 1-34 | no Default |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,12 @@ slug: /settings/moduleconfig/canned-message
|
||||||
sidebar_label: Canned Message
|
sidebar_label: Canned Message
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The Canned Message Module will allow you to send messages to the mesh network from the device without using the phone app. You can predefine text messages to choose from.
|
The Canned Message Module will allow you to send messages to the mesh network from the device without using the phone app. You can predefine text messages to choose from.
|
||||||
|
|
||||||
The canned message module config options are: Enabled, Save, and Sender. Range Test Module config uses an admin message sending a `ConfigModule.CannedMessage` protobuf.
|
The canned message module config options are: Enabled, Save, and Sender. Range Test Module config uses an admin message sending a `ConfigModule.CannedMessage` protobuf.
|
||||||
|
|
||||||
## Canned Message Module Config Values
|
## Canned Message Module Config Values
|
||||||
|
|
||||||
|
@ -33,12 +33,12 @@ The list of pre-set messages, up to 200 bytes.
|
||||||
|
|
||||||
Input event sources accepted by the canned message module.
|
Input event sources accepted by the canned message module.
|
||||||
|
|
||||||
| Value | Description |
|
| Value | Description |
|
||||||
| :----------: | :---------------------------------------------------------------------: |
|
| :----------: | :------------------------------------------------------------------: |
|
||||||
| `_any` | Default. Allows any peripheral input device connected to the device. |
|
| `_any` | Default. Allows any peripheral input device connected to the device. |
|
||||||
| `rotEnc1` | Basic Rotary Encoder |
|
| `rotEnc1` | Basic Rotary Encoder |
|
||||||
| `upDownEnc1` | Up Down Encoder (use this also for RAK14006 Rotary Encoder) |
|
| `upDownEnc1` | Up Down Encoder (use this also for RAK14006 Rotary Encoder) |
|
||||||
| `cardkb` | M5 Stack CardKB (this covers RAK14004 Keymatrix) |
|
| `cardkb` | M5 Stack CardKB (this covers RAK14004 Keymatrix) |
|
||||||
|
|
||||||
### Rotary Encoder Enabled
|
### Rotary Encoder Enabled
|
||||||
|
|
||||||
|
@ -112,19 +112,19 @@ All canned message module config options are available in the python CLI.
|
||||||
|
|
||||||
Example commands are below:
|
Example commands are below:
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :--------------------------------------: | :---------------: | :-----------: |
|
| :------------------------------------: | :---------------------------------------: | :-----------: |
|
||||||
| canned_message.enabled | `true`, `false` | `false` |
|
| canned_message.enabled | `true`, `false` | `false` |
|
||||||
| canned_message.send_bell | `true`, `false` | `false` |
|
| canned_message.send_bell | `true`, `false` | `false` |
|
||||||
| canned_message.allow_input_source | `rotEnc1`, `_any`, `upDownEnc1`, `cardkb` | `_any` |
|
| canned_message.allow_input_source | `rotEnc1`, `_any`, `upDownEnc1`, `cardkb` | `_any` |
|
||||||
| canned_message.messages | `string` | `""` |
|
| canned_message.messages | `string` | `""` |
|
||||||
| (Messages)\* | `string` | `""` |
|
| (Messages)\* | `string` | `""` |
|
||||||
| canned_message.inputbroker_event_cw | `InputEventChar` | (not defined) |
|
| canned_message.inputbroker_event_cw | `InputEventChar` | (not defined) |
|
||||||
| canned_message.inputbroker_event_ccw | `InputEventChar` | (not defined) |
|
| canned_message.inputbroker_event_ccw | `InputEventChar` | (not defined) |
|
||||||
| canned_message.inputbroker_event_press | `InputEventChar` | (not defined) |
|
| canned_message.inputbroker_event_press | `InputEventChar` | (not defined) |
|
||||||
| canned_message.inputbroker_pin_a | `integer` | (not defined) |
|
| canned_message.inputbroker_pin_a | `integer` | (not defined) |
|
||||||
| canned_message.inputbroker_pin_b | `integer` | (not defined) |
|
| canned_message.inputbroker_pin_b | `integer` | (not defined) |
|
||||||
| canned_message.inputbroker_pin_press | `integer` | (not defined) |
|
| canned_message.inputbroker_pin_press | `integer` | (not defined) |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
@ -188,6 +188,7 @@ meshtastic --set canned_message.inputbroker_event_ccw ""
|
||||||
meshtastic --set canned_message.inputbroker_event_press KEY_SELECT
|
meshtastic --set canned_message.inputbroker_event_press KEY_SELECT
|
||||||
meshtastic --set canned_message.inputbroker_event_press ""
|
meshtastic --set canned_message.inputbroker_event_press ""
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="web">
|
<TabItem value="web">
|
||||||
|
|
||||||
|
@ -241,7 +242,7 @@ You will need a generic rotary encoder. The types listed below has five legs whe
|
||||||
|
|
||||||
Connect your rotary encoder as follows. The rotary encoder has two rows of legs. One of the rows contains two legs, the other contains three legs. Bottom side view:
|
Connect your rotary encoder as follows. The rotary encoder has two rows of legs. One of the rows contains two legs, the other contains three legs. Bottom side view:
|
||||||
|
|
||||||
```
|
```text
|
||||||
B o --- o PRESS
|
B o --- o PRESS
|
||||||
GND o | |
|
GND o | |
|
||||||
A o --- o GND
|
A o --- o GND
|
||||||
|
@ -251,7 +252,7 @@ The two legs is to sense the press action (or push). Connect one of the two to G
|
||||||
|
|
||||||
The three legs is to sense the rotation action. Connect the middle leg to GROUND and the ones on the side to GPIO pins. Let's call these ports 'A' and 'B', according to the scheme below.
|
The three legs is to sense the rotation action. Connect the middle leg to GROUND and the ones on the side to GPIO pins. Let's call these ports 'A' and 'B', according to the scheme below.
|
||||||
|
|
||||||
```
|
```text
|
||||||
A --||
|
A --||
|
||||||
GND --||]========
|
GND --||]========
|
||||||
B --||
|
B --||
|
||||||
|
@ -267,7 +268,6 @@ Recommended GPIO pins for connecting a rotary encoder.
|
||||||
There is a reference case 3D-design utilizing the rotary encoder for TTGO LoRa V1:
|
There is a reference case 3D-design utilizing the rotary encoder for TTGO LoRa V1:
|
||||||
[Case for TTGO-ESP32-LORA-OLED-v1.0 with rotary encoder](https://www.thingiverse.com/thing:5178495)
|
[Case for TTGO-ESP32-LORA-OLED-v1.0 with rotary encoder](https://www.thingiverse.com/thing:5178495)
|
||||||
|
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
- Attach a compatible peripheral device. Take note of the GPIO numbers you use, as they will be used in the following step.
|
- Attach a compatible peripheral device. Take note of the GPIO numbers you use, as they will be used in the following step.
|
||||||
|
@ -286,6 +286,4 @@ meshtastic --set canned_message.inputbroker_event_press KEY_SELECT
|
||||||
meshtastic --set canned_message.rotary1_enabled True
|
meshtastic --set canned_message.rotary1_enabled True
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
That's it! With a functioning and enabled rotary encoder, you're ready to begin configuring the Canned Message Module.
|
That's it! With a functioning and enabled rotary encoder, you're ready to begin configuring the Canned Message Module.
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,12 @@ slug: /settings/moduleconfig/external-notification
|
||||||
sidebar_label: External Notification
|
sidebar_label: External Notification
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The External Notification Module will allow you to connect a buzzer, speaker, LED, or other device to notify you when a message has been received from the mesh network.
|
The External Notification Module will allow you to connect a buzzer, speaker, LED, or other device to notify you when a message has been received from the mesh network.
|
||||||
|
|
||||||
## External Notification Module Config Values
|
## External Notification Module Config Values
|
||||||
|
|
||||||
### Enabled
|
### Enabled
|
||||||
|
|
||||||
|
@ -80,8 +80,8 @@ All external notification module config options are available in the python CLI.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :----------------------------: | :----------------------: | :-----: |
|
| :---------------------------------: | :----------------------: | :-----: |
|
||||||
| external_notification.enabled | `true`, `false` | `false` |
|
| external_notification.enabled | `true`, `false` | `false` |
|
||||||
| external_notification.active | `true`, `false` | `false` |
|
| external_notification.active | `true`, `false` | `false` |
|
||||||
| external_notification.alert_bell | `true`, `false` | `false` |
|
| external_notification.alert_bell | `true`, `false` | `false` |
|
||||||
|
@ -127,6 +127,7 @@ meshtastic --set external_notification.output 21
|
||||||
meshtastic --set external_notification.output_ms 0
|
meshtastic --set external_notification.output_ms 0
|
||||||
meshtastic --set external_notification.output_ms 1500
|
meshtastic --set external_notification.output_ms 1500
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="web">
|
<TabItem value="web">
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,13 @@ sidebar_position: 3
|
||||||
|
|
||||||
Modules are included in the firmware and allow users to extend the functionality of their mesh or device.
|
Modules are included in the firmware and allow users to extend the functionality of their mesh or device.
|
||||||
|
|
||||||
| Name | Description |
|
| Name | Description |
|
||||||
|:----:|:-----------:|
|
| :------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
||||||
| [Audio](/docs/settings/moduleconfig/audio) | enable Support for Codec2 Voice Comms on certain devices |
|
| [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. |
|
| [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) |
|
| [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. |
|
| [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. |
|
||||||
| [Range Test](/docs/settings/moduleconfig/range-test) | Send messages with GPS location at an interval to test the distance your devices can communicate. Requires (at least) one device set up as a sender and one as a receiver. The receiver(s) will log all incoming messages to a CSV. |
|
| [Range Test](/docs/settings/moduleconfig/range-test) | Send messages with GPS location at an interval to test the distance your devices can communicate. Requires (at least) one device set up as a sender and one as a receiver. The receiver(s) will log all incoming messages to a CSV. |
|
||||||
| [Serial Module](/docs/settings/moduleconfig/serial) | Send messages across the mesh by sending strings over a serial port. |
|
| [Serial Module](/docs/settings/moduleconfig/serial) | Send messages across the mesh by sending strings over a serial port. |
|
||||||
| [Telemetry](/docs/settings/moduleconfig/telemetry) | Attach sensors to the device and transmit readings on a regular interval to the mesh. |
|
| [Telemetry](/docs/settings/moduleconfig/telemetry) | Attach sensors to the device and transmit readings on a regular interval to the mesh. |
|
||||||
| [Traceroute](/docs/settings/moduleconfig/traceroute) | Track which nodes are used to hop a message to a certain destination. |
|
| [Traceroute](/docs/settings/moduleconfig/traceroute) | Track which nodes are used to hop a message to a certain destination. |
|
||||||
|
|
|
@ -5,8 +5,8 @@ slug: /settings/moduleconfig/mqtt
|
||||||
sidebar_label: MQTT
|
sidebar_label: MQTT
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
If your device is connected to Internet via wifi or ethernet, you can enable it to forward packets along to an MQTT server. This allows users on the local mesh to communicate with users on the internet. One or more channels must be enabled as uplink and/or downlink for protobufs to be transmitted from and/or to the mesh (See [channels](/docs/settings/config/channels#downlink-enabled)). Without these settings the node will still connect to MQTT server and send status messages.
|
If your device is connected to Internet via wifi or ethernet, you can enable it to forward packets along to an MQTT server. This allows users on the local mesh to communicate with users on the internet. One or more channels must be enabled as uplink and/or downlink for protobufs to be transmitted from and/or to the mesh (See [channels](/docs/settings/config/channels#downlink-enabled)). Without these settings the node will still connect to MQTT server and send status messages.
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ The MQTT module config options are: Enabled, Server Address, Username, Password,
|
||||||
|
|
||||||
## Settings
|
## Settings
|
||||||
|
|
||||||
## MQTT Module Config Values
|
## MQTT Module Config Values
|
||||||
|
|
||||||
### Enabled
|
### Enabled
|
||||||
|
|
||||||
|
@ -78,14 +78,14 @@ All MQTT module config options are available in the python CLI. Example commands
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :--------------------------: | :----------------------: | :-----: |
|
| :---------------------: | :---------------: | :-----: |
|
||||||
| mqtt.enabled | `true`, `false` | `false` |
|
| mqtt.enabled | `true`, `false` | `false` |
|
||||||
| mqtt.address | `string` | |
|
| mqtt.address | `string` | |
|
||||||
| mqtt.username | `string` | |
|
| mqtt.username | `string` | |
|
||||||
| mqtt.password | `string` | |
|
| mqtt.password | `string` | |
|
||||||
| mqtt.encryption_enabled | `string` | |
|
| mqtt.encryption_enabled | `string` | |
|
||||||
| mqtt.json_enabled | `true`, `false` | `false` |
|
| mqtt.json_enabled | `true`, `false` | `false` |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,7 @@ The range test module config options are: Enabled, Save, and Sender. Range Test
|
||||||
|
|
||||||
Enables the range test module.
|
Enables the range test module.
|
||||||
|
|
||||||
### Save CSV File
|
### Save CSV File `ESP32 Only Setting`
|
||||||
|
|
||||||
**ESP32 Only Setting**
|
|
||||||
|
|
||||||
If enabled, we will save a log of all received messages to a file named rangetest.csv which you can access from the web server Extensions > File Browser > rangetest.csv. The file will be created after receiving messages. The device will abort writing if there is less than 50k of space on the filesystem to prevent filling up the storage.
|
If enabled, we will save a log of all received messages to a file named rangetest.csv which you can access from the web server Extensions > File Browser > rangetest.csv. The file will be created after receiving messages. The device will abort writing if there is less than 50k of space on the filesystem to prevent filling up the storage.
|
||||||
|
|
||||||
|
|
|
@ -5,16 +5,15 @@ slug: /settings/moduleconfig/serial
|
||||||
sidebar_label: Serial
|
sidebar_label: Serial
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The serial module config options are: Enabled, Echo, Mode, Receive GPIO, Transmit GPIO and Sender. Serial Module config uses an admin message sending a `ConfigModule.Serial` protobuf.
|
The serial module config options are: Enabled, Echo, Mode, Receive GPIO, Transmit GPIO and Sender. Serial Module config uses an admin message sending a `ConfigModule.Serial` protobuf.
|
||||||
|
|
||||||
This is a simple interface to send messages over the mesh network by sending strings over a serial port. Anything you send the node will be turned into a message sent out over the mesh, and anything received from the mesh will be sent to the serial port. Note that this module does not (yet) allow arbitrary protobuf commands to be sent over the serial connection.
|
This is a simple interface to send messages over the mesh network by sending strings over a serial port. Anything you send the node will be turned into a message sent out over the mesh, and anything received from the mesh will be sent to the serial port. Note that this module does not (yet) allow arbitrary protobuf commands to be sent over the serial connection.
|
||||||
|
|
||||||
![image](https://user-images.githubusercontent.com/9000580/205529843-962c3187-8411-452c-b729-42c58b1571f5.png)
|
![image](https://user-images.githubusercontent.com/9000580/205529843-962c3187-8411-452c-b729-42c58b1571f5.png)
|
||||||
|
|
||||||
|
|
||||||
## Serial Module Config Values
|
## Serial Module Config Values
|
||||||
|
|
||||||
### Enabled
|
### Enabled
|
||||||
|
@ -31,11 +30,11 @@ Defaults to 'Simple'.
|
||||||
|
|
||||||
Available Values:
|
Available Values:
|
||||||
|
|
||||||
* `DEFAULT`
|
- `DEFAULT`
|
||||||
* `SIMPLE` operate as an dumb UART tunnel. What goes in will come out, Requires a channel named 'serial'.
|
- `SIMPLE` operate as an dumb UART tunnel. What goes in will come out, Requires a channel named 'serial'.
|
||||||
* `PROTO` Exposes the Protobuf Client API on this serial port. You can use this to connect from another device. [API Reference](/docs/development/device/client-api)
|
- `PROTO` Exposes the Protobuf Client API on this serial port. You can use this to connect from another device. [API Reference](/docs/development/device/client-api)
|
||||||
* `TEXTMSG` Will send the string received over the serial port as a Text Message for Display on the other devices.
|
- `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).
|
- `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
|
### Receive GPIO Pin
|
||||||
|
|
||||||
|
@ -99,15 +98,15 @@ All serial module config options are available in the python CLI. Example comman
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :-------------------: | :-----------------: | :-----: |
|
| :------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------: |
|
||||||
| serial.enabled | `true`, `false` | `false` |
|
| serial.enabled | `true`, `false` | `false` |
|
||||||
| serial.echo | `true`, `false` | `false` |
|
| serial.echo | `true`, `false` | `false` |
|
||||||
| serial.mode | `DEFAULT` `SIMPLE` `PROTO` `TEXTMSG`, `NMEA` | `DEFAULT` |
|
| serial.mode | `DEFAULT` `SIMPLE` `PROTO` `TEXTMSG`, `NMEA` | `DEFAULT` |
|
||||||
| serial.rxd | GPIO Pin Number 1-39 | Default of `0` is Unset |
|
| serial.rxd | GPIO Pin Number 1-39 | Default of `0` is Unset |
|
||||||
| serial.txd | GPIO Pin Number 1-33 | Default 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.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` (milli seconds) | Default of `0` corresponds to 250 ms |
|
| serial.timeout | `integer` (milli seconds) | Default of `0` corresponds to 250 ms |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
@ -170,7 +169,8 @@ This module requires attaching a peripheral accessory to your device. It will no
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
Default is to use RX GPIO 16 and TX GPIO 17.
|
Default is to use RX GPIO 16 and TX GPIO 17.
|
||||||
### Basic Usage:
|
|
||||||
|
### Basic Usage
|
||||||
|
|
||||||
1. Enable the module by setting `serial.enabled` to `1`.
|
1. Enable the module by setting `serial.enabled` to `1`.
|
||||||
2. Set the pins (`serial.rxd` / `serial.txd`) for your preferred RX and TX GPIO pins. On tbeam boards it is recommended to use:
|
2. Set the pins (`serial.rxd` / `serial.txd`) for your preferred RX and TX GPIO pins. On tbeam boards it is recommended to use:
|
||||||
|
@ -180,24 +180,28 @@ Default is to use RX GPIO 16 and TX GPIO 17.
|
||||||
4. (Optional) set serial.mode to TEXTMSG if you want to send messages to/from the general text message channel
|
4. (Optional) set serial.mode to TEXTMSG if you want to send messages to/from the general text message channel
|
||||||
5. Connect to your device over the serial interface at `38400 8N1`.
|
5. Connect to your device over the serial interface at `38400 8N1`.
|
||||||
|
|
||||||
With [tio](https://github.com/tio/tio) – `tio -e -b 38400 -f none /dev/myserialport`
|
With [tio](https://github.com/tio/tio) – `tio -e -b 38400 -f none /dev/myserialport`
|
||||||
7. Send a packet up to 237 bytes in length. This will get relayed over the mesh network.
|
|
||||||
8. (Optional) Set `serial.echo` to `1` and any message you send out will be echoed back to your device.
|
6. Send a packet up to 237 bytes in length. This will get relayed over the mesh network.
|
||||||
|
7. (Optional) Set `serial.echo` to `1` and any message you send out will be echoed back to your device.
|
||||||
|
|
||||||
### Interfacing PIR Sensor With External Microcontroller
|
### Interfacing PIR Sensor With External Microcontroller
|
||||||
The following is an example of using a Raspberry Pi Pico connected to a PIR sensor to detect motion. When motion is detected, a message is sent via. serial to the T-Beam. The T-Beam transmits the message as text over the default channel by utilizing the serial module in TXTMSG mode.
|
|
||||||
|
The following is an example of using a Raspberry Pi Pico connected to a PIR sensor to detect motion. When motion is detected, a message is sent via. serial to the T-Beam. The T-Beam transmits the message as text over the default channel by utilizing the serial module in TXTMSG mode.
|
||||||
|
|
||||||
#### BOM
|
#### BOM
|
||||||
|
|
||||||
- Raspberry Pi Pico running [CircuitPython](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython)
|
- Raspberry Pi Pico running [CircuitPython](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython)
|
||||||
- T-Beam V1.1 running Meshtastic
|
- T-Beam V1.1 running Meshtastic
|
||||||
- PIR Sensor ([Adafruit Breadboard Model](https://www.adafruit.com/product/4871))
|
- PIR Sensor ([Adafruit Breadboard Model](https://www.adafruit.com/product/4871))
|
||||||
|
|
||||||
#### Meshtastic Software Configuration:
|
#### Meshtastic Software Configuration
|
||||||
|
|
||||||
- Serial module enabled, mode: TXTMSG
|
- Serial module enabled, mode: TXTMSG
|
||||||
- GPIO Pins (For T-Beam) RX 13, TX 14
|
- GPIO Pins (For T-Beam) RX 13, TX 14
|
||||||
- 38400 Baud
|
- 38400 Baud
|
||||||
|
|
||||||
#### Wiring:
|
#### Wiring
|
||||||
|
|
||||||
![image](https://user-images.githubusercontent.com/2799310/210852481-21ea76e5-ecaa-40c1-8f34-635ef2a1c95b.png)
|
![image](https://user-images.githubusercontent.com/2799310/210852481-21ea76e5-ecaa-40c1-8f34-635ef2a1c95b.png)
|
||||||
|
|
||||||
|
@ -209,9 +213,10 @@ The following is an example of using a Raspberry Pi Pico connected to a PIR sens
|
||||||
- GND pin 38 on the Pico to breadboard ground rail
|
- GND pin 38 on the Pico to breadboard ground rail
|
||||||
- 3V3 pin 36 on the Pico to the breadboard positive voltage rail
|
- 3V3 pin 36 on the Pico to the breadboard positive voltage rail
|
||||||
- Optional, to power the Pico off of the T-Beam instead of USB:
|
- Optional, to power the Pico off of the T-Beam instead of USB:
|
||||||
- Connect 5V pin on T-Beam to Vbus pin 40 on the Pico
|
- Connect 5V pin on T-Beam to Vbus pin 40 on the Pico
|
||||||
|
|
||||||
#### Circuit Python Code
|
#### Circuit Python Code
|
||||||
|
|
||||||
```python
|
```python
|
||||||
import time
|
import time
|
||||||
import board
|
import board
|
||||||
|
|
|
@ -5,10 +5,10 @@ slug: /settings/moduleconfig/telemetry
|
||||||
sidebar_label: Telemetry
|
sidebar_label: Telemetry
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
The Telemetry Module provides two types of data over the mesh. Device metrics (Battery Level, Voltage, Channel Utilization and Airtime) from your meshtastic device and Environment Metrics from attached I2C sensors.
|
The Telemetry Module provides two types of data over the mesh. Device metrics (Battery Level, Voltage, Channel Utilization and Airtime) from your meshtastic device and Environment Metrics from attached I2C sensors.
|
||||||
|
|
||||||
Supported sensors connected to the I2C bus of the device will be automatically detected at startup. Environment Telemetry must be enabled for them to be instrumented and their readings sent over the mesh.
|
Supported sensors connected to the I2C bus of the device will be automatically detected at startup. Environment Telemetry must be enabled for them to be instrumented and their readings sent over the mesh.
|
||||||
|
|
||||||
|
@ -16,19 +16,19 @@ The telemetry module config options are: Device Metrics Update Interval, Environ
|
||||||
|
|
||||||
### Currently Supported Sensor Types
|
### Currently Supported Sensor Types
|
||||||
|
|
||||||
| Sensor | I<sup>2</sup>C Address | Data Points |
|
| Sensor | I<sup>2</sup>C Address | Data Points |
|
||||||
| :-----: | :--------------------: | :-----------------------------------------------------------: |
|
| :-----: | :--------------------: | :-----------------------------------------------------------: |
|
||||||
| BMP280 | 0x76, 0x77 | Temperature and barometric pressure |
|
| BMP280 | 0x76, 0x77 | Temperature and barometric pressure |
|
||||||
| BME280 | 0x76, 0x77 | Temperature, barometric pressure and humidity |
|
| BME280 | 0x76, 0x77 | Temperature, barometric pressure and humidity |
|
||||||
| BME680 | 0x76, 0x77 | Temperature, barometric pressure, humidity and air resistance |
|
| BME680 | 0x76, 0x77 | Temperature, barometric pressure, humidity and air resistance |
|
||||||
| MCP9808 | 0x18 | Temperature |
|
| MCP9808 | 0x18 | Temperature |
|
||||||
| INA260 | 0x40, 0x41 | Current and Voltage |
|
| INA260 | 0x40, 0x41 | Current and Voltage |
|
||||||
| INA219 | 0x40, 0x41 | Current and Voltage |
|
| INA219 | 0x40, 0x41 | Current and Voltage |
|
||||||
| LPS22 | 0x5D, 0x5c | Barometric pressure |
|
| LPS22 | 0x5D, 0x5c | Barometric pressure |
|
||||||
| SHTC3 | 0x70 | Temperature and humidity |
|
| SHTC3 | 0x70 | Temperature and humidity |
|
||||||
| SHT31 | 0x44 | Temperature and humidity |
|
| SHT31 | 0x44 | Temperature and humidity |
|
||||||
|
|
||||||
## Module Config Values
|
## Module Config Values
|
||||||
|
|
||||||
### Update Intervals
|
### Update Intervals
|
||||||
|
|
||||||
|
@ -101,13 +101,13 @@ All telemetry module config options are available in the python CLI. Example com
|
||||||
|
|
||||||
## Settings
|
## Settings
|
||||||
|
|
||||||
| Setting | Acceptable Values | Default |
|
| Setting | Acceptable Values | Default |
|
||||||
| :-----------------------------------------------------: | :-----------------: | :-----: |
|
| :---------------------------------------: | :-----------------: | :---------------------------------------: |
|
||||||
| telemetry.device_update_interval | `integer` (seconds) | Default `0` is 15 minutes(`900` seconds). |
|
| telemetry.device_update_interval | `integer` (seconds) | Default `0` is 15 minutes(`900` seconds). |
|
||||||
| telemetry.environment_display_fahrenheit | `true`, `false` | `false` |
|
| telemetry.environment_display_fahrenheit | `true`, `false` | `false` |
|
||||||
| telemetry.environment_measurement_enabled | `true`, `false` | `false` |
|
| telemetry.environment_measurement_enabled | `true`, `false` | `false` |
|
||||||
| telemetry.environment_screen_enabled | `true`, `false` | `0` |
|
| telemetry.environment_screen_enabled | `true`, `false` | `0` |
|
||||||
| telemetry.environment_update_interval | `integer` (seconds) | Default `0` is 15 minutes(`900` seconds). |
|
| telemetry.environment_update_interval | `integer` (seconds) | Default `0` is 15 minutes(`900` seconds). |
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ meshtastic --set telemetry.device_update_interval 0
|
||||||
meshtastic --set telemetry.device_update_interval 0
|
meshtastic --set telemetry.device_update_interval 0
|
||||||
// Environment Metrics Two Minutes
|
// Environment Metrics Two Minutes
|
||||||
meshtastic --set telemetry.environment_update_interval 120
|
meshtastic --set telemetry.environment_update_interval 120
|
||||||
````
|
```
|
||||||
|
|
||||||
```shell title="Enable/Disable Environment Module"
|
```shell title="Enable/Disable Environment Module"
|
||||||
meshtastic --set telemetry.environment_measurement_enabled true
|
meshtastic --set telemetry.environment_measurement_enabled true
|
||||||
|
@ -140,7 +140,7 @@ meshtastic --set telemetry.environment_screen_enabled false
|
||||||
```shell title="Enable / Disable Display Fahrenheit"
|
```shell title="Enable / Disable Display Fahrenheit"
|
||||||
meshtastic --set telemetry.environment_display_fahrenheit true
|
meshtastic --set telemetry.environment_display_fahrenheit true
|
||||||
meshtastic --set telemetry.environment_display_fahrenheit false
|
meshtastic --set telemetry.environment_display_fahrenheit false
|
||||||
````
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="web">
|
<TabItem value="web">
|
||||||
|
@ -195,15 +195,15 @@ And examine the serial logs for Telemetry diagnostic information.
|
||||||
|
|
||||||
### Environment Metrics
|
### Environment Metrics
|
||||||
|
|
||||||
The environment metrics in the telemetry module supports a limited amount of fields as they are stored in memory on the device. Support for sensors that provide one or more of the following fields can potentially be added to the main firmware provided there is a GPL licensed library for us to include to support it, and the library size is not prohibitive.
|
The environment metrics in the telemetry module supports a limited amount of fields as they are stored in memory on the device. Support for sensors that provide one or more of the following fields can potentially be added to the main firmware provided there is a GPL licensed library for us to include to support it, and the library size is not prohibitive.
|
||||||
|
|
||||||
* Temperature
|
- Temperature
|
||||||
* Relative Humidity
|
- Relative Humidity
|
||||||
* Barometric Pressure
|
- Barometric Pressure
|
||||||
* Gas Resistance (AQI)
|
- Gas Resistance (AQI)
|
||||||
* Voltage
|
- Voltage
|
||||||
* Current
|
- Current
|
||||||
|
|
||||||
### Supporting Other Sensor types
|
### Supporting Other Sensor types
|
||||||
|
|
||||||
For other interesting sensor types and use cases we need to add a portnum for more generic telemetry packets and a second MCU will be required to interact with the sensor and process the data to be sent over the mesh. This data will not be stored in the nodedb on the device.
|
For other interesting sensor types and use cases we need to add a portnum for more generic telemetry packets and a second MCU will be required to interact with the sensor and process the data to be sent over the mesh. This data will not be stored in the nodedb on the device.
|
||||||
|
|
|
@ -5,8 +5,8 @@ slug: /settings/moduleconfig/traceroute
|
||||||
sidebar_label: Traceroute
|
sidebar_label: Traceroute
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
Due to the limited bandwidth of LoRa, Meshtastic does not keep track of the nodes a message used to hop to the destination. However, from firmware 2.0.8 on, there is a Traceroute Module that can show you this.
|
Due to the limited bandwidth of LoRa, Meshtastic does not keep track of the nodes a message used to hop to the destination. However, from firmware 2.0.8 on, there is a Traceroute Module that can show you this.
|
||||||
|
|
||||||
|
|
|
@ -9,28 +9,28 @@ sidebar_position: 5
|
||||||
|
|
||||||
The RAK4631 uses symbolic labels for its I/O Pins on the module and baseboard silk screens. The following table shows the mapping of the RAK4631 GPIO pins to the corresponding Arduino pins and the MCU Port numbers.
|
The RAK4631 uses symbolic labels for its I/O Pins on the module and baseboard silk screens. The following table shows the mapping of the RAK4631 GPIO pins to the corresponding Arduino pins and the MCU Port numbers.
|
||||||
|
|
||||||
| RAK Pin | nRF52840 Pin | Arduino GPIO | Remark |
|
| RAK Pin | nRF52840 Pin | Arduino GPIO | Remark |
|
||||||
| ------- | ------------ | ------------ | ------ |
|
| ------- | ------------ | ------------ | ------------------------------------------------------------------------ |
|
||||||
| IO1 | P0.17 | 17 | used for GPS PPM signal if GPS module is connected |
|
| IO1 | P0.17 | 17 | used for GPS PPM signal if GPS module is connected |
|
||||||
| IO2 | P1.02 | 34 | used to power all peripheral modules, not available for user application |
|
| IO2 | P1.02 | 34 | used to power all peripheral modules, not available for user application |
|
||||||
| IO3 | P0.21 | 21 |
|
| IO3 | P0.21 | 21 |
|
||||||
| IO4 | P0.04 | 4 |
|
| IO4 | P0.04 | 4 |
|
||||||
| IO5 | P0.09 | 9 | The 'User Button' is mapped here. |
|
| IO5 | P0.09 | 9 | The 'User Button' is mapped here. |
|
||||||
| IO6 | P0.10 | 10 |
|
| IO6 | P0.10 | 10 |
|
||||||
| IO7 | P0.28 | 28 |
|
| IO7 | P0.28 | 28 |
|
||||||
| SW1 | P0.01 | 1 |
|
| SW1 | P0.01 | 1 |
|
||||||
| A0 | P0.04/AIN2 | A2 |
|
| A0 | P0.04/AIN2 | A2 |
|
||||||
| A1 | P0.31/AIN7 | A7 |
|
| A1 | P0.31/AIN7 | A7 |
|
||||||
| SPI_CS | P0.26 | 26 |
|
| SPI_CS | P0.26 | 26 |
|
||||||
|
|
||||||
When configuring GPIO pins in your device settings, the Arduino GPIO numbers should be used.
|
When configuring GPIO pins in your device settings, the Arduino GPIO numbers should be used.
|
||||||
|
|
||||||
```shell title="Example"
|
```shell title="Example"
|
||||||
meshtastic --set external_notification.output 10
|
meshtastic --set external_notification.output 10
|
||||||
```
|
```
|
||||||
|
|
||||||
This will use IO6 on a RAK4631
|
This will use IO6 on a RAK4631
|
||||||
|
|
||||||
:::caution Note
|
:::caution Note
|
||||||
There is no usable GPIO pin on any RAK base board except the 'big' baseboard RAK19001 without adding a RAK13002 IO module or a third party IO sensor breakout.
|
There is no usable GPIO pin on any RAK base board except the 'big' baseboard RAK19001 without adding a RAK13002 IO module or a third party IO sensor breakout.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
|
@ -12,12 +12,12 @@ If you would like to develop this application we'd love your help! These build i
|
||||||
1. Use Android Studio to build/debug
|
1. Use Android Studio to build/debug
|
||||||
2. Use `git submodule update --init --recursive` to pull in the various sub-modules we depend on.
|
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:
|
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
|
```shell
|
||||||
rm ./app/google-services.json
|
rm ./app/google-services.json
|
||||||
cp ./app/google-services-example.json ./app/google-services.json
|
cp ./app/google-services-example.json ./app/google-services.json
|
||||||
rm ./app/src/main/res/values/curfirmwareversion.xml
|
rm ./app/src/main/res/values/curfirmwareversion.xml
|
||||||
cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/
|
cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/
|
||||||
```
|
```
|
||||||
4. Now you should be able to select "Run / Run" in the IDE and it will happily start running on your phone or the emulator.
|
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
|
:::note
|
||||||
|
@ -30,15 +30,16 @@ Analytics are included but can be disabled by the user on the settings screen.
|
||||||
|
|
||||||
1. Configure analytics for development device
|
1. Configure analytics for development device
|
||||||
|
|
||||||
```sh
|
```shell
|
||||||
adb shell setprop debug.firebase.analytics.app com.geeksville.mesh
|
adb shell setprop debug.firebase.analytics.app com.geeksville.mesh
|
||||||
adb shell setprop log.tag.FirebaseCrashlytics DEBUG
|
adb shell setprop log.tag.FirebaseCrashlytics DEBUG
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Set verbose logging
|
2. Set verbose logging
|
||||||
|
|
||||||
```sh
|
```shell
|
||||||
adb shell setprop log.tag.FA VERBOSE
|
adb shell setprop log.tag.FA VERBOSE
|
||||||
```
|
```
|
||||||
|
|
||||||
## Publish to Google Play
|
## Publish to Google Play
|
||||||
|
|
||||||
|
@ -47,20 +48,19 @@ Only available for core developers that publish releases.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
1. Add repository secrets:
|
1. Add repository secrets:
|
||||||
- **KEYSTORE_FILENAME**
|
- **KEYSTORE_FILENAME**
|
||||||
- Name of the `.jks`
|
- Name of the `.jks`
|
||||||
- **KEYSTORE**
|
- **KEYSTORE**
|
||||||
- Convert the `.jks` to base64:
|
- Convert the `.jks` to base64:
|
||||||
```sh
|
```shell
|
||||||
openssl base64 < filename.jks | tr -d '\n' | tee filename.txt
|
openssl base64 < filename.jks | tr -d '\n' | tee filename.txt
|
||||||
```
|
```
|
||||||
- **KEYSTORE_PROPERTIES**
|
- **KEYSTORE_PROPERTIES**
|
||||||
- `storePassword=nononononono`
|
- `storePassword=nononononono`
|
||||||
- `keyPassword=nononononono`
|
- `keyPassword=nononononono`
|
||||||
- `keyAlias=upload`
|
- `keyAlias=upload`
|
||||||
- `storeFile=nononononono.jks`
|
- `storeFile=nononononono.jks`
|
||||||
2. Update protobufs
|
2. Update protobufs
|
||||||
3. Go to Actions / Make Release / Run Workflow
|
3. Go to Actions / Make Release / Run Workflow
|
||||||
4. Pick the Releases branch
|
4. Pick the Releases branch
|
||||||
5. Enter the version found in `app/gradle.build`
|
5. Enter the version found in `app/gradle.build`
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@ The 4 byte header is constructed to both provide framing and to not look line 'n
|
||||||
|
|
||||||
The receiver will validate length and if >512 it will assume the packet is corrupted and return to looking for START1. While looking for START1 any other characters are printed as "debug output". For small example implementation of this reader see the python implementation.
|
The receiver will validate length and if >512 it will assume the packet is corrupted and return to looking for START1. While looking for START1 any other characters are printed as "debug output". For small example implementation of this reader see the python implementation.
|
||||||
|
|
||||||
|
|
||||||
## Bluetooth (MeshBluetoothService)
|
## Bluetooth (MeshBluetoothService)
|
||||||
|
|
||||||
This is the main Bluetooth service for the device and provides the API your app should use to get information about the mesh, send packets, or provision the radio.
|
This is the main Bluetooth service for the device and provides the API your app should use to get information about the mesh, send packets, or provision the radio.
|
||||||
|
|
|
@ -61,12 +61,14 @@ The protobufs will be sent in binary as the body for the request.
|
||||||
**Parameters**
|
**Parameters**
|
||||||
|
|
||||||
##### **/api/v1/fromradio?all**
|
##### **/api/v1/fromradio?all**
|
||||||
|
|
||||||
- `all=false` (unset default)
|
- `all=false` (unset default)
|
||||||
- Only one protobuf is returned.
|
- Only one protobuf is returned.
|
||||||
- `all=true`
|
- `all=true`
|
||||||
- All available protobufs are returned.
|
- All available protobufs are returned.
|
||||||
|
|
||||||
##### **/api/v1/fromradio?chunked**
|
##### **/api/v1/fromradio?chunked**
|
||||||
|
|
||||||
- `chunked=false` (unset default, not yet implemented)
|
- `chunked=false` (unset default, not yet implemented)
|
||||||
- The request returns all protobufs that can be delivered for the client's session (this would allow the client to poll by doing a series of requests). This is the only option that is supported in the initial release.
|
- The request returns all protobufs that can be delivered for the client's session (this would allow the client to poll by doing a series of requests). This is the only option that is supported in the initial release.
|
||||||
- `chunked=true` (not yet implemented)
|
- `chunked=true` (not yet implemented)
|
||||||
|
|
|
@ -67,9 +67,9 @@ The easiest way to get started is:
|
||||||
|
|
||||||
1. [Build the firmware](/docs/development/firmware/build) codebase.
|
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/`.
|
2. Copy the [ReplyModule](http://github.com/meshtastic/firmware/tree/master/src/modules/ReplyModule.cpp) as a template into `src/modules/`.
|
||||||
```sh
|
```shell
|
||||||
cp src/modules/ReplyModule.* src/modules/YourModule.*
|
cp src/modules/ReplyModule.* src/modules/YourModule.*
|
||||||
```
|
```
|
||||||
3. Change the port number from `PortNum_REPLY_APP` to `PortNum_PRIVATE_APP`.
|
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).
|
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.
|
5. Rebuild with your new module and install on the device.
|
||||||
|
@ -96,4 +96,3 @@ If you would like to use protocol buffers to define the structures you send over
|
||||||
1. Create a new `.proto` file in the protos directory.
|
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.
|
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.
|
3. Done! You can now use your new protobuf just like any of the existing protobufs in Meshtastic.
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ Another component that we use is [Vercel](https://vercel.com) — a platform for
|
||||||
| Getting Started | `docs/getting-started` | Instructions on how to get the Meshtastic firmware onto a users device. |
|
| Getting Started | `docs/getting-started` | Instructions on how to get the Meshtastic firmware onto a users device. |
|
||||||
| Device Settings | `docs/software/settings` | Details each user setting and provides explanations for what the setting does and how to configure the device using the various clients available (Android, CLI, iOS, Web) |
|
| Device Settings | `docs/software/settings` | Details each user setting and provides explanations for what the setting does and how to configure the device using the various clients available (Android, CLI, iOS, Web) |
|
||||||
| Hardware Details | `docs/hardware` | Any hardware related content. Any time a user is attaching a peripheral accessory to their device. That includes 3D printed cases, antennas, buttons, chimes, rotary encoders, and screens. |
|
| Hardware Details | `docs/hardware` | Any hardware related content. Any time a user is attaching a peripheral accessory to their device. That includes 3D printed cases, antennas, buttons, chimes, rotary encoders, and screens. |
|
||||||
| Radio Mesh Details | `docs/mesh` | This section discusses everything relating to the Meshtastic mesh. Mesh health metrics will be discussed here as well as topics such as signal strength, range and anything else pertaining to "over the air". |
|
| Radio Mesh Details | `docs/mesh` | This section discusses everything relating to the Meshtastic mesh. Mesh health metrics will be discussed here as well as topics such as signal strength, range and anything else pertaining to "over the air". |
|
||||||
| Contribute to Meshtastic | `docs/developers` | Details each of the projects and how they work together to give a developer an idea of how the Meshtastic ecosystem operates. |
|
| Contribute to Meshtastic | `docs/developers` | Details each of the projects and how they work together to give a developer an idea of how the Meshtastic ecosystem operates. |
|
||||||
| About the Documentation | `docs/maintaining-documentation` | This section explains how our documentation is organized, how to make edits to the documentation, view a local copy of your fork of the project. Style guides and tips will also be included here. |
|
| About the Documentation | `docs/maintaining-documentation` | This section explains how our documentation is organized, how to make edits to the documentation, view a local copy of your fork of the project. Style guides and tips will also be included here. |
|
||||||
| Legal | `docs/legal` | Any legal information. Most changes here will be handled by developers actually working on the projects that require any legal disclosures. Examples include: the Meshtastic trademark, terms of service, and privacy policy. |
|
| Legal | `docs/legal` | Any legal information. Most changes here will be handled by developers actually working on the projects that require any legal disclosures. Examples include: the Meshtastic trademark, terms of service, and privacy policy. |
|
||||||
|
@ -34,31 +34,31 @@ Another component that we use is [Vercel](https://vercel.com) — a platform for
|
||||||
|
|
||||||
Assuming you have the [prerequisites installed](/docs/development/documentation/local-dev#prerequisites), running a local instance of Docusaurus takes three steps:
|
Assuming you have the [prerequisites installed](/docs/development/documentation/local-dev#prerequisites), running a local instance of Docusaurus takes three steps:
|
||||||
|
|
||||||
1. Fork/Clone the [meshtastic/meshtastic](https://github.com/meshtastic/meshtastic) repository and navigate to the root directory of the project.
|
1. Fork/Clone the [meshtastic/meshtastic](https://github.com/meshtastic/meshtastic) repository and navigate to the root directory of the project.
|
||||||
|
|
||||||
```shell title="Clone the project"
|
```shell title="Clone the project"
|
||||||
git clone https://github.com/meshtastic/meshtastic.git
|
git clone https://github.com/meshtastic/meshtastic.git
|
||||||
```
|
```
|
||||||
|
|
||||||
```shell title="Clone fork of the project"
|
```shell title="Clone fork of the project"
|
||||||
git clone https://github.com/[username]/meshtastic.git
|
git clone https://github.com/[username]/meshtastic.git
|
||||||
```
|
```
|
||||||
|
|
||||||
```shell title="Change Directory"
|
```shell title="Change Directory"
|
||||||
cd ~/Meshtastic
|
cd ~/Meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Install Dependencies
|
2. Install Dependencies
|
||||||
|
|
||||||
```shell title="Install dependencies using Yarn"
|
```shell title="Install dependencies using Yarn"
|
||||||
yarn install
|
yarn install
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Run Docusaurus
|
3. Run Docusaurus
|
||||||
|
|
||||||
```shell title="Run node.js server"
|
```shell title="Run node.js server"
|
||||||
yarn start
|
yarn start
|
||||||
```
|
```
|
||||||
|
|
||||||
:::tip
|
:::tip
|
||||||
Before submitting a pull request, it's helpful to run the following command to ensure there are no broken links or errors:
|
Before submitting a pull request, it's helpful to run the following command to ensure there are no broken links or errors:
|
||||||
|
|
|
@ -7,14 +7,18 @@ sidebar_label: Publish
|
||||||
## Publish Live
|
## Publish Live
|
||||||
|
|
||||||
1. Generate protobuf docs
|
1. Generate protobuf docs
|
||||||
```shell
|
|
||||||
cd meshtastic
|
```shell
|
||||||
./scripts/gen-proto-docs.sh
|
cd meshtastic
|
||||||
```
|
./scripts/gen-proto-docs.sh
|
||||||
|
```
|
||||||
|
|
||||||
2. Build
|
2. Build
|
||||||
```shell
|
|
||||||
pnpm build
|
```shell
|
||||||
```
|
pnpm build
|
||||||
|
```
|
||||||
|
|
||||||
3. Submit Pull Request
|
3. Submit Pull Request
|
||||||
|
|
||||||
## Publish to Vercel
|
## Publish to Vercel
|
||||||
|
@ -48,4 +52,3 @@ There is a limited number of branch urls that you will be able to view. If you n
|
||||||
|
|
||||||
Branch urls are helpful in PRs because they will remain constant, and you won't need to resubmit a new url for review each new commit if changes are requested.
|
Branch urls are helpful in PRs because they will remain constant, and you won't need to resubmit a new url for review each new commit if changes are requested.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ title: Markdown Features
|
||||||
sidebar_label: Markdown Features
|
sidebar_label: Markdown Features
|
||||||
---
|
---
|
||||||
|
|
||||||
import { Dark, Light } from '/src/components/ColorMode';
|
import { Dark, Light } from "/src/components/ColorMode";
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ We have developed several [React](https://reactjs.org/) components for assisting
|
||||||
|
|
||||||
### Light/Dark Mode Switch
|
### Light/Dark Mode Switch
|
||||||
|
|
||||||
#### Usage:
|
#### Usage
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { Dark, Light } from '/src/components/ColorMode';
|
import { Dark, Light } from '/src/components/ColorMode';
|
||||||
|
@ -27,7 +27,7 @@ import { Dark, Light } from '/src/components/ColorMode';
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Demo:
|
#### Demo
|
||||||
|
|
||||||
<Dark>
|
<Dark>
|
||||||
<div className="not-prose rounded-lg bg-primary shadow-md">
|
<div className="not-prose rounded-lg bg-primary shadow-md">
|
||||||
|
@ -50,7 +50,7 @@ import { Dark, Light } from '/src/components/ColorMode';
|
||||||
|
|
||||||
### Code Blocks
|
### Code Blocks
|
||||||
|
|
||||||
#### Usage:
|
#### Usage
|
||||||
|
|
||||||
Always specify the language used directly after the start of the code block (```).
|
Always specify the language used directly after the start of the code block (```).
|
||||||
|
|
||||||
|
@ -71,13 +71,13 @@ export const typedArrayToBuffer = (array: Uint8Array): ArrayBuffer => {
|
||||||
```
|
```
|
||||||
````
|
````
|
||||||
|
|
||||||
#### Demo:
|
#### Demo
|
||||||
|
|
||||||
```ts title="Demo"
|
```ts title="Demo"
|
||||||
export const typedArrayToBuffer = (array: Uint8Array): ArrayBuffer => {
|
export const typedArrayToBuffer = (array: Uint8Array): ArrayBuffer => {
|
||||||
return array.buffer.slice(
|
return array.buffer.slice(
|
||||||
array.byteOffset,
|
array.byteOffset,
|
||||||
array.byteLength + array.byteOffset,
|
array.byteLength + array.byteOffset
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
|
@ -10,7 +10,7 @@ Meshtastic uses [PlatformIO](https://platformio.org), a development environment
|
||||||
|
|
||||||
1. [Install PlatformIO](https://platformio.org/platformio-ide)
|
1. [Install PlatformIO](https://platformio.org/platformio-ide)
|
||||||
2. Clone the [Meshtastic Firmware](https://github.com/meshtastic/firmware) repository
|
2. Clone the [Meshtastic Firmware](https://github.com/meshtastic/firmware) repository
|
||||||
```sh
|
```shell
|
||||||
git clone https://github.com/meshtastic/firmware.git
|
git clone https://github.com/meshtastic/firmware.git
|
||||||
```
|
```
|
||||||
3. Update the repository's [submodules](https://github.com/meshtastic/firmware/blob/master/.gitmodules)
|
3. Update the repository's [submodules](https://github.com/meshtastic/firmware/blob/master/.gitmodules)
|
||||||
|
|
|
@ -5,31 +5,34 @@ sidebar_label: OLED Localization
|
||||||
---
|
---
|
||||||
|
|
||||||
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. 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.
|
1. Copy and paste the existing font.
|
||||||
2. Modify it according desired codepage and save the new font file in `graphics/font` folder.
|
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.
|
Please note that the used font file format differs from common Adafruit GFX.
|
||||||
2. Update the `customFontTableLookup` function in `Screen.h`
|
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.
|
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.
|
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`
|
3. Define language and font in `Screen.cpp`
|
||||||
```c
|
|
||||||
#ifdef OLED_{LANG_NAME}
|
|
||||||
#include "fonts/OLEDDisplayFonts{LANG_NAME}.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
...
|
```c
|
||||||
|
#ifdef OLED_{LANG_NAME}
|
||||||
|
#include "fonts/OLEDDisplayFonts{LANG_NAME}.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
#ifdef OLED_{LANG_NAME}
|
||||||
|
#define FONT_SMALL ArialMT_Plain_10_{LANG_NAME}
|
||||||
|
#else
|
||||||
|
#define FONT_SMALL ArialMT_Plain_10
|
||||||
|
#endif
|
||||||
|
```
|
||||||
|
|
||||||
#ifdef OLED_{LANG_NAME}
|
|
||||||
#define FONT_SMALL ArialMT_Plain_10_{LANG_NAME}
|
|
||||||
#else
|
|
||||||
#define FONT_SMALL ArialMT_Plain_10
|
|
||||||
#endif
|
|
||||||
```
|
|
||||||
4. Define language in `variant/*/platformio.ini`
|
4. Define language in `variant/*/platformio.ini`
|
||||||
```
|
|
||||||
build_flags =
|
```text
|
||||||
${esp32_base.build_flags}
|
build_flags =
|
||||||
-D xxxxx
|
${esp32_base.build_flags}
|
||||||
-D OLED_{LANG_NAME}
|
-D xxxxx
|
||||||
-I variants/xxxxx
|
-D OLED_{LANG_NAME}
|
||||||
```
|
-I variants/xxxxx
|
||||||
|
```
|
||||||
|
|
|
@ -14,19 +14,21 @@ You may encounter a situation where your device crashes and are left with a stac
|
||||||
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.
|
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.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
1. Save the backtrace string to a text file:
|
1. Save the backtrace string to a text file:
|
||||||
```text title="backtrace.txt"
|
|
||||||
Backtrace: 0x....
|
```text title="backtrace.txt"
|
||||||
```
|
Backtrace: 0x....
|
||||||
|
```
|
||||||
|
|
||||||
2. Run the exception decoder:
|
2. Run the exception decoder:
|
||||||
```shell
|
```shell
|
||||||
bin/exception_decoder.py backtrace.txt
|
bin/exception_decoder.py backtrace.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
### In Real-Time
|
### 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:
|
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
|
```shell
|
||||||
pio device monitor --port DEVICE_PORT -f esp32_exception_decoder
|
pio device monitor --port DEVICE_PORT -f esp32_exception_decoder
|
||||||
```
|
```
|
||||||
|
|
|
@ -5,17 +5,17 @@ sidebar_label: Connecting
|
||||||
---
|
---
|
||||||
|
|
||||||
```tsx
|
```tsx
|
||||||
import type React from 'React';
|
import type React from "React";
|
||||||
|
|
||||||
import { IHTTPConnection } from '@meshtastic/meshtasticjs';
|
import { IHTTPConnection } from "@meshtastic/meshtasticjs";
|
||||||
|
|
||||||
export const Connection = (): JSX.Element => {
|
export const Connection = (): JSX.Element => {
|
||||||
const connection = new IHTTPConnection();
|
const connection = new IHTTPConnection();
|
||||||
|
|
||||||
const connect = (): void => {
|
const connect = (): void => {
|
||||||
void connection.connect({
|
void connection.connect({
|
||||||
address: '10.0.0.10',
|
address: "10.0.0.10",
|
||||||
fetchInterval: 3000,
|
fetchInterval: 3000
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ import {
|
||||||
Client,
|
Client,
|
||||||
Types,
|
Types,
|
||||||
Protobuf,
|
Protobuf,
|
||||||
SettingsManager,
|
SettingsManager
|
||||||
} from '@meshtastic/meshtasticjs';
|
} from "@meshtastic/meshtasticjs";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connection method
|
* Connection method
|
||||||
|
@ -24,7 +24,7 @@ const client = new Client();
|
||||||
SettingsManager.setDebugMode(Protobuf.LogLevelEnum.DEBUG);
|
SettingsManager.setDebugMode(Protobuf.LogLevelEnum.DEBUG);
|
||||||
|
|
||||||
const connection = client.createHTTPConnection();
|
const connection = client.createHTTPConnection();
|
||||||
connection.connect('192.168.x.x');
|
connection.connect("192.168.x.x");
|
||||||
|
|
||||||
const restartDevice: Promise<void> = connection.restartDevice();
|
const restartDevice: Promise<void> = connection.restartDevice();
|
||||||
const getStatistics: Promise<void | Types.WebSPIFFSResponse> =
|
const getStatistics: Promise<void | Types.WebSPIFFSResponse> =
|
||||||
|
|
|
@ -12,7 +12,7 @@ No pre-requisites are needed locally to make a release. All builds are done via
|
||||||
|
|
||||||
To test/validate, you will need to run:
|
To test/validate, you will need to run:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
pip3 install -r requirements.txt
|
pip3 install -r requirements.txt
|
||||||
pip install .
|
pip install .
|
||||||
```
|
```
|
||||||
|
@ -25,7 +25,7 @@ pip install .
|
||||||
|
|
||||||
connect one device to the serial port and run:
|
connect one device to the serial port and run:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
pytest -m smoke1
|
pytest -m smoke1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -41,8 +41,6 @@ pytest -m smoke1
|
||||||
You need permissions in the GitHub project to make a build
|
You need permissions in the GitHub project to make a build
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Meshtastic-flasher
|
### 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.
|
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.
|
||||||
|
|
|
@ -9,41 +9,35 @@ sidebar_label: Python
|
||||||
|
|
||||||
We use the Visual Studio Code (VScode) default python formatting conventions (autopep8). So if you use that IDE you should be able to use "Format Document" and not generate unrelated diffs. If you use some other editor, please do not change formatting on lines you have not changed yourself.
|
We use the Visual Studio Code (VScode) default python formatting conventions (autopep8). So if you use that IDE you should be able to use "Format Document" and not generate unrelated diffs. If you use some other editor, please do not change formatting on lines you have not changed yourself.
|
||||||
|
|
||||||
|
|
||||||
### Building
|
### Building
|
||||||
|
|
||||||
**To build a new release**
|
```shell title="To build a new release"
|
||||||
|
|
||||||
```sh
|
|
||||||
apt install pandoc
|
apt install pandoc
|
||||||
sudo pip3 install markdown pdoc3 webencodings pyparsing twine autopep8 pylint pytest pytest-cov
|
sudo pip3 install markdown pdoc3 webencodings pyparsing twine autopep8 pylint pytest pytest-cov
|
||||||
```
|
```
|
||||||
|
|
||||||
**For development**
|
```shell title="For development"
|
||||||
|
|
||||||
```sh
|
|
||||||
pip3 install -r requirements.txt
|
pip3 install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
### Linting
|
### Linting
|
||||||
|
|
||||||
```sh
|
```shell
|
||||||
pylint meshtastic
|
pylint meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
### Testing
|
### Testing
|
||||||
|
|
||||||
**Install and run pytest**
|
#### Install and run pytest
|
||||||
|
|
||||||
- For more verbosity, add `-v` or even `-vv`
|
- For more verbosity, add `-v` or even `-vv`
|
||||||
|
|
||||||
```sh
|
```shell
|
||||||
pip3 install .
|
pip3 install .
|
||||||
pytest -vv
|
pytest -vv
|
||||||
```
|
```
|
||||||
|
|
||||||
**Run just unit tests**
|
```shell title="Run just unit tests"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest
|
pytest
|
||||||
# or (more verbosely)
|
# or (more verbosely)
|
||||||
pytest -m unit
|
pytest -m unit
|
||||||
|
@ -51,15 +45,11 @@ pytest -m unit
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
**Run just integration tests**
|
```shell title="Run just integration tests"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest -m int
|
pytest -m int
|
||||||
```
|
```
|
||||||
|
|
||||||
**Run the smoke test with only one device connected serially (aka smoke1)**
|
```shell title="Run the smoke test with only one device connected serially (aka smoke1)"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest -m smoke1
|
pytest -m smoke1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -68,21 +58,15 @@ Running `smoke1` will reset values on the device, including the region to 1 (US)
|
||||||
Be sure to hit the reset button on the device after the test is completed.
|
Be sure to hit the reset button on the device after the test is completed.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
**Run the smoke test with only two device connected serially (aka smoke2)**
|
```shell title="Run the smoke test with only two device connected serially (aka smoke2)"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest -m smoke2
|
pytest -m smoke2
|
||||||
```
|
```
|
||||||
|
|
||||||
**Run the wifi smoke test**
|
```shell title="Run the wifi smoke test"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest -m smokewifi
|
pytest -m smokewifi
|
||||||
```
|
```
|
||||||
|
|
||||||
**Run a specific test**
|
```shell title="Run a specific test"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest -msmoke1 meshtastic/tests/test_smoke1.py::test_smoke1_info
|
pytest -msmoke1 meshtastic/tests/test_smoke1.py::test_smoke1_info
|
||||||
|
|
||||||
# or to run a specific smoke2 test
|
# or to run a specific smoke2 test
|
||||||
|
@ -96,9 +80,7 @@ pytest -m smokewifi meshtastic/tests/test_smoke_wifi.py::test_smokewifi_info
|
||||||
|
|
||||||
See [pytest.ini](https://github.com/meshtastic/Meshtastic-python/blob/master/pytest.ini).
|
See [pytest.ini](https://github.com/meshtastic/Meshtastic-python/blob/master/pytest.ini).
|
||||||
|
|
||||||
**To see the unit test code coverage**
|
```shell title="To see the unit test code coverage"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest --cov=meshtastic
|
pytest --cov=meshtastic
|
||||||
# or if want html coverage report
|
# or if want html coverage report
|
||||||
pytest --cov-report html --cov=meshtastic
|
pytest --cov-report html --cov=meshtastic
|
||||||
|
@ -106,9 +88,7 @@ pytest --cov-report html --cov=meshtastic
|
||||||
make cov
|
make cov
|
||||||
```
|
```
|
||||||
|
|
||||||
**To see slowest unit tests, you can run**
|
```shell title="To see slowest unit tests, you can run"
|
||||||
|
|
||||||
```sh
|
|
||||||
pytest --durations=0
|
pytest --durations=0
|
||||||
# or
|
# or
|
||||||
make slow
|
make slow
|
||||||
|
@ -118,7 +98,7 @@ make slow
|
||||||
|
|
||||||
Pre-generated: [API documentation](https://python.meshtastic.org)
|
Pre-generated: [API documentation](https://python.meshtastic.org)
|
||||||
|
|
||||||
```sh
|
```shell
|
||||||
bin/regen-docs.sh
|
bin/regen-docs.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ Repobeats images can be generated at [repobeats.axiom.co](https://repobeats.axio
|
||||||
|
|
||||||
<!--Project specific badges here-->
|
<!--Project specific badges here-->
|
||||||
<!--Crowdin Badge can be generated from https://crowdin.meshtastic.org/u/projects/<project_id>/crowdsource -->
|
<!--Crowdin Badge can be generated from https://crowdin.meshtastic.org/u/projects/<project_id>/crowdsource -->
|
||||||
|
|
||||||
[![Crowdin](https://badges.crowdin.net/e/<badge_id>/localized.svg)](https://crowdin.meshtastic.org/<project>)
|
[![Crowdin](https://badges.crowdin.net/e/<badge_id>/localized.svg)](https://crowdin.meshtastic.org/<project>)
|
||||||
[![CI](https://img.shields.io/github/actions/workflow/status/meshtastic/<repo>/ci.yml?branch=master&label=actions&logo=github&color=yellow)](https://github.com/meshtastic/<repo>/actions/workflows/ci.yml)
|
[![CI](https://img.shields.io/github/actions/workflow/status/meshtastic/<repo>/ci.yml?branch=master&label=actions&logo=github&color=yellow)](https://github.com/meshtastic/<repo>/actions/workflows/ci.yml)
|
||||||
[![CLA assistant](https://cla-assistant.io/readme/badge/meshtastic/<repo>)](https://cla-assistant.io/meshtastic/<repo>)
|
[![CLA assistant](https://cla-assistant.io/readme/badge/meshtastic/<repo>)](https://cla-assistant.io/meshtastic/<repo>)
|
||||||
|
|
|
@ -4,7 +4,6 @@ title: Building
|
||||||
sidebar_label: 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:
|
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.
|
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.
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: CLI Script
|
||||||
sidebar_position: 3
|
sidebar_position: 3
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
:::caution
|
:::caution
|
||||||
Make sure not to power the radio on without first attaching the antenna! You could damage the radio chip!
|
Make sure not to power the radio on without first attaching the antenna! You could damage the radio chip!
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: External Serial Adapter
|
||||||
sidebar_position: 4
|
sidebar_position: 4
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
This information will likely only be helpful if you've already attempted to go through the prerequisites and processes outlined in [meshtastic flasher](/docs/software/python/flasher) or [manually flashing](/docs/getting-started/flashing-firmware/esp32/cli-script)
|
This information will likely only be helpful if you've already attempted to go through the prerequisites and processes outlined in [meshtastic flasher](/docs/software/python/flasher) or [manually flashing](/docs/getting-started/flashing-firmware/esp32/cli-script)
|
||||||
|
@ -19,9 +19,10 @@ Make sure not to power the radio on without first attaching the antenna! You cou
|
||||||
## Background
|
## Background
|
||||||
|
|
||||||
Situations that may require usage an external USB to Serial Adapter:
|
Situations that may require usage an external USB to Serial Adapter:
|
||||||
* Due to the chip shortage, recently purchased devices such as the TTGO T-Beam may come with legacy or non-standard USB to Serial adapter chips that are unreliable in some cases.
|
|
||||||
* Certain devices might have defective USB to Serial chip.
|
- Due to the chip shortage, recently purchased devices such as the TTGO T-Beam may come with legacy or non-standard USB to Serial adapter chips that are unreliable in some cases.
|
||||||
* Certain devices, such as the [Hydra](https://github.com/Hydra-Designs/project-hydra-meshtastic-pcb) (Meshtastic-DIY target).
|
- Certain devices might have defective USB to Serial chip.
|
||||||
|
- Certain devices, such as the [Hydra](https://github.com/Hydra-Designs/project-hydra-meshtastic-pcb) (Meshtastic-DIY target).
|
||||||
|
|
||||||
### USB Serial Adapters
|
### USB Serial Adapters
|
||||||
|
|
||||||
|
@ -45,11 +46,11 @@ Disconnect your USB to Serial Adapter from the computer before starting this pro
|
||||||
3. Connect a GND pin of the adapter to the GND pin of the device
|
3. Connect a GND pin of the adapter to the GND pin of the device
|
||||||
4. Connect either the 5V pin of the adapter to the 5V pin of the device (illustrated) or the 3.3V pin of the adapter to the 3.3V pin of device.
|
4. Connect either the 5V pin of the adapter to the 5V pin of the device (illustrated) or the 3.3V pin of the adapter to the 3.3V pin of device.
|
||||||
5. Bridge GPIO 0 to GND on the device with a jumper. (This places the device into flash mode when the device is powered up)
|
5. Bridge GPIO 0 to GND on the device with a jumper. (This places the device into flash mode when the device is powered up)
|
||||||
Example wiring featuring a T-Beam
|
Example wiring featuring a T-Beam
|
||||||
![image](https://user-images.githubusercontent.com/9000580/168446438-d14f34a0-b92d-4716-87fd-e0c2927a35fd.png)
|
![image](https://user-images.githubusercontent.com/9000580/168446438-d14f34a0-b92d-4716-87fd-e0c2927a35fd.png)
|
||||||
6. Connect the device to a USB port on the computer
|
6. Connect the device to a USB port on the computer
|
||||||
7. Remove the jumper bridging GPIO 0 to GND
|
7. Remove the jumper bridging GPIO 0 to GND
|
||||||
![enter-flash-mode](https://user-images.githubusercontent.com/9000580/168446974-c31d3e9c-3397-4cb1-90a4-91ef2e4d5fac.gif)
|
![enter-flash-mode](https://user-images.githubusercontent.com/9000580/168446974-c31d3e9c-3397-4cb1-90a4-91ef2e4d5fac.gif)
|
||||||
|
|
||||||
### Flashing
|
### Flashing
|
||||||
|
|
||||||
|
@ -62,7 +63,6 @@ After flashing the device is complete, reset your device (via the RST button if
|
||||||
If you have the Meshtastic Python CLI installed, you can run `meshtastic --noproto` to connect the device again over the adapter and view the serial output to confirm Meshtastic installed correctly.
|
If you have the Meshtastic Python CLI installed, you can run `meshtastic --noproto` to connect the device again over the adapter and view the serial output to confirm Meshtastic installed correctly.
|
||||||
![image](https://user-images.githubusercontent.com/9000580/168447159-71a6546a-f487-4bc2-86c1-4c489b2a8975.png)
|
![image](https://user-images.githubusercontent.com/9000580/168447159-71a6546a-f487-4bc2-86c1-4c489b2a8975.png)
|
||||||
|
|
||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
In the Meshtastic Flasher, device detection may not work when using the external USB to Serial adapter. You might need to manually select the correct device type from the drop-down.
|
In the Meshtastic Flasher, device detection may not work when using the external USB to Serial adapter. You might need to manually select the correct device type from the drop-down.
|
||||||
|
|
|
@ -5,6 +5,6 @@ sidebar_label: Python Flasher
|
||||||
sidebar_position: 2
|
sidebar_position: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
import MFlasher from '../../../software/python-flasher.mdx'
|
import MFlasher from "../../../software/python-flasher.mdx";
|
||||||
|
|
||||||
<MFlasher components={props.components} />
|
<MFlasher components={props.components} />
|
|
@ -6,9 +6,9 @@ slug: /getting-started
|
||||||
sidebar_position: 2
|
sidebar_position: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
import Link from '@docusaurus/Link';
|
import Link from "@docusaurus/Link";
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
## Identify Hardware
|
## Identify Hardware
|
||||||
|
|
||||||
|
@ -93,36 +93,39 @@ values={[
|
||||||
1. Connect your Meshtastic device to your USB port
|
1. Connect your Meshtastic device to your USB port
|
||||||
2. Open a **Terminal** and enter the following command:
|
2. Open a **Terminal** and enter the following command:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
lsusb
|
lsusb
|
||||||
```
|
```
|
||||||
|
|
||||||
3. You should see something like:
|
3. You should see something like:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
ID xxxx:xxxx Silicon Labs CP210x UART Bridge
|
ID xxxx:xxxx Silicon Labs CP210x UART Bridge
|
||||||
# or
|
# or
|
||||||
ID xxxx:xxxx QinHeng Electronics USB Single Serial
|
ID xxxx:xxxx QinHeng Electronics USB Single Serial
|
||||||
# or
|
# or
|
||||||
FIXME (WISBLOCK OUTPUT)
|
FIXME (WISBLOCK OUTPUT)
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="macos">
|
<TabItem value="macos">
|
||||||
|
|
||||||
1. Navigate to `Apple Menu > About This Mac > System Report... > Hardware > USB`.
|
1. Navigate to `Apple Menu > About This Mac > System Report... > Hardware > USB`.
|
||||||
2. You should see similar to one of the following entries:
|
2. You should see similar to one of the following entries:
|
||||||
- `CP210X USB to UART Bridge Controller`
|
|
||||||
- `CH9102 USB to UART Bridge Controller`
|
- `CP210X USB to UART Bridge Controller`
|
||||||
- `WisCore RAK4631 Board`
|
- `CH9102 USB to UART Bridge Controller`
|
||||||
|
- `WisCore RAK4631 Board`
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="windows">
|
<TabItem value="windows">
|
||||||
|
|
||||||
1. Navigate to `Device Manager > Ports (COM & LPT)`
|
1. Navigate to `Device Manager > Ports (COM & LPT)`
|
||||||
2. You should see similar to one of the following entries:
|
2. You should see similar to one of the following entries:
|
||||||
- `Silicon Labs CP210X USB to UART Bridge (COM5)`
|
|
||||||
- `Silicon Labs CH9102 USB to UART Bridge (COM5)`
|
- `Silicon Labs CP210X USB to UART Bridge (COM5)`
|
||||||
- `FIXME (WISBLOCK OUTPUT)`
|
- `Silicon Labs CH9102 USB to UART Bridge (COM5)`
|
||||||
|
- `FIXME (WISBLOCK OUTPUT)`
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
@ -132,7 +135,7 @@ If you do not see your device:
|
||||||
|
|
||||||
1. You may be using a charging-only cable, [verify your cable](#verify-data-cable).
|
1. You may be using a charging-only cable, [verify your cable](#verify-data-cable).
|
||||||
2. You may need to [install the USB serial driver](/docs/getting-started/serial-drivers)).
|
2. You may need to [install the USB serial driver](/docs/getting-started/serial-drivers)).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Flash Firmware
|
## Flash Firmware
|
||||||
|
|
||||||
|
@ -164,15 +167,15 @@ If you have a RAK4631-R (the RUI3 bootloader version of the RAK4631), you must [
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
## Connect and Configure Device
|
## Connect and Configure Device
|
||||||
|
|
||||||
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.
|
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">
|
<div className="indexCtasBody">
|
||||||
<Link target="_blank"
|
<Link
|
||||||
className={'button button--outline button--lg cta--button'}
|
target="_blank"
|
||||||
to={'/docs/getting-started/initial-config'}
|
className={"button button--outline button--lg cta--button"}
|
||||||
|
to={"/docs/getting-started/initial-config"}
|
||||||
>
|
>
|
||||||
Connect and Configure Device
|
Connect and Configure Device
|
||||||
</Link>
|
</Link>
|
||||||
|
@ -181,17 +184,21 @@ After connecting to the device for the first time, you should set the regional s
|
||||||
## Use Meshtastic
|
## Use Meshtastic
|
||||||
|
|
||||||
### with Command Line Tools
|
### with Command Line Tools
|
||||||
- [Python CLI](/docs/software/python/cli)
|
|
||||||
|
- [Python CLI](/docs/software/python/cli)
|
||||||
|
|
||||||
### with mobile apps
|
### with mobile apps
|
||||||
- [Android](/docs/category/android-app)
|
|
||||||
- [Apple](/docs/category/apple-apps)
|
- [Android](/docs/category/android-app)
|
||||||
|
- [Apple](/docs/category/apple-apps)
|
||||||
|
|
||||||
### with a browser
|
### with a browser
|
||||||
- https://client.meshtastic.org
|
|
||||||
- [Meshtastic Web](/docs/software/web-client)
|
- https://client.meshtastic.org
|
||||||
|
- [Meshtastic Web](/docs/software/web-client)
|
||||||
|
|
||||||
### over the internet with MQTT
|
### over the internet with MQTT
|
||||||
- [MQTT](/docs/software/mqtt/)
|
|
||||||
|
- [MQTT](/docs/software/mqtt/)
|
||||||
|
|
||||||
There are many ways to interact with and use Meshtastic, please visit the [Software](/docs/software) page for more information.
|
There are many ways to interact with and use Meshtastic, please visit the [Software](/docs/software) page for more information.
|
|
@ -6,10 +6,9 @@ slug: /getting-started/initial-config
|
||||||
sidebar_position: 4
|
sidebar_position: 4
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
import LoRaRegions from '../blocks/_lora-regions.mdx';
|
import LoRaRegions from "../blocks/_lora-regions.mdx";
|
||||||
|
|
||||||
|
|
||||||
## Supported Clients per Connection Type
|
## Supported Clients per Connection Type
|
||||||
|
|
||||||
|
@ -36,7 +35,6 @@ values={[
|
||||||
- [Web Client](https://client.meshtastic.org)
|
- [Web Client](https://client.meshtastic.org)
|
||||||
- [iOS App](/docs/category/apple-apps)
|
- [iOS App](/docs/category/apple-apps)
|
||||||
|
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="network">
|
<TabItem value="network">
|
||||||
|
|
||||||
|
@ -49,7 +47,6 @@ Connecting over network is only supported on ESP32 devices.
|
||||||
- [iOS App](/docs/category/apple-apps)
|
- [iOS App](/docs/category/apple-apps)
|
||||||
- [Python CLI](/docs/software/python/cli/)
|
- [Python CLI](/docs/software/python/cli/)
|
||||||
|
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
@ -57,7 +54,6 @@ Connecting over network is only supported on ESP32 devices.
|
||||||
|
|
||||||
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.
|
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
|
<Tabs
|
||||||
groupId="settings"
|
groupId="settings"
|
||||||
defaultValue="apple"
|
defaultValue="apple"
|
||||||
|
@ -85,14 +81,14 @@ Configuration of Region, Modem Preset and Hop Limit is available on iOS, iPadOS
|
||||||
<TabItem value="cli">
|
<TabItem value="cli">
|
||||||
|
|
||||||
1. Install [Meshtastic PythonCLI](/docs/software/python/cli/installation)
|
1. Install [Meshtastic PythonCLI](/docs/software/python/cli/installation)
|
||||||
```sh
|
```sh
|
||||||
pip3 install --upgrade pytap2
|
pip3 install --upgrade pytap2
|
||||||
pip3 install --upgrade meshtastic
|
pip3 install --upgrade meshtastic
|
||||||
```
|
```
|
||||||
2. Run the following command, replacing `<REGION-CODE>` with the region code listed above according to your regional location.
|
2. Run the following command, replacing `<REGION-CODE>` with the region code listed above according to your regional location.
|
||||||
```sh
|
```sh
|
||||||
meshtastic --set lora.region <REGION-CODE>
|
meshtastic --set lora.region <REGION-CODE>
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="web">
|
<TabItem value="web">
|
||||||
|
@ -108,7 +104,3 @@ Configuration of Region, Modem Preset and Hop Limit is available on iOS, iPadOS
|
||||||
### Region Codes
|
### Region Codes
|
||||||
|
|
||||||
<LoRaRegions />
|
<LoRaRegions />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: ESP32 Drivers
|
||||||
sidebar_position: 1
|
sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
## Install ESP32 USB to Serial Drivers
|
## Install ESP32 USB to Serial Drivers
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: NRF52 Drivers
|
||||||
sidebar_position: 2
|
sidebar_position: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
## Install NRF52 USB to Serial Drivers
|
## Install NRF52 USB to Serial Drivers
|
||||||
|
|
||||||
|
|
|
@ -10,35 +10,32 @@ sidebar_position: 4
|
||||||
- [Hackaday's Introduction to Antenna Basics](https://www.youtube.com/playlist?list=PL_tws4AXg7authztKFg5ZN5qWGtq3N_nI)
|
- [Hackaday's Introduction to Antenna Basics](https://www.youtube.com/playlist?list=PL_tws4AXg7authztKFg5ZN5qWGtq3N_nI)
|
||||||
- An excellent series of presentations on the basics of antenna design and function, presented by spacecraft radio engineer Karen Rucker.
|
- An excellent series of presentations on the basics of antenna design and function, presented by spacecraft radio engineer Karen Rucker.
|
||||||
|
|
||||||
|
|
||||||
### Coverage prediction
|
### Coverage prediction
|
||||||
|
|
||||||
- [Tower Coverage.com](https://www.towercoverage.com)
|
- [Tower Coverage.com](https://www.towercoverage.com)
|
||||||
|
|
||||||
- Commercial, but has free options
|
- Commercial, but has free options
|
||||||
|
|
||||||
|
|
||||||
- [HeyWhat'sThat](http://www.heywhatsthat.com)
|
- [HeyWhat'sThat](http://www.heywhatsthat.com)
|
||||||
- Free with path profiling options
|
|
||||||
|
|
||||||
|
- Free with path profiling options
|
||||||
|
|
||||||
- [Radio Mobile Online](https://www.ve2dbe.com/rmonline_s.asp)
|
- [Radio Mobile Online](https://www.ve2dbe.com/rmonline_s.asp)
|
||||||
- Radio Mobile Online is a radio wave propagation prediction tool dedicated to amateur radio
|
- Radio Mobile Online is a radio wave propagation prediction tool dedicated to amateur radio
|
||||||
|
|
||||||
|
|
||||||
### RF Tools
|
### RF Tools
|
||||||
|
|
||||||
- [Times Microwave Systems](https://www.timesmicrowave.com/calculator/?Product=RG-6&RunLength=10&Frequency=868)
|
- [Times Microwave Systems](https://www.timesmicrowave.com/calculator/?Product=RG-6&RunLength=10&Frequency=868)
|
||||||
|
|
||||||
- Coaxial Cable Attenuation & Power Handling Calculator
|
- Coaxial Cable Attenuation & Power Handling Calculator
|
||||||
|
|
||||||
|
|
||||||
- [Solwise Link Budget Calculator](https://www.solwise.co.uk/link-budget.htm)
|
- [Solwise Link Budget Calculator](https://www.solwise.co.uk/link-budget.htm)
|
||||||
- Predict the received signal strength
|
|
||||||
|
|
||||||
|
- Predict the received signal strength
|
||||||
|
|
||||||
- [Amateur Radio Toolkit](https://play.google.com/store/apps/details?id=com.daveyhollenberg.amateurradiotoolkit)
|
- [Amateur Radio Toolkit](https://play.google.com/store/apps/details?id=com.daveyhollenberg.amateurradiotoolkit)
|
||||||
- Android app with lots of antenna information
|
- Android app with lots of antenna information
|
||||||
|
|
||||||
|
|
||||||
### Antenna designs
|
### Antenna designs
|
||||||
|
|
||||||
- [1/4 Wave Ground Plane Antenna Calculator](https://m0ukd.com/calculators/quarter-wave-ground-plane-antenna-calculator)
|
- [1/4 Wave Ground Plane Antenna Calculator](https://m0ukd.com/calculators/quarter-wave-ground-plane-antenna-calculator)
|
||||||
|
|
|
@ -32,7 +32,6 @@ While the LoRa devices we are using for Meshtastic are relatively low power radi
|
||||||
|
|
||||||
The information collected here is by no means definitive, and necessarily abbreviated (it's a huge topic).
|
The information collected here is by no means definitive, and necessarily abbreviated (it's a huge topic).
|
||||||
|
|
||||||
|
|
||||||
## Range Testing
|
## Range Testing
|
||||||
|
|
||||||
As mentioned, while stating the obvious, the simplest way of performing a test is:
|
As mentioned, while stating the obvious, the simplest way of performing a test is:
|
||||||
|
@ -63,7 +62,6 @@ One of the first things to ensure, is that the antenna you have is tuned to the
|
||||||
|
|
||||||
Andreas Spiess also gives a great explanation of [how to use Vector Network Analyzers](https://www.youtube.com/watch?v=ZpKoLvqOWyc) to correctly tune your antennas, as well as a more [in depth tutorial of how to use VNAs](https://www.youtube.com/watch?v=_pjcEKQY_Tk). It is important to remember however, that VNAs can only tell you if the antenna is well-matched, not how well it is transmitting. A 50 ohm resistor across the transmitter output would show as ideally matched, but it would be useless at transmitting a signal. There are a number of VNAs now available for less than $100, making this no longer out of reach for most hobbyists, unlike expensive spectrum analyzers.
|
Andreas Spiess also gives a great explanation of [how to use Vector Network Analyzers](https://www.youtube.com/watch?v=ZpKoLvqOWyc) to correctly tune your antennas, as well as a more [in depth tutorial of how to use VNAs](https://www.youtube.com/watch?v=_pjcEKQY_Tk). It is important to remember however, that VNAs can only tell you if the antenna is well-matched, not how well it is transmitting. A 50 ohm resistor across the transmitter output would show as ideally matched, but it would be useless at transmitting a signal. There are a number of VNAs now available for less than $100, making this no longer out of reach for most hobbyists, unlike expensive spectrum analyzers.
|
||||||
|
|
||||||
|
|
||||||
## Non-aerial Factors Affecting Transmission
|
## Non-aerial Factors Affecting Transmission
|
||||||
|
|
||||||
Unless you're using your devices in a vacuum, with clear line of sight between aerials the following will have an effect:
|
Unless you're using your devices in a vacuum, with clear line of sight between aerials the following will have an effect:
|
||||||
|
@ -87,11 +85,8 @@ For a bit of light reading on environmental research:
|
||||||
|
|
||||||
In summary - wavelengths in Europe fair well in plain sight, curve over not-so-tall obstacles (including trees), and they reflect off surfaces at low angles of incidence. They go through humans without much attenuation; but not brick, stone, or anything with more attenuation than glass / Kevlar. Oh, and don’t sit under an LTE tower and expect it to be plain sailing. RF emissions at adjacent frequencies can interfere at a high enough power.
|
In summary - wavelengths in Europe fair well in plain sight, curve over not-so-tall obstacles (including trees), and they reflect off surfaces at low angles of incidence. They go through humans without much attenuation; but not brick, stone, or anything with more attenuation than glass / Kevlar. Oh, and don’t sit under an LTE tower and expect it to be plain sailing. RF emissions at adjacent frequencies can interfere at a high enough power.
|
||||||
|
|
||||||
|
|
||||||
## Discussion
|
## Discussion
|
||||||
|
|
||||||
To comment on / join in antenna range [Meshtastic discourse](https://meshtastic.discourse.group/t/antenna-improved-range/227/35?u=sens8tion)
|
To comment on / join in antenna range [Meshtastic discourse](https://meshtastic.discourse.group/t/antenna-improved-range/227/35?u=sens8tion)
|
||||||
|
|
||||||
There, you will also find reference to Meshtastic range achievements and aerial recommendations. (Note we've stopped short of making specific supplier aerial recommendations in this wiki.)
|
There, you will also find reference to Meshtastic range achievements and aerial recommendations. (Note we've stopped short of making specific supplier aerial recommendations in this wiki.)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@ sidebar_position: 3
|
||||||
## Functionality
|
## Functionality
|
||||||
|
|
||||||
- **Reset Button**
|
- **Reset Button**
|
||||||
- _**Single press**_ resets the device.
|
- _**Single press**_ resets the device.
|
||||||
- **Program button**
|
- **Program button**
|
||||||
- _**Single press**_ changes the page of information displayed on the screen.
|
- _**Single press**_ changes the page of information displayed on the screen.
|
||||||
- _**Long press**_ adjusts the contrast of the screen.
|
- _**Long press**_ adjusts the contrast of the screen.
|
||||||
- _**Triple press**_ sends a broadcast message of the device position.
|
- _**Triple press**_ sends a broadcast message of the device position.
|
||||||
|
|
|
@ -5,7 +5,7 @@ sidebar_label: Enclosures
|
||||||
sidebar_position: 3
|
sidebar_position: 3
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tropho from '/img/enclosures/3dp-tropho-heltec32.png';
|
import Tropho from "/img/enclosures/3dp-tropho-heltec32.png";
|
||||||
|
|
||||||
## Created by tropho/TonyG
|
## Created by tropho/TonyG
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: HELTEC® Lora 32
|
||||||
sidebar_position: 7
|
sidebar_position: 7
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
<Tabs
|
<Tabs
|
||||||
groupId="heltec"
|
groupId="heltec"
|
||||||
|
@ -36,12 +36,14 @@ Not recommended! Very old board with design issues. Support is being phased out.
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- User and Reset switches
|
- User and Reset switches
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-heltec-v1-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-heltec-v1-X.X.X.xxxxxxx.bin`
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -62,12 +64,14 @@ Not recommended because of design issues! Support is being phased out. Use V3 in
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- User and Reset switches
|
- User and Reset switches
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-heltec-v2.0-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-heltec-v2.0-X.X.X.xxxxxxx.bin`
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -89,12 +93,14 @@ Not recommended because of design issues! Support is being phased out. Use V3 in
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- User and Reset switches
|
- User and Reset switches
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-heltec-v2.1-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-heltec-v2.1-X.X.X.xxxxxxx.bin`
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -111,12 +117,14 @@ Not recommended because of design issues! Support is being phased out. Use V3 in
|
||||||
- USB-C
|
- USB-C
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- User and Reset switches
|
- User and Reset switches
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-heltec-v3-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-heltec-v3-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/1005004823000595.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/1005004823000595.html)
|
||||||
|
|
||||||
|
@ -135,12 +143,14 @@ Not recommended because of design issues! Support is being phased out. Use V3 in
|
||||||
- USB-C
|
- USB-C
|
||||||
- Antenna: IPEX/u.FL antenna connector
|
- Antenna: IPEX/u.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- no display
|
- no display
|
||||||
- User and Reset switches
|
- User and Reset switches
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-heltec-wsl-v3-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-heltec-wsl-v3-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/1005004839521502.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/1005004839521502.html)
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@ sidebar_position: 3
|
||||||
## Functionality
|
## Functionality
|
||||||
|
|
||||||
- **Reset Button**
|
- **Reset Button**
|
||||||
- _**Single press**_ resets the device.
|
- _**Single press**_ resets the device.
|
||||||
- **Program button**
|
- **Program button**
|
||||||
- _**Single press**_ changes the page of information displayed on the screen.
|
- _**Single press**_ changes the page of information displayed on the screen.
|
||||||
- _**Long press**_ adjusts the contrast of the screen.
|
- _**Long press**_ adjusts the contrast of the screen.
|
||||||
- _**Triple press**_ sends a broadcast message of the device position.
|
- _**Triple press**_ sends a broadcast message of the device position.
|
||||||
|
|
|
@ -5,7 +5,7 @@ sidebar_label: Enclosures
|
||||||
sidebar_position: 3
|
sidebar_position: 3
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tropho from '/img/enclosures/3dp-tropho-lora32.png';
|
import Tropho from "/img/enclosures/3dp-tropho-lora32.png";
|
||||||
|
|
||||||
## Created by tropho/TonyG
|
## Created by tropho/TonyG
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,10 @@ sidebar_position: 4
|
||||||
|
|
||||||
For the Lora V2.1-1.6 and V2.1-1.8, 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.
|
For the Lora V2.1-1.6 and V2.1-1.8, 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.jpg" width="400" align="left" />
|
||||||
|
|
||||||
<img src="/img/hardware/lora32-v2-1.6-button-example.jpg" width="400" align="left"/>
|
<img
|
||||||
|
src="/img/hardware/lora32-v2-1.6-button-example.jpg"
|
||||||
|
width="400"
|
||||||
|
align="left"
|
||||||
|
/>
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: LILYGO® Lora
|
||||||
sidebar_position: 6
|
sidebar_position: 6
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
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).
|
Further information on the LILYGO® LoRa devices can be found on LILYGO®'s [GitHub page](https://github.com/Xinyuan-LilyGO/LilyGo-LoRa-Series).
|
||||||
|
|
||||||
|
@ -42,14 +42,15 @@ This board is still in production but for various reasons not recommended for ne
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tlora-v1-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tlora-v1-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32840238513.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32840238513.html)
|
||||||
|
|
||||||
|
|
||||||
![LILYGO® TTGO Lora V1](/img/hardware/lora-v1.png)
|
![LILYGO® TTGO Lora V1](/img/hardware/lora-v1.png)
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -74,10 +75,12 @@ This board is still in production but for various reasons not recommended for ne
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tlora_v1_3-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tlora_v1_3-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4000628100802.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4000628100802.html)
|
||||||
|
|
||||||
|
@ -107,13 +110,15 @@ This board is still in production but for various reasons not recommended for ne
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- Power and Reset switches
|
- Power and Reset switches
|
||||||
- microSD connector
|
- microSD connector
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tlora-v2-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tlora-v2-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32846302183.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32846302183.html)
|
||||||
|
|
||||||
|
@ -122,7 +127,6 @@ This board is still in production but for various reasons not recommended for ne
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="v2.1">
|
<TabItem value="v2.1">
|
||||||
|
|
||||||
|
|
||||||
:::caution
|
:::caution
|
||||||
Early versions of some of these boards contained the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged. Boards purchased after 2021 should be ok.
|
Early versions of some of these boards contained the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged. Boards purchased after 2021 should be ok.
|
||||||
:::
|
:::
|
||||||
|
@ -139,17 +143,18 @@ Early versions of some of these boards contained the wrong component in the LiPo
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: SMA antenna connector
|
- Antenna: SMA antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- Power and Reset switches
|
- Power and Reset switches
|
||||||
- microSD connector
|
- microSD connector
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tlora-v2-1-1.6-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tlora-v2-1-1.6-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32915894264.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/32915894264.html)
|
||||||
|
|
||||||
|
|
||||||
![TTGO Lora V2.1-1.6](/img/hardware/lora-v2.1-1.6.png)
|
![TTGO Lora V2.1-1.6](/img/hardware/lora-v2.1-1.6.png)
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -166,18 +171,20 @@ Early versions of some of these boards contained the wrong component in the LiPo
|
||||||
- USB-C
|
- USB-C
|
||||||
- Antenna: SMA antenna connector
|
- Antenna: SMA antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- Power and Reset switches
|
- Power and Reset switches
|
||||||
- microSD connector
|
- microSD connector
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tlora-v2-1-1.8-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tlora-v2-1-1.8-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [Banggood](https://www.banggood.com/LILYGO-LORA-H570-V1_8-SX1280-ESP32-2_4G-Smart-WiFi-bluetooth-Wireless-Module-0_96inch-OLED-Display-Development-Board-with-Antenna-Type-C-p-1969395.html)
|
- Purchase link: [Banggood](https://www.banggood.com/LILYGO-LORA-H570-V1_8-SX1280-ESP32-2_4G-Smart-WiFi-bluetooth-Wireless-Module-0_96inch-OLED-Display-Development-Board-with-Antenna-Type-C-p-1969395.html)
|
||||||
|
|
||||||
|
|
||||||
![TTGO Lora V2.1-1.8](/img/hardware/lora-v2.1-1.8.jpg)
|
![TTGO Lora V2.1-1.8](/img/hardware/lora-v2.1-1.8.jpg)
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
<TabItem value="S3-v1">
|
<TabItem value="S3-v1">
|
||||||
|
@ -196,17 +203,20 @@ Early versions of some of these boards contained the wrong component in the LiPo
|
||||||
- USB-C
|
- USB-C
|
||||||
- Antenna: SMA antenna connector
|
- Antenna: SMA antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Built in 0.96 inch OLED display
|
- Built in 0.96 inch OLED display
|
||||||
- Power and Reset switches, Boot / User Button
|
- Power and Reset switches, Boot / User Button
|
||||||
- microSD connector
|
- microSD connector
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tlora-t3s3-v1.xxxxxxx.bin`
|
- Firmware file: `firmware-tlora-t3s3-v1.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/1005004627139838.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/1005004627139838.html)
|
||||||
|
|
||||||
![TTGO Lora T3S3 V1](/img/hardware/lora-t3s3.jpg)
|
![TTGO Lora T3S3 V1](/img/hardware/lora-t3s3.jpg)
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
|
@ -8,6 +8,6 @@ sidebar_position: 3
|
||||||
## Functionality
|
## Functionality
|
||||||
|
|
||||||
- **Program button**
|
- **Program button**
|
||||||
- _**Single press**_ changes the page of information displayed on the screen.
|
- _**Single press**_ changes the page of information displayed on the screen.
|
||||||
- _**Long press**_ adjusts the contrast of the screen.
|
- _**Long press**_ adjusts the contrast of the screen.
|
||||||
- _**Triple press**_ sends a broadcast message of the device position.
|
- _**Triple press**_ sends a broadcast message of the device position.
|
||||||
|
|
|
@ -36,7 +36,6 @@ The Nano G1 is the first dedicated hardware device to be designed from scratch p
|
||||||
- Firmware file: `firmware-nano-g1-1.x.x.bin`
|
- Firmware file: `firmware-nano-g1-1.x.x.bin`
|
||||||
- [Purchase link](https://www.tindie.com/products/neilhao/meshtastic-mesh-device-nano-edition/)
|
- [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).
|
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)
|
![Nano G1](/img/hardware/nano-g1-front.jpg)
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: Base Boards
|
||||||
sidebar_position: 1
|
sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
## WisBlock Base
|
## WisBlock Base
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ Further information on the RAK5005-O can be found on the [RAK Documentation Cent
|
||||||
<img
|
<img
|
||||||
alt="RAK4631 5005"
|
alt="RAK4631 5005"
|
||||||
src="/img/hardware/rak4631_5005.png"
|
src="/img/hardware/rak4631_5005.png"
|
||||||
style={{ zoom: '50%' }}
|
style={{ zoom: "50%" }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -77,10 +77,8 @@ Further information on the RAK5005-O can be found on the [RAK Documentation Cent
|
||||||
- **Screen Support**
|
- **Screen Support**
|
||||||
- OLED screen support (OLED screen sold separately)
|
- 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).
|
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>
|
||||||
|
|
||||||
<TabItem value="RAK19003">
|
<TabItem value="RAK19003">
|
||||||
|
@ -103,13 +101,12 @@ Further information on the RAK19007 can be found on the [RAK Documentation Cente
|
||||||
- **Screen Support**
|
- **Screen Support**
|
||||||
- OLED screen support (OLED screen sold separately)
|
- 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)
|
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
|
<img
|
||||||
alt="RAK4631 19003"
|
alt="RAK4631 19003"
|
||||||
src="/img/hardware/rak4631_19003.png"
|
src="/img/hardware/rak4631_19003.png"
|
||||||
style={{ zoom: '50%' }}
|
style={{ zoom: "50%" }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
@ -136,7 +133,6 @@ Further information on the RAK19003 can be found on the [RAK Documentation Cente
|
||||||
- **Screen Support**
|
- **Screen Support**
|
||||||
- OLED screen support (OLED screen sold separately)
|
- 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).
|
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>
|
</TabItem>
|
||||||
|
|
|
@ -12,19 +12,19 @@ Button functionality for RAK devices greatly depends on the device specific conf
|
||||||
### RAK5005-O / RAK19007 / RAK19003
|
### RAK5005-O / RAK19007 / RAK19003
|
||||||
|
|
||||||
- **Program button**
|
- **Program button**
|
||||||
- _**Single press**_ changes the page of information displayed on the screen.
|
- _**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.
|
- _**Double press (nRF52 only)**_ puts the device in bootloader mode and mounts a drive to your computer.
|
||||||
- _**Long press**_ signals the device to shutdown.
|
- _**Long press**_ signals the device to shutdown.
|
||||||
- _**Triple press**_ sends a broadcast message of the device position.
|
- _**Triple press**_ sends a broadcast message of the device position.
|
||||||
|
|
||||||
### RAK19001
|
### RAK19001
|
||||||
|
|
||||||
- **Program button**
|
- **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.
|
|
||||||
|
|
||||||
|
- _**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**
|
- **User Button**
|
||||||
- _Not yet implemented by Meshtastic_
|
- _Not yet implemented by Meshtastic_
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: Core Modules
|
||||||
sidebar_position: 2
|
sidebar_position: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
## WisBlock Core
|
## WisBlock Core
|
||||||
|
|
||||||
|
@ -52,13 +52,12 @@ Further information on the RAK4631 can be found on the [RAK Documentation Center
|
||||||
<img
|
<img
|
||||||
alt="RAK4631 Core Module"
|
alt="RAK4631 Core Module"
|
||||||
src="/img/hardware/rak4631.png"
|
src="/img/hardware/rak4631.png"
|
||||||
style={{ zoom: '50%' }}
|
style={{ zoom: "50%" }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="RAK11200">
|
<TabItem value="RAK11200">
|
||||||
|
|
||||||
|
|
||||||
### RAK11200 / RAK13300
|
### RAK11200 / RAK13300
|
||||||
|
|
||||||
:::caution Note
|
:::caution Note
|
||||||
|
@ -93,13 +92,12 @@ Further information on the RAK11200 can be found on the [RAK Documentation Cente
|
||||||
- **Connectors**
|
- **Connectors**
|
||||||
- U.FL antenna
|
- 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).
|
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
|
<img
|
||||||
alt="RAK4631 5005 11200"
|
alt="RAK4631 5005 11200"
|
||||||
src="/img/hardware/rak11200.jpg"
|
src="/img/hardware/rak11200.jpg"
|
||||||
style={{ zoom: '50%' }}
|
style={{ zoom: "50%" }}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
|
@ -13,7 +13,6 @@ Download from [Printables](https://www.printables.com/model/297089-meshtastic-so
|
||||||
|
|
||||||
![rak19003-micro](/img/enclosures/3dp-kmon-basestation.png)
|
![rak19003-micro](/img/enclosures/3dp-kmon-basestation.png)
|
||||||
|
|
||||||
|
|
||||||
## Created by tropho/TonyG
|
## Created by tropho/TonyG
|
||||||
|
|
||||||
### RAK5005 Case
|
### RAK5005 Case
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: RAK WisBlock
|
||||||
sidebar_position: 1
|
sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
<!-- RAK LOGO here? -->
|
<!-- RAK LOGO here? -->
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: Peripherals
|
||||||
sidebar_position: 3
|
sidebar_position: 3
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
<Tabs
|
<Tabs
|
||||||
groupId="rakmodules"
|
groupId="rakmodules"
|
||||||
|
@ -24,7 +24,6 @@ To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](http
|
||||||
- uBlox MAX-7Q GPS module
|
- uBlox MAX-7Q GPS module
|
||||||
- GPS and GLONASS satellite support
|
- 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).
|
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.
|
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.
|
||||||
|
@ -32,7 +31,6 @@ To add a GPS to the RAK19003 base board, you need the [RAK12500 GPS sensor](http
|
||||||
- uBlox Zoe-M8Q GNSS receiver
|
- uBlox Zoe-M8Q GNSS receiver
|
||||||
- GPS, GLONASS, QZSS and BeiDou satellite support
|
- 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).
|
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>
|
||||||
|
@ -54,7 +52,6 @@ The [RAK13002 IO Module](https://store.rakwireless.com/collections/wisblock-inte
|
||||||
- 2x ADC interfaces
|
- 2x ADC interfaces
|
||||||
- 3.3v Power rails
|
- 3.3v Power rails
|
||||||
|
|
||||||
|
|
||||||
There is development activity in progress to get sensors such as this added to the Meshtastic Core.
|
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).
|
Further information on the RAK13002 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13002/Overview).
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ sidebar_label: Screens
|
||||||
sidebar_position: 2
|
sidebar_position: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
There are currently two different screens supported by the RAK WisBlock system:
|
There are currently two different screens supported by the RAK WisBlock system:
|
||||||
|
|
||||||
|
@ -25,7 +25,6 @@ The [RAK1921 OLED display](https://store.rakwireless.com/products/rak1921-oled-d
|
||||||
- Resolution 128 x 64 pixels
|
- Resolution 128 x 64 pixels
|
||||||
- I<sup>2</sup>C interface
|
- I<sup>2</sup>C interface
|
||||||
|
|
||||||
|
|
||||||
This item requires soldering.
|
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).
|
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. This will prevent directly soldering the display to the baseboard. The preferred order is VDD, GND, SCL, SDA.
|
Similar modules are widely available from other suppliers, but do check the boards as some have the VDD and GND pins swapped round. This will prevent directly soldering the display to the baseboard. The preferred order is VDD, GND, SCL, SDA.
|
||||||
|
@ -43,13 +42,12 @@ The [RAK1400 EPD module](https://store.rakwireless.com/products/wisblock-epd-mod
|
||||||
- Resolution 212 x 104 pixels
|
- Resolution 212 x 104 pixels
|
||||||
- Occupies the IO Port of a Wisblock Base
|
- Occupies the IO Port of a Wisblock Base
|
||||||
|
|
||||||
|
|
||||||
- Firmware for 5005 with RAK14000 e-paper: [`firmware-rak4631_eink-1.3.x.uf2`](/downloads)
|
- Firmware for 5005 with RAK14000 e-paper: [`firmware-rak4631_eink-1.3.x.uf2`](/downloads)
|
||||||
|
|
||||||
<img
|
<img
|
||||||
alt="RAK4631 5005 14000"
|
alt="RAK4631 5005 14000"
|
||||||
src="/img/hardware/rak4631_5005_epaper.jpg"
|
src="/img/hardware/rak4631_5005_epaper.jpg"
|
||||||
style={{ zoom: '50%' }}
|
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.
|
Please note only the white-black display is supported at this time, the white-black-red display may work, but is not supported.
|
||||||
|
|
|
@ -8,6 +8,6 @@ sidebar_position: 3
|
||||||
## Functionality
|
## Functionality
|
||||||
|
|
||||||
- **Program button**
|
- **Program button**
|
||||||
- _**Single press**_ changes the page of information displayed on the screen.
|
- _**Single press**_ changes the page of information displayed on the screen.
|
||||||
- _**Long press**_ adjusts the contrast of the screen.
|
- _**Long press**_ adjusts the contrast of the screen.
|
||||||
- _**Triple press**_ sends a broadcast message of the device position.
|
- _**Triple press**_ sends a broadcast message of the device position.
|
||||||
|
|
|
@ -8,10 +8,10 @@ sidebar_position: 3
|
||||||
## Functionality
|
## Functionality
|
||||||
|
|
||||||
- **Reset Button (right)**
|
- **Reset Button (right)**
|
||||||
- _**Single press**_ resets the device.
|
- _**Single press**_ resets the device.
|
||||||
- **Power Button (left)**
|
- **Power Button (left)**
|
||||||
- _**Long press**_ powers the device off or turns it back on again.
|
- _**Long press**_ powers the device off or turns it back on again.
|
||||||
- **Program button (middle)**
|
- **Program button (middle)**
|
||||||
- _**Single press**_ changes the page of information displayed on the screen.
|
- _**Single press**_ changes the page of information displayed on the screen.
|
||||||
- _**Long press**_ adjusts the contrast of the screen.
|
- _**Long press**_ adjusts the contrast of the screen.
|
||||||
- _**Triple press**_ sends a broadcast message of the device position.
|
- _**Triple press**_ sends a broadcast message of the device position.
|
||||||
|
|
|
@ -17,7 +17,6 @@ Download from [Printables](https://www.printables.com/model/127253-t-beam-case-f
|
||||||
- (x4) M3 nuts
|
- (x4) M3 nuts
|
||||||
- (x4) M2x4mm screws (no nuts) to secure T-Beam to the frame
|
- (x4) M2x4mm screws (no nuts) to secure T-Beam to the frame
|
||||||
|
|
||||||
|
<img src="/img/enclosures/3dp-tropho-tbeam.jpg" width="400" align="left" />
|
||||||
<img src="/img/enclosures/3dp-tropho-tbeam.jpg" width="400" align="left"/>
|
|
||||||
|
|
||||||
<!-- ![TrophoTbeam](/img/enclosures/3dp-tropho-tbeam.jpg) -->
|
<!-- ![TrophoTbeam](/img/enclosures/3dp-tropho-tbeam.jpg) -->
|
||||||
|
|
|
@ -5,14 +5,13 @@ sidebar_label: LILYGO® T-Beam
|
||||||
sidebar_position: 5
|
sidebar_position: 5
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
All T-beam models have an 18650 size battery holder on the rear of the device. This is designed to the original specification of the 18650 and only fits unprotected flat top 18650 cells. Button top and protected cells are typically longer than 65mm, often approaching 70mm.
|
All T-beam models 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).
|
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
|
<Tabs
|
||||||
groupId="t-beam"
|
groupId="t-beam"
|
||||||
defaultValue="sx1262"
|
defaultValue="sx1262"
|
||||||
|
@ -29,7 +28,6 @@ values={[
|
||||||
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. This board is no longer in production and not recommended for new purchases.
|
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. This board is no longer in production and not recommended for new purchases.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
||||||
- **MCU**
|
- **MCU**
|
||||||
- ESP32 (WiFi & Bluetooth)
|
- ESP32 (WiFi & Bluetooth)
|
||||||
- **LoRa Transceiver**
|
- **LoRa Transceiver**
|
||||||
|
@ -44,17 +42,18 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: SMA antenna connector
|
- Antenna: SMA antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Meshtastic preinstalled
|
- Meshtastic preinstalled
|
||||||
- Power, Program and Reset switches
|
- Power, Program and Reset switches
|
||||||
- Screen sold separately
|
- Screen sold separately
|
||||||
- No GPS
|
- No GPS
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tbeam0.7-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tbeam0.7-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4000469332610.html)
|
- 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](/img/hardware/t-beam-v0.7.png)
|
||||||
![T-Beam v0.7 pin map](/img/hardware/t-beam_v0.7_pinmap.jpeg)
|
![T-Beam v0.7 pin map](/img/hardware/t-beam_v0.7_pinmap.jpeg)
|
||||||
|
|
||||||
|
@ -76,12 +75,14 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: SMA antenna connector
|
- Antenna: SMA antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Meshtastic preinstalled
|
- Meshtastic preinstalled
|
||||||
- Power, Program and Reset switches
|
- Power, Program and Reset switches
|
||||||
- **Comes with 0.96 inch OLED display** (soldering required to assemble)
|
- **Comes with 0.96 inch OLED display** (soldering required to assemble)
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4001178678568.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4001178678568.html)
|
||||||
|
|
||||||
|
@ -107,22 +108,22 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Meshtastic preinstalled
|
- Meshtastic preinstalled
|
||||||
- Power, Program and Reset switches
|
- Power, Program and Reset switches
|
||||||
- Screen sold separately
|
- Screen sold separately
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/33047631119.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/33047631119.html)
|
||||||
|
|
||||||
![TTGO T-Beam M8N](/img/hardware/t-beam-m8n.png)
|
![TTGO T-Beam M8N](/img/hardware/t-beam-m8n.png)
|
||||||
|
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem value="sx1262">
|
<TabItem value="sx1262">
|
||||||
|
|
||||||
|
|
||||||
- **MCU**
|
- **MCU**
|
||||||
- ESP32 (WiFi & Bluetooth)
|
- ESP32 (WiFi & Bluetooth)
|
||||||
- **LoRa Transceiver**
|
- **LoRa Transceiver**
|
||||||
|
@ -138,18 +139,18 @@ This is an earlier version of the T-Beam board. Due to changes in the design thi
|
||||||
- Micro USB
|
- Micro USB
|
||||||
- Antenna: U.FL antenna connector
|
- Antenna: U.FL antenna connector
|
||||||
|
|
||||||
**Features**
|
## Features
|
||||||
|
|
||||||
- Meshtastic preinstalled
|
- Meshtastic preinstalled
|
||||||
- Power, Program and Reset switches
|
- Power, Program and Reset switches
|
||||||
- Screen sold separately
|
- Screen sold separately
|
||||||
|
|
||||||
**Resources**
|
## Resources
|
||||||
|
|
||||||
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
|
- Firmware file: `firmware-tbeam-X.X.X.xxxxxxx.bin`
|
||||||
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4001287221970.html)
|
- Purchase link: [AliExpress](https://www.aliexpress.com/item/4001287221970.html)
|
||||||
|
|
||||||
|
|
||||||
![T-Beam M8N & SX1262](/img/hardware/t-beam-sx1262.png)
|
![T-Beam M8N & SX1262](/img/hardware/t-beam-sx1262.png)
|
||||||
|
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
|
@ -5,7 +5,6 @@ sidebar_label: Screens
|
||||||
sidebar_position: 2
|
sidebar_position: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
## 0.96 inch OLED I<sup>2</sup>C display
|
## 0.96 inch OLED I<sup>2</sup>C display
|
||||||
|
|
||||||
- [Purchase link](https://www.aliexpress.com/item/32922106384.html)
|
- [Purchase link](https://www.aliexpress.com/item/32922106384.html)
|
||||||
|
|
|
@ -17,5 +17,4 @@ sidebar_position: 3
|
||||||
- _**Double press**_ turns the screen backlight on/off
|
- _**Double press**_ turns the screen backlight on/off
|
||||||
- _**Long press**_ signals the device to shutdown.
|
- _**Long press**_ signals the device to shutdown.
|
||||||
|
|
||||||
|
|
||||||
![TechoButtons](/img/hardware/t-echo-lilygo.jpg)
|
![TechoButtons](/img/hardware/t-echo-lilygo.jpg)
|
||||||
|
|
|
@ -11,6 +11,6 @@ sidebar_position: 3
|
||||||
|
|
||||||
Download from [Thingiverse](https://www.thingiverse.com/thing:5028720).
|
Download from [Thingiverse](https://www.thingiverse.com/thing:5028720).
|
||||||
|
|
||||||
<img src="/img/enclosures/3dp-briann-techo-exp.jpg" width="400" align="left"/>
|
<img src="/img/enclosures/3dp-briann-techo-exp.jpg" width="400" align="left" />
|
||||||
|
|
||||||
<!-- ![T-Echo Expedition](/img/enclosures/3dp-briann-techo-exp.jpg) -->
|
<!-- ![T-Echo Expedition](/img/enclosures/3dp-briann-techo-exp.jpg) -->
|
||||||
|
|
|
@ -6,11 +6,11 @@ sidebar_label: Trademark
|
||||||
|
|
||||||
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® 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 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 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).
|
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
|
## Usage That Does Not Require Written Permission
|
||||||
|
|
||||||
Below are the guidelines for use of the Meshtastic Trademarks where, as long as you are in compliance with the guidelines, no advance written permission is necessary. In all cases, use is permitted only provided that:
|
Below are the guidelines for use of the Meshtastic Trademarks where, as long as you are in compliance with the guidelines, no advance written permission is necessary. In all cases, use is permitted only provided that:
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Below are the guidelines for use of the Meshtastic Trademarks where, as long as
|
||||||
- proper trademark symbols are used in connection with the Meshtastic Trademarks and the trademark attribution statement must appear as explained in Proper Trademark Use
|
- proper trademark symbols are used in connection with the Meshtastic Trademarks and the trademark attribution statement must appear as explained in Proper Trademark Use
|
||||||
- the Logo Usage Guidelines are strictly observed
|
- the Logo Usage Guidelines are strictly observed
|
||||||
|
|
||||||
## Noncommercial and community web sites
|
### Noncommercial and community web sites
|
||||||
|
|
||||||
In the past, community members have inquired whether it is permissible to show support for Meshtastic by:
|
In the past, community members have inquired whether it is permissible to show support for Meshtastic by:
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ if the Meshtastic Trademarks appear in a page header or any area that is designe
|
||||||
the site does not use visual styling that could be confusing to viewers or visitors as to whether the site is hosted by or on behalf of Meshtastic.
|
the site does not use visual styling that could be confusing to viewers or visitors as to whether the site is hosted by or on behalf of Meshtastic.
|
||||||
A copy of the use of the Meshtastic Trademarks is provided to the Trademark Supervisor within seven (7) days of its initial use, for example by sending a URL or other copy of such use.
|
A copy of the use of the Meshtastic Trademarks is provided to the Trademark Supervisor within seven (7) days of its initial use, for example by sending a URL or other copy of such use.
|
||||||
|
|
||||||
## Business web sites
|
### Business web sites
|
||||||
|
|
||||||
In the past, community members have inquired whether it is permissible to show support for Meshtastic by:
|
In the past, community members have inquired whether it is permissible to show support for Meshtastic by:
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ It is permissible to use the Meshtastic Trademarks on business web sites, provid
|
||||||
- the site does not use visual styling that could be confusing to viewers or visitors as to whether the site is hosted by or on behalf of Meshtastic
|
- the site does not use visual styling that could be confusing to viewers or visitors as to whether the site is hosted by or on behalf of Meshtastic
|
||||||
- A copy of the use of the Meshtastic Trademarks is provided to the Trademark Supervisor within seven (7) days of its initial use, for example by sending a URL or other copy of such use
|
- A copy of the use of the Meshtastic Trademarks is provided to the Trademark Supervisor within seven (7) days of its initial use, for example by sending a URL or other copy of such use
|
||||||
|
|
||||||
## Promotional events
|
### Promotional events
|
||||||
|
|
||||||
In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks to promote events. The guidelines relating to such usage are set forth in this section.
|
In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks to promote events. The guidelines relating to such usage are set forth in this section.
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ It is permissible to use the Meshtastic Trademarks in such promotional events, p
|
||||||
|
|
||||||
If you would like to make some non-software goods to give away or sell at the event and don't already have a license to do so, see Non-software goods.
|
If you would like to make some non-software goods to give away or sell at the event and don't already have a license to do so, see Non-software goods.
|
||||||
|
|
||||||
## Publications
|
### Publications
|
||||||
|
|
||||||
It is permissible to use the Meshtastic Trademarks in the title and content of a publication, provided that:
|
It is permissible to use the Meshtastic Trademarks in the title and content of a publication, provided that:
|
||||||
|
|
||||||
|
@ -82,23 +82,23 @@ It is permissible to use the Meshtastic Trademarks in the title and content of a
|
||||||
- the Logo Usage Guidelines are strictly observed
|
- the Logo Usage Guidelines are strictly observed
|
||||||
- A copy of the use of the Meshtastic Trademarks is provided to the Trademark Supervisor within seven (7) days of its initial use, for example by sending a URL or other copy of such use
|
- A copy of the use of the Meshtastic Trademarks is provided to the Trademark Supervisor within seven (7) days of its initial use, for example by sending a URL or other copy of such use
|
||||||
|
|
||||||
# Usage that Require Prior Written Approval
|
## Usage that Require Prior Written Approval
|
||||||
|
|
||||||
## Social Media
|
### Social Media
|
||||||
|
|
||||||
In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks, including the term "Meshtastic" in a Social Media account. It is not permissible without written permission of Meshtastic.
|
In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks, including the term "Meshtastic" in a Social Media account. It is not permissible without written permission of Meshtastic.
|
||||||
|
|
||||||
## Domain names
|
### Domain names
|
||||||
|
|
||||||
In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks, including the term "Meshtastic" in an Internet domain name. It is not permissible without written permission of Meshtastic.
|
In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks, including the term "Meshtastic" in an Internet domain name. It is not permissible without written permission of Meshtastic.
|
||||||
|
|
||||||
## Non-software goods
|
### Non-software goods
|
||||||
|
|
||||||
In the past, community members have inquired whether it is permissible to use Meshtastic Trademarks on non-software goods such as Embedded Systems, Enclosures, Hardware, T-shirts, stickers, and pens.
|
In the past, community members have inquired whether it is permissible to use Meshtastic Trademarks on non-software goods such as Embedded Systems, Enclosures, Hardware, T-shirts, stickers, and pens.
|
||||||
|
|
||||||
Community members may request from the Trademark Supervisor designated by the Admins of Meshtastic a license to use the Meshtastic Trademarks on non-software related goods or services, by enquiring at [trademark@meshtastic.org](mailto: trademark@meshtastic.org). The Trademark Supervisor will be responsible for reviewing samples of the goods and services and managing the relationship.
|
Community members may request from the Trademark Supervisor designated by the Admins of Meshtastic a license to use the Meshtastic Trademarks on non-software related goods or services, by enquiring at [trademark@meshtastic.org](mailto: trademark@meshtastic.org). The Trademark Supervisor will be responsible for reviewing samples of the goods and services and managing the relationship.
|
||||||
|
|
||||||
# Unapproved Use
|
## Unapproved Use
|
||||||
|
|
||||||
The following uses of the Meshtastic Trademarks are not approved under any foreseeable circumstances.
|
The following uses of the Meshtastic Trademarks are not approved under any foreseeable circumstances.
|
||||||
|
|
||||||
|
@ -108,15 +108,15 @@ The following uses of the Meshtastic Trademarks are not approved under any fores
|
||||||
|
|
||||||
These guidelines (except for trademark licenses executed for non software goods) may be amended from time to time at the discretion of Meshtastic and such changes will be effective ten (10) days after the changes are posted. Meshtastic may provide you with notice of such changes, but need not do so. You are responsible for checking this site for any changes.
|
These guidelines (except for trademark licenses executed for non software goods) may be amended from time to time at the discretion of Meshtastic and such changes will be effective ten (10) days after the changes are posted. Meshtastic may provide you with notice of such changes, but need not do so. You are responsible for checking this site for any changes.
|
||||||
|
|
||||||
# Proper Trademark Use
|
## Proper Trademark Use
|
||||||
|
|
||||||
One of the purposes of Meshtastic is to encourage the use of Meshtastic software to enable the public to come to trust the use of Meshtastic Trademarks. To achieve this purpose it is important that Meshtastic can quickly be identified. Meshtastic has chosen the Meshtastic Logo to identify such software and is granting usage rights in the Meshtastic Logo (and the other Meshtastic Trademarks) as previously described in this document in order to assure widespread availability.
|
One of the purposes of Meshtastic is to encourage the use of Meshtastic software to enable the public to come to trust the use of Meshtastic Trademarks. To achieve this purpose it is important that Meshtastic can quickly be identified. Meshtastic has chosen the Meshtastic Logo to identify such software and is granting usage rights in the Meshtastic Logo (and the other Meshtastic Trademarks) as previously described in this document in order to assure widespread availability.
|
||||||
|
|
||||||
## Trademark Usage Guidelines
|
### Trademark Usage Guidelines
|
||||||
|
|
||||||
### Guideline
|
#### Guideline
|
||||||
|
|
||||||
#### Examples
|
##### Examples
|
||||||
|
|
||||||
When using the Meshtastic Trademarks you must provide the proper trademark symbols and a trademark attribution statement.
|
When using the Meshtastic Trademarks you must provide the proper trademark symbols and a trademark attribution statement.
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ Unacceptable: Not hyperlinking the Meshtastic Logo where feasible
|
||||||
|
|
||||||
Except as prohibited by law, the person or entity who is using the Meshtastic Trademark under the terms of these Guidelines ("User") acknowledges that Meshtastic is the sole and exclusive owner of the Meshtastic Trademarks and agrees that it will do nothing inconsistent with such ownership either during the term of such use or afterwards. Specifically, User will take no action that will interfere with or diminish Meshtastic's right in the Meshtastic Trademarks. The User acknowledges that the Meshtastic Trademarks are valid under the applicable law and that User's utilization of the Meshtastic Trademarks will not create any right, title or interest in the Meshtastic Trademarks. The User agrees not to apply or assist any third party to register the Meshtastic Trademarks or a confusingly similar designation anywhere in the world. If any application for registration is or has been filed by or on behalf of User in any country and relates to any mark which, in the reasonable opinion of Meshtastic, is confusingly similar, deceptive or misleading with respect to, or dilutes or any way damages the Meshtastic Trademark, User shall, at Meshtastic's request, abandon all use of such mark, and any registration or application for registration thereof and shall reimburse Meshtastic for all costs and expenses of any oppMeshtastiction or related legal proceeding, including attorneys' fees, instigation by Meshtastic or its authorized representative. Upon the written statement that the User is not using the Meshtastic Trademarks in accordance with the Guidelines, within ten (10) days, User shall modify its use to comply with the Guidelines or cease using the Meshtastic Trademarks.
|
Except as prohibited by law, the person or entity who is using the Meshtastic Trademark under the terms of these Guidelines ("User") acknowledges that Meshtastic is the sole and exclusive owner of the Meshtastic Trademarks and agrees that it will do nothing inconsistent with such ownership either during the term of such use or afterwards. Specifically, User will take no action that will interfere with or diminish Meshtastic's right in the Meshtastic Trademarks. The User acknowledges that the Meshtastic Trademarks are valid under the applicable law and that User's utilization of the Meshtastic Trademarks will not create any right, title or interest in the Meshtastic Trademarks. The User agrees not to apply or assist any third party to register the Meshtastic Trademarks or a confusingly similar designation anywhere in the world. If any application for registration is or has been filed by or on behalf of User in any country and relates to any mark which, in the reasonable opinion of Meshtastic, is confusingly similar, deceptive or misleading with respect to, or dilutes or any way damages the Meshtastic Trademark, User shall, at Meshtastic's request, abandon all use of such mark, and any registration or application for registration thereof and shall reimburse Meshtastic for all costs and expenses of any oppMeshtastiction or related legal proceeding, including attorneys' fees, instigation by Meshtastic or its authorized representative. Upon the written statement that the User is not using the Meshtastic Trademarks in accordance with the Guidelines, within ten (10) days, User shall modify its use to comply with the Guidelines or cease using the Meshtastic Trademarks.
|
||||||
|
|
||||||
## Logo Usage Guidelines
|
### Logo Usage Guidelines
|
||||||
|
|
||||||
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).
|
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).
|
||||||
|
|
||||||
|
|
|
@ -15,26 +15,30 @@ The minimum Android version is 5.0 (Lollipop 2014, first BLE support), however A
|
||||||
|
|
||||||
<p float="center">
|
<p float="center">
|
||||||
<a href="https://mesh.tastic.app/fdroid/repo">
|
<a href="https://mesh.tastic.app/fdroid/repo">
|
||||||
<img alt="Get it on F-Droid"
|
<img
|
||||||
|
alt="Get it on F-Droid"
|
||||||
src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||||
width="49%"/>
|
width="49%"
|
||||||
|
/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
1. Download and Install the F-Droid app from [f-droid.org](https://f-droid.org/)
|
1. Download and Install the F-Droid app from [f-droid.org](https://f-droid.org/)
|
||||||
2. Open the F-Droid app and navigate to `Settings > Repositories`.
|
2. Open the F-Droid app and navigate to `Settings > Repositories`.
|
||||||
3. Click on the `+` icon to add a new repo.
|
3. Click on the `+` icon to add a new repo.
|
||||||
3. Enter the Meshtastic repo address as follows: `https://mesh.tastic.app/fdroid/repo/` (no fingerprint required)
|
4. Enter the Meshtastic repo address as follows: `https://mesh.tastic.app/fdroid/repo/` (no fingerprint required)
|
||||||
4. Navigate to the `Categories` page and refresh (scroll down).
|
5. Navigate to the `Categories` page and refresh (scroll down).
|
||||||
5. Search for and install the `Meshtastic` App.
|
6. Search for and install the `Meshtastic` App.
|
||||||
|
|
||||||
### Install from Play Store
|
### Install from Play Store
|
||||||
|
|
||||||
<p float="center">
|
<p float="center">
|
||||||
<a href="https://play.google.com/store/apps/details?id=com.geeksville.mesh">
|
<a href="https://play.google.com/store/apps/details?id=com.geeksville.mesh">
|
||||||
<img alt="Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh"
|
<img
|
||||||
|
alt="Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh"
|
||||||
src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"
|
src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"
|
||||||
width="49%"/>
|
width="49%"
|
||||||
|
/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -48,9 +52,11 @@ _Google Play and the Google Play logo are trademarks of Google LLC._
|
||||||
|
|
||||||
<p float="center">
|
<p float="center">
|
||||||
<a href="https://github.com/meshtastic/Meshtastic-Android/releases/latest">
|
<a href="https://github.com/meshtastic/Meshtastic-Android/releases/latest">
|
||||||
<img alt="Download at https://github.com/meshtastic/Meshtastic-Android/releases/latest"
|
<img
|
||||||
|
alt="Download at https://github.com/meshtastic/Meshtastic-Android/releases/latest"
|
||||||
src="/img/android/get-it-on-github.png"
|
src="/img/android/get-it-on-github.png"
|
||||||
width="49%"/>
|
width="49%"
|
||||||
|
/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -58,17 +64,16 @@ The app can also be sideloaded by downloading the .APK from the [Github Releases
|
||||||
|
|
||||||
If you do sideload, you may have to give your browser permissions to run a package installer. If you wish to view the code or contribute to development of the app, please visit the app's [GitHub page](https://github.com/meshtastic/Meshtastic-Android)
|
If you do sideload, you may have to give your browser permissions to run a package installer. If you wish to view the code or contribute to development of the app, please visit the app's [GitHub page](https://github.com/meshtastic/Meshtastic-Android)
|
||||||
|
|
||||||
|
|
||||||
### Install with Obtainium
|
### Install with Obtainium
|
||||||
|
|
||||||
1. Download and Install the Obtanium app from [Github](https://github.com/ImranR98/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`.
|
2. Open the Obtanium app and navigate to `+ Add App`.
|
||||||
3. You can easily search for the Android repo with the search field by typing `Meshtastic-Android` and selecting the `Meshtastic/Meshtastic-Android` repo. You may also manually enter the Meshtastic Android Github Releases address as follows: `https://github.com/meshtastic/Meshtastic-Android/releases`.
|
3. You can easily search for the Android repo with the search field by typing `Meshtastic-Android` and selecting the `Meshtastic/Meshtastic-Android` repo. You may also manually 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`.
|
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.
|
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`.
|
6. Press `Install`. Android Installer will prompt "Do you want to install this app?" press `Install`.
|
||||||
7. Press `Open`.
|
7. Press `Open`.
|
||||||
|
|
||||||
Obtainium allows you to install and update Open-Source Apps directly from their releases pages, and receive notifications when new releases are made available.
|
Obtainium allows you to install and update Open-Source Apps directly from their releases pages, and receive notifications when new releases are made available.
|
||||||
|
|
||||||
*Alpha releases include the latest cutting edge changes which may come with extra bugs. It is recommended that you follow the [Meshtastic Discourse Alpha Testers](https://meshtastic.discourse.group/c/development/alpha-testers) channel if you decide to use these versions.
|
\*Alpha releases include the latest cutting edge changes which may come with extra bugs. It is recommended that you follow the [Meshtastic Discourse Alpha Testers](https://meshtastic.discourse.group/c/development/alpha-testers) channel if you decide to use these versions.
|
||||||
|
|
|
@ -25,10 +25,10 @@ To find devices to connect via Bluetooth click the button on the bottom right co
|
||||||
|
|
||||||
1. Select the device name, `Meshtastic_bebc` in this example. (You will see devices within range, so make sure to get the right one.)
|
1. Select the device name, `Meshtastic_bebc` in this example. (You will see devices within range, so make sure to get the right one.)
|
||||||
2. Before you can connect for the first time, you need to "pair" the devices to allow communication between them. Some devices are pinless, others require entering a PIN shown on the screen.
|
2. Before you can connect for the first time, you need to "pair" the devices to allow communication between them. Some devices are pinless, others require entering a PIN shown on the screen.
|
||||||
:::note
|
:::note
|
||||||
If the device was flashed without a screen connected, it will automatically default to a pairing PIN of '123456'. If it was booted with a screen once, the config is set to random pin. If you remove the screen afterwards, it stays like this.
|
If the device was flashed without a screen connected, it will automatically default to a pairing PIN of '123456'. If it was booted with a screen once, the config is set to random pin. If you remove the screen afterwards, it stays like this.
|
||||||
Either set it to use the default pin manually, or factory reset it and it will revert to '123456' after the next boot.
|
Either set it to use the default pin manually, or factory reset it and it will revert to '123456' after the next boot.
|
||||||
:::
|
:::
|
||||||
3. This starts the communication with the device. The cloud icon on the status bar should change and show a check mark.
|
3. This starts the communication with the device. The cloud icon on the status bar should change and show a check mark.
|
||||||
|
|
||||||
[![Device connected](/img/android/android-settings-mike-c.png)](/img/android/android-settings-mike-c.png)
|
[![Device connected](/img/android/android-settings-mike-c.png)](/img/android/android-settings-mike-c.png)
|
||||||
|
@ -73,7 +73,7 @@ The app will generate a new QR code on the screen, and this encodes the channel
|
||||||
|
|
||||||
1. If another user shares a QR code, you will be able to scan it directly with your camera using the `Scan` button.
|
1. If another user shares a QR code, you will be able to scan it directly with your camera using the `Scan` button.
|
||||||
|
|
||||||
[![Open with Meshtastic](/img/android/android-open-with-c.png)](/img/android/android-open-with.png)
|
[![Open with Meshtastic](/img/android/android-open-with-c.png)](/img/android/android-open-with.png)
|
||||||
|
|
||||||
2. If the channel is shared from a file or link using the `Share` button, you can click on the file or link and you need to choose "Open with Meshtastic".
|
2. If the channel is shared from a file or link using the `Share` button, you can click on the file or link and you need to choose "Open with Meshtastic".
|
||||||
|
|
||||||
|
|
|
@ -5,5 +5,8 @@ sidebar_label: Installation
|
||||||
---
|
---
|
||||||
|
|
||||||
<a href="https://apple.co/3Auysep">
|
<a href="https://apple.co/3Auysep">
|
||||||
<img alt="Meshtastic App Store Launch Image" src="/img/apple/meshtastic-1080x1080.png" />
|
<img
|
||||||
|
alt="Meshtastic App Store Launch Image"
|
||||||
|
src="/img/apple/meshtastic-1080x1080.png"
|
||||||
|
/>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -10,12 +10,12 @@ The Meshtastic app for iOS, iPadOS and macOS supports the sharing of a .mbtiles
|
||||||
|
|
||||||
There is an open source cross platform mapping program call [QGIS](https://www.qgis.org/en/site/)
|
There is an open source cross platform mapping program call [QGIS](https://www.qgis.org/en/site/)
|
||||||
|
|
||||||
to get a mbtiles out of qgis, start with a small area that you are familiar with. Open qgis, and add a openstreetmap source from the left bar (might be under one of the tile headings). Now you should see something in the main map view. zoom to the area you want.
|
to get a mbtiles out of qgis, start with a small area that you are familiar with. Open qgis, and add a openstreetmap source from the left bar (might be under one of the tile headings). Now you should see something in the main map view. zoom to the area you want.
|
||||||
|
|
||||||
In the Processing Toolbox (right bar, you may have to show it from the View menu), open Raster Tools > Generate XYZ Tiles (MBTiles)
|
In the Processing Toolbox (right bar, you may have to show it from the View menu), open Raster Tools > Generate XYZ Tiles (MBTiles)
|
||||||
|
|
||||||
In Extent, choose Use Map Canvas Extent. This defines the area of the map that will be rendered into the export file
|
In Extent, choose Use Map Canvas Extent. This defines the area of the map that will be rendered into the export file
|
||||||
Use a zoom level of 12-17. You can play with this later, but thats a good starting point. Note that every increment of maximum zoom will increase the map size 4x.
|
Use a zoom level of 12-17. You can play with this later, but thats a good starting point. Note that every increment of maximum zoom will increase the map size 4x.
|
||||||
Select JPG if there's aerial/satellite imagery, otherwise just use PNG. That will give the best compression.
|
Select JPG if there's aerial/satellite imagery, otherwise just use PNG. That will give the best compression.
|
||||||
|
|
||||||
Finally choose a location for the output file. Click Run and you should eventually get a file that should play nice in the Meshtastic app.
|
Finally choose a location for the output file. Click Run and you should eventually get a file that should play nice in the Meshtastic app.
|
||||||
|
|
|
@ -16,6 +16,7 @@ Support should be sought from the respective authors.
|
||||||
:::info
|
:::info
|
||||||
|
|
||||||
The ATAK Forwarder plugin has recently been updated to support Meshtastic 2.0.6+ but is currently a pre-release version to allow for additional testing to be completed.
|
The ATAK Forwarder plugin has recently been updated to support Meshtastic 2.0.6+ but is currently a pre-release version to allow for additional testing to be completed.
|
||||||
|
|
||||||
- After installing you need to open the Meshtastic app and click the add device "+" so it will ask for Bluetooth permissions.
|
- After installing you need to open the Meshtastic app and click the add device "+" so it will ask for Bluetooth permissions.
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
|
@ -6,14 +6,13 @@ sidebar_position: 9
|
||||||
---
|
---
|
||||||
|
|
||||||
The device software can also run on a native Linux machine thanks to the [Portduino framework](https://github.com/geeksville/framework-portduino).
|
The device software can also run on a native Linux machine thanks to the [Portduino framework](https://github.com/geeksville/framework-portduino).
|
||||||
See either [Usage with a Linux machine](#usage-with-a-linux-machine) or [Usage with Docker](#usage-with-docker) for instructions to run it.
|
|
||||||
|
|
||||||
The application either simulates some of the interfaces, or uses the real hardware of your machine.
|
The application either simulates some of the interfaces, or uses the real hardware of your machine.
|
||||||
Device firmware from 1.3.42 and on even allows you to simulate the LoRa chip by sending and receiving Meshtastic packets via a local TCP port.
|
Device firmware from 1.3.42 and on even allows you to simulate the LoRa chip by sending and receiving Meshtastic packets via a local TCP port.
|
||||||
In this way, you can let multiple instances of the application communicate with each other as if they did via LoRa.
|
In this way, you can let multiple instances of the application communicate with each other as if they did via LoRa.
|
||||||
For instructions on how to use it, see the [interactive simulator](https://github.com/GUVWAF/Meshtasticator/blob/master/INTERACTIVE_SIM.md) that also emulates a wireless environment using simulated positions of the nodes.
|
For instructions on how to use it, see the [interactive simulator](https://github.com/GUVWAF/Meshtasticator/blob/master/INTERACTIVE_SIM.md) that also emulates a wireless environment using simulated positions of the nodes.
|
||||||
|
|
||||||
## Usage with a Linux machine {#usage-with-a-linux-machine}
|
## Usage with a Linux machine
|
||||||
|
|
||||||
The easiest way of building the native application is using Visual Studio Code with the PlatformIO extension.
|
The easiest way of building the native application is using Visual Studio Code with the PlatformIO extension.
|
||||||
See the instructions for creating such a building environment [here](/docs/development/firmware/build).
|
See the instructions for creating such a building environment [here](/docs/development/firmware/build).
|
||||||
|
@ -29,7 +28,7 @@ Additional arguments can be given to the program, which are listed as follows:
|
||||||
- `-h MAC_ADDRESS`: The MAC address to assign to this virtual machine.
|
- `-h MAC_ADDRESS`: The MAC address to assign to this virtual machine.
|
||||||
- `-p TCP_PORT`: The local TCP port to use for running the Meshtastic API.
|
- `-p TCP_PORT`: The local TCP port to use for running the Meshtastic API.
|
||||||
|
|
||||||
## Usage with Docker {#usage-with-docker}
|
## Usage with Docker
|
||||||
|
|
||||||
If you do not own a Linux machine, or you just want to separate things, you might want
|
If you do not own a Linux machine, or you just want to separate things, you might want
|
||||||
to run the application inside a docker container.
|
to run the application inside a docker container.
|
||||||
|
@ -66,7 +65,7 @@ First, some environment variables need to be set up with command:
|
||||||
|
|
||||||
You also want to make some adjustments in the bin/build-all.sh to conform the amd64 build:
|
You also want to make some adjustments in the bin/build-all.sh to conform the amd64 build:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
sed -i 's/^BOARDS_ESP32.*/BOARDS_ESP32=""/' bin/build-all.sh
|
sed -i 's/^BOARDS_ESP32.*/BOARDS_ESP32=""/' bin/build-all.sh
|
||||||
sed -i 's/^BOARDS_NRF52.*/BOARDS_NRF52=""/' bin/build-all.sh
|
sed -i 's/^BOARDS_NRF52.*/BOARDS_NRF52=""/' bin/build-all.sh
|
||||||
sed -i 's/echo "Building SPIFFS.*/exit/' bin/build-all.sh
|
sed -i 's/echo "Building SPIFFS.*/exit/' bin/build-all.sh
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
id: python-cli
|
id: python-cli
|
||||||
title: Meshtastic Command Line Interface
|
title: Meshtastic Python CLI Guide
|
||||||
slug: /software/python/cli
|
slug: /software/python/cli
|
||||||
sidebar_label: Python CLI
|
sidebar_label: Python CLI
|
||||||
sidebar_position: 4
|
sidebar_position: 4
|
||||||
---
|
---
|
||||||
|
|
||||||
# Meshtastic Python CLI Guide
|
|
||||||
|
|
||||||
The python pip package installs a "meshtastic" command line executable, which displays packets sent over the network as JSON and lets you see serial debugging information from the meshtastic devices. This command is not run inside of python, you run it from your operating system shell prompt directly. If when you type "meshtastic" it doesn't find the command and you are using Windows: Check that the python "scripts" directory is in your path.
|
The python pip package installs a "meshtastic" command line executable, which displays packets sent over the network as JSON and lets you see serial debugging information from the meshtastic devices. This command is not run inside of python, you run it from your operating system shell prompt directly. If when you type "meshtastic" it doesn't find the command and you are using Windows: Check that the python "scripts" directory is in your path.
|
||||||
|
|
||||||
## Optional Arguments
|
## Optional Arguments
|
||||||
|
@ -16,9 +14,7 @@ The python pip package installs a "meshtastic" command line executable, which di
|
||||||
|
|
||||||
Shows a help message that describes the arguments.
|
Shows a help message that describes the arguments.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic -h
|
meshtastic -h
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -26,9 +22,7 @@ meshtastic -h
|
||||||
|
|
||||||
The port the Meshtastic device is connected to, i.e. `/dev/ttyUSB0`, `/dev/cu.wchusbserial`, `COM4` etc. if unspecified, meshtastic will try to find it. Important to use when multiple devices are connected to ensure you call the command for the correct device.
|
The port the Meshtastic device is connected to, i.e. `/dev/ttyUSB0`, `/dev/cu.wchusbserial`, `COM4` etc. if unspecified, meshtastic will try to find it. Important to use when multiple devices are connected to ensure you call the command for the correct device.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --port /dev/ttyUSB0 --info
|
meshtastic --port /dev/ttyUSB0 --info
|
||||||
meshtastic --port COM4 --info
|
meshtastic --port COM4 --info
|
||||||
```
|
```
|
||||||
|
@ -37,9 +31,7 @@ meshtastic --port COM4 --info
|
||||||
|
|
||||||
The hostname/ipaddr of the device to connect to (over TCP).
|
The hostname/ipaddr of the device to connect to (over TCP).
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --host HOST
|
meshtastic --host HOST
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -47,9 +39,7 @@ meshtastic --host HOST
|
||||||
|
|
||||||
Logs device serial output to either 'stdout', 'none' or a filename to append to.
|
Logs device serial output to either 'stdout', 'none' or a filename to append to.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --port /dev/ttyUSB0 --seriallog
|
meshtastic --port /dev/ttyUSB0 --seriallog
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -57,9 +47,7 @@ meshtastic --port /dev/ttyUSB0 --seriallog
|
||||||
|
|
||||||
Read and display the radio config information.
|
Read and display the radio config information.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --port /dev/ttyUSB0 --info
|
meshtastic --port /dev/ttyUSB0 --info
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -67,9 +55,7 @@ meshtastic --port /dev/ttyUSB0 --info
|
||||||
|
|
||||||
Prints a node list in a pretty, formatted table.
|
Prints a node list in a pretty, formatted table.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --nodes
|
meshtastic --nodes
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -77,9 +63,7 @@ meshtastic --nodes
|
||||||
|
|
||||||
Displays the QR code that corresponds to the current channel.
|
Displays the QR code that corresponds to the current channel.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --qr
|
meshtastic --qr
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -87,9 +71,7 @@ meshtastic --qr
|
||||||
|
|
||||||
Gets a preferences field.
|
Gets a preferences field.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --get lora.region
|
meshtastic --get lora.region
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -99,9 +81,7 @@ Sets a preferences field.
|
||||||
|
|
||||||
Configuration values are described in this section: [Configuration Sections](https://meshtastic.org/docs/settings/config)
|
Configuration values are described in this section: [Configuration Sections](https://meshtastic.org/docs/settings/config)
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --set lora.region Unset
|
meshtastic --set lora.region Unset
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -109,9 +89,7 @@ meshtastic --set lora.region Unset
|
||||||
|
|
||||||
Set a channel URL.
|
Set a channel URL.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --seturl https://www.meshtastic.org/c/GAMiIE67C6zsNmlWQ-KE1tKt0fRKFciHka-DShI6G7ElvGOiKgZzaGFyZWQ=
|
meshtastic --seturl https://www.meshtastic.org/c/GAMiIE67C6zsNmlWQ-KE1tKt0fRKFciHka-DShI6G7ElvGOiKgZzaGFyZWQ=
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -119,9 +97,7 @@ meshtastic --seturl https://www.meshtastic.org/c/GAMiIE67C6zsNmlWQ-KE1tKt0fRKFci
|
||||||
|
|
||||||
Set the specified channel index
|
Set the specified channel index
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-index 1 --ch-disable
|
meshtastic --ch-index 1 --ch-disable
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -129,9 +105,7 @@ meshtastic --ch-index 1 --ch-disable
|
||||||
|
|
||||||
Add a secondary channel, you must specify a channel name.
|
Add a secondary channel, you must specify a channel name.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-add testing-channel
|
meshtastic --ch-add testing-channel
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -139,9 +113,7 @@ meshtastic --ch-add testing-channel
|
||||||
|
|
||||||
Delete the ch-index channel.
|
Delete the ch-index channel.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-index 1 --ch-del
|
meshtastic --ch-index 1 --ch-del
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -149,9 +121,7 @@ meshtastic --ch-index 1 --ch-del
|
||||||
|
|
||||||
Enable the specified channel.
|
Enable the specified channel.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-index 1 --ch-enable
|
meshtastic --ch-index 1 --ch-enable
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -159,9 +129,7 @@ meshtastic --ch-index 1 --ch-enable
|
||||||
|
|
||||||
Disable the specified channel.
|
Disable the specified channel.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-index 1 --ch-disable
|
meshtastic --ch-index 1 --ch-disable
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -169,9 +137,7 @@ meshtastic --ch-index 1 --ch-disable
|
||||||
|
|
||||||
Set a channel parameter.
|
Set a channel parameter.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-set id 1234 --ch-index 0
|
meshtastic --ch-set id 1234 --ch-index 0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -179,9 +145,7 @@ meshtastic --ch-set id 1234 --ch-index 0
|
||||||
|
|
||||||
Change to the standard long-range (but slow) channel.
|
Change to the standard long-range (but slow) channel.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-longslow
|
meshtastic --ch-longslow
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -189,9 +153,7 @@ meshtastic --ch-longslow
|
||||||
|
|
||||||
Change to the standard fast (but short range) channel.
|
Change to the standard fast (but short range) channel.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ch-shortfast
|
meshtastic --ch-shortfast
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -199,9 +161,7 @@ meshtastic --ch-shortfast
|
||||||
|
|
||||||
Set device owner name.
|
Set device owner name.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --dest '!28979058' --set-owner "MeshyJohn"
|
meshtastic --dest '!28979058' --set-owner "MeshyJohn"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -209,9 +169,7 @@ meshtastic --dest '!28979058' --set-owner "MeshyJohn"
|
||||||
|
|
||||||
Set licensed Ham ID and turn off encryption.
|
Set licensed Ham ID and turn off encryption.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --set-ham KI1345
|
meshtastic --set-ham KI1345
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -219,9 +177,7 @@ meshtastic --set-ham KI1345
|
||||||
|
|
||||||
The destination node id for any sent commands
|
The destination node id for any sent commands
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --dest '!28979058' --set-owner "MeshyJohn"
|
meshtastic --dest '!28979058' --set-owner "MeshyJohn"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -229,9 +185,7 @@ meshtastic --dest '!28979058' --set-owner "MeshyJohn"
|
||||||
|
|
||||||
Send a text message. Can specify a channel index ('--ch-index') or a destination ('--dest')
|
Send a text message. Can specify a channel index ('--ch-index') or a destination ('--dest')
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --sendtext "Hello Mesh!"
|
meshtastic --sendtext "Hello Mesh!"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -239,9 +193,7 @@ meshtastic --sendtext "Hello Mesh!"
|
||||||
|
|
||||||
Send a ping message (which requests a reply).
|
Send a ping message (which requests a reply).
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --sendping
|
meshtastic --sendping
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -249,9 +201,7 @@ meshtastic --sendping
|
||||||
|
|
||||||
Tell the destination node to reboot.
|
Tell the destination node to reboot.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --dest '!28979058' --reboot
|
meshtastic --dest '!28979058' --reboot
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -259,9 +209,7 @@ meshtastic --dest '!28979058' --reboot
|
||||||
|
|
||||||
Reply to received messages.
|
Reply to received messages.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --reply
|
meshtastic --reply
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -269,9 +217,7 @@ meshtastic --reply
|
||||||
|
|
||||||
Set a particular GPIO # to 1 or 0.
|
Set a particular GPIO # to 1 or 0.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest '!28979058'
|
meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest '!28979058'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -279,9 +225,7 @@ meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest '!28979058'
|
||||||
|
|
||||||
Read from a GPIO mask.
|
Read from a GPIO mask.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest '!28979058'
|
meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest '!28979058'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -289,9 +233,7 @@ meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest '!28979058'
|
||||||
|
|
||||||
Start watching a GPIO mask for changes.
|
Start watching a GPIO mask for changes.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest '!28979058'
|
meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest '!28979058'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -299,9 +241,7 @@ meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest '!28979058'
|
||||||
|
|
||||||
Suppress sending the current time to the mesh.
|
Suppress sending the current time to the mesh.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --port /dev/ttyUSB0 --no-time
|
meshtastic --port /dev/ttyUSB0 --no-time
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -309,9 +249,7 @@ meshtastic --port /dev/ttyUSB0 --no-time
|
||||||
|
|
||||||
Set device altitude (allows use without GPS).
|
Set device altitude (allows use without GPS).
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --setalt 120
|
meshtastic --setalt 120
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -319,9 +257,7 @@ meshtastic --setalt 120
|
||||||
|
|
||||||
Set device latitude (allows use without GPS).
|
Set device latitude (allows use without GPS).
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --setlat 25.2
|
meshtastic --setlat 25.2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -329,9 +265,7 @@ meshtastic --setlat 25.2
|
||||||
|
|
||||||
Set device longitude (allows use without GPS).
|
Set device longitude (allows use without GPS).
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --setlon -16.8
|
meshtastic --setlon -16.8
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -339,9 +273,7 @@ meshtastic --setlon -16.8
|
||||||
|
|
||||||
Show API library debug log messages.
|
Show API library debug log messages.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --debug --info
|
meshtastic --debug --info
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -349,9 +281,7 @@ meshtastic --debug --info
|
||||||
|
|
||||||
Run stress test against all connected Meshtastic devices.
|
Run stress test against all connected Meshtastic devices.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --test
|
meshtastic --test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -359,9 +289,7 @@ meshtastic --test
|
||||||
|
|
||||||
BLE mac address to connect to (BLE is not yet supported for this tool).
|
BLE mac address to connect to (BLE is not yet supported for this tool).
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --ble "83:38:92:32:37:48"
|
meshtastic --ble "83:38:92:32:37:48"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -369,9 +297,7 @@ meshtastic --ble "83:38:92:32:37:48"
|
||||||
|
|
||||||
Don't start the API, just function as a dumb serial terminal. Probably not very helpful from the command line. Used more for testing/internal needs.
|
Don't start the API, just function as a dumb serial terminal. Probably not very helpful from the command line. Used more for testing/internal needs.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --noproto
|
meshtastic --noproto
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -379,9 +305,7 @@ meshtastic --noproto
|
||||||
|
|
||||||
Show program's version number and exit.
|
Show program's version number and exit.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --version
|
meshtastic --version
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -389,9 +313,7 @@ meshtastic --version
|
||||||
|
|
||||||
Configure all of the radio configuration from a yaml file.
|
Configure all of the radio configuration from a yaml file.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --configure example_config.yaml
|
meshtastic --configure example_config.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -401,15 +323,11 @@ Export the configuration of the device. (to be consumed by the '--configure' com
|
||||||
|
|
||||||
To create to a file with the connected device's configuration, this command's output must be piped to a yaml file
|
To create to a file with the connected device's configuration, this command's output must be piped to a yaml file
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --export-config > example_config.yaml
|
meshtastic --export-config > example_config.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
**Usage**
|
```title="Usage"shell
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --export-config
|
meshtastic --export-config
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -417,9 +335,7 @@ meshtastic --export-config
|
||||||
|
|
||||||
Print out info that would be helpful supporting any issues.
|
Print out info that would be helpful supporting any issues.
|
||||||
|
|
||||||
**Usage**
|
```shell title="Usage"
|
||||||
|
|
||||||
```shell
|
|
||||||
meshtastic --support
|
meshtastic --support
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,8 @@ slug: /software/python/cli/installation
|
||||||
sidebar_position: 1
|
sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
|
|
||||||
This library provides a command line interface (CLI) for Meshtastic nodes and provides an easy API for sending and receiving messages over mesh radios, in addition to changing user settings. Using the command line is currently the most powerful. Events are delivered using a publish-subscribe model, and you can subscribe to only the message types you are interested in.
|
This library provides a command line interface (CLI) for Meshtastic nodes and provides an easy API for sending and receiving messages over mesh radios, in addition to changing user settings. Using the command line is currently the most powerful. Events are delivered using a publish-subscribe model, and you can subscribe to only the message types you are interested in.
|
||||||
|
|
||||||
|
@ -177,19 +177,19 @@ Wifi connection is currently under development and may not be working properly j
|
||||||
|
|
||||||
- Install [Termux](https://f-droid.org/en/packages/com.termux) from the F-Droid app store (Google play does not currently support the latest builds)
|
- Install [Termux](https://f-droid.org/en/packages/com.termux) from the F-Droid app store (Google play does not currently support the latest builds)
|
||||||
- Load Termux and update the package list
|
- Load Termux and update the package list
|
||||||
```
|
```shell
|
||||||
pkg update
|
pkg update
|
||||||
```
|
```
|
||||||
- Upgrade the installed packages
|
- Upgrade the installed packages
|
||||||
```
|
```shell
|
||||||
pkg upgrade
|
pkg upgrade
|
||||||
```
|
```
|
||||||
- Install python
|
- Install python
|
||||||
```
|
```shell
|
||||||
pkg install python
|
pkg install python
|
||||||
```
|
```
|
||||||
- Upgrade pip and installed meshtastic and some of its dependencies
|
- Upgrade pip and installed meshtastic and some of its dependencies
|
||||||
```
|
```shell
|
||||||
pip install --upgrade pip pygatt pytap2 wheel mesthtastic
|
pip install --upgrade pip pygatt pytap2 wheel mesthtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -204,10 +204,8 @@ Be aware that the Meshtastic CLI is not able to control the nodes over USB throu
|
||||||
You may need to close and re-open the CLI. The path variables may or may not update for the current session when installing.
|
You may need to close and re-open the CLI. The path variables may or may not update for the current session when installing.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
||||||
## Standalone
|
## Standalone
|
||||||
|
|
||||||
|
|
||||||
There are standalone executable files for Mac, Windows and Ubuntu. A single file is all you need to run the command line interface (CLI) Meshtastic tool. There is a zip file per operating system. To use, see the operating system specific notes below:
|
There are standalone executable files for Mac, Windows and Ubuntu. A single file is all you need to run the command line interface (CLI) Meshtastic tool. There is a zip file per operating system. To use, see the operating system specific notes below:
|
||||||
|
|
||||||
They can be found on the [Releases](https://github.com/meshtastic/Meshtastic-python/releases) page.
|
They can be found on the [Releases](https://github.com/meshtastic/Meshtastic-python/releases) page.
|
||||||
|
@ -226,13 +224,13 @@ values={[
|
||||||
|
|
||||||
- Run the following command to make the file executable and rename it 'meshtastic':
|
- Run the following command to make the file executable and rename it 'meshtastic':
|
||||||
|
|
||||||
```
|
```shell
|
||||||
chmod +x meshtastic_ubuntu && mv meshtastic_ubuntu meshtastic
|
chmod +x meshtastic_ubuntu && mv meshtastic_ubuntu meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
- To run the cli:
|
- To run the cli:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
./meshtastic
|
./meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -247,13 +245,13 @@ Copy (or move) this binary somewhere in your path.
|
||||||
|
|
||||||
- Run the following command to make the file executable and to rename it 'meshtastic':
|
- Run the following command to make the file executable and to rename it 'meshtastic':
|
||||||
|
|
||||||
```
|
```shell
|
||||||
chmod +x meshtastic_mac && mv meshtastic_mac meshtastic
|
chmod +x meshtastic_mac && mv meshtastic_mac meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
- Try to run it:
|
- Try to run it:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
./meshtastic
|
./meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -266,7 +264,7 @@ You may get a dialog that says:
|
||||||
|
|
||||||
- Try to run it again:
|
- Try to run it again:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
./meshtastic
|
./meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -278,7 +276,7 @@ Click "Open".
|
||||||
|
|
||||||
- Now when you want to run it, you can simply run:
|
- Now when you want to run it, you can simply run:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
./meshtastic
|
./meshtastic
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -295,10 +293,9 @@ Copy (or move) this binary somewhere in your path.
|
||||||
|
|
||||||
- To run, open a windows command prompt, navigate to the location of the executable and run:
|
- To run, open a windows command prompt, navigate to the location of the executable and run:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
meshtastic.exe
|
meshtastic.exe
|
||||||
```
|
```
|
||||||
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
|
|
@ -100,11 +100,11 @@ Toggling `set-ham` changes your device settings in the following ways.
|
||||||
| `ShortName` | _Abrv CallSign_ | See [User Config - ShortName](/docs/settings/config/user#short-name) |
|
| `ShortName` | _Abrv CallSign_ | See [User Config - ShortName](/docs/settings/config/user#short-name) |
|
||||||
| `PSK` | `""` | See [Channel Settings - PSK](#changing-the-preshared-key) |
|
| `PSK` | `""` | See [Channel Settings - PSK](#changing-the-preshared-key) |
|
||||||
|
|
||||||
## Changing the preshared key:
|
## Changing the preshared key
|
||||||
|
|
||||||
You can set the channel preshared key to a particular AES128 or AES256 sequence.
|
You can set the channel preshared key to a particular AES128 or AES256 sequence.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
meshtastic --ch-set psk 0x1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b --info
|
meshtastic --ch-set psk 0x1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b1a1a1a1a2b2b2b2b --info
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@ slug: /software/python/flasher
|
||||||
sidebar_position: 5
|
sidebar_position: 5
|
||||||
---
|
---
|
||||||
|
|
||||||
import Tabs from '@theme/Tabs';
|
import Tabs from "@theme/Tabs";
|
||||||
import TabItem from '@theme/TabItem';
|
import TabItem from "@theme/TabItem";
|
||||||
import Link from '@docusaurus/Link';
|
import Link from "@docusaurus/Link";
|
||||||
|
|
||||||
:::caution
|
:::caution
|
||||||
Make sure not to power the radio on without first attaching the antenna! You could damage the radio chip!
|
Make sure not to power the radio on without first attaching the antenna! You could damage the radio chip!
|
||||||
|
@ -90,7 +90,6 @@ sudo apt install -y python3 python3-pip python3-venv
|
||||||
</TabItem>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
|
||||||
### Install or Upgrade 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 **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.
|
||||||
|
|
|
@ -8,6 +8,6 @@ export interface PowerTabProps {
|
||||||
device: IDevice;
|
device: IDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const PowerTab = ({}: PowerTabProps): JSX.Element => {
|
export const PowerTab = (): JSX.Element => {
|
||||||
return <Tab.Panel className="h-32">Content 1</Tab.Panel>;
|
return <Tab.Panel className="h-32">Content 1</Tab.Panel>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,7 +3,6 @@ import React from "react";
|
||||||
import { FiTwitter } from "react-icons/fi";
|
import { FiTwitter } from "react-icons/fi";
|
||||||
|
|
||||||
import { ChevronRightIcon } from "@heroicons/react/20/solid";
|
import { ChevronRightIcon } from "@heroicons/react/20/solid";
|
||||||
import FlipClockCountdown from "@leenguyen/react-flip-clock-countdown";
|
|
||||||
import Layout from "@theme/Layout";
|
import Layout from "@theme/Layout";
|
||||||
import { Dark, Light } from "/src/components/ColorMode";
|
import { Dark, Light } from "/src/components/ColorMode";
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ export interface avatarLayoutProps {
|
||||||
export const Avatar = ({
|
export const Avatar = ({
|
||||||
imgUrl,
|
imgUrl,
|
||||||
name,
|
name,
|
||||||
userName,
|
|
||||||
description
|
description
|
||||||
}: avatarProps): JSX.Element => {
|
}: avatarProps): JSX.Element => {
|
||||||
return (
|
return (
|
||||||
|
@ -36,7 +35,7 @@ export const AvatarLayout = ({ list }: avatarLayoutProps): JSX.Element => {
|
||||||
return (
|
return (
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="flex flex-wrap justify-center bg-primary">
|
<div className="flex flex-wrap justify-center bg-primary">
|
||||||
{list.map((e) => {
|
{list.map(() => {
|
||||||
return <Avatar />;
|
return <Avatar />;
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,7 +2,7 @@ import React from "react";
|
||||||
import Layout from "@theme/Layout";
|
import Layout from "@theme/Layout";
|
||||||
import Link from "@docusaurus/Link";
|
import Link from "@docusaurus/Link";
|
||||||
|
|
||||||
import { Avatar, AvatarLayout } from "./_components/Avatar";
|
import { AvatarLayout } from "./_components/Avatar";
|
||||||
|
|
||||||
const Credits = (): JSX.Element => {
|
const Credits = (): JSX.Element => {
|
||||||
const partnerLogos = [
|
const partnerLogos = [
|
||||||
|
|
|
@ -152,21 +152,6 @@ const SocialCards: SocialCardProps[] = [
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
function Feature({ imageUrl, title, description }) {
|
|
||||||
const imgUrl = useBaseUrl(imageUrl);
|
|
||||||
return (
|
|
||||||
<div className="col col--4">
|
|
||||||
{imgUrl && (
|
|
||||||
<div className="text--center">
|
|
||||||
<img width={200} height={200} src={imgUrl} alt={title} />
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<h3>{title}</h3>
|
|
||||||
<p>{description}</p>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Home() {
|
function Home() {
|
||||||
const context = useDocusaurusContext();
|
const context = useDocusaurusContext();
|
||||||
const { siteConfig } = context;
|
const { siteConfig } = context;
|
||||||
|
|
|
@ -30,7 +30,7 @@ export const Filters = (): JSX.Element => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{data.map((tag, i) => {
|
{data.map((tag, i) => {
|
||||||
const { label, description, color } = tag;
|
const { label, color } = tag;
|
||||||
const id = `showcase_checkbox_id_${tag};`;
|
const id = `showcase_checkbox_id_${tag};`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -25,7 +25,7 @@ function replaceSearchTags(search: string, newTags: string[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const TagSelect = React.forwardRef<HTMLLabelElement, Props>(
|
export const TagSelect = React.forwardRef<HTMLLabelElement, Props>(
|
||||||
({ id, icon, label, tag, ...rest }, ref) => {
|
({ icon, label, tag }) => {
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const [selected, setSelected] = React.useState(false);
|
const [selected, setSelected] = React.useState(false);
|
||||||
|
|
|
@ -16,8 +16,6 @@ const OEM = (): JSX.Element => {
|
||||||
const [oemText, setOemText] = useState<string>("");
|
const [oemText, setOemText] = useState<string>("");
|
||||||
const [oemBytes, setOemBytes] = useState<Uint8Array>(new Uint8Array());
|
const [oemBytes, setOemBytes] = useState<Uint8Array>(new Uint8Array());
|
||||||
|
|
||||||
const encoder = new TextEncoder();
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setOemBytes(
|
setOemBytes(
|
||||||
Protobuf.OEMStore.toBinary({
|
Protobuf.OEMStore.toBinary({
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 651.29 94.76"><defs><style>.cls-1{fill:#f78100;}.cls-2{fill:#fcad32;}</style></defs><path class="cls-1" d="M143.05,93.42l1.07-3.71c1.27-4.41.8-8.48-1.34-11.48-2-2.76-5.26-4.38-9.25-4.57L58,72.7a1.47,1.47,0,0,1-1.35-2,2,2,0,0,1,1.75-1.34l76.26-1c9-.41,18.84-7.75,22.27-16.71l4.34-11.36a2.68,2.68,0,0,0,.18-1,3.31,3.31,0,0,0-.06-.54,49.67,49.67,0,0,0-95.49-5.14,22.35,22.35,0,0,0-35,23.42A31.73,31.73,0,0,0,.34,93.45a1.47,1.47,0,0,0,1.45,1.27l139.49,0h0A1.83,1.83,0,0,0,143.05,93.42Z"/><path class="cls-2" d="M168.22,41.15q-1,0-2.1.06a.88.88,0,0,0-.32.07,1.17,1.17,0,0,0-.76.8l-3,10.26c-1.28,4.41-.81,8.48,1.34,11.48a11.65,11.65,0,0,0,9.24,4.57l16.11,1a1.44,1.44,0,0,1,1.14.62,1.5,1.5,0,0,1,.17,1.37,2,2,0,0,1-1.75,1.34l-16.73,1c-9.09.42-18.88,7.75-22.31,16.7l-1.21,3.16a.9.9,0,0,0,.79,1.22h57.63A1.55,1.55,0,0,0,208,93.63a41.34,41.34,0,0,0-39.76-52.48Z"/><polygon points="273.03 59.66 282.56 59.66 282.56 85.72 299.23 85.72 299.23 94.07 273.03 94.07 273.03 59.66"/><path d="M309.11,77v-.09c0-9.88,8-17.9,18.58-17.9s18.48,7.92,18.48,17.8v.1c0,9.88-8,17.89-18.58,17.89S309.11,86.85,309.11,77m27.33,0v-.09c0-5-3.59-9.29-8.85-9.29s-8.7,4.22-8.7,9.19v.1c0,5,3.59,9.29,8.8,9.29s8.75-4.23,8.75-9.2"/><path d="M357.84,79V59.66h9.69V78.78c0,5,2.5,7.33,6.34,7.33s6.34-2.26,6.34-7.08V59.66h9.68V78.73c0,11.11-6.34,16-16.12,16s-15.93-5-15.93-15.73"/><path d="M404.49,59.66h13.27c12.29,0,19.42,7.08,19.42,17v.1c0,9.93-7.23,17.3-19.61,17.3H404.49Zm13.42,26c5.7,0,9.49-3.15,9.49-8.71v-.09c0-5.51-3.79-8.71-9.49-8.71H414V85.62Z"/><polygon points="451.04 59.66 478.56 59.66 478.56 68.02 460.58 68.02 460.58 73.87 476.85 73.87 476.85 81.78 460.58 81.78 460.58 94.07 451.04 94.07 451.04 59.66"/><polygon points="491.84 59.66 501.37 59.66 501.37 85.72 518.04 85.72 518.04 94.07 491.84 94.07 491.84 59.66"/><path d="M543,59.42h9.19L566.8,94.07H556.58l-2.51-6.14H540.79l-2.45,6.14h-10Zm8.35,21.08-3.83-9.78L543.6,80.5Z"/><path d="M579.08,59.66h16.27c5.27,0,8.9,1.38,11.21,3.74a10.64,10.64,0,0,1,3.05,8v.1a10.88,10.88,0,0,1-7.08,10.57l8.21,12h-11L592.8,83.65h-4.18V94.07h-9.54Zm15.83,16.52c3.25,0,5.12-1.58,5.12-4.08V72c0-2.71-2-4.08-5.17-4.08h-6.24v8.26Z"/><polygon points="623.37 59.66 651.05 59.66 651.05 67.77 632.81 67.77 632.81 72.98 649.33 72.98 649.33 80.5 632.81 80.5 632.81 85.96 651.29 85.96 651.29 94.07 623.37 94.07 623.37 59.66"/><path d="M252.15,81a8.44,8.44,0,0,1-7.88,5.16c-5.22,0-8.8-4.33-8.8-9.29v-.1c0-5,3.49-9.2,8.7-9.2a8.64,8.64,0,0,1,8.18,5.71h10C260.79,65.09,253.6,59,244.27,59c-10.62,0-18.58,8-18.58,17.9V77c0,9.88,7.86,17.8,18.48,17.8,9.08,0,16.18-5.88,18.05-13.76Z"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 651.29 94.76"><path d="m143.05 93.42 1.07-3.71c1.27-4.41.8-8.48-1.34-11.48-2-2.76-5.26-4.38-9.25-4.57L58 72.7a1.47 1.47 0 0 1-1.35-2 2 2 0 0 1 1.75-1.34l76.26-1c9-.41 18.84-7.75 22.27-16.71l4.34-11.36a2.68 2.68 0 0 0 .18-1 3.31 3.31 0 0 0-.06-.54 49.67 49.67 0 0 0-95.49-5.14 22.35 22.35 0 0 0-35 23.42A31.73 31.73 0 0 0 .34 93.45a1.47 1.47 0 0 0 1.45 1.27h139.49a1.83 1.83 0 0 0 1.77-1.3Z" style="fill:#f78100"/><path d="M168.22 41.15q-1 0-2.1.06a.88.88 0 0 0-.32.07 1.17 1.17 0 0 0-.76.8l-3 10.26c-1.28 4.41-.81 8.48 1.34 11.48a11.65 11.65 0 0 0 9.24 4.57l16.11 1a1.44 1.44 0 0 1 1.14.62 1.5 1.5 0 0 1 .17 1.37 2 2 0 0 1-1.75 1.34l-16.73 1c-9.09.42-18.88 7.75-22.31 16.7l-1.21 3.16a.9.9 0 0 0 .79 1.22h57.63a1.55 1.55 0 0 0 1.54-1.17 41.34 41.34 0 0 0-39.76-52.48Z" style="fill:#fcad32"/><path d="M273.03 59.66h9.53v26.06h16.67v8.35h-26.2V59.66zM309.11 77v-.09c0-9.88 8-17.9 18.58-17.9s18.48 7.92 18.48 17.8v.1c0 9.88-8 17.89-18.58 17.89s-18.48-7.95-18.48-17.8m27.33 0v-.09c0-5-3.59-9.29-8.85-9.29s-8.7 4.22-8.7 9.19v.1c0 5 3.59 9.29 8.8 9.29s8.75-4.23 8.75-9.2m21.4 2V59.66h9.69v19.12c0 5 2.5 7.33 6.34 7.33s6.34-2.26 6.34-7.08V59.66h9.68v19.07c0 11.11-6.34 16-16.12 16s-15.93-5-15.93-15.73m46.65-19.34h13.27c12.29 0 19.42 7.08 19.42 17v.1c0 9.93-7.23 17.3-19.61 17.3h-13.08Zm13.42 26c5.7 0 9.49-3.15 9.49-8.71v-.09c0-5.51-3.79-8.71-9.49-8.71H414v17.47Zm33.13-26h27.52v8.36h-17.98v5.85h16.27v7.91h-16.27v12.29h-9.54V59.66zm40.8 0h9.53v26.06h16.67v8.35h-26.2V59.66zm51.16-.24h9.19l14.61 34.65h-10.22l-2.51-6.14h-13.28l-2.45 6.14h-10Zm8.35 21.08-3.83-9.78-3.92 9.78Zm27.73-20.84h16.27c5.27 0 8.9 1.38 11.21 3.74a10.64 10.64 0 0 1 3.05 8v.1a10.88 10.88 0 0 1-7.08 10.57l8.21 12h-11l-6.94-10.42h-4.18v10.42h-9.54Zm15.83 16.52c3.25 0 5.12-1.58 5.12-4.08V72c0-2.71-2-4.08-5.17-4.08h-6.24v8.26Zm28.46-16.52h27.68v8.11h-18.24v5.21h16.52v7.52h-16.52v5.46h18.48v8.11h-27.92V59.66zM252.15 81a8.44 8.44 0 0 1-7.88 5.16c-5.22 0-8.8-4.33-8.8-9.29v-.1c0-5 3.49-9.2 8.7-9.2a8.64 8.64 0 0 1 8.18 5.71h10C260.79 65.09 253.6 59 244.27 59c-10.62 0-18.58 8-18.58 17.9v.1c0 9.88 7.86 17.8 18.48 17.8 9.08 0 16.18-5.88 18.05-13.76Z"/></svg>
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 11 KiB |
|
@ -1,23 +1 @@
|
||||||
<svg width="292" height="80" viewBox="0 0 292 80" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg xmlns="http://www.w3.org/2000/svg" width="292" height="80" fill="none" viewBox="0 0 292 80"><g clip-path="url(#a)"><g fill="#5865F2" clip-path="url(#b)"><path d="M61.796 16.494a59.415 59.415 0 0 0-15.05-4.73 44.128 44.128 0 0 0-1.928 4.003c-5.612-.844-11.172-.844-16.68 0a42.783 42.783 0 0 0-1.95-4.002 59.218 59.218 0 0 0-15.062 4.74C1.6 30.9-.981 44.936.31 58.772c6.317 4.717 12.44 7.583 18.458 9.458a45.906 45.906 0 0 0 3.953-6.51 38.872 38.872 0 0 1-6.225-3.03 30.957 30.957 0 0 0 1.526-1.208c12.004 5.615 25.046 5.615 36.906 0 .499.416 1.01.82 1.526 1.208a38.775 38.775 0 0 1-6.237 3.035 45.704 45.704 0 0 0 3.953 6.511c6.025-1.875 12.153-4.74 18.47-9.464 1.515-16.04-2.588-29.947-10.844-42.277Zm-37.44 33.767c-3.603 0-6.558-3.363-6.558-7.46 0-4.096 2.892-7.466 6.559-7.466 3.666 0 6.621 3.364 6.558 7.466.006 4.097-2.892 7.46-6.558 7.46Zm24.237 0c-3.603 0-6.558-3.363-6.558-7.46 0-4.096 2.892-7.466 6.558-7.466 3.667 0 6.622 3.364 6.558 7.466 0 4.097-2.891 7.46-6.558 7.46ZM98.03 26.17h15.663c3.776 0 6.966.604 9.583 1.806 2.61 1.201 4.567 2.877 5.864 5.022 1.296 2.145 1.95 4.6 1.95 7.367 0 2.707-.677 5.163-2.031 7.36-1.354 2.204-3.414 3.944-6.185 5.228-2.771 1.283-6.203 1.928-10.305 1.928h-14.54V26.17Zm14.378 21.414c2.542 0 4.499-.65 5.864-1.945 1.366-1.301 2.049-3.071 2.049-5.316 0-2.08-.609-3.739-1.825-4.98-1.216-1.243-3.058-1.87-5.52-1.87h-4.9v14.111h4.332Zm42.133 7.262c-2.169-.575-4.126-1.407-5.864-2.503v-6.81c1.314 1.038 3.075 1.893 5.284 2.567 2.209.668 4.344 1.002 6.409 1.002.964 0 1.693-.128 2.186-.386.494-.258.741-.569.741-.926 0-.41-.132-.75-.402-1.026-.27-.275-.792-.504-1.566-.697l-4.82-1.108c-2.76-.656-4.717-1.565-5.881-2.73-1.165-1.161-1.745-2.685-1.745-4.572 0-1.588.505-2.965 1.527-4.143 1.015-1.178 2.461-2.087 4.337-2.725 1.877-.645 4.068-.967 6.587-.967 2.249 0 4.309.246 6.186.738 1.876.492 3.425 1.12 4.659 1.887v6.44c-1.263-.767-2.709-1.37-4.361-1.828a19.138 19.138 0 0 0-5.084-.674c-2.519 0-3.775.44-3.775 1.313 0 .41.195.715.585.92.39.205 1.107.416 2.146.639l4.016.738c2.623.463 4.579 1.278 5.864 2.438 1.286 1.16 1.928 2.878 1.928 5.152 0 2.49-1.061 4.465-3.19 5.93-2.129 1.465-5.147 2.198-9.06 2.198a26.36 26.36 0 0 1-6.707-.867Zm28.437-.862c-2.3-1.149-4.039-2.708-5.198-4.677-1.159-1.969-1.744-4.184-1.744-6.645 0-2.462.602-4.665 1.807-6.605 1.205-1.94 2.972-3.464 5.302-4.571 2.329-1.108 5.112-1.659 8.354-1.659 4.016 0 7.35.862 10.001 2.585v7.507c-.935-.656-2.026-1.19-3.271-1.6-1.245-.41-2.576-.615-3.999-.615-2.49 0-4.435.463-5.841 1.395-1.406.931-2.111 2.144-2.111 3.65 0 1.477.682 2.685 2.048 3.634 1.366.944 3.345 1.418 5.944 1.418 1.337 0 2.657-.2 3.959-.592 1.297-.398 2.416-.885 3.351-1.459v7.261c-2.943 1.805-6.357 2.707-10.242 2.707-3.27-.011-6.059-.586-8.36-1.734Zm28.54 0c-2.318-1.148-4.085-2.72-5.302-4.718-1.216-1.998-1.83-4.225-1.83-6.686 0-2.462.608-4.66 1.83-6.587 1.222-1.928 2.978-3.44 5.285-4.536 2.3-1.096 5.049-1.641 8.233-1.641 3.185 0 5.933.545 8.234 1.64 2.301 1.097 4.057 2.597 5.262 4.513 1.205 1.917 1.807 4.114 1.807 6.605 0 2.461-.602 4.688-1.807 6.687-1.205 1.998-2.967 3.569-5.285 4.717-2.318 1.149-5.055 1.723-8.216 1.723-3.162 0-5.899-.568-8.211-1.717Zm12.204-7.279c.976-.996 1.469-2.314 1.469-3.955s-.488-2.948-1.469-3.915c-.975-.973-2.307-1.46-3.993-1.46-1.716 0-3.059.487-4.04 1.46-.975.973-1.463 2.274-1.463 3.915 0 1.64.488 2.96 1.463 3.956.976.996 2.324 1.5 4.04 1.5 1.686-.006 3.018-.504 3.993-1.5ZM259.17 31.34v8.86c-1.021-.685-2.341-1.025-3.976-1.025-2.141 0-3.793.662-4.941 1.986-1.153 1.325-1.727 3.388-1.727 6.177v7.548h-9.84V30.888h9.64v7.63c.533-2.79 1.4-4.846 2.593-6.176 1.188-1.325 2.725-1.987 4.596-1.987 1.417 0 2.634.328 3.655.985Zm32.694-5.99v29.537h-9.841v-5.374c-.832 2.022-2.094 3.563-3.792 4.618-1.699 1.049-3.799 1.576-6.289 1.576-2.226 0-4.165-.55-5.824-1.658-1.658-1.108-2.937-2.626-3.838-4.554-.895-1.928-1.349-4.108-1.349-6.546-.028-2.514.448-4.77 1.429-6.769.976-1.998 2.358-3.557 4.137-4.676 1.779-1.12 3.81-1.682 6.088-1.682 4.688 0 7.832 2.08 9.438 6.235V25.35h9.841Zm-11.309 21.191c1.004-.996 1.503-2.29 1.503-3.873 0-1.53-.488-2.778-1.463-3.733-.976-.956-2.313-1.436-3.994-1.436-1.658 0-2.983.486-3.976 1.46-.993.972-1.486 2.232-1.486 3.79 0 1.56.493 2.831 1.486 3.816.993.984 2.301 1.477 3.936 1.477 1.658-.006 2.989-.504 3.994-1.5ZM139.382 33.443c2.709 0 4.906-2.015 4.906-4.5 0-2.486-2.197-4.501-4.906-4.501-2.71 0-4.906 2.015-4.906 4.5 0 2.486 2.196 4.501 4.906 4.501Zm-4.91 3.101c3.006 1.324 6.736 1.383 9.811 0v18.471h-9.811V36.544Z"/></g></g><defs><clipPath id="a"><path fill="#fff" d="M0 11.765h292v56.47H0z"/></clipPath><clipPath id="b"><path fill="#fff" d="M0 11.765h292v56.47H0z"/></clipPath></defs></svg>
|
||||||
<g clip-path="url(#clip0)">
|
|
||||||
<g clip-path="url(#clip1)">
|
|
||||||
<path d="M61.7958 16.494C57.0736 14.2846 52.0244 12.6789 46.7456 11.7646C46.0973 12.9367 45.3399 14.5132 44.8177 15.7673C39.2062 14.9234 33.6463 14.9234 28.138 15.7673C27.6159 14.5132 26.8413 12.9367 26.1872 11.7646C20.9027 12.6789 15.8477 14.2905 11.1255 16.5057C1.60078 30.8988 -0.981215 44.9344 0.309785 58.7707C6.62708 63.4883 12.7493 66.3541 18.7682 68.2294C20.2543 66.1841 21.5797 64.0099 22.7215 61.7185C20.5469 60.8922 18.4641 59.8725 16.4961 58.6887C17.0182 58.3019 17.5289 57.8975 18.0223 57.4814C30.0257 63.0957 43.0677 63.0957 54.9277 57.4814C55.4269 57.8975 55.9375 58.3019 56.4539 58.6887C54.4801 59.8783 52.3916 60.898 50.217 61.7244C51.3588 64.0099 52.6785 66.19 54.1703 68.2352C60.195 66.3599 66.3229 63.4942 72.6402 58.7707C74.155 42.7309 70.0525 28.8242 61.7958 16.494ZM24.3568 50.2615C20.7535 50.2615 17.7985 46.8976 17.7985 42.8012C17.7985 38.7048 20.6904 35.3351 24.3568 35.3351C28.0233 35.3351 30.9782 38.6989 30.9151 42.8012C30.9208 46.8976 28.0233 50.2615 24.3568 50.2615ZM48.5932 50.2615C44.9899 50.2615 42.0349 46.8976 42.0349 42.8012C42.0349 38.7048 44.9267 35.3351 48.5932 35.3351C52.2596 35.3351 55.2146 38.6989 55.1515 42.8012C55.1515 46.8976 52.2596 50.2615 48.5932 50.2615Z" fill="#5865F2"/>
|
|
||||||
<path d="M98.0293 26.1707H113.693C117.469 26.1707 120.659 26.7743 123.276 27.9757C125.886 29.177 127.843 30.8531 129.14 32.998C130.436 35.1429 131.09 37.5984 131.09 40.3645C131.09 43.072 130.413 45.5275 129.059 47.7251C127.705 49.9286 125.645 51.6692 122.874 52.9526C120.103 54.236 116.671 54.8806 112.569 54.8806H98.0293V26.1707ZM112.408 47.5845C114.95 47.5845 116.907 46.934 118.272 45.6388C119.638 44.3378 120.321 42.568 120.321 40.3235C120.321 38.243 119.712 36.5845 118.496 35.3421C117.28 34.0997 115.438 33.4727 112.976 33.4727H108.076V47.5845H112.408Z" fill="#5865F2"/>
|
|
||||||
<path d="M154.541 54.8456C152.372 54.2713 150.415 53.4391 148.677 52.3432V45.5335C149.991 46.5707 151.752 47.4264 153.961 48.1003C156.17 48.7684 158.305 49.1024 160.37 49.1024C161.334 49.1024 162.063 48.9735 162.556 48.7156C163.05 48.4578 163.297 48.1472 163.297 47.7897C163.297 47.3795 163.165 47.0396 162.895 46.7641C162.625 46.4887 162.103 46.2601 161.329 46.0667L156.509 44.9591C153.749 44.3028 151.792 43.3944 150.628 42.2282C149.463 41.0678 148.883 39.5441 148.883 37.6571C148.883 36.0689 149.388 34.6918 150.41 33.5138C151.425 32.3359 152.871 31.4275 154.747 30.7887C156.624 30.1441 158.815 29.8218 161.334 29.8218C163.583 29.8218 165.643 30.0679 167.52 30.5602C169.396 31.0525 170.945 31.6795 172.179 32.4472V38.8878C170.916 38.1201 169.47 37.5165 167.818 37.0593C166.171 36.6081 164.479 36.3854 162.734 36.3854C160.215 36.3854 158.959 36.8249 158.959 37.6981C158.959 38.1084 159.154 38.4131 159.544 38.6182C159.934 38.8233 160.651 39.0343 161.69 39.257L165.706 39.9954C168.329 40.4584 170.285 41.273 171.57 42.4333C172.856 43.5937 173.498 45.3108 173.498 47.5846C173.498 50.0752 172.437 52.0502 170.308 53.5153C168.179 54.9804 165.161 55.7129 161.248 55.7129C158.947 55.7071 156.71 55.4199 154.541 54.8456Z" fill="#5865F2"/>
|
|
||||||
<path d="M182.978 53.9839C180.678 52.8352 178.939 51.2764 177.78 49.3073C176.621 47.3382 176.036 45.123 176.036 42.6616C176.036 40.2003 176.638 37.9968 177.843 36.057C179.048 34.1172 180.815 32.5935 183.145 31.4859C185.474 30.3783 188.257 29.8274 191.499 29.8274C195.515 29.8274 198.849 30.6889 201.5 32.4118V39.919C200.565 39.2626 199.474 38.7293 198.229 38.3191C196.984 37.9089 195.653 37.7037 194.23 37.7037C191.74 37.7037 189.795 38.1667 188.389 39.0985C186.983 40.0303 186.278 41.2434 186.278 42.7495C186.278 44.2263 186.96 45.4336 188.326 46.383C189.692 47.3265 191.671 47.8012 194.27 47.8012C195.607 47.8012 196.927 47.6019 198.229 47.2093C199.526 46.8108 200.645 46.3244 201.58 45.75V53.011C198.637 54.816 195.223 55.7185 191.338 55.7185C188.068 55.7068 185.279 55.1325 182.978 53.9839Z" fill="#5865F2"/>
|
|
||||||
<path d="M211.518 53.9841C209.2 52.8355 207.433 51.2649 206.216 49.2665C205 47.2681 204.386 45.0412 204.386 42.5798C204.386 40.1185 204.994 37.9208 206.216 35.9928C207.438 34.0647 209.194 32.5527 211.501 31.4568C213.801 30.3609 216.55 29.8159 219.734 29.8159C222.919 29.8159 225.667 30.3609 227.968 31.4568C230.269 32.5527 232.025 34.053 233.23 35.9693C234.435 37.8857 235.037 40.0833 235.037 42.574C235.037 45.0353 234.435 47.2623 233.23 49.2606C232.025 51.259 230.263 52.8296 227.945 53.9782C225.627 55.1269 222.89 55.7012 219.729 55.7012C216.567 55.7012 213.83 55.1327 211.518 53.9841ZM223.722 46.7055C224.698 45.7093 225.191 44.3907 225.191 42.7498C225.191 41.1089 224.703 39.802 223.722 38.835C222.747 37.8622 221.415 37.3758 219.729 37.3758C218.013 37.3758 216.67 37.8622 215.689 38.835C214.714 39.8079 214.226 41.1089 214.226 42.7498C214.226 44.3907 214.714 45.7093 215.689 46.7055C216.665 47.7018 218.013 48.2058 219.729 48.2058C221.415 48.1999 222.747 47.7018 223.722 46.7055Z" fill="#5865F2"/>
|
|
||||||
<path d="M259.17 31.3395V40.2004C258.149 39.5147 256.829 39.1748 255.194 39.1748C253.053 39.1748 251.401 39.8371 250.253 41.1615C249.1 42.486 248.526 44.5488 248.526 47.3383V54.8865H238.686V30.8883H248.326V38.5185C248.859 35.7289 249.726 33.672 250.919 32.3416C252.107 31.0172 253.644 30.355 255.515 30.355C256.932 30.355 258.149 30.6832 259.17 31.3395Z" fill="#5865F2"/>
|
|
||||||
<path d="M291.864 25.3503V54.8866H282.023V49.5127C281.191 51.5345 279.929 53.0758 278.231 54.1306C276.532 55.1797 274.432 55.7071 271.942 55.7071C269.716 55.7071 267.777 55.1562 266.118 54.0486C264.46 52.941 263.181 51.4232 262.28 49.4951C261.385 47.567 260.931 45.387 260.931 42.9491C260.903 40.435 261.379 38.1787 262.36 36.1803C263.336 34.1819 264.718 32.6231 266.497 31.5037C268.276 30.3844 270.307 29.8218 272.585 29.8218C277.273 29.8218 280.417 31.9022 282.023 36.0572V25.3503H291.864ZM280.555 46.5415C281.559 45.5452 282.058 44.2501 282.058 42.6678C282.058 41.1382 281.57 39.8899 280.595 38.9347C279.619 37.9795 278.282 37.4989 276.601 37.4989C274.943 37.4989 273.618 37.9853 272.625 38.9581C271.632 39.931 271.139 41.1909 271.139 42.7498C271.139 44.3087 271.632 45.5804 272.625 46.5649C273.618 47.5494 274.926 48.0417 276.561 48.0417C278.219 48.0359 279.55 47.5377 280.555 46.5415Z" fill="#5865F2"/>
|
|
||||||
<path d="M139.382 33.4432C142.091 33.4432 144.288 31.4281 144.288 28.9424C144.288 26.4567 142.091 24.4417 139.382 24.4417C136.672 24.4417 134.476 26.4567 134.476 28.9424C134.476 31.4281 136.672 33.4432 139.382 33.4432Z" fill="#5865F2"/>
|
|
||||||
<path d="M134.472 36.5435C137.478 37.8679 141.208 37.9265 144.283 36.5435V55.0154H134.472V36.5435Z" fill="#5865F2"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0">
|
|
||||||
<rect width="292" height="56.4706" fill="white" transform="translate(0 11.7646)"/>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath id="clip1">
|
|
||||||
<rect width="292" height="56.4706" fill="white" transform="translate(0 11.7646)"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 4.5 KiB |
|
@ -1,32 +1 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<svg xmlns="http://www.w3.org/2000/svg" width="457" height="60" viewBox="0 0 457 60"><g fill="none" fill-rule="evenodd"><path fill="#7FADF2" d="M34.62 18.179C36.75 21.249 38 24.979 38 29s-1.25 7.75-3.38 10.821L29.697 34.9a12.16 12.16 0 0 0 1.517-5.9c0-2.14-.55-4.15-1.516-5.9l4.921-4.921Zm-4.8-4.799-4.92 4.922a12.16 12.16 0 0 0-5.9-1.516c-6.746 0-12.214 5.468-12.214 12.214S12.254 41.214 19 41.214c2.14 0 4.15-.55 5.9-1.516l4.921 4.921A18.912 18.912 0 0 1 19 48C8.507 48 0 39.493 0 29s8.507-19 19-19c4.021 0 7.75 1.25 10.821 3.38Z"/><path fill="#B8D3F4" d="M34.62 18.179C36.75 21.249 38 24.979 38 29s-1.25 7.75-3.38 10.821L29.697 34.9a12.16 12.16 0 0 0 1.517-5.9c0-2.14-.55-4.15-1.516-5.9l4.921-4.921Z"/><path fill="#515F71" d="M110.7 13.6c-3.7 0-7.2 1.4-9.8 3.6v-2.3c0-.6-.5-1-1-1h-3.4c-.6 0-1 .5-1 1v43.7c0 .5.4 1 1 1h3.5c.5 0 1-.4 1-1V40.3c2.6 2.2 6.1 3.6 9.8 3.6 8.4 0 15.2-6.8 15.2-15.2-.2-8.4-7-15.1-15.3-15.1Zm0 24.8c-5.4 0-9.7-4.4-9.7-9.7 0-5.4 4.4-9.7 9.7-9.7 5.4 0 9.7 4.4 9.7 9.7 0 5.4-4.4 9.7-9.7 9.7Zm65.9-24.8c-3.7 0-7.1 1.3-9.7 3.5v-1.3c0-1.1-.9-2-2-2h-1.5c-1.1 0-2 .9-2 2v26.3c0 .8.7 1.5 1.5 1.5h2.5c.8 0 1.5-.7 1.5-1.5V29.6c0-5.4 4.4-10.6 9.7-10.6 3.5 0 9.7 1.9 9.7 10.6v12.5c0 .8.7 1.5 1.5 1.5h2.5c.8 0 1.5-.7 1.5-1.5V29.5c0-13.2-10.4-15.9-15.2-15.9Zm-18.4 11.9c-1.5-7.1-8-12.3-15.6-11.9-7.6.4-13.8 6.4-14.3 14-.6 8.9 6.4 16.3 15.1 16.3 5.9 0 11-3.3 13.5-8.2.4-.7-.1-1.6-.9-1.8l-3-.6c-.5-.1-1 .1-1.3.6-1.7 2.7-4.8 4.6-8.2 4.6-3 0-5.7-1.4-7.5-3.5l17.2-7.2 5-2.3Zm-24.4 4.4c0-.4-.1-.8-.1-1.2 0-5.4 4.4-9.7 9.7-9.7 3 0 5.8 1.4 7.5 3.6l-17.1 7.3ZM77.3 13.4c-8.4 0-15.2 6.8-15.2 15.2 0 8.4 6.8 15.2 15.2 15.2 8.4 0 15.2-6.8 15.2-15.2 0-8.4-6.8-15.2-15.2-15.2Zm0 24.9c-5.4 0-9.7-4.4-9.7-9.7 0-5.4 4.4-9.7 9.7-9.7 5.4 0 9.7 4.4 9.7 9.7.1 5.3-4.3 9.7-9.7 9.7Zm181.4-25c-8.4 0-15.2 6.8-15.2 15.2 0 8.4 6.8 15.2 15.2 15.2 8.4 0 15.2-6.8 15.2-15.2 0-8.4-6.8-15.2-15.2-15.2Zm0 24.9c-5.4 0-9.7-4.4-9.7-9.7 0-5.4 4.4-9.7 9.7-9.7 5.4 0 9.7 4.4 9.7 9.7 0 5.3-4.3 9.7-9.7 9.7ZM390.6 4.3h-3.1c-.7 0-1.2.5-1.2 1.2v3.1c0 .7.5 1.2 1.2 1.2h3.1c.7 0 1.2-.5 1.2-1.2V5.5c0-.7-.6-1.2-1.2-1.2Zm63.9 29.4-3.6-.7c-.4-.1-.8.1-1 .5-1.7 2.8-4.8 4.7-8.3 4.7-3 0-5.7-1.4-7.5-3.5l17.2-7.2 5.2-2.2c-1.5-7.1-8-12.3-15.6-11.9-7.6.4-13.8 6.5-14.3 14.1-.6 8.9 6.4 16.3 15.1 16.3 6 0 11.2-3.5 13.6-8.5.2-.8-.2-1.5-.8-1.6Zm-22.7-5.3c0-5.4 4.4-9.7 9.7-9.7 3 0 5.8 1.4 7.5 3.6l-17.2 7.3v-1.2ZM332 25.2c-1.5-7.1-8-12.3-15.6-11.9-7.6.4-13.8 6.5-14.3 14.1-.6 8.9 6.4 16.3 15.1 16.3 6 0 11.2-3.5 13.7-8.6.3-.6-.1-1.3-.7-1.4l-3.6-.7c-.4-.1-.8.1-1 .5-1.7 2.8-4.8 4.7-8.3 4.7-3 0-5.7-1.4-7.5-3.5l17.2-7.2 5-2.3Zm-24.5 4.4c0-.4-.1-.8-.1-1.2 0-5.4 4.4-9.7 9.7-9.7 3 0 5.8 1.4 7.5 3.6l-17.1 7.3ZM283.2.7h-3.6c-.5 0-.9.4-.9.9v40.7c0 .5.4 1 1 1h3.5c.5 0 1-.4 1-1V1.6c0-.5-.5-.9-1-.9Zm12.3 0h-3.6c-.5 0-.9.4-.9.9v40.7c0 .5.4 1 1 1h3.5c.5 0 1-.4 1-1V1.6c-.1-.5-.5-.9-1-.9Zm95.1 12.7h-3.1c-.7 0-1.2.5-1.2 1.2v27.6c0 .7.5 1.2 1.2 1.2h3.1c.7 0 1.2-.5 1.2-1.2V14.5c0-.6-.6-1.1-1.2-1.1Zm-10.2 0h-3.9c-.4 0-.8-.4-.8-.8V1.5c0-.4-.4-.8-.8-.8H371c-.4 0-.8.4-.8.8v11.1c0 .4-.4.8-.8.8h-3.9c-.4 0-.8.4-.8.8V18c0 .4.4.8.8.8h3.9c.4 0 .8.4.8.8v22.7c0 .6.5 1 1 1h3.4c.6 0 1-.5 1-1V19.6c0-.4.4-.8.8-.8h3.9c.4 0 .8-.4.8-.8v-3.9c.1-.4-.2-.7-.7-.7Zm-21.6 22.1c-.4-.4-1.1-.4-1.5 0-1.8 1.7-4.1 2.7-6.8 2.7-5.7 0-10.3-5-9.7-10.8.5-4.5 4.2-8.1 8.7-8.6 2.8-.3 5.5.7 7.4 2.4.6.5 1.5.5 2.1-.1l1.7-1.7c.6-.6.6-1.6 0-2.2-2.9-2.7-6.9-4.2-11.2-3.9-7.7.5-13.9 6.9-14.2 14.7-.3 8.6 6.6 15.6 15.2 15.6 4.1 0 7.9-1.6 10.6-4.3.4-.4.4-1.1 0-1.5l-2.3-2.3Zm-119.7 0c-.4-.4-1.1-.4-1.5 0-1.8 1.7-4.1 2.7-6.8 2.7-5.7 0-10.3-5-9.7-10.8.5-4.5 4.2-8.1 8.7-8.6 2.8-.3 5.5.7 7.4 2.4.6.5 1.5.5 2.1-.1l1.7-1.7c.6-.6.6-1.6 0-2.2-2.9-2.7-6.9-4.2-11.2-3.9-7.7.5-13.9 6.9-14.2 14.7-.3 8.6 6.6 15.6 15.2 15.6 4.1 0 7.9-1.6 10.6-4.3.4-.4.4-1.1 0-1.5l-2.3-2.3ZM424 13.7h-4.9c-.1 0-.2.1-.2.2l-8 23.5c-.1.2-.4.2-.4 0l-8-23.5c0-.1-.1-.2-.2-.2h-4.9c-.2 0-.3.2-.2.3l9.9 29.1c0 .1.1.2.2.2h6.8c.1 0 .2-.1.2-.2l9.9-29.1c.1-.1 0-.3-.2-.3Z"/></g></svg>
|
||||||
<svg width="457px" height="60px" viewBox="0 0 457 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
||||||
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
|
||||||
<title>Rectangle</title>
|
|
||||||
<desc>Created with Sketch.</desc>
|
|
||||||
<defs></defs>
|
|
||||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
||||||
<g id="opencollective-logo">
|
|
||||||
<g id="icon" transform="translate(0.000000, 10.000000)">
|
|
||||||
<path d="M34.6194245,8.17880011 C36.7508489,11.2495266 38,14.9788859 38,19 C38,23.0211141 36.7508489,26.7504734 34.6194245,29.8211999 L29.6976779,24.8994533 C30.6641742,23.1506053 31.2142857,21.1395454 31.2142857,19 C31.2142857,16.8604546 30.6641742,14.8493947 29.6976779,13.1005467 L34.6194245,8.17880011 Z M29.8211999,3.38057552 L24.8994533,8.30232215 C23.1506053,7.33582578 21.1395454,6.78571429 19,6.78571429 C12.2542363,6.78571429 6.78571429,12.2542363 6.78571429,19 C6.78571429,25.7457637 12.2542363,31.2142857 19,31.2142857 C21.1395454,31.2142857 23.1506053,30.6641742 24.8994533,29.6976779 L29.8211999,34.6194245 C26.7504734,36.7508489 23.0211141,38 19,38 C8.50658975,38 0,29.4934102 0,19 C0,8.50658975 8.50658975,0 19,0 C23.0211141,0 26.7504734,1.24915112 29.8211999,3.38057552 Z" id="Combined-Shape-Copy-2" fill="#7FADF2"></path>
|
|
||||||
<path d="M34.6194245,8.17880011 C36.7508489,11.2495266 38,14.9788859 38,19 C38,23.0211141 36.7508489,26.7504734 34.6194245,29.8211999 L29.6976779,24.8994533 C30.6641742,23.1506053 31.2142857,21.1395454 31.2142857,19 C31.2142857,16.8604546 30.6641742,14.8493947 29.6976779,13.1005467 L34.6194245,8.17880011 Z" id="closing-o" fill="#B8D3F4"></path>
|
|
||||||
</g>
|
|
||||||
<g id="logotype" transform="translate(62.000000, 0.000000)" fill="#515F71">
|
|
||||||
<path d="M48.7,13.6 C45,13.6 41.5,15 38.9,17.2 L38.9,14.9 C38.9,14.3 38.4,13.9 37.9,13.9 L34.5,13.9 C33.9,13.9 33.5,14.4 33.5,14.9 L33.5,58.6 C33.5,59.1 33.9,59.6 34.5,59.6 L38,59.6 C38.5,59.6 39,59.2 39,58.6 L39,40.3 C41.6,42.5 45.1,43.9 48.8,43.9 C57.2,43.9 64,37.1 64,28.7 C63.8,20.3 57,13.6 48.7,13.6 L48.7,13.6 Z M48.7,38.4 C43.3,38.4 39,34 39,28.7 C39,23.3 43.4,19 48.7,19 C54.1,19 58.4,23.4 58.4,28.7 C58.4,34.1 54,38.4 48.7,38.4 L48.7,38.4 Z" id="Shape"></path>
|
|
||||||
<path d="M114.6,13.6 C110.9,13.6 107.5,14.9 104.9,17.1 L104.9,15.8 C104.9,14.7 104,13.8 102.9,13.8 L101.4,13.8 C100.3,13.8 99.4,14.7 99.4,15.8 L99.4,42.1 C99.4,42.9 100.1,43.6 100.9,43.6 L103.4,43.6 C104.2,43.6 104.9,42.9 104.9,42.1 L104.9,29.6 C104.9,24.2 109.3,19 114.6,19 C118.1,19 124.3,20.9 124.3,29.6 L124.3,42.1 C124.3,42.9 125,43.6 125.8,43.6 L128.3,43.6 C129.1,43.6 129.8,42.9 129.8,42.1 L129.8,29.5 C129.8,16.3 119.4,13.6 114.6,13.6 L114.6,13.6 Z" id="Shape"></path>
|
|
||||||
<path d="M96.2,25.5 L96.2,25.5 C94.7,18.4 88.2,13.2 80.6,13.6 C73,14 66.8,20 66.3,27.6 C65.7,36.5 72.7,43.9 81.4,43.9 C87.3,43.9 92.4,40.6 94.9,35.7 C95.3,35 94.8,34.1 94,33.9 L91,33.3 C90.5,33.2 90,33.4 89.7,33.9 C88,36.6 84.9,38.5 81.5,38.5 C78.5,38.5 75.8,37.1 74,35 L91.2,27.8 L96.2,25.5 L96.2,25.5 Z M71.8,29.9 C71.8,29.5 71.7,29.1 71.7,28.7 C71.7,23.3 76.1,19 81.4,19 C84.4,19 87.2,20.4 88.9,22.6 L71.8,29.9 L71.8,29.9 Z" id="Shape"></path>
|
|
||||||
<path d="M15.3,13.4 C6.9,13.4 0.1,20.2 0.1,28.6 C0.1,37 6.9,43.8 15.3,43.8 C23.7,43.8 30.5,37 30.5,28.6 C30.5,20.2 23.7,13.4 15.3,13.4 L15.3,13.4 Z M15.3,38.3 C9.9,38.3 5.6,33.9 5.6,28.6 C5.6,23.2 10,18.9 15.3,18.9 C20.7,18.9 25,23.3 25,28.6 C25.1,33.9 20.7,38.3 15.3,38.3 L15.3,38.3 Z" id="Shape"></path>
|
|
||||||
<path d="M196.7,13.3 C188.3,13.3 181.5,20.1 181.5,28.5 C181.5,36.9 188.3,43.7 196.7,43.7 C205.1,43.7 211.9,36.9 211.9,28.5 C211.9,20.1 205.1,13.3 196.7,13.3 L196.7,13.3 Z M196.7,38.2 C191.3,38.2 187,33.8 187,28.5 C187,23.1 191.4,18.8 196.7,18.8 C202.1,18.8 206.4,23.2 206.4,28.5 C206.4,33.8 202.1,38.2 196.7,38.2 L196.7,38.2 Z" id="Shape"></path>
|
|
||||||
<path d="M328.6,4.3 L325.5,4.3 C324.8,4.3 324.3,4.8 324.3,5.5 L324.3,8.6 C324.3,9.3 324.8,9.8 325.5,9.8 L328.6,9.8 C329.3,9.8 329.8,9.3 329.8,8.6 L329.8,5.5 C329.8,4.8 329.2,4.3 328.6,4.3 L328.6,4.3 Z" id="Shape"></path>
|
|
||||||
<path d="M392.5,33.7 L388.9,33 C388.5,32.9 388.1,33.1 387.9,33.5 C386.2,36.3 383.1,38.2 379.6,38.2 C376.6,38.2 373.9,36.8 372.1,34.7 L389.3,27.5 L394.5,25.3 L394.5,25.3 C393,18.2 386.5,13 378.9,13.4 C371.3,13.8 365.1,19.9 364.6,27.5 C364,36.4 371,43.8 379.7,43.8 C385.7,43.8 390.9,40.3 393.3,35.3 C393.5,34.5 393.1,33.8 392.5,33.7 L392.5,33.7 Z M369.8,28.4 C369.8,23 374.2,18.7 379.5,18.7 C382.5,18.7 385.3,20.1 387,22.3 L369.8,29.6 L369.8,28.4 L369.8,28.4 Z" id="Shape"></path>
|
|
||||||
<path d="M270,25.2 L270,25.2 C268.5,18.1 262,12.9 254.4,13.3 C246.8,13.7 240.6,19.8 240.1,27.4 C239.5,36.3 246.5,43.7 255.2,43.7 C261.2,43.7 266.4,40.2 268.9,35.1 C269.2,34.5 268.8,33.8 268.2,33.7 L264.6,33 C264.2,32.9 263.8,33.1 263.6,33.5 C261.9,36.3 258.8,38.2 255.3,38.2 C252.3,38.2 249.6,36.8 247.8,34.7 L265,27.5 L270,25.2 L270,25.2 Z M245.5,29.6 C245.5,29.2 245.4,28.8 245.4,28.4 C245.4,23 249.8,18.7 255.1,18.7 C258.1,18.7 260.9,20.1 262.6,22.3 L245.5,29.6 L245.5,29.6 Z" id="Shape"></path>
|
|
||||||
<path d="M221.2,0.7 L217.6,0.7 C217.1,0.7 216.7,1.1 216.7,1.6 L216.7,42.3 C216.7,42.8 217.1,43.3 217.7,43.3 L221.2,43.3 C221.7,43.3 222.2,42.9 222.2,42.3 L222.2,1.6 C222.2,1.1 221.7,0.7 221.2,0.7 L221.2,0.7 Z" id="Shape"></path>
|
|
||||||
<path d="M233.5,0.7 L229.9,0.7 C229.4,0.7 229,1.1 229,1.6 L229,42.3 C229,42.8 229.4,43.3 230,43.3 L233.5,43.3 C234,43.3 234.5,42.9 234.5,42.3 L234.5,1.6 C234.4,1.1 234,0.7 233.5,0.7 L233.5,0.7 Z" id="Shape"></path>
|
|
||||||
<path d="M328.6,13.4 L325.5,13.4 C324.8,13.4 324.3,13.9 324.3,14.6 L324.3,42.2 C324.3,42.9 324.8,43.4 325.5,43.4 L328.6,43.4 C329.3,43.4 329.8,42.9 329.8,42.2 L329.8,14.5 C329.8,13.9 329.2,13.4 328.6,13.4 L328.6,13.4 Z" id="Shape"></path>
|
|
||||||
<path d="M318.4,13.4 L314.5,13.4 C314.1,13.4 313.7,13 313.7,12.6 L313.7,1.5 C313.7,1.1 313.3,0.7 312.9,0.7 L309,0.7 C308.6,0.7 308.2,1.1 308.2,1.5 L308.2,12.6 C308.2,13 307.8,13.4 307.4,13.4 L303.5,13.4 C303.1,13.4 302.7,13.8 302.7,14.2 L302.7,18 C302.7,18.4 303.1,18.8 303.5,18.8 L307.4,18.8 C307.8,18.8 308.2,19.2 308.2,19.6 L308.2,42.3 C308.2,42.9 308.7,43.3 309.2,43.3 L312.6,43.3 C313.2,43.3 313.6,42.8 313.6,42.3 L313.6,19.6 C313.6,19.2 314,18.8 314.4,18.8 L318.3,18.8 C318.7,18.8 319.1,18.4 319.1,18 L319.1,14.1 C319.2,13.7 318.9,13.4 318.4,13.4 L318.4,13.4 Z" id="Shape"></path>
|
|
||||||
<path d="M296.8,35.5 C296.4,35.1 295.7,35.1 295.3,35.5 C293.5,37.2 291.2,38.2 288.5,38.2 C282.8,38.2 278.2,33.2 278.8,27.4 C279.3,22.9 283,19.3 287.5,18.8 C290.3,18.5 293,19.5 294.9,21.2 C295.5,21.7 296.4,21.7 297,21.1 L298.7,19.4 C299.3,18.8 299.3,17.8 298.7,17.2 C295.8,14.5 291.8,13 287.5,13.3 C279.8,13.8 273.6,20.2 273.3,28 C273,36.6 279.9,43.6 288.5,43.6 C292.6,43.6 296.4,42 299.1,39.3 C299.5,38.9 299.5,38.2 299.1,37.8 L296.8,35.5 L296.8,35.5 Z" id="Shape"></path>
|
|
||||||
<path d="M177.1,35.5 C176.7,35.1 176,35.1 175.6,35.5 C173.8,37.2 171.5,38.2 168.8,38.2 C163.1,38.2 158.5,33.2 159.1,27.4 C159.6,22.9 163.3,19.3 167.8,18.8 C170.6,18.5 173.3,19.5 175.2,21.2 C175.8,21.7 176.7,21.7 177.3,21.1 L179,19.4 C179.6,18.8 179.6,17.8 179,17.2 C176.1,14.5 172.1,13 167.8,13.3 C160.1,13.8 153.9,20.2 153.6,28 C153.3,36.6 160.2,43.6 168.8,43.6 C172.9,43.6 176.7,42 179.4,39.3 C179.8,38.9 179.8,38.2 179.4,37.8 L177.1,35.5 L177.1,35.5 Z" id="Shape"></path>
|
|
||||||
<path d="M362,13.7 L357.1,13.7 C357,13.7 356.9,13.8 356.9,13.9 L348.9,37.4 C348.8,37.6 348.5,37.6 348.5,37.4 L340.5,13.9 C340.5,13.8 340.4,13.7 340.3,13.7 L335.4,13.7 C335.2,13.7 335.1,13.9 335.2,14 L345.1,43.1 C345.1,43.2 345.2,43.3 345.3,43.3 L352.1,43.3 C352.2,43.3 352.3,43.2 352.3,43.1 L362.2,14 C362.3,13.9 362.2,13.7 362,13.7 L362,13.7 Z" id="Shape"></path>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 3.9 KiB |
|
@ -1,29 +1 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.5" viewBox="0 0 1115 116"><path d="m81.582 577.266 66.954-98.462" style="fill:none;stroke:#fff;stroke-width:14.11px" transform="translate(-75.985 -483.202) scale(1.02332)"/><path d="m81.582 577.266 66.954-98.462" style="fill:none;stroke:#fff;stroke-width:14.86px" transform="matrix(1.01019 0 0 1.0102 852.95 -475.627)"/><text x="640.988" y="399.072" style="fill:#fff;font-family:"ArialMT","Arial",sans-serif;font-size:12px" transform="matrix(12.6568 0 0 12.68749 -7898.028 -4950.898)">ESHT</text><path d="m187.032 410.85 63.864-93.658 64.011 93.51" style="fill:none;stroke:#fff;stroke-width:13.85px" transform="translate(-120.199 -314.73) scale(1.02696)"/><path d="m187.032 410.85 63.864-93.658 64.011 93.51" style="fill:none;stroke:#fff;stroke-width:13.85px" transform="translate(417.633 -313.199) scale(1.02696)"/><text style="fill:#fff;font-family:"ArialMT","Arial",sans-serif;font-size:252.715px" transform="matrix(.601 0 0 .60246 750.004 112.652)">ST</text><text style="fill:#fff;font-family:"ArialMT","Arial",sans-serif;font-size:252.715px" transform="matrix(.601 0 0 .60246 1008.532 112.998)">C</text></svg>
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
||||||
<svg width="100%" height="100%" viewBox="0 0 1115 116" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.5;">
|
|
||||||
<g transform="matrix(1.05081,0,0,0.602459,-74.3378,-345.171)">
|
|
||||||
<g>
|
|
||||||
<g transform="matrix(0.973838,0,0,1.69858,-1.56777,-229.112)">
|
|
||||||
<path d="M81.582,577.266L148.536,478.804" style="fill:none;stroke:white;stroke-width:14.11px;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(0.961342,0,0,1.67678,882.45,-216.54)">
|
|
||||||
<path d="M81.582,577.266L148.536,478.804" style="fill:none;stroke:white;stroke-width:14.86px;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(12.0448,0,0,21.0595,-7445.39,-7644.88)">
|
|
||||||
<text x="640.988px" y="399.072px" style="fill: white; font-family:'ArialMT', 'Arial', sans-serif;font-size:12px;">ESHT</text>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(0.977299,0,0,1.70462,-43.6432,50.5292)">
|
|
||||||
<path d="M187.032,410.85L250.896,317.192L314.907,410.702" style="fill:none;stroke:white;stroke-width:13.85px;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(0.977299,0,0,1.70462,468.182,53.0697)">
|
|
||||||
<path d="M187.032,410.85L250.896,317.192L314.907,410.702" style="fill:none;stroke:white;stroke-width:13.85px;"/>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(0.571939,0,0,1,784.482,759.924)">
|
|
||||||
<text x="0px" y="0px" style="fill: white; font-family:'ArialMT', 'Arial', sans-serif;font-size:252.715px;">ST</text>
|
|
||||||
</g>
|
|
||||||
<g transform="matrix(0.571939,0,0,1,1030.51,760.498)">
|
|
||||||
<text x="0px" y="0px" style="fill: white; font-family:'ArialMT', 'Arial', sans-serif;font-size:252.715px;">C</text>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 1.3 KiB |