From 3d9787d04b670f0ea63b629944cb31141b78e76d Mon Sep 17 00:00:00 2001 From: IKB3D <150914724+IKB3D@users.noreply.github.com> Date: Mon, 29 Jan 2024 18:55:21 +0000 Subject: [PATCH 01/46] Update trademark-grants.mdx Added IKB3D Grant --- docs/legal/trademark-grants.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/legal/trademark-grants.mdx b/docs/legal/trademark-grants.mdx index 6ffe8eed..0d736dd9 100644 --- a/docs/legal/trademark-grants.mdx +++ b/docs/legal/trademark-grants.mdx @@ -51,3 +51,5 @@ This process ensures transparency and community involvement in the granting of t - Details: Emmett is producing 'Axanar!,' a non-commercial Star Trek fan puppet show. The Meshtastic logo/trademark will used only in a positive manner, to hint to the audience that Meshtastic is still up and running in the year 2380. The use of the Meshtastic Logo and Trademarks does not imply Emmett Plant or Axanar! is sponsored or endorsed by Meshtastic. Emmett also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revocable at any time for any reason. - Grant: [Simon - muzi.works](https://instagram.com/muzi.works) - Details: Simon is a Meshtastic designer of devices, device enclosures and accessories that carry the "Meshtastic" , Meshtastic.org URL and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Simon is sponsored or endorsed by Meshtastic. Simon also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason. +- Grant: [Chris Ridley - IKB3D](https://ikb3d.co.uk) + - Details: Chris designs devices, device enclosures and accessories which are sold through his online shop and other online marketplaces. Many of these carry the "Meshtastic" , Meshtastic.org URL and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Simon is sponsored or endorsed by Meshtastic. Simon also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason. From 3b70d5301b2612e66c88245b650c90567c2c4a7e Mon Sep 17 00:00:00 2001 From: jopdyke <111011098+jopdyke@users.noreply.github.com> Date: Wed, 7 Feb 2024 15:38:39 -0500 Subject: [PATCH 02/46] Update core-modules.mdx added US distributor for RAK11310 --- docs/hardware/devices/rak/core-modules.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/hardware/devices/rak/core-modules.mdx b/docs/hardware/devices/rak/core-modules.mdx index 77dcc300..c33ea429 100644 --- a/docs/hardware/devices/rak/core-modules.mdx +++ b/docs/hardware/devices/rak/core-modules.mdx @@ -164,6 +164,8 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep - International - [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html) + - US + - [Rokland](https://store.rokland.com/products/rak-raspberry-pi-rp2040-core-module-for-lorawan-with-lora-sx1262-us915-mhz-rak11310-pid-116003) From 8d538b83c63d589f18697943b1fcffb1e51912f9 Mon Sep 17 00:00:00 2001 From: jopdyke <111011098+jopdyke@users.noreply.github.com> Date: Wed, 7 Feb 2024 16:03:56 -0500 Subject: [PATCH 03/46] Update core-modules.mdx adjusted US purchase links to be above International for both the RAK11200 & RAK11310 --- docs/hardware/devices/rak/core-modules.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/hardware/devices/rak/core-modules.mdx b/docs/hardware/devices/rak/core-modules.mdx index 1d29a24c..f1316ee8 100644 --- a/docs/hardware/devices/rak/core-modules.mdx +++ b/docs/hardware/devices/rak/core-modules.mdx @@ -116,11 +116,11 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep - Firmware file: `firmware-rak11200-X.X.X.xxxxxxx.bin` - Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description). - Purchase Links: + - US + - [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023) - International - [RAK Wireless Store](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256802312474717.html) - - US - - [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023) RAK4631 5005 11200 Date: Fri, 26 Jan 2024 13:05:44 -0700 Subject: [PATCH 04/46] Update peripherals.mdx a RAK12500 plugged into slot A (they only fit, physically, on A or C, looks like) appears to be working on my newly-setup RAK19007/RAK4631 device, so I added the 19007 to the section on using a RAK12500 --- docs/hardware/devices/rak/peripherals.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hardware/devices/rak/peripherals.mdx b/docs/hardware/devices/rak/peripherals.mdx index f700f72d..7fbb8b56 100644 --- a/docs/hardware/devices/rak/peripherals.mdx +++ b/docs/hardware/devices/rak/peripherals.mdx @@ -31,7 +31,7 @@ To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](http ### RAK19003 / RAK12500 -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 I2C on slot B for firmware versions 1.49 and above. +To add a GPS to the RAK19003 or RAK19007 base boards, you need the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via I2C on slot B for firmware versions 1.49 and above. - uBlox Zoe-M8Q GNSS receiver - GPS, GLONASS, QZSS and BeiDou satellite support From e02241b2290d969920fbad33a5d61f083df9f8f4 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Fri, 26 Jan 2024 16:24:19 -0700 Subject: [PATCH 05/46] Add corrected notes about slots on RAK19007 --- docs/hardware/devices/rak/peripherals.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hardware/devices/rak/peripherals.mdx b/docs/hardware/devices/rak/peripherals.mdx index 7fbb8b56..fb5a6cdb 100644 --- a/docs/hardware/devices/rak/peripherals.mdx +++ b/docs/hardware/devices/rak/peripherals.mdx @@ -31,7 +31,7 @@ To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](http ### RAK19003 / RAK12500 -To add a GPS to the RAK19003 or RAK19007 base boards, you need the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via I2C on slot B for firmware versions 1.49 and above. +To add a GPS to the RAK19003 or RAK19007 base boards, you should get the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via I2C on slot B for RAK19003 and slot A on RAK19007 for firmware versions 1.49 and above. - uBlox Zoe-M8Q GNSS receiver - GPS, GLONASS, QZSS and BeiDou satellite support From ac6334f59de5d366760df9372e71102014aef054 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Fri, 9 Feb 2024 10:06:38 -0700 Subject: [PATCH 06/46] Update slots --- docs/hardware/devices/rak/peripherals.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hardware/devices/rak/peripherals.mdx b/docs/hardware/devices/rak/peripherals.mdx index fb5a6cdb..0edf0fce 100644 --- a/docs/hardware/devices/rak/peripherals.mdx +++ b/docs/hardware/devices/rak/peripherals.mdx @@ -29,9 +29,9 @@ To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](http - uBlox MAX-7Q GPS module - GPS and GLONASS satellite support -### RAK19003 / RAK12500 +### RAK19003 & RAK19007 / RAK12500 -To add a GPS to the RAK19003 or RAK19007 base boards, you should get the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via I2C on slot B for RAK19003 and slot A on RAK19007 for firmware versions 1.49 and above. +To add a GPS to the RAK19003 or RAK19007 base boards, you should get the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via slot C on RAK19003 and slot A on RAK19007 for firmware versions 1.49 and above. - uBlox Zoe-M8Q GNSS receiver - GPS, GLONASS, QZSS and BeiDou satellite support From 27ae00e34503c81d8d38d42d1cc1665920ccdb4b Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Fri, 9 Feb 2024 10:11:40 -0700 Subject: [PATCH 07/46] Reorganize page around GPS modules, with base boards as sublists on the pages --- docs/hardware/devices/rak/peripherals.mdx | 25 ++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/docs/hardware/devices/rak/peripherals.mdx b/docs/hardware/devices/rak/peripherals.mdx index 0edf0fce..6a6c8761 100644 --- a/docs/hardware/devices/rak/peripherals.mdx +++ b/docs/hardware/devices/rak/peripherals.mdx @@ -22,19 +22,30 @@ values={[ ## GPS Modules -### RAK5005-0 / RAK1910 +### RAK12500 -To add a GPS to the RAK5005-O base board, you need the [RAK1910 GPS sensor](https://store.rakwireless.com/collections/wisblock-sensor/products/rak1910-max-7q-gnss-location-sensor). It is supported on slot A of the 5005 board via UART. +The [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500) is a newer GPS module and is generally preferred. + +- uBlox Zoe-M8Q GNSS receiver +- GPS, GLONASS, QZSS and BeiDou satellite support + +The RAK12500 is supported on the following base boards & slots: + +- RAK19007 on slot A +- RAK19003 on slot C + +### RAK1910 + +The [RAK1910 GPS sensor](https://store.rakwireless.com/collections/wisblock-sensor/products/rak1910-max-7q-gnss-location-sensor) is the older of the supported GPS modules for RAK boards. - uBlox MAX-7Q GPS module - GPS and GLONASS satellite support -### RAK19003 & RAK19007 / RAK12500 +The RAK1910 is supported on the following base boards & slots: -To add a GPS to the RAK19003 or RAK19007 base boards, you should get the [RAK12500 GPS sensor](https://store.rakwireless.com/products/wisblock-gnss-location-module-rak12500). It is supported via slot C on RAK19003 and slot A on RAK19007 for firmware versions 1.49 and above. - -- uBlox Zoe-M8Q GNSS receiver -- GPS, GLONASS, QZSS and BeiDou satellite support +- RAK5005-0 on slot A +- RAK19007 on slot A +- RAK19003 on slot C ### Resources - RAK Documentation Center From db654becb413a5c8b4da3fa77f941bf289d01eb9 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Fri, 9 Feb 2024 20:04:03 +0100 Subject: [PATCH 08/46] Add new "channel" field for MQTT JSON downlink --- docs/software/integrations/mqtt/home-assistant.mdx | 2 +- docs/software/integrations/mqtt/index.mdx | 8 +++++--- docs/software/integrations/mqtt/nodered.mdx | 8 +++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/software/integrations/mqtt/home-assistant.mdx b/docs/software/integrations/mqtt/home-assistant.mdx index 0112ce9d..cc47fb2a 100644 --- a/docs/software/integrations/mqtt/home-assistant.mdx +++ b/docs/software/integrations/mqtt/home-assistant.mdx @@ -268,7 +268,7 @@ First, create an input text helper entity. The preferred way to configure an inp ### Create a Send Message Automation -This automation will check the send box for changes. After typing a message, either hit enter or click off the box and the automation will send a text string in JSON to the mqtt broker. Make sure to call your channel "mqtt" and to update the device ID and `from` field in the example below. +This automation will check the send box for changes. After typing a message, either hit enter or click off the box and the automation will send a text string in JSON to the mqtt broker. Make sure to publish to a channel called "mqtt" and to update the device ID and `from` field in the example below. A field `channel` can be added to transmit on a different channel index than the primary, or a `to` field can be added with a node number to send a DM. ```yaml - alias: Meshtastic - Send Automation diff --git a/docs/software/integrations/mqtt/index.mdx b/docs/software/integrations/mqtt/index.mdx index fb0385a2..f885e3f4 100644 --- a/docs/software/integrations/mqtt/index.mdx +++ b/docs/software/integrations/mqtt/index.mdx @@ -98,11 +98,13 @@ If the message received contains valid JSON in the payload, the JSON is deserial #### JSON downlink to instruct a node to send a message -You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a gateway node to send a message to the mesh. Note that the channel **must** be called "mqtt". The JSON message should contain the following fields: +You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a gateway node to send a message to the mesh. Note that the channel you publish it on **must** be called "mqtt". The JSON message should contain the following fields: ```json { - "from": , + "from": , + "to": , + "channel": , "type": "type", "payload": { "key":"value" @@ -111,7 +113,7 @@ You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a g } ``` -`from` and `payload` fields are required for a valid envelope (note that in firmware <2.2.20 a field `sender` was required, but this is no longer the case). The `from` field should be equal to the node number of the node that will transmit the message. Optionally, you can specify a destination by setting the `to` field to the node number of the destination. If the `to` field is not set, the message will be broadcast to all nodes on the mesh. +`from` and `payload` fields are required for a valid envelope (note that in firmware <2.2.20 a field `sender` was required, but this is no longer the case). The `from` field should be equal to the node number of the node that will transmit the message. Optionally, you can specify a different channel than the primary channel by setting the `channel` field to a channel index (0-7). Furthermore, you can send a direct message by setting the `to` field to the node number of the destination. If the `to` field is not set, the message will be broadcast to all nodes on the mesh. Currently two types of messages are supported: `"sendtext"` and `"sendposition"`. For the type `sendtext`, the `payload` should be a string containing the text to send. For the type `sendposition`, the payload should be an object with the fields `latitude_i`, `longitude_i`, `altitude` (optional) and `time` (optional). diff --git a/docs/software/integrations/mqtt/nodered.mdx b/docs/software/integrations/mqtt/nodered.mdx index 1e87f15a..4c465cd3 100644 --- a/docs/software/integrations/mqtt/nodered.mdx +++ b/docs/software/integrations/mqtt/nodered.mdx @@ -54,13 +54,15 @@ The JSON output only publishes the following subset of the messages on a Meshtas > Protobufs are mesh native. #### 1. Using JSON-encoded messages -Make sure that option *JSON Output Enabled* is set in MQTT module options and your channel is called "mqtt". +Make sure that option *JSON Output Enabled* is set in MQTT module options and you have a channel called "mqtt". -Below is a valid JSON envelope for information sent by MQTT to a device for broadcast onto the mesh. +Below is a valid JSON envelope for information sent by MQTT to a device for broadcast onto the mesh. The `to` field is optional and can be omitted for broadcast. The `channel` field is also optional and can be omitted to send to the primary channel. ```json { "from":, + "to": , + "channel": , "type":"sendtext", "payload": text or a json object go here } @@ -979,7 +981,7 @@ The flow is: ] ``` -Sending a position to a device for broadcast to the mesh is much easier with JSON. It requires a channel called "mqtt". This introduces a new MQTT Service Envelope type: "sendposition". A valid MQTT envelope and message to broadcast lat, lon, altitude (optional) and time (optional) looks like this: +Sending a position to a device for broadcast to the mesh is much easier with JSON. It requires the message to be published to a channel called "mqtt". You can let the message send out to a different channel by setting the `channel` field to a channel index (0-7). Then use the MQTT Service Envelope type: "sendposition". A valid MQTT envelope and message to broadcast lat, lon, altitude (optional) and time (optional) looks like this: ```json { From 6ae5bf4bed83446bdb005f71039ffa80cd37f62c Mon Sep 17 00:00:00 2001 From: Spencer Smith Date: Sat, 10 Feb 2024 00:05:45 -0700 Subject: [PATCH 09/46] Fix freq calculator and update field order --- src/components/tools/FrequencyCalculator.tsx | 25 +++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/components/tools/FrequencyCalculator.tsx b/src/components/tools/FrequencyCalculator.tsx index aeb53e7a..d5465234 100644 --- a/src/components/tools/FrequencyCalculator.tsx +++ b/src/components/tools/FrequencyCalculator.tsx @@ -1,5 +1,6 @@ +import { Config_LoRaConfig_ModemPreset } from "@buf/meshtastic_protobufs.bufbuild_es/meshtastic/config_pb"; import { Protobuf, Types } from "@meshtastic/js"; -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; interface Region { freqStart: number; @@ -273,18 +274,18 @@ const modemPresets = new Map< export const FrequencyCalculator = (): JSX.Element => { const [modemPreset, setModemPreset] = - React.useState( + useState( Protobuf.Config.Config_LoRaConfig_ModemPreset.LONG_FAST, ); const [region, setRegion] = - React.useState( + useState( Protobuf.Config.Config_LoRaConfig_RegionCode.US, ); - const [channel, setChannel] = React.useState( - Types.ChannelNumber.PRIMARY, + const [channel, setChannel] = useState( + Types.ChannelNumber.Primary, ); - const [numChannels, setNumChannels] = React.useState(0); - const [channelFrequency, setChannelFrequency] = React.useState(0); + const [numChannels, setNumChannels] = useState(0); + const [channelFrequency, setChannelFrequency] = useState(0); useEffect(() => { const selectedRegion = RegionData.get(region); @@ -344,6 +345,12 @@ export const FrequencyCalculator = (): JSX.Element => { ))} + +
+ + +
+
-
- - -
From 00b1fab4d2d3b6a2988197669bff41d9ba0bbf3f Mon Sep 17 00:00:00 2001 From: Spencer Smith Date: Sat, 10 Feb 2024 00:16:49 -0700 Subject: [PATCH 10/46] Remove unused import --- src/components/tools/FrequencyCalculator.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/tools/FrequencyCalculator.tsx b/src/components/tools/FrequencyCalculator.tsx index d5465234..278767cf 100644 --- a/src/components/tools/FrequencyCalculator.tsx +++ b/src/components/tools/FrequencyCalculator.tsx @@ -1,4 +1,3 @@ -import { Config_LoRaConfig_ModemPreset } from "@buf/meshtastic_protobufs.bufbuild_es/meshtastic/config_pb"; import { Protobuf, Types } from "@meshtastic/js"; import React, { useEffect, useState } from "react"; From 4cbbd8c6d6fe812da54c48e7d2d98cdcb6edec07 Mon Sep 17 00:00:00 2001 From: Tommy Ekstrand Date: Sat, 10 Feb 2024 11:43:33 -0600 Subject: [PATCH 11/46] Update Device Role Descriptions (#973) * Update device role descriptions for clarity * update CLIENT_HIDDEN uses --- docs/configuration/radio/device.mdx | 31 ++++++++++++----------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/docs/configuration/radio/device.mdx b/docs/configuration/radio/device.mdx index 044ae889..2d4af4ba 100644 --- a/docs/configuration/radio/device.mdx +++ b/docs/configuration/radio/device.mdx @@ -11,24 +11,19 @@ The device config options are: Role, Serial Output, and Debug Log. Device config ## Device Config Values -### Role - -Sets the role of the node. - -Acceptable values: - -| Value | Description | -|:----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| `CLIENT` | Client (default) - This role will follow the standard routing rules while also allowing the device to interact with client applications via BLE/Wi-Fi (Android/Apple/Web). | -| `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. The assumption is that Router-type devices will be placed in locations with a height/range/antenna advantage, and therefore have better overall coverage. This node will not be used by client apps. The BLE/Wi-Fi radios and the OLED screen will be put to sleep. Please note: Due to the preferred routing, this role may cause higher power usage due to more frequent transmission. | -| `ROUTER_CLIENT` | Router Client - Hybrid of the Client and Router roles. Similar to Router, except the Router Client can be used as both a Router and an app connected Client. BLE/Wi-Fi and OLED screen will not be put to sleep. | -| `REPEATER` | Repeater - Mesh packets will prefer to be routed over this node. This role eliminates unnecessary overhead such as NodeInfo, DeviceTelemetry, and any other mesh packet, resulting in the device not appearing as part of the network. As such, direct messaging this node is not available, as it will not appear in your nodes list which results in a cleaner mesh network. Channel and modem settings of the mesh packets being repeated must be identical to the repeater's configuration. Please see Rebroadcast Mode for additional settings specific to this role. | -| `TRACKER` | Tracker - For use with devices intended as a GPS tracker. Position packets sent from this device will be higher priority. Smart Position Broadcast will default to the currently configured settings. When used in conjunction with power.is_power_saving = true, nodes will wake up, send position, and then sleep for position.position_broadcast_secs seconds. | -| `SENSOR` | Sensor - For use with devices intended to primarily collect sensor readings. Telemetry packets sent from this device will be higher priority, broadcasting every five minutes. When used in conjunction with power.is_power_saving = true, nodes will wake up, send environment telemetry, and then sleep for telemetry.environment_update_interval seconds. | -| `TAK` | TAK - Used for nodes dedicated for connection to an ATAK EUD. Turns off many of the routine broadcasts to favor CoT packet stream from the Meshtastic ATAK plugin -> IMeshService -> Node. | -| `CLIENT_HIDDEN` | Client Hidden - Used for nodes that "only speak when spoken to." Turns off all of the routine broadcasts but allows for ad-hoc communication. Still rebroadcasts, but with local only rebroadcast mode (known meshes only). Can be used for clandestine operation or to dramatically reduce airtime / power consumption | -| `LOST_AND_FOUND` | Lost and Found - Used to automatically send a text message with current position at frequent intervals to the primary channel for the device: "I'm lost! Position: lat / long" | +### Roles +| Device Role | Description | Best Uses | +| -------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| CLIENT | App connected or stand alone messaging device. | General use for individuals needing to communicate over the Meshtastic network with support for client applications. | +| CLIENT_MUTE | Device that does not forward packets from other devices. | Situations where a device needs to participate in the network without assisting in packet routing, reducing network load. | +| CLIENT_HIDDEN | Device that only broadcasts as needed for stealth or power savings. | Use in stealth/hidden deployments or to reduce airtime/power consumption while still participating in the network. | +| TRACKER | Broadcasts GPS position packets as priority. | Tracking the location of individuals or assets, especially in scenarios where timely and efficient location updates are critical. | +| LOST_AND_FOUND | Broadcasts location as message to default channel regularly for to assist with device recovery. | Used for recovery efforts of a lost device. | +| SENSOR | Prioritizes broadcasting GPS position packets. | Deploying in scenarios where gathering environmental or other sensor data is crucial, with efficient power usage and frequent updates. | +| TAK | Optimized for ATAK system communication, reduces routine broadcasts. | Integration with ATAK systems for communication in tactical or coordinated operations. | +| REPEATER | Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is not shown in topology. | +| ROUTER | Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is shown in topology. | +| ROUTER_CLIENT | Combination of both ROUTER and CLIENT. Not for mobile devices. | Devices in a strategic position for priority routing that need to also serve as a standard CLIENT. | #### Role Comparison From 89f5ac3e741a3ce2f0584128af2dca090f1edf85 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Sat, 10 Feb 2024 09:43:56 -0800 Subject: [PATCH 12/46] Revert "Update trademark-grants.mdx" --- docs/legal/trademark-grants.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/legal/trademark-grants.mdx b/docs/legal/trademark-grants.mdx index 0d736dd9..6ffe8eed 100644 --- a/docs/legal/trademark-grants.mdx +++ b/docs/legal/trademark-grants.mdx @@ -51,5 +51,3 @@ This process ensures transparency and community involvement in the granting of t - Details: Emmett is producing 'Axanar!,' a non-commercial Star Trek fan puppet show. The Meshtastic logo/trademark will used only in a positive manner, to hint to the audience that Meshtastic is still up and running in the year 2380. The use of the Meshtastic Logo and Trademarks does not imply Emmett Plant or Axanar! is sponsored or endorsed by Meshtastic. Emmett also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revocable at any time for any reason. - Grant: [Simon - muzi.works](https://instagram.com/muzi.works) - Details: Simon is a Meshtastic designer of devices, device enclosures and accessories that carry the "Meshtastic" , Meshtastic.org URL and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Simon is sponsored or endorsed by Meshtastic. Simon also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason. -- Grant: [Chris Ridley - IKB3D](https://ikb3d.co.uk) - - Details: Chris designs devices, device enclosures and accessories which are sold through his online shop and other online marketplaces. Many of these carry the "Meshtastic" , Meshtastic.org URL and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Simon is sponsored or endorsed by Meshtastic. Simon also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason. From 8d1f2abdd462db3ac305f87e8a9523f9ca5d6998 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Sat, 10 Feb 2024 12:16:43 -0600 Subject: [PATCH 13/46] add codeowners --- .github/CODEOWNERS | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..f770b261 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,5 @@ +# Protect this CODEOWNERS file from change +/.github/CODEOWNERS @meshtastic/admins + +# Protect the legal directory from change +/docs/legal/* @meshtastic/admins From 34ba6cd08b9a11d9f2b99d41131596a95c810559 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Sat, 10 Feb 2024 11:37:01 -0600 Subject: [PATCH 14/46] Glossary of terms page --- docs/about/contributing.mdx | 1 + docs/legal/index.mdx | 1 + docs/terms/index.mdx | 119 ++++++++++++++++++++++++++++++++++++ docusaurus.config.js | 2 + package.json | 1 + pnpm-lock.yaml | 55 +++++++++++++++++ 6 files changed, 179 insertions(+) create mode 100644 docs/terms/index.mdx diff --git a/docs/about/contributing.mdx b/docs/about/contributing.mdx index dfc6c4a1..fcc98c50 100644 --- a/docs/about/contributing.mdx +++ b/docs/about/contributing.mdx @@ -4,6 +4,7 @@ sidebar_label: Contributing slug: /contributing sidebar_position: 3 --- + ### Volunteer Based Development Meshtastic is a team of volunteers, and as such there are always plenty of ways to help. This project gets great contributions from people in their off hours. Those contributors work on the features they are interested in. It is a very open and welcoming developer community, and we are always looking for help to improve Meshtastic. diff --git a/docs/legal/index.mdx b/docs/legal/index.mdx index 2ef46c0d..f0c22e1b 100644 --- a/docs/legal/index.mdx +++ b/docs/legal/index.mdx @@ -4,6 +4,7 @@ sidebar_label: Legal slug: /legal sidebar_position: 9 --- + ## Disclaimers **Project Status:** Meshtastic is now at a stage where it offers a _mostly_ stable and reliable functionality, thanks to the dedicated efforts of our development team. While the core aspects of the project are well-established, we are still rapidly evolving and actively adding new features. As we continue to innovate and expand, some features in our current builds are in development, reflecting our commitment to continuous improvement and growth. We appreciate your engagement as we advance further in this exciting journey. diff --git a/docs/terms/index.mdx b/docs/terms/index.mdx new file mode 100644 index 00000000..ddbe27bf --- /dev/null +++ b/docs/terms/index.mdx @@ -0,0 +1,119 @@ +--- +id: glossary +title: Glossary of Terms +slug: /terms/ +--- + +App +: An application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network. + +Application +: An application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network. + +Band +: A range of frequencies used for LoRa, dependent on region. Meshtastic further divides these bands into channels. Sometimes identified by the lower and upper bounds of the range (e.g. 902-928MHz), sometimes identified by a center frequency within the range (e.g. 915MHz), and sometimes only by the region they apply to (e.g. US). + +Broadcast +: Sending a message or data from one device to all other devices within range in the Meshtastic network, rather than to a specific recipient. + +Channel +: At least two definitions in Meshtastic usage: 1) One of 8 configurable channels in firmware, each supporting a separate name and encryption, with one set as primary and the rest secondary. 2) A specific range of frequency within a LoRa band that a device can be configured to use. + +CLI +: Command Line Interface, a text-based interface used for interacting with software or devices like Meshtastic. + +Client +: A device or application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network. + +Device +: A physical piece of hardware that utilizes the Meshtastic software and LoRa (Long Range) radio technology to create a decentralized, long-range mesh network. + +ESP32 +: A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired. + +Firmware +: The low-level software programmed onto a Meshtastic device, controlling its hardware functions and enabling it to communicate within the mesh network using LoRa technology. + +Flash +: To program or write firmware onto the device's memory. It involves transferring the Meshtastic firmware onto the device's onboard storage. + +Flashing +: The process of updating or installing firmware on a Meshtastic device. This is typically done using a computer to load new firmware versions or custom software to enhance or modify device functionality. + +GPIO +: General Purpose Input/Output. An uncommitted digital signal pin on a device + +LoRa +: A low-power, long-range wireless communication technology used by Meshtastic devices to enable communication over distances of several kilometers without the need for cellular, Wi-Fi, or other traditional network infrastructures. + +LoS +: Line of Sight, a pathway through only air between two points. + +Mesh +: In the context of Meshtastic and networking, a mesh refers to a network topology where devices (nodes) are interconnected, allowing them to directly and dynamically communicate with each other. This setup enables data to be relayed across the network, improving coverage and reliability, especially in challenging environments. + +Message +: A piece of data or text sent between Meshtastic devices over the mesh network, which can include text communications, GPS location updates, and other small data payloads. + +Mhz +: Megahertz, a unit of frequency equal to one million hertz, used to specify the operating frequency of LoRa devices in the Meshtastic network, affecting range and data rate. + +Module +: A component or add-on for a Meshtastic device, typically referring to a hardware piece such as a LoRa radio module, that provides specific functionalities like communication or GPS tracking. + +MQTT +: A lightweight messaging protocol designed for small sensors and mobile devices, enabling efficient data transmission in the Meshtastic network for Internet connectivity and integration with IoT platforms. See https://en.wikipedia.org/wiki/MQTT. In Meshtastic, MQTT is used to connect a node to the internet, and can be used to connect multiple meshes to each other. + +Node +: A unit within the Meshtastic network that can send, receive, and relay messages, helping to form and extend the mesh network's coverage. + +NRF52 +: A chipset of microcontroller made by Nordic, used by a number of devices. Lower power usage than ESP32. + +Packet +: A formatted unit of data sent over the network. In Meshtastic, packets carry messages, GPS locations, and other information through the LoRa mesh network. + +Protobuf +: Protocol Buffers, a method developed by Google for serializing structured data, used in Meshtastic for efficient communication protocol between devices. + +PSK +: Pre-Shared Key, a secret code or passphrase used in Meshtastic channels for encryption, ensuring that only devices with the matching PSK can communicate within that specific channel. + +Repeater +: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. + +Router +: Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list. + +rp2040 +: A microcontroller chip developed by Raspberry Pi, featuring dual ARM Cortex-M0+ processors. + +RX +: Short for Receive. + +Sensor +: A device component that detects and responds to some type of input from the physical environment. In Meshtastic, sensors can be used to gather environmental data (e.g., temperature, humidity, GPS location) which can then be transmitted over the mesh network for monitoring or other applications. + +Serial +: A communication protocol used for the transmission of data between the Meshtastic device and a computer or other devices. Typically over USB or UART. + +SNR +: Signal-to-Noise Ratio, a measure used in communications to quantify the level of a desired signal to the level of background noise. In Meshtastic and other wireless systems, a higher SNR indicates a clearer signal that can enhance the reliability and quality of data transmission. + +SWR +: Standing Wave Ratio, a measure of the efficiency of the radio frequency (RF) power transmission from a transmitter through a transmission line to an antenna in Meshtastic devices. It indicates the ratio of the amplitude of a standing wave at maximum to the amplitude at minimum, with an ideal SWR close to 1:1, signifying that most of the power is transmitted to the antenna with minimal reflections. + +SX1262 +: A model of LoRa transceiver module known for its low power consumption and long-range capabilities, commonly used in Meshtastic devices for communication. + +Telemetry +: The sending of sensor data or system metrics over the mesh network. + +Tranceiver +: A device capable of both transmitting and receiving communications. + +Transmit +: The act of sending data, such as messages or GPS locations, from one Meshtastic device to another over the LoRa network. + +TX +: Short for Transmit. diff --git a/docusaurus.config.js b/docusaurus.config.js index 25e054f8..2214253a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -1,6 +1,7 @@ // @ts-check require("dotenv").config(); +import remarkDefList from "remark-deflist"; /** @type {import('@docusaurus/types').Config} */ const config = { @@ -121,6 +122,7 @@ const config = { editUrl: "https://github.com/meshtastic/meshtastic/edit/master/", breadcrumbs: false, showLastUpdateAuthor: true, + remarkPlugins: [remarkDefList], }, theme: { customCss: require.resolve("./src/css/custom.css"), diff --git a/package.json b/package.json index 060e19c9..67ac5d29 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.12.0", + "remark-deflist": "^1.0.0", "swr": "^2.2.4", "tailwindcss": "^3.4.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c6cfb15..56fe66f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,6 +56,9 @@ dependencies: react-icons: specifier: ^4.12.0 version: 4.12.0(react@18.2.0) + remark-deflist: + specifier: ^1.0.0 + version: 1.0.0 swr: specifier: ^2.2.4 version: 2.2.4(react@18.2.0) @@ -6689,6 +6692,13 @@ packages: transitivePeerDependencies: - supports-color + /mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + dependencies: + '@types/mdast': 3.0.15 + unist-util-is: 5.2.1 + dev: false + /mdast-util-phrasing@4.0.0: resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} dependencies: @@ -6707,6 +6717,19 @@ packages: unist-util-position: 5.0.0 unist-util-visit: 5.0.0 + /mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + dev: false + /mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} dependencies: @@ -8671,6 +8694,17 @@ packages: engines: {node: '>= 0.10'} dev: false + /remark-deflist@1.0.0: + resolution: {integrity: sha512-sDHM+ZbgWC6wwaxltMdH5x+XYMW8VpjyeHyC2ZCI106+iYgbPv8lBYKiNqdW0Cs0FVox/LysYhb3qIZe1b0cmg==} + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + mdast-util-to-string: 3.2.0 + unist-util-visit: 4.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /remark-directive@3.0.0: resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} dependencies: @@ -9598,6 +9632,12 @@ packages: crypto-random-string: 4.0.0 dev: false + /unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + dependencies: + '@types/unist': 2.0.10 + dev: false + /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: @@ -9630,12 +9670,27 @@ packages: dependencies: '@types/unist': 3.0.2 + /unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + dev: false + /unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 + /unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: false + /unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} dependencies: From 177dbdd0195166417a47e6dea933aba3d42366b2 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Sun, 11 Feb 2024 11:46:59 -0600 Subject: [PATCH 15/46] feedback round 1 --- docs/terms/index.mdx | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/docs/terms/index.mdx b/docs/terms/index.mdx index ddbe27bf..36c90bc4 100644 --- a/docs/terms/index.mdx +++ b/docs/terms/index.mdx @@ -17,7 +17,7 @@ Broadcast : Sending a message or data from one device to all other devices within range in the Meshtastic network, rather than to a specific recipient. Channel -: At least two definitions in Meshtastic usage: 1) One of 8 configurable channels in firmware, each supporting a separate name and encryption, with one set as primary and the rest secondary. 2) A specific range of frequency within a LoRa band that a device can be configured to use. +: At least two definitions in Meshtastic usage: 1) One of 8 configurable channels in the firmware, each supporting a separate name and encryption, with one set as primary and the rest secondary. 2) A specific frequency within a LoRa band that a device can be configured to use. CLI : Command Line Interface, a text-based interface used for interacting with software or devices like Meshtastic. @@ -55,20 +55,20 @@ Mesh Message : A piece of data or text sent between Meshtastic devices over the mesh network, which can include text communications, GPS location updates, and other small data payloads. -Mhz -: Megahertz, a unit of frequency equal to one million hertz, used to specify the operating frequency of LoRa devices in the Meshtastic network, affecting range and data rate. +MHz +: Megahertz, a unit of frequency equal to one million hertz (cycles per second), used to specify the operating frequency of LoRa devices in the Meshtastic network, affecting range and data rate. Module -: A component or add-on for a Meshtastic device, typically referring to a hardware piece such as a LoRa radio module, that provides specific functionalities like communication or GPS tracking. +: At least two definitions in Meshtastic usage: 1) A software plug-in to expand the capabilities of a Meshtastic device. 2) A hardware component or add-on for a Meshtastic device, such as a temperature sensor or GPS. MQTT -: A lightweight messaging protocol designed for small sensors and mobile devices, enabling efficient data transmission in the Meshtastic network for Internet connectivity and integration with IoT platforms. See https://en.wikipedia.org/wiki/MQTT. In Meshtastic, MQTT is used to connect a node to the internet, and can be used to connect multiple meshes to each other. +: An acronym for Message Queuing Telemetry Transport, is a lightweight messaging protocol designed for small sensors and mobile devices, enabling efficient data transmission in the Meshtastic network for Internet connectivity and integration with IoT platforms. See https://en.wikipedia.org/wiki/MQTT. In Meshtastic, MQTT is used to connect a node to the internet, and can be used to connect multiple meshes to each other. Node : A unit within the Meshtastic network that can send, receive, and relay messages, helping to form and extend the mesh network's coverage. NRF52 -: A chipset of microcontroller made by Nordic, used by a number of devices. Lower power usage than ESP32. +: A microcontroller chipset made by Nordic, used by a number of devices used by several devices such as the RAK Meshtastic Starter Kit and the Lilygo T-Echo. Lower power usage than ESP32. Packet : A formatted unit of data sent over the network. In Meshtastic, packets carry messages, GPS locations, and other information through the LoRa mesh network. @@ -89,7 +89,7 @@ rp2040 : A microcontroller chip developed by Raspberry Pi, featuring dual ARM Cortex-M0+ processors. RX -: Short for Receive. +: Abbreviation for Receive. Sensor : A device component that detects and responds to some type of input from the physical environment. In Meshtastic, sensors can be used to gather environmental data (e.g., temperature, humidity, GPS location) which can then be transmitted over the mesh network for monitoring or other applications. @@ -103,9 +103,6 @@ SNR SWR : Standing Wave Ratio, a measure of the efficiency of the radio frequency (RF) power transmission from a transmitter through a transmission line to an antenna in Meshtastic devices. It indicates the ratio of the amplitude of a standing wave at maximum to the amplitude at minimum, with an ideal SWR close to 1:1, signifying that most of the power is transmitted to the antenna with minimal reflections. -SX1262 -: A model of LoRa transceiver module known for its low power consumption and long-range capabilities, commonly used in Meshtastic devices for communication. - Telemetry : The sending of sensor data or system metrics over the mesh network. @@ -116,4 +113,4 @@ Transmit : The act of sending data, such as messages or GPS locations, from one Meshtastic device to another over the LoRa network. TX -: Short for Transmit. +: Abbreviation for Transmit. From a7d04b5cf48b6dfd09581e40cb77dafc6ea2c1fc Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Sun, 11 Feb 2024 12:02:24 -0600 Subject: [PATCH 16/46] add links and combine apps/application/client app --- docs/terms/index.mdx | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/docs/terms/index.mdx b/docs/terms/index.mdx index 36c90bc4..6a25dda5 100644 --- a/docs/terms/index.mdx +++ b/docs/terms/index.mdx @@ -4,10 +4,7 @@ title: Glossary of Terms slug: /terms/ --- -App -: An application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network. - -Application +App / Application / Client Application : An application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network. Band @@ -16,10 +13,10 @@ Band Broadcast : Sending a message or data from one device to all other devices within range in the Meshtastic network, rather than to a specific recipient. -Channel +Channel | [Configuration](/docs/configuration/radio/channels/) | [Frequency Calculator](/docs/overview/radio-settings/#channel-frequency-calculator) : At least two definitions in Meshtastic usage: 1) One of 8 configurable channels in the firmware, each supporting a separate name and encryption, with one set as primary and the rest secondary. 2) A specific frequency within a LoRa band that a device can be configured to use. -CLI +CLI | [Guide](/docs/software/python/cli/) : Command Line Interface, a text-based interface used for interacting with software or devices like Meshtastic. Client @@ -28,16 +25,13 @@ Client Device : A physical piece of hardware that utilizes the Meshtastic software and LoRa (Long Range) radio technology to create a decentralized, long-range mesh network. -ESP32 -: A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired. +ESP32 | [Drivers](/docs/getting-started/serial-drivers/esp32/) | [Firmware](/docs/getting-started/flashing-firmware/esp32/) +: A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired. -Firmware -: The low-level software programmed onto a Meshtastic device, controlling its hardware functions and enabling it to communicate within the mesh network using LoRa technology. +Firmware | [Guide](https://meshtastic.org/docs/getting-started/flashing-firmware/) +: The low-level software programmed onto a Meshtastic device, controlling its hardware functions and enabling it to communicate within the mesh network using LoRa technology. Firmware -Flash -: To program or write firmware onto the device's memory. It involves transferring the Meshtastic firmware onto the device's onboard storage. - -Flashing +Flash/Flashing | [Guide](https://meshtastic.org/docs/getting-started/flashing-firmware/) : The process of updating or installing firmware on a Meshtastic device. This is typically done using a computer to load new firmware versions or custom software to enhance or modify device functionality. GPIO @@ -49,7 +43,7 @@ LoRa LoS : Line of Sight, a pathway through only air between two points. -Mesh +Mesh | [Algorythm](/docs/overview/mesh-algo/) : In the context of Meshtastic and networking, a mesh refers to a network topology where devices (nodes) are interconnected, allowing them to directly and dynamically communicate with each other. This setup enables data to be relayed across the network, improving coverage and reliability, especially in challenging environments. Message @@ -58,10 +52,10 @@ Message MHz : Megahertz, a unit of frequency equal to one million hertz (cycles per second), used to specify the operating frequency of LoRa devices in the Meshtastic network, affecting range and data rate. -Module +Module | [Software Modules](/docs/configuration/module/) | [Hardware Modules](/docs/hardware/devices/) : At least two definitions in Meshtastic usage: 1) A software plug-in to expand the capabilities of a Meshtastic device. 2) A hardware component or add-on for a Meshtastic device, such as a temperature sensor or GPS. -MQTT +[MQTT](/docs/software/integrations/mqtt/) : An acronym for Message Queuing Telemetry Transport, is a lightweight messaging protocol designed for small sensors and mobile devices, enabling efficient data transmission in the Meshtastic network for Internet connectivity and integration with IoT platforms. See https://en.wikipedia.org/wiki/MQTT. In Meshtastic, MQTT is used to connect a node to the internet, and can be used to connect multiple meshes to each other. Node @@ -73,16 +67,16 @@ NRF52 Packet : A formatted unit of data sent over the network. In Meshtastic, packets carry messages, GPS locations, and other information through the LoRa mesh network. -Protobuf +Protobuf | [Reference](/docs/development/reference/protobufs/) : Protocol Buffers, a method developed by Google for serializing structured data, used in Meshtastic for efficient communication protocol between devices. -PSK +PSK | [Encryption](/docs/overview/encryption/) : Pre-Shared Key, a secret code or passphrase used in Meshtastic channels for encryption, ensuring that only devices with the matching PSK can communicate within that specific channel. -Repeater +Repeater | [Role Definitions](/docs/configuration/radio/device/#roles) : Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. -Router +Router | [Role Definitions](/docs/configuration/radio/device/#roles) : Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list. rp2040 From ca9abc93f023b074a763d3780bf0086be02780f2 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Sun, 11 Feb 2024 12:20:14 -0600 Subject: [PATCH 17/46] links for nrf52 --- docs/terms/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/terms/index.mdx b/docs/terms/index.mdx index 6a25dda5..b6be3cae 100644 --- a/docs/terms/index.mdx +++ b/docs/terms/index.mdx @@ -61,7 +61,7 @@ Module | [Software Modules](/docs/configuration/module/) | [Hardware Modules](/d Node : A unit within the Meshtastic network that can send, receive, and relay messages, helping to form and extend the mesh network's coverage. -NRF52 +NRF52 | [Drivers](/docs/getting-started/serial-drivers/nrf52/) | [Firmware](/docs/getting-started/flashing-firmware/nrf52/) : A microcontroller chipset made by Nordic, used by a number of devices used by several devices such as the RAK Meshtastic Starter Kit and the Lilygo T-Echo. Lower power usage than ESP32. Packet From 7749dbdb29a51b7c68bf0f837ecd492b95b3daa9 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Sun, 11 Feb 2024 12:20:51 -0600 Subject: [PATCH 18/46] spelling mistake --- docs/terms/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/terms/index.mdx b/docs/terms/index.mdx index b6be3cae..99968abf 100644 --- a/docs/terms/index.mdx +++ b/docs/terms/index.mdx @@ -43,7 +43,7 @@ LoRa LoS : Line of Sight, a pathway through only air between two points. -Mesh | [Algorythm](/docs/overview/mesh-algo/) +Mesh | [Algorithm](/docs/overview/mesh-algo/) : In the context of Meshtastic and networking, a mesh refers to a network topology where devices (nodes) are interconnected, allowing them to directly and dynamically communicate with each other. This setup enables data to be relayed across the network, improving coverage and reliability, especially in challenging environments. Message From 476f9414720ba61e6a871a7a539708fe36b9225e Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Sun, 11 Feb 2024 13:45:57 -0700 Subject: [PATCH 19/46] update t-echo bootloader how to --- .../nrf52/update-techo-booloader.mdx | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx diff --git a/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx b/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx new file mode 100644 index 00000000..c61e797a --- /dev/null +++ b/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx @@ -0,0 +1,48 @@ +--- +id: update-techo-bootloader +title: How to Update the LilyGo T-Echo Bootloader to the Latest Version +sidebar_label: Update T-Echo Bootloader +sidebar_position: 5 +--- + +If you're experiencing issues with updating or flashing newer versions of the Meshtastic firmware, and your LilyGo T-Echo is not running the latest bootloader version (0.6.1), updating the bootloader may resolve these problems. + +To check which version of the bootloader your device is running, place the device into DFU mode by double-pressing the reset button. Then, open the mounted drive that appears on your computer and check the INFO_UF2.TXT file. + +Below are the steps to update your bootloader. + +### Method 1: Using the UF2 File (Recommended) + +This is the simplest method to update your bootloader using a UF2 file. + +1. Download the Latest UF2 Bootloader File for the T-Echo from [Github](https://github.com/meshtastic/firmware/blob/master/bin/update-lilygo_techo_bootloader-0.6.1_nosd.uf2). +2. Connect your LilyGo T-Echo to your computer via USB. +3. Activate bootloader mode by quickly double pressing the RESET button on your T-Echo. The device should appear as a removable drive on your computer. +4. Drag and drop the .uf2 file you downloaded into the T-Echo's drive. The device will automatically update the bootloader and reset. +5. Once the device resets, the update is complete. Your T-Echo is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/). + +### Method 2: Using adafruit-nrfutil + +Should flashing the UF2 file to update your bootloader fail, you can use adafruit-nrfutil. + +:::info + +These instructions assume you have python and pip already installed. If you do not, please install the latest verion of python (which includes pip) from [Python.org](https://www.python.org/downloads/). + +::: + +1. Open a terminal or command prompt and install adafruit-nrfutil by running: + +```bash +pip install adafruit-nrfutil +``` + +2. Obtain the lilygo_techo_bootloader-0.6.1.zip package from [Github](https://github.com/meshtastic/firmware/blob/master/bin/lilygo_techo_bootloader-0.6.1.zip). +3. Connect your LilyGo T-Echo to your computer via USB. +4. In the terminal or command prompt, navigate to the directory where you downloaded the bootloader zip package and execute the following command, replacing /dev/ttyACM0 with the correct port for your device (Windows users might use COMx): + +```bash +adafruit-nrfutil --verbose dfu serial --package lilygo_techo_bootloader-0.6.1.zip -p /dev/ttyACM0 -b 115200 --singlebank --touch 1200 +``` + +5. Once the process finishes, the update is complete. Your T-Echo is now running the latest bootloader version and you can proceed with [flashing the firmware](/docs/getting-started/flashing-firmware/nrf52/drag-n-drop/). From ad9ce8b2585aedec9c6fd6686e0b83dbb4b4d603 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Sun, 11 Feb 2024 14:30:58 -0700 Subject: [PATCH 20/46] recommended changes --- .../flashing-firmware/nrf52/update-techo-booloader.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx b/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx index c61e797a..86c8d3b3 100644 --- a/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx +++ b/docs/getting-started/flashing-firmware/nrf52/update-techo-booloader.mdx @@ -9,12 +9,12 @@ If you're experiencing issues with updating or flashing newer versions of the Me To check which version of the bootloader your device is running, place the device into DFU mode by double-pressing the reset button. Then, open the mounted drive that appears on your computer and check the INFO_UF2.TXT file. +## Updating bootloader + Below are the steps to update your bootloader. ### Method 1: Using the UF2 File (Recommended) -This is the simplest method to update your bootloader using a UF2 file. - 1. Download the Latest UF2 Bootloader File for the T-Echo from [Github](https://github.com/meshtastic/firmware/blob/master/bin/update-lilygo_techo_bootloader-0.6.1_nosd.uf2). 2. Connect your LilyGo T-Echo to your computer via USB. 3. Activate bootloader mode by quickly double pressing the RESET button on your T-Echo. The device should appear as a removable drive on your computer. From f7e330a03e6ce58cedf7d7c4f46a4ea47dabae83 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Sun, 11 Feb 2024 22:56:48 -0700 Subject: [PATCH 21/46] Fix Typo Numbers were transposed. Update to correct to RAK1901. --- docs/hardware/devices/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hardware/devices/index.mdx b/docs/hardware/devices/index.mdx index 07f931df..feb64e21 100644 --- a/docs/hardware/devices/index.mdx +++ b/docs/hardware/devices/index.mdx @@ -51,7 +51,7 @@ Modular hardware system with Base, Core and Peripheral modules including the low [RAK13002](./rak/peripherals?rakmodules=IO) IO
RAK14001 RGB LED
RAK12002 RTC
-[RAK1910](./rak/peripherals?rakmodules=Sensors&sensors=RAK1901) Temperature and Humidity Sensor
+[RAK1901](./rak/peripherals?rakmodules=Sensors&sensors=RAK1901) Temperature and Humidity Sensor
[RAK1902](./rak/peripherals?rakmodules=Sensors&sensors=RAK1902) Barometric Pressure Sensor
[RAK1906](./rak/peripherals?rakmodules=Sensors&sensors=RAK1906) Environment Sensor
RAK12013 Radar Sensor
From 124f5ade2ce2e5c4017184f61785e1040c7a4493 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Mon, 12 Feb 2024 09:15:49 -0600 Subject: [PATCH 22/46] add dfu --- docs/terms/index.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/terms/index.mdx b/docs/terms/index.mdx index 99968abf..ba6da8da 100644 --- a/docs/terms/index.mdx +++ b/docs/terms/index.mdx @@ -25,6 +25,9 @@ Client Device : A physical piece of hardware that utilizes the Meshtastic software and LoRa (Long Range) radio technology to create a decentralized, long-range mesh network. +DFU +: Device Firmware Update, a state which a device is placed into for it to receive a firmware update + ESP32 | [Drivers](/docs/getting-started/serial-drivers/esp32/) | [Firmware](/docs/getting-started/flashing-firmware/esp32/) : A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired. From 04460b79b155ada1727f89ade1f9983706bd6018 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Mon, 12 Feb 2024 11:51:38 -0700 Subject: [PATCH 23/46] Update contributing page to include financial sponsorships and donations --- docs/about/contributing.mdx | 70 ++++++++++++++++------- src/css/custom.css | 17 ++++++ src/pages/credits/index.tsx | 111 ------------------------------------ 3 files changed, 65 insertions(+), 133 deletions(-) delete mode 100644 src/pages/credits/index.tsx diff --git a/docs/about/contributing.mdx b/docs/about/contributing.mdx index fcc98c50..7a141d90 100644 --- a/docs/about/contributing.mdx +++ b/docs/about/contributing.mdx @@ -1,11 +1,14 @@ --- -title: Community Guide +title: Contributing to Meshtastic sidebar_label: Contributing slug: /contributing sidebar_position: 3 --- -### Volunteer Based Development +import Link from "@docusaurus/Link" + +## Volunteer Based Development + Meshtastic is a team of volunteers, and as such there are always plenty of ways to help. This project gets great contributions from people in their off hours. Those contributors work on the features they are interested in. It is a very open and welcoming developer community, and we are always looking for help to improve Meshtastic. @@ -20,38 +23,61 @@ Meshtastic is a team of volunteers, and as such there are always plenty of ways There are several developers, testers, and active users on [Discord](https://discord.gg/ktMAKGBnBs). -## Meshtastic Ecosystem +### Meshtastic Ecosystem -There are many technologies (and repositories) used in creating the Meshtastic ecosystem. Below is a breakdown: +The Meshtastic ecosystem leverages a variety of technologies and repositories to provide a robust decentralized communication platform. This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors, and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication. -### Protocol Buffers +Key components include: +- **Protocol Buffers**: The backbone of communication and interactions, with changes and definitions managed in the [Meshtastic Protobuf Definitions repository](https://github.com/meshtastic/protobufs). For detailed information, see the [Protobuf API Reference](https://buf.build/meshtastic/protobufs/). +- **Device Firmware**: Development for ESP32, nRF52, and RP2040 based devices occurs in the [firmware repository](https://github.com/meshtastic/firmware), focusing on C and C++ code for hardware interaction and communication. +- **Firmware Modules**: Extend the core functionalities of devices and mesh networks, implemented mainly within the firmware repository. Modules are essential for adding new features and integrating devices within the ecosystem. +- **CLI Apps (Device Interface)**: The [Meshtastic Python CLI](https://github.com/meshtastic/Meshtastic-python) enables interaction with device settings and functionalities, serving both as a utility and a library for application development. +- **Web and JavaScript Apps**: Development for the hosted web server on ESP32 devices is done in [Meshtastic Web](https://github.com/meshtastic/web), with a JavaScript library for device interfaces available in [Meshtastic JS](https://github.com/meshtastic/meshtastic.js). +- **Mobile and Desktop Apps**: Android, iOS, iPadOS, and macOS applications provide user interfaces for interacting with Meshtastic devices. Development for Android is detailed in the [Meshtastic-Android repository](https://github.com/meshtastic/Meshtastic-Android), while Apple platforms are supported by the [Meshtastic-Apple repository](https://github.com/meshtastic/Meshtastic-Apple). -Most communication and interactions happen with protocol buffers. The [Meshtastic Protobuf Definitions](https://github.com/meshtastic/protobufs) repo is where all of the protocol buffer changes happen. See the [Protobuf API Reference](https://buf.build/meshtastic/protobufs/) for more details. +This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors, and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication. -### Device Firmware -The [firmware repo](https://github.com/meshtastic/firmware) is where all of the device firmware development happens. This is where the code for the ESP32, nRF52 and RP2040 based devices is developed. It is mainly C and C++ code. Think Arduino. It is where the first level of hardware interaction begins and ends. +## Supporting and Contributing to Meshtastic -### Firmware Modules +The Meshtastic project benefits greatly from the contributions of our volunteers and the financial support from our community. As the project has evolved, the expansion of features and services has led to increased financial needs, including hardware for development, GitHub fees, hosting for public MQTT services, among others. This growth into a robust platform for decentralized off-grid mesh networking solutions showcases the dedication of our developers and the generosity of our financial supporters. -[Modules](/docs/configuration/module) extend device and mesh functionality beyond core functions. These are also implemented mainly in the firmware repo above. Typically, you would add functions in the protobufs repo and the device repo to implement module functionality. You probably also want to have some client or device, use or interact with the module. This is where Device Interface support comes into play. +### How You Can Support Meshtastic Financially -### CLI Apps (Device Interface) +If direct development contribution is not feasible for you, financial support is another invaluable way to help Meshtastic grow and thrive. We offer two primary options for monetary donations: -- **Meshtastic Python CLI** - The [meshtastic/Meshtastic-python repository](https://github.com/meshtastic/Meshtastic-python) is a command line utility that allows you to interact with most of the device settings and functionality. This python library can also be consumed for other applications. See [Meshtastic Python Development](/docs/development/python/) for more details +
+
+ -### Web Apps (Device Interface) + +
+
-- **Meshtastic Web** - The [meshtastic/web repository](https://github.com/meshtastic/web) is where the hosted web server on the ESP32 devices in Typescript is developed. See the [Web Development Overview](/docs/development/web/) for more details. -- **Meshtastic JS** - The [meshtastic/meshtastic.js](https://github.com/meshtastic/meshtastic.js) repository is a JavaScript library that provides an interface for Meshtastic devices. See [Javascript Development](/docs/development/js) for more details +### Fiscal Sponsorships -### Mobile and Desktop Apps (Device Interface) +We're deeply thankful for the backing from the Open Collective, Open Source Collective, DigitalOcean, and Vercel, which has been instrumental in our project's sustainability and growth: -There are Android, iOS, iPadOS, and macOS apps that interact with Meshtastic devices: +- **Open Collective & Open Source Collective**: Our collaboration with these organizations offers a robust fiscal management framework and banking solutions, supporting our project alongside over three thousand other open source initiatives. Open Collective's transparent framework lets everyone see our finances, including income, expenditures, and contributions on [Meshtastic's Open Collective page](https://opencollective.com/meshtastic). This transparency and support affirm that we're in excellent company. -- **Android App** - The [meshtastic/Meshtastic-Android](https://github.com/meshtastic/Meshtastic-Android) repository contains the Kotlin code for Android based interactions with Meshtastic devices. See the [Android development instructions](/docs/development/android) on how to create a development environment and build the Meshtastic Android App. -- **Apple Apps** - The [meshtastic/Meshtastic-Apple](https://github.com/meshtastic/Meshtastic-Apple) repository contains the SwiftUI client applications code for iPhone, iPad and Mac. +- **DigitalOcean**: Champions of open source, DigitalOcean supports Meshtastic through credits, which significantly aid our development, infrastructure, and testing efforts. This contribution is part of their commitment to fostering innovation and collaboration within the open source ecosystem. -### Documentation - -The Meshtastic website (the one you are looking at right now) is in the [meshtastic/Meshtastic](https://github.com/meshtastic/meshtastic) repository. See [Maintaining Documentation](/docs/development/docs) for more details. +- **Vercel**: By covering our hosting costs, Vercel directly contributes to Meshtastic's growth, enhancing our web scalability and presence. Their sponsorship is crucial for our continued development and focus on creating a robust platform for decentralized communication. diff --git a/src/css/custom.css b/src/css/custom.css index 29f00293..bc9db741 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -82,13 +82,30 @@ html[data-theme="dark"] .header-github-link:before { color: var(--ifm-link-color); } + .split-container { display: flex; + justify-content: space-between; } + .split-item { flex: 1; + padding: 0 10px; } +/* mobile screens */ +@media (max-width: 768px) { + .split-container { + flex-direction: column; + } + + .split-item { + width: 100%; + padding: 10px 0; + } +} + + .indexCtasBody { --ifm-button-size-multiplier: 1.6; display: flex; diff --git a/src/pages/credits/index.tsx b/src/pages/credits/index.tsx deleted file mode 100644 index 18b87fa1..00000000 --- a/src/pages/credits/index.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import Link from "@docusaurus/Link"; -import Layout from "@theme/Layout"; - -const Credits = (): JSX.Element => { - return ( - -
-
-

Credits

-

- Meshtastic is community driven. Thousands of hours have been donated - by volunteers who want to develop this amazing project. Whether - you've submitted a pull request or triaged a bug in our - Discord/Forum. You've made Meshtastic possible. Thank you for your - contributions. -

-

- We would also like to recognize those who have donated financially - to the project. As Meshtastic has grown, we've aquired some ongoing - costs to keep the project running. Thank you for your generous - donations. -

-
-
-

Fiscal Sponsors

-

- We have partnered with both the{" "} - - Open Collective - {" "} - and the{" "} - - Open Source Collective - {" "} - to help us with a fiscal management framework and banking needs. - They help support over three thousand open source projects including - the PHP Foundation, F-Droid, Sonarr, LinuxServer and DarkReader. We - are in good hands and good company. -

-

- As with everything we do here, Open Collective provides a fully - transparent framework for our budget and expenses. You can see what - we’re bringing in, who is spending money and where that money is - going{" "} - - here - - . -

-

- In addition to our partnership with Open Collective and Open Source - Collective, we have also been approved into the{" "} - - GitHub Sponsors - {" "} - program where we can set fundraising goals with GitHub. -

-

- All donations made through GitHub will be deposited to our account - with the Open Source Collective and managed by the Open Collective. - This means we have a single place to monitor and maintain - transparency of our finances. -

-

If you are able, please contribute to this amazing project.

-
- - Sponsor Meshtastic - -
-
-
-

Contributors

-

- Literally thousands of hours have gone into creating, maintaining, - and improving Meshtastic. Without our contributors none of this - would be possible. Thank you for donating the time for each and - every commit, issue, and pull request. -

-
-
-
- ); -}; - -export default Credits; From e28515c4ec7a97249cce7fbf13fa68cbe3fffb25 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Mon, 12 Feb 2024 11:54:46 -0700 Subject: [PATCH 24/46] forgot docs, duh. --- docs/about/contributing.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/about/contributing.mdx b/docs/about/contributing.mdx index 7a141d90..e2b4383d 100644 --- a/docs/about/contributing.mdx +++ b/docs/about/contributing.mdx @@ -34,6 +34,7 @@ Key components include: - **CLI Apps (Device Interface)**: The [Meshtastic Python CLI](https://github.com/meshtastic/Meshtastic-python) enables interaction with device settings and functionalities, serving both as a utility and a library for application development. - **Web and JavaScript Apps**: Development for the hosted web server on ESP32 devices is done in [Meshtastic Web](https://github.com/meshtastic/web), with a JavaScript library for device interfaces available in [Meshtastic JS](https://github.com/meshtastic/meshtastic.js). - **Mobile and Desktop Apps**: Android, iOS, iPadOS, and macOS applications provide user interfaces for interacting with Meshtastic devices. Development for Android is detailed in the [Meshtastic-Android repository](https://github.com/meshtastic/Meshtastic-Android), while Apple platforms are supported by the [Meshtastic-Apple repository](https://github.com/meshtastic/Meshtastic-Apple). +- **Documentation**: The source for the Meshtastic website and documentation resides in the [meshtastic/meshtastic repository](https://github.com/meshtastic/meshtastic). For guidelines on maintaining documentation, visit the [Maintaining Documentation](/docs/development/docs) page. This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors, and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication. From b45e78d95030d1e298446540641a538bce94fa6a Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Mon, 12 Feb 2024 12:18:55 -0700 Subject: [PATCH 25/46] comma comma comma chameleon --- docs/about/contributing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/about/contributing.mdx b/docs/about/contributing.mdx index e2b4383d..58759c9b 100644 --- a/docs/about/contributing.mdx +++ b/docs/about/contributing.mdx @@ -36,7 +36,7 @@ Key components include: - **Mobile and Desktop Apps**: Android, iOS, iPadOS, and macOS applications provide user interfaces for interacting with Meshtastic devices. Development for Android is detailed in the [Meshtastic-Android repository](https://github.com/meshtastic/Meshtastic-Android), while Apple platforms are supported by the [Meshtastic-Apple repository](https://github.com/meshtastic/Meshtastic-Apple). - **Documentation**: The source for the Meshtastic website and documentation resides in the [meshtastic/meshtastic repository](https://github.com/meshtastic/meshtastic). For guidelines on maintaining documentation, visit the [Maintaining Documentation](/docs/development/docs) page. -This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors, and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication. +This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication. ## Supporting and Contributing to Meshtastic From 033dd28d6a1bb1995e0134a229386cd49c621da6 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Mon, 12 Feb 2024 20:34:15 -0600 Subject: [PATCH 26/46] Update sensor description to match apps --- docs/configuration/radio/device.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/radio/device.mdx b/docs/configuration/radio/device.mdx index 2d4af4ba..454d0a2c 100644 --- a/docs/configuration/radio/device.mdx +++ b/docs/configuration/radio/device.mdx @@ -19,7 +19,7 @@ The device config options are: Role, Serial Output, and Debug Log. Device config | CLIENT_HIDDEN | Device that only broadcasts as needed for stealth or power savings. | Use in stealth/hidden deployments or to reduce airtime/power consumption while still participating in the network. | | TRACKER | Broadcasts GPS position packets as priority. | Tracking the location of individuals or assets, especially in scenarios where timely and efficient location updates are critical. | | LOST_AND_FOUND | Broadcasts location as message to default channel regularly for to assist with device recovery. | Used for recovery efforts of a lost device. | -| SENSOR | Prioritizes broadcasting GPS position packets. | Deploying in scenarios where gathering environmental or other sensor data is crucial, with efficient power usage and frequent updates. | +| SENSOR | Broadcasts telemetry packets as priority. | Deploying in scenarios where gathering environmental or other sensor data is crucial, with efficient power usage and frequent updates. | | TAK | Optimized for ATAK system communication, reduces routine broadcasts. | Integration with ATAK systems for communication in tactical or coordinated operations. | | REPEATER | Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is not shown in topology. | | ROUTER | Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is shown in topology. | From f44dc114bb878da729838d64cff06f247da57008 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Mon, 12 Feb 2024 20:35:45 -0700 Subject: [PATCH 27/46] fix location and indentation --- docs/hardware/devices/rak/core-modules.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hardware/devices/rak/core-modules.mdx b/docs/hardware/devices/rak/core-modules.mdx index 06b1f30c..3b22bb1e 100644 --- a/docs/hardware/devices/rak/core-modules.mdx +++ b/docs/hardware/devices/rak/core-modules.mdx @@ -163,11 +163,11 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep - Firmware file: `firmware-rak11310-X.X.X.xxxxxxx.uf2` - Further information on the RAK11310 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11310/Overview/#product-description). - Purchase Links: + - US + - [Rokland](https://store.rokland.com/products/rak-raspberry-pi-rp2040-core-module-for-lorawan-with-lora-sx1262-us915-mhz-rak11310-pid-116003) - International - [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html) - - US - - [Rokland](https://store.rokland.com/products/rak-raspberry-pi-rp2040-core-module-for-lorawan-with-lora-sx1262-us915-mhz-rak11310-pid-116003) From 09c9f052ec26ef45bf85672ef04a1e869e2eca80 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Mon, 12 Feb 2024 20:40:48 -0700 Subject: [PATCH 28/46] fix indentation --- docs/hardware/devices/rak/core-modules.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hardware/devices/rak/core-modules.mdx b/docs/hardware/devices/rak/core-modules.mdx index f1316ee8..d178d146 100644 --- a/docs/hardware/devices/rak/core-modules.mdx +++ b/docs/hardware/devices/rak/core-modules.mdx @@ -117,7 +117,7 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep - Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description). - Purchase Links: - US - - [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023) + - [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023) - International - [RAK Wireless Store](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256802312474717.html) From 9c3a79ce6b384347097bdf519c47b03e4cff4e1f Mon Sep 17 00:00:00 2001 From: nagumii <40807970+nagumii@users.noreply.github.com> Date: Tue, 13 Feb 2024 21:20:12 +0200 Subject: [PATCH 29/46] Update power.mdx Removed the specific reference to lipo batteries, as instructions also apply to lithium ion batteries such as 18650s. --- docs/configuration/radio/power.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/radio/power.mdx b/docs/configuration/radio/power.mdx index 6af55f9e..e3a62696 100644 --- a/docs/configuration/radio/power.mdx +++ b/docs/configuration/radio/power.mdx @@ -38,7 +38,7 @@ Should be set to floating point value between 2 and 6 #### Calibration Process ([Attribution](https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer#calibration-process)) -1. Install the rechargeable Li-Polymer battery. +1. Install the rechargeable battery. 2. Charge the battery until full. Indication of this state may vary depending on device. At this point, the battery voltage should be 4.2V +-1%. 3. Input the "Battery Charge Percent" displayed on the screen or in your connected app into the calculator below. 4. If "Battery Charge Percent" (e.g., B 3.82V 60%) is not displayed on the screen, it means that the default value of "Operative Adc Multiplier" is too high. Lower the "Operative Adc Multiplier" to a smaller number (it is recommended to decrease by 0.1) until the screen displays "Battery Charge Percent". Enter the current "Operative Adc Multiplier" in use into the "Operative Adc Multiplier" field in the calculator. Also, input the "Battery Charge Percent" displayed on the screen into the calculator. From 06851e3aac045d4be5ed459ae267931c1f7b7966 Mon Sep 17 00:00:00 2001 From: Smoke <86024507+crypto-smoke@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:17:24 -1000 Subject: [PATCH 30/46] Update local-groups.mdx Update link for SD mesh discord --- docs/community/local-groups.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community/local-groups.mdx b/docs/community/local-groups.mdx index 43a6d309..d763f2c3 100644 --- a/docs/community/local-groups.mdx +++ b/docs/community/local-groups.mdx @@ -30,7 +30,7 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. - [Laguna Mesh](https://lagunamesh.com) - [Mission Viejo Mesh](https://missionviejomesh.org/) - [Bay Area Mesh](https://canvis.app/z2k8a8) -- [San Diego Mesh](https://discord.gg/HzE248x2) +- [San Diego Mesh](https://discord.gg/k8RputgWgD) ### Colorado - [Denver Mesh](https://denvermesh.org) From 1a5a0c7ded4e2b2e6565498b4c3e5031f732215c Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Mon, 12 Feb 2024 09:15:04 -0600 Subject: [PATCH 31/46] Initial FAQ setup with structured data structured data auto expand working with url better url handling for preexpand support multiple but not quite real multi support --- docs/about/faq.mdx | 58 +++++++++++-------- package.json | 2 + pnpm-lock.yaml | 42 ++++++++++++++ src/components/FaqAccordion.tsx | 99 +++++++++++++++++++++++++++++++++ 4 files changed, 178 insertions(+), 23 deletions(-) create mode 100644 src/components/FaqAccordion.tsx diff --git a/docs/about/faq.mdx b/docs/about/faq.mdx index e28e6a81..1c307293 100644 --- a/docs/about/faq.mdx +++ b/docs/about/faq.mdx @@ -5,39 +5,51 @@ slug: /faq sidebar_position: 3 --- -## Overview +import { FaqAccordion } from "/src/components/FaqAccordion"; -### Where can I get additional help, ask questions, or bond with the Meshtastic community? - -This site (which has a great search function) is the preferred place for up-to-date documentation. Many of our users and developers hang out on the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) server where you may connect with like-minded people. - -### How can I contribute to Meshtastic? - -Everyone contributes in a different way. Join the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) and introduce yourself. We're all very friendly. If you'd like to pitch in some code, check out the [Development](/docs/developers) menu on the left. - - - -## Android Client - -### 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/). - -### What does the icon next to the message mean? +export const GeneralFaq = [ + { + title: "Where can I get additional help, ask questions, or bond with the Meshtastic community?", + content: `This site (which has a great search function) is the preferred place for up-to-date documentation. Many of our users and developers hang out on the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) server where you may connect with like-minded people.`, + }, + { + title: "How can I contribute to Meshtastic?", + content: "Everyone contributes in a different way. Join the [Meshtastic Discord](https://discord.gg/ktMAKGBnBs) and introduce yourself. We're all very friendly. If you'd like to pitch in some code, check out the [Development](/docs/developers) menu on the left.", + }, +]; +export const AndroidFaq = [ + { + title: "What versions of Android does the Meshtastic Android App require?", + content: `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/).`, + }, + { + title: "What does the icon next to the message mean?", + content: ` - Cloud with an up arrow - Queued on the app to be sent to your device. - Cloud only - Queued on the device to be sent over the mesh. - Cloud with a check mark - At least one other node on the mesh acknowledged the message. - Person with a check mark - The intended recipient of your direct message acknowledged the message. -- Cloud crossed out - Not acknowledged or message error. +- Cloud crossed out - Not acknowledged or message error.`, + }, + { + title: "How can I clear the message history?", + content: `Long press any message to select and show the menu with "delete" and "select all" buttons.`, + }, + { + title: "After a fresh firmware install, my node is not connecting via Bluetooth. What should I do?", + content: `Try forgetting the Bluetooth connection from the Android Bluetooth Settings menu. Re-pair and try again. This is a security measure and there is no workaround for it. It prevents apps and other accessories from spoofing an existing accessory by un-pairing and "re-pairing" themselves without the users' knowledge.`, + }, +]; -### How can I clear the message history? +## Overview -Long press any message to select and show the menu with "delete" and "select all" buttons. + -### After a fresh firmware install, my node is not connecting via Bluetooth. What should I do? + -Try forgetting the Bluetooth connection from the Android Bluetooth Settings menu. Re-pair and try again. This is a security measure and there is no workaround for it. It prevents apps and other accessories from spoofing an existing accessory by un-pairing and "re-pairing" themselves without the users' knowledge. +## Android Client + diff --git a/package.json b/package.json index 67ac5d29..9c6cd02d 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,10 @@ "dotenv": "^16.3.1", "postcss": "^8.4.33", "react": "^18.2.0", + "react-accessible-accordion": "^5.0.0", "react-dom": "^18.2.0", "react-icons": "^4.12.0", + "react-markdown": "^9.0.1", "remark-deflist": "^1.0.0", "swr": "^2.2.4", "tailwindcss": "^3.4.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56fe66f7..756fa2f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,12 +50,18 @@ dependencies: react: specifier: ^18.2.0 version: 18.2.0 + react-accessible-accordion: + specifier: ^5.0.0 + version: 5.0.0(react-dom@18.2.0)(react@18.2.0) react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-icons: specifier: ^4.12.0 version: 4.12.0(react@18.2.0) + react-markdown: + specifier: ^9.0.1 + version: 9.0.1(@types/react@18.2.47)(react@18.2.0) remark-deflist: specifier: ^1.0.0 version: 1.0.0 @@ -5793,6 +5799,10 @@ packages: engines: {node: '>=8'} dev: false + /html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + dev: false + /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false @@ -8413,6 +8423,16 @@ packages: strip-json-comments: 2.0.1 dev: false + /react-accessible-accordion@5.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MT2obYpTgLIIfPr9d7hEyvPB5rg8uJcHpgA83JSRlEUHvzH48+8HJPvzSs+nM+XprTugDgLfhozO5qyJpBvYRQ==} + peerDependencies: + react: ^16.3.2 || ^17.0.0 || ^18.0.0 + react-dom: ^16.3.3 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-dev-utils@12.0.1(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} @@ -8529,6 +8549,28 @@ packages: webpack: 5.89.0 dev: false + /react-markdown@9.0.1(@types/react@18.2.47)(react@18.2.0): + resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + dependencies: + '@types/hast': 3.0.3 + '@types/react': 18.2.47 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.0 + html-url-attributes: 3.0.0 + mdast-util-to-hast: 13.0.2 + react: 18.2.0 + remark-parse: 11.0.0 + remark-rehype: 11.0.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /react-router-config@5.1.1(react-router@5.3.4)(react@18.2.0): resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: diff --git a/src/components/FaqAccordion.tsx b/src/components/FaqAccordion.tsx new file mode 100644 index 00000000..bc4f360e --- /dev/null +++ b/src/components/FaqAccordion.tsx @@ -0,0 +1,99 @@ +import React from "react"; +import ReactMarkdown from "react-markdown"; +import { + Accordion, + AccordionItem, + AccordionItemHeading, + AccordionItemButton, + AccordionItemPanel, +} from "react-accessible-accordion"; +import "react-accessible-accordion/dist/fancy-example.css"; + +export interface Faq { + title: string; + content: string; +} + +/** + * Gets the query parameter `openFaqItems` which is an array of + * faq items that should be pre-opened + * @type {Function} + */ +const getOpenFaqItemsFromUrl = (slug: String): string[] => { + // Use URLSearchParams to parse the query parameters from the current URL + const searchParams = new URLSearchParams(window.location.search); + + // Get the 'openFaqItems' parameter as a comma-separated string + const openFaqItemsString = searchParams.get(`openFaqItems-${slug}`); + + // If the parameter exists, split it by commas into an array; otherwise, return an empty array + return openFaqItemsString ? openFaqItemsString.split(',') : []; +}; + +export const FaqAccordion = ({ + rows, + slug +}: { rows: Faq[], slug: String }): JSX.Element => { + // Set the faq structured data + const faqStructuredData = { + "@context": "https://schema.org", + "@type": "FAQPage", + mainEntity: rows.map((row) => ({ + "@type": "Question", + name: row.title, + acceptedAnswer: { + "@type": "Answer", + text: row.content, + }, + })), + }; + + // Use the getOpenFaqItemsFromUrl function to set the + // initial state of preExpanded based on URL parameters + const [preExpanded, setPreExpanded] = React.useState(getOpenFaqItemsFromUrl(slug)); + + /** + * Updates query parameters in the url when items are opened + * so that a link can be shared with the faq item already opened + */ + const handleChange = (openFaqItems: (string | number)[]): void => { + // Get current url params + const searchParams = new URLSearchParams(window.location.search); + + // Convert openFaqItems to a comma-separated string and update/add the parameter + searchParams.set(`openFaqItems-${slug}`, openFaqItems.map(String).join(',')); + + // Construct the new URL, preserve existing parameters + const newUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}?${searchParams.toString()}`; + + // Use history.pushState to change the URL without reloading the page + window.history.pushState({ path: newUrl }, '', newUrl); + }; + + return ( + <> + + ); +}; From 6a355e5c2437aefe43627e2cfdaf5a3d94170216 Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Tue, 13 Feb 2024 20:49:19 -0700 Subject: [PATCH 43/46] corrections from feedback --- docs/software/android/translate.mdx | 2 +- docs/software/apple/translate.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/software/android/translate.mdx b/docs/software/android/translate.mdx index af5a6542..ce26aaf5 100644 --- a/docs/software/android/translate.mdx +++ b/docs/software/android/translate.mdx @@ -7,7 +7,7 @@ sidebar_position: 3 ## How to Contribute -Contributing translations to the Meshtastic Apple app helps make the project accessible to a wider audience. Follow these steps to add your translations through Crowdin: +Contributing translations to the Meshtastic Android app helps make the project accessible to a wider audience. Follow these steps to add your translations through Crowdin: 1. **Access Crowdin**: Visit the Meshtastic project's Crowdin page at [https://crowdin.meshtastic.org](https://crowdin.meshtastic.org). 2. **Create an Account**: Click on 'Sign Up' in the top right corner of the page and follow the prompts to create a Crowdin account. diff --git a/docs/software/apple/translate.mdx b/docs/software/apple/translate.mdx index 07ec1fb3..50ddac52 100644 --- a/docs/software/apple/translate.mdx +++ b/docs/software/apple/translate.mdx @@ -11,7 +11,7 @@ Contributing translations to the Meshtastic Apple app helps make the project acc 1. **Fork the Repository**: Start by forking the [Meshtastic-Apple repository]() to your GitHub account. 2. **Create a Language Folder**: In your forked repository, create a new folder for your language using the language code followed by `.lproj`. For example, for German, create a folder named `de.lproj`. -3. **Copy the Localizable.strings File**: Navigate to the English strings folder [here]() and copy the `Localizable.strings` file. Paste this file into the folder you created in the previous step. +3. **Copy the Localizable.strings File**: Navigate to the [English strings folder]() and copy the `Localizable.strings` file. Paste this file into the folder you created in the previous step. 4. **Translate the Strings**: Open the `Localizable.strings` file in your language folder and translate the English strings into your language. Be sure to maintain the format of the file. 5. **Create a Pull Request**: Once you've completed the translation, create a new pull request from your forked repository to the main Meshtastic-Apple repository. Title the pull request appropriately (e.g., "Add German Translation") and describe the changes you've made. From 54c6569df4f9edbd64b9b62fec94e2f553cf3c8b Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Tue, 13 Feb 2024 20:50:25 -0700 Subject: [PATCH 44/46] fixes --- docs/software/android/translate.mdx | 2 +- docs/software/apple/translate.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/software/android/translate.mdx b/docs/software/android/translate.mdx index af5a6542..ce26aaf5 100644 --- a/docs/software/android/translate.mdx +++ b/docs/software/android/translate.mdx @@ -7,7 +7,7 @@ sidebar_position: 3 ## How to Contribute -Contributing translations to the Meshtastic Apple app helps make the project accessible to a wider audience. Follow these steps to add your translations through Crowdin: +Contributing translations to the Meshtastic Android app helps make the project accessible to a wider audience. Follow these steps to add your translations through Crowdin: 1. **Access Crowdin**: Visit the Meshtastic project's Crowdin page at [https://crowdin.meshtastic.org](https://crowdin.meshtastic.org). 2. **Create an Account**: Click on 'Sign Up' in the top right corner of the page and follow the prompts to create a Crowdin account. diff --git a/docs/software/apple/translate.mdx b/docs/software/apple/translate.mdx index 07ec1fb3..50ddac52 100644 --- a/docs/software/apple/translate.mdx +++ b/docs/software/apple/translate.mdx @@ -11,7 +11,7 @@ Contributing translations to the Meshtastic Apple app helps make the project acc 1. **Fork the Repository**: Start by forking the [Meshtastic-Apple repository]() to your GitHub account. 2. **Create a Language Folder**: In your forked repository, create a new folder for your language using the language code followed by `.lproj`. For example, for German, create a folder named `de.lproj`. -3. **Copy the Localizable.strings File**: Navigate to the English strings folder [here]() and copy the `Localizable.strings` file. Paste this file into the folder you created in the previous step. +3. **Copy the Localizable.strings File**: Navigate to the [English strings folder]() and copy the `Localizable.strings` file. Paste this file into the folder you created in the previous step. 4. **Translate the Strings**: Open the `Localizable.strings` file in your language folder and translate the English strings into your language. Be sure to maintain the format of the file. 5. **Create a Pull Request**: Once you've completed the translation, create a new pull request from your forked repository to the main Meshtastic-Apple repository. Title the pull request appropriately (e.g., "Add German Translation") and describe the changes you've made. From 6f0a844f0243b306a43d07b989688f6f9271a868 Mon Sep 17 00:00:00 2001 From: "thomas.ekstrand" Date: Wed, 14 Feb 2024 13:16:41 -0600 Subject: [PATCH 45/46] color feedback --- src/css/faq.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/css/faq.css b/src/css/faq.css index 7f25880b..5592460a 100644 --- a/src/css/faq.css +++ b/src/css/faq.css @@ -8,7 +8,7 @@ } .accordion__button { - background-color: var(--ifm-background-surface-color); + background-color: var(--ifm-footer-background-color); border: none; cursor: pointer; padding: calc(var(--ifm-pre-padding)/1.5); @@ -17,7 +17,7 @@ } .accordion__button:hover { - background-color: var(--ifm-footer-background-color); + background-color: var(--ifm-background-surface-color); } .accordion__button:before { @@ -41,6 +41,6 @@ } .accordion__panel { - background: var(--ifm-footer-background-color); + background: var(--ifm-background-color); padding: var(--ifm-pre-padding); } From 8bb2e3d01de79d8b42be92f3761ae5226b182ef5 Mon Sep 17 00:00:00 2001 From: nagumii <40807970+nagumii@users.noreply.github.com> Date: Thu, 15 Feb 2024 11:25:08 +0200 Subject: [PATCH 46/46] Update lora.mdx I've noticed a tendency of users to set to very-long-slow because they think the only disadvantage is speed. As per conversations with Garth, very-long-slow is unreliable, rarely ACKs and does not form meshes well. This is mentioned nowhere in the docs. --- docs/configuration/radio/lora.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/radio/lora.mdx b/docs/configuration/radio/lora.mdx index 12e1ed7e..ef6ce30f 100644 --- a/docs/configuration/radio/lora.mdx +++ b/docs/configuration/radio/lora.mdx @@ -51,7 +51,7 @@ The Presets available are as follows, and follow a linear pattern of Fastest \<\ 7. `LONG_SLOW` -8. `VERY_LONG_SLOW` (Slowest, lowest bandwidth, highest airtime, longest range) +8. `VERY_LONG_SLOW` (Slowest, lowest bandwidth, highest airtime, longest range. Not recommended for regular usage as does not form meshes well and is unreliable) ### Max Hops