diff --git a/docs/community/local-groups.mdx b/docs/community/local-groups.mdx index a6390dce..18f47d0e 100644 --- a/docs/community/local-groups.mdx +++ b/docs/community/local-groups.mdx @@ -41,7 +41,7 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. - [Hawaii Meshnet](https://www.hawaiimesh.net/) ### Illinois -- [Chicagoland Meshtastic](https://discord.com/invite/DUejYDPupT) +- [Chicagoland Meshtastic](https://chicagolandmesh.org/) ### Massachusetts - [Boston Meshnet](https://github.com/Darachnid/Boston-Meshnet) @@ -52,6 +52,9 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. ### Texas - [Austin Mesh](https://austinmesh.org/) +## Poland +- [Meshtastic Poland Matrix Space](https://matrix.to/#/#meshtasticpl:matrix.org) + ## United Kingdon - [UK Meshtastic Kent / South East](https://www.facebook.com/groups/ukmeshtastickent/) - [UK Meshtastic Brighton](https://www.facebook.com/groups/3696312513946679/) diff --git a/docs/configuration/module/mqtt.mdx b/docs/configuration/module/mqtt.mdx index cd19d785..0979602c 100644 --- a/docs/configuration/module/mqtt.mdx +++ b/docs/configuration/module/mqtt.mdx @@ -10,7 +10,7 @@ import TabItem from "@theme/TabItem"; If your device is connected to Internet via wifi or ethernet, you can enable it to forward packets along to an MQTT server. This allows users on the local mesh to communicate with users on the internet. One or more channels must also be enabled as uplink and/or downlink for packets to be transmitted from and/or to your mesh (See [channels](/docs/configuration/radio/channels#downlink-enabled)). Without these settings enabled, the node will still connect to the MQTT server but only send status messages. -The MQTT module config options are: Enabled, Server Address, Username, Password, Encryption Enabled, JSON Enabled, TLS Enabled, and Root Topic. MQTT Module config uses an admin message sending a `ConfigModule.MQTT` protobuf. +The MQTT module config options are: Enabled, Server Address, Username, Password, Encryption Enabled, JSON Enabled, TLS Enabled, Root Topic, Client Proxy Enabled, Map Reporting Enabled (with Position Precision and Publish Interval). MQTT Module config uses an admin message sending a `ConfigModule.MQTT` protobuf. ## Settings @@ -53,6 +53,26 @@ If true, we attempt to establish a secure connection using TLS. The root topic to use for MQTT messages. This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs. +### Client Proxy Enabled +If true, let the device use the client's (e.g. your phone's) network connection to connect to the MQTT server. If false, it uses the device's network connection which you have to enable via the [network settings](/docs/configuration/radio/network). + +### Map Reporting Enabled + +Available from firmware version 2.3.2 on. +If true, your node will periodically send an unencrypted map report to the MQTT server to be displayed by online maps that support this packet. This report includes the following information: +- The node's long and short name and ID; +- The node's position (with configurable precision) and altitude; +- The node's hardware model and [role](/docs/configuration/radio/device/#roles); +- The node's firmware version; +- The node's LoRa region, modem preset and primary channel name; +- Whether the node can be reached on the default channel with known key; +- Number of local online nodes (heard in the last 2 hours, excluding those heard via MQTT). + +#### Map Report Position Precision +The precision to use for the position in the map report. Defaults to a maximum deviation of around 1459m. + +#### Map Report Publish Interval +How often we should publish the map report to the MQTT server in seconds. Defaults to 900 seconds (15 minutes). ## MQTT Module Config Client Availability Mod :::info -All MQTT module config options are available in the python CLI. Example commands are below: +The following configuration options are available in the Python CLI: ::: -| Setting | Acceptable Values | Default | -| :---------------------: | :---------------: | :-----------------: | -| mqtt.enabled | `true`, `false` | `false` | -| mqtt.address | `string` |`mqtt.meshtastic.org`| -| mqtt.username | `string` | `meshdev` | -| mqtt.password | `string` | `large4cats` | -| mqtt.encryption_enabled | `true`, `false` | `false` | -| mqtt.json_enabled | `true`, `false` | `false` | -| mqtt.tls_enabled | `true`, `false` | `false` | -| mqtt.root | `string` | | +| Setting | Acceptable Values | Default | +| :--------------------------: | :---------------: | :-----------------: | +| mqtt.enabled | `true`, `false` | `false` | +| mqtt.address | `string` |`mqtt.meshtastic.org`| +| mqtt.username | `string` | `meshdev` | +| mqtt.password | `string` | `large4cats` | +| mqtt.encryption_enabled | `true`, `false` | `false` | +| mqtt.json_enabled | `true`, `false` | `false` | +| mqtt.tls_enabled | `true`, `false` | `false` | +| mqtt.root | `string` | | +| mqtt.proxy_to_client_enabled | `true`, `false` | `false` | +| mqtt.map_reporting_enabled | `true`, `false` | `false` | :::tip diff --git a/docs/configuration/radio/power.mdx b/docs/configuration/radio/power.mdx index 2e2303b5..7621cfd9 100644 --- a/docs/configuration/radio/power.mdx +++ b/docs/configuration/radio/power.mdx @@ -93,17 +93,19 @@ Should be set to floating point value between 2 and 6 | Device | Default ADC Multiplier | | :-------: | :--------------------: | - | hatter2 | 5.0 | + | chatter2 | 5.0 | | diy | 1.85 | | esp32-s3-pico | 3.1 | | heltec_v1 & heltec_v2 | 3.2 | | heltec_v3 & heltec_wsl_v3 | 4.9 | | heltec_wireless_paper | 2 | - | heltec_wireless_tracker | 4.9 | + | heltec_wireless_tracker 1.0/1.1 | 4.9 | | lora_isp4520 | 1.436 | | m5stack_coreink | 5 | | nano-g1-explorer | 2 | + | nano-g2-ultra | 2 | | picomputer-s3 | 3.1 | + | rak4631 | 1.73 | | rpipico | 3.1 | | rpipicow | 3.1 | | station-g1 | 6.45 | @@ -112,7 +114,7 @@ Should be set to floating point value between 2 and 6 | tlora_v2_1_18 | 2.11 | | tlora_t3s3_v1 | 2.11 | | t-deck | 2.11 | - | trackerd | 2 | + | t-echo | 2 | diff --git a/docs/development/python/index.mdx b/docs/development/python/index.mdx index f774c13a..f0137d0d 100644 --- a/docs/development/python/index.mdx +++ b/docs/development/python/index.mdx @@ -94,14 +94,6 @@ pytest --durations=0 make slow ``` -### Generate the Python API documentation - -Pre-generated: [API documentation](https://python.meshtastic.org) - -```shell -bin/regen-docs.sh -``` - ## Wire encoding When sending protobuf packets over serial or TCP each packet is preceded by uint32 sent in network byte order (big endian). diff --git a/docs/hardware/antennas/antenna-report.mdx b/docs/hardware/antennas/antenna-report.mdx index 06e74868..c6900392 100644 --- a/docs/hardware/antennas/antenna-report.mdx +++ b/docs/hardware/antennas/antenna-report.mdx @@ -5,8 +5,10 @@ sidebar_label: Testing Reports sidebar_position: 2 --- -## RicInNewMexico +## Community Evaluations -[_RicInNewMexico_](https://github.com/RicInNewMexico) and others have gone through the trouble of testing a number of commonly purchased antennas in the Meshtastic community and given an opinion on whether or not a given antenna is performing optimally. +The Meshtastic Antenna Reports repository started as a project by [RicInNewMexico](https://github.com/RicInNewMexico) before being officially transferred to the Meshtastic organization. It contains testing reports and evaluations of various antennas commonly used with Meshtastic devices, contributed by members of the community. -Please check out the project on Github: [Meshtastic-Antenna-Reports](https://github.com/RicInNewMexico/Meshtastic-Antenna-Reports) +These users have gone through the effort of testing and providing their opinions on whether specific antennas perform optimally with Meshtastic devices. + +If you wish to contribute a testing report or evaluation, please review the contribution guidelines in the [Meshtastic Antenna Reports](https://github.com/meshtastic/antenna-reports) Github repository. \ No newline at end of file diff --git a/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx b/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx new file mode 100644 index 00000000..f92604b9 --- /dev/null +++ b/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx @@ -0,0 +1,140 @@ +--- +id: linux-native-hardware +title: Meshtastic on Linux-Native Devices +sidebar_label: Linux Native Devices +sidebar_position: 11 +description: Set up and configure Meshtastic on Linux-native devices using the meshtasticd binary. +--- + +This page outlines the setup of Meshtastic on Linux-native devices, utilizing portduino to run the Meshtastic firmware under Linux. + +## Prerequisites and Hardware Compatibility + +Before proceeding with the setup, ensure the device meets the following requirements: + +### Tested Devices +- Raspberry Pi zero, zero 2 , 3,4, Pi 400, and Pi 5.[^1] +- Ubuntu 22.04 X86_64 with a CH341-SX1262 DIY dongle.[^2] +- Debian GNU/Linux trixie/sid riscv64 on Cvitek CV180X ASIC, C906 (Milk-V Duo), on the SPI bus. + +[^1]: While the Raspberry Pi Zero has been tested with meshtasticd, building as a native ARM32 binary has proven challenging. As a workaround, consider building on a Raspberry Pi 4 or 5 with a 32-bit OS and copying the output file to the Pi Zero. +[^2]: **Limited Functionality with CH341-SX1262 Device:** Please be aware that the CH341-SX1262 device is currently experiencing partial functionality issues. For reasons yet to be determined, this device struggles with sending packets larger than a few bytes. + +### Hardware Compatibility +- Tested radios include Waveshare SX126X, Adafruit RFM9x, and Elecrow Lora RFM95 IOT. +- Support for I2C displays, SPI displays, and keyboard input has been confirmed. It is necessary to be aware of potential pin conflicts when stacking hats. +- UART HATs and SX1302/SX1303 chip-based HATs are not supported. + +### System Requirements +- The Meshtastic binary, `meshtasticd`, necessitates root access or a user with permissions to access GPIO, SPI, and other interfaces. +- A Linux distribution compatible with the Meshtastic installation package, which is compiled for Debian Bookworm and not compatible with Bullseye. + +## Installation + +### Installing Meshtasticd + +- Necessary system libraries should be installed before building or installing Meshtastic. + +```shell +sudo apt install libgpiod-dev libyaml-cpp-dev libbluetooth-dev +``` +- And optionally for web server support +```shell +sudo apt install openssl libssl-dev libulfius-dev liborcania-dev +``` + +- The .deb Package is available as part of the release, installing the binary, a systemd service, and a config file. It is compiled for Debian Bookworm and incompatible with Bullseye. +```shell +sudo apt install ./meshtasticd_{version}arm64.deb +``` + +## Configuration + +### Hardware Interfaces + +For devices requiring SPI or I2C: + +- SPI support can be enabled in `/boot/config.txt` or `/boot/firmware/config.txt`: + +```plaintext +dtparam=spi=on +dtoverlay=spi0-0cs +``` + +- I2C support is enabled with: + +```plaintext +dtparam=i2c_arm=on +``` + +### Meshtasticd Configuration + +- The meshtasticd configuration is at `/etc/meshtasticd/config.yaml` by default. If a `config.yaml` is found in the current directory, that takes precedence. And a config file specified with the `-c/--config` option has the highest precedence. + +To enable a LoRa radio connected to your device, uncomment the appropriate lines in the config file, including the Module line. As an example, the Waveshare SX126X module would have a Lora section that looks like this: + +```yaml +Lora: + Module: sx1262 # Waveshare SX126X XXXM + DIO2_AS_RF_SWITCH: true + CS: 21 + IRQ: 16 + Busy: 20 + Reset: 18 +``` +:::info +The config.yaml file is sensitive to spacing, so ensure that the indentation and spacing are correct. +::: + +### Web Server + +- Meshtasticd has web server support starting with release 2.3.0 To enable this: + +```plaintext +Webserver: + Port: 443 # Port for Webserver & Webservices + RootPath: /usr/share/doc/meshtasticd/web # Root Dir of WebServer +``` + +### GPS Support + +Enabling UART for GPS hats requires modifications in `/boot/firmware/config.txt`: + +```plaintext +# Needed for all Pi device. +enable_uart=1 + +# Needed for the Pi 5 only. +dtoverlay=uart0 +``` + +- The correct port for UART GPS on the Pi 5 after a reboot is `/dev/ttyAMA0`. +- The correct port for UART GPS on earlier Pi versions after a reboot is `/dev/ttyS0`. + +### Persistence + +- The persistent .proto db files of the portduino version of meshtasticd are stored under: `/root/.portduino/default/prefs/`. + +### Advanced Setup and Troubleshooting + +- Installation of drivers for CH341 is required for Ubuntu 22.04 and other systems for SPI/I2C/GPIO support. + +```shell +git clone https://github.com/frank-zago/ch341-i2c-spi-gpio.git +cd ch341-i2c-spi-gpio +make +sudo insmod ch341-core.ko +sudo insmod gpio-ch341.ko +sudo insmod i2c-ch341.ko +sudo insmod spi-ch341.ko +``` + +- Devices with kernels older than 5.16 may need to blacklist ch341, while kernels 6.0 and newer are observed to work more reliably. + +## CLI Configuration + +Interaction with Meshtastic can be conducted via the command line: + +```shell +meshtastic --host localhost ... +``` diff --git a/docs/hardware/devices/lora/index.mdx b/docs/hardware/devices/lora/index.mdx index af7274b7..8b948fe9 100644 --- a/docs/hardware/devices/lora/index.mdx +++ b/docs/hardware/devices/lora/index.mdx @@ -145,7 +145,7 @@ This board is still in production but for various reasons not recommended for ne ## Lora v2.1-1.6 :::caution -Early versions of some of these boards contained the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged. Boards purchased after 2021 should be ok. +Early versions of these boards contained the wrong component in the LiPo battery charging circuit allowing the battery to be overcharged. Boards purchased after 2021, unless the version is T3_v1.6 20180606, should not have this issue. ::: - **MCU** diff --git a/docs/legal/licensing-and-trademark.mdx b/docs/legal/licensing-and-trademark.mdx index 49661b34..53c459a2 100644 --- a/docs/legal/licensing-and-trademark.mdx +++ b/docs/legal/licensing-and-trademark.mdx @@ -115,7 +115,20 @@ We have provided design files for these logos in our [Meshtastic Design reposito ### Social Media -In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks, including the term "Meshtastic" in a Social Media account. It is not permissible without written permission of Meshtastic. +In the past, community members have inquired whether it is permissible to use the Meshtastic Trademarks, including the term "Meshtastic" in a Social Media account. This is permitted provided that the phrasing doesn't indicate official sponsorship by Meshtastic. Examples: + +- Meshtastic South Africa Users Group +- Meshtastic North America Community +- Cardiff Meshtastic Club +- Meshtastic UK Association + + +Examples not permitted: + +- Meshtastic +- Meshtastic UK + +Meshtastic also grants communities and user groups permission to use the Meshtastic logo, provided it is displayed in a secondary position to the group's primary branding. For example, a hiking club's newsletter might feature their own logo prominently at the top, with the Meshtastic logo placed smaller and below, indicating the technology's support for their activities. ### Domain names diff --git a/docs/software/python-cli/installation.mdx b/docs/software/python-cli/installation.mdx index 7fb3880a..4e6a103e 100644 --- a/docs/software/python-cli/installation.mdx +++ b/docs/software/python-cli/installation.mdx @@ -14,7 +14,7 @@ import TabItem from "@theme/TabItem"; This library provides a command-line interface (CLI) for managing the user settings of Meshtastic nodes and provides an easy API for sending and receiving messages over mesh radios. Events are delivered using a publish-subscribe model, and you can subscribe to only the message types you are interested in. -The [Meshtastic-python repo](https://github.com/meshtastic/Meshtastic-python) and [API documentation](https://python.meshtastic.org) are excellent sources of information. If you wish to view the code or contribute to the development of the Python library or the command-line interface, please visit the Meshtastic Python [GitHub page](https://github.com/meshtastic/Meshtastic-python). +The [Meshtastic-python repo](https://github.com/meshtastic/Meshtastic-python) is an excellent source of information. If you wish to view the code or contribute to the development of the Python library or the command-line interface, please visit the Meshtastic Python [GitHub page](https://github.com/meshtastic/Meshtastic-python). ### Prerequisites @@ -54,6 +54,7 @@ values={[ - You should see something like: - `ID 10c4:ea60 Silicon Labs CP210x UART Bridge` for CP210X - `ID 1a86:55d4 QinHeng Electronics USB Single Serial` for CH9102 + - If there is no seral device shown that matches the device you are using, please review our [Install Serial Drivers](/docs/getting-started/serial-drivers/) page before proceeding. - Check that your computer has Python 3 installed. @@ -107,7 +108,7 @@ values={[ - Connect your Meshtastic device to your USB port - Navigate to `Apple Menu  > About This Mac > System Report... > Hardware > USB` - You should see something like `CP210X USB to UART Bridge Controller` - - If not download the drivers from [Silicon Labs](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers). + - If there is no serial device shown that matches the device you are using, please review our [Install Serial Drivers](/docs/getting-started/serial-drivers/) page before proceeding. - Check that your computer has Python 3 installed. - Use the command ```shell @@ -150,16 +151,18 @@ values={[ - Connect your Meshtastic device to your USB port - Open Device Manager - Under `Ports (COM & LPT)` you should see something like `Silicon Labs CP210X USB to UART Bridge (COM5)` - - If not download the drivers from [Silicon Labs](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers) or use the direct link below. - :::warning - You must install the [CP210x Universal Windows Driver](https://www.silabs.com/documents/public/software/CP210x_Universal_Windows_Driver.zip). If you do not install this driver, your device may not work and the driver may need to be uninstalled from device manager before installing the correct driver. - ::: + - If there is no serial device shown that matches the device you are using, please review our [Install Serial Drivers](/docs/getting-started/serial-drivers/) page before proceeding. - Check that your computer has Python 3 installed. - Use the command ```powershell py -V ``` - If this does not return a version, install [python](https://www.python.org) + +:::info +When installing Python, make sure to select the option to "Add Python to PATH" or check the box that says "Add Python to environment variables". If you missed this during installation, you can add Python to your system's PATH manually after installation. Failing to do so may result in errors when trying to use Python or pip commands. +::: + - Pip is typically installed if you are using python 3 version >= 3.4 - Check that pip is installed using this command ```powershell @@ -180,11 +183,7 @@ values={[ #### Termux -:::note -Wifi connection is currently under development and may not be working properly just yet. If you would like to provide feedback or test this feature, please visit our [forum](https://meshtastic.discourse.group) or join our [Discord server](https://discord.gg/ktMAKGBnBs) for more information. -::: - -- Install [Termux](https://f-droid.org/en/packages/com.termux) from the F-Droid app store (Google play does not currently support the latest builds) +- Install [Termux from F-Droid](https://f-droid.org/en/packages/com.termux) or [Github Releases](https://github.com/termux/termux-app/releases). The Google Play store version has been deprecated. - Load Termux and update the package list ```shell pkg update @@ -203,15 +202,14 @@ Wifi connection is currently under development and may not be working properly j ``` :::note -Be aware that the Meshtastic CLI is not able to control the nodes over USB through termux, but you can control devices over Wifi using the `--host x.x.x.x` option with the device IP address. However, only ESP32 devices can use Wifi currently. +Be aware that the Meshtastic CLI is not able to control the nodes over USB through termux, but you can control devices over Wifi using the `--host x.x.x.x` option with the device IP address (ESP32 or Pico W only). Wifi connection is currently under development and may not be working properly just yet. If you would like to provide feedback or test this feature, please visit our [forum](https://meshtastic.discourse.group) or join our [Discord server](https://discord.gg/ktMAKGBnBs) for more information. ::: -:::info -You may need to close and re-open the CLI. The path variables may or may not update for the current session when installing. -::: +**You may need to close and re-open the CLI. The path variables may or may not update for the current session when installing.** + ### Standalone Installation (Ubuntu only) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 836963b1..05b1267c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5388,8 +5388,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - /follow-redirects@1.15.5: - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -6040,7 +6040,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.5 + follow-redirects: 1.15.6 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -10165,8 +10165,8 @@ packages: - utf-8-validate dev: false - /webpack-dev-middleware@5.3.3(webpack@5.90.2): - resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + /webpack-dev-middleware@5.3.4(webpack@5.90.2): + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^4.0.0 || ^5.0.0 @@ -10221,7 +10221,7 @@ packages: sockjs: 0.3.24 spdy: 4.0.2 webpack: 5.90.2 - webpack-dev-middleware: 5.3.3(webpack@5.90.2) + webpack-dev-middleware: 5.3.4(webpack@5.90.2) ws: 8.16.0 transitivePeerDependencies: - bufferutil