diff --git a/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx b/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx
index 2ecd55ec..41a1accd 100644
--- a/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx
+++ b/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx
@@ -5,8 +5,11 @@ sidebar_label: Linux Native Devices
sidebar_position: 11
description: Set up and configure Meshtastic on Linux-native devices using the meshtasticd binary.
---
+
-import NativeLibraries from "@site/docs/blocks/_native-libraries.mdx";
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import { Icon } from '@iconify/react';
This page outlines the setup of Meshtastic on Linux-native devices, utilizing portduino to run the Meshtastic firmware under Linux.
@@ -15,12 +18,15 @@ This page outlines the setup of Meshtastic on Linux-native devices, utilizing po
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.
+#### SPI
+- Raspberry Pi: Zero, Zero 2, 3, 4, Pi 400, and Pi 5 on Raspbian `bookworm`.
+- Luckfox Pico: [femtofox](https://github.com/noon92/femtofox/tree/main) on Ubuntu 22.04 `jammy`.
-[^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.
+#### USB (CH341)
+- Debian 12 (`bookworm`) with MeshStick.
+- Ubuntu LTS (`24.04`, `22.04`) with MeshStick.
+- Fedora `41` with MeshStick.
+- meshtasticd Docker container with MeshStick passed-through.
### Hardware Compatibility
@@ -28,24 +34,114 @@ Before proceeding with the setup, ensure the device meets the following requirem
UART HATs and SX1302/SX1303 chip-based HATs are not supported. Only hats that use a SPI radio can work with Meshtastic.
:::
-- Tested radios include the Waveshare SX126X (SPI version), Adafruit RFM9x, and Elecrow Lora RFM95 IOT.
+- Tested Raspberry Pi LoRa hats include the [MeshAdv-Pi v1.1](https://github.com/chrismyers2000/MeshAdv-Pi-Hat), 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.
### 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.
+- A Linux distribution compatible with the Meshtastic installation packages.
## Installation
### Installing Meshtasticd
+
+
+ Debian>} default>
+ Debian packages are provided via [OpenSUSE Build Service](https://build.opensuse.org/project/show/network:meshtastic).
-
+ Supported: `bookworm`
-- The .deb Package is available as [part of the release](https://github.com/meshtastic/firmware/releases/latest), installing the binary, a systemd service, and a config file. It is compiled for Debian Bookworm and incompatible with Bullseye.
-```shell
-wget https://github.com/meshtastic/firmware/releases/download/v{version}/meshtasticd_{version}_arm64.deb
-sudo apt install ./meshtasticd_{version}arm64.deb
-```
+ **Install - Debian 12 (`bookworm`):**
+ ```shell
+ ```
+
+
+ Experimental builds
+
+ These builds are provided without support, please **do not file issues** relating to Experimental builds.
+
+ Experimental Support: `trixie` (testing), `sid` (unstable)
+
+ **Install - Debian 13 (`trixie`):**
+ ```shell
+ ```
+
+ **Install - Debian unstable (`sid`):**
+ ```shell
+ ```
+
+
+ Raspbian>}>
+ Raspbian (Raspberry Pi OS) packages are provided via [OpenSUSE Build Service](https://build.opensuse.org/project/show/network:meshtastic).
+
+ Supported: `bookworm`
+
+ **Install - Raspbian 12 (`bookworm`):**
+ ```shell
+ ```
+
+
+ Ubuntu>}>
+ Ubuntu packages are provided via [Canonical Launchpad](https://launchpad.net/~meshtastic).
+
+ Supported: `oracular` (24.10), `noble` (24.04 LTS), `jammy` (22.04 LTS)
+
+ **Install:**
+ ```shell
+ # Install requirements for add-apt-repository
+ sudo apt install software-properties-common
+ # Add Meshtastic repo
+ sudo add-apt-repository ppa:meshtastic/beta
+ # Install meshtasticd
+ sudo apt install meshtasticd
+ ```
+
+
+ Experimental builds
+
+ These builds are provided without support, please **do not file issues** relating to Experimental builds.
+
+ Experimental Support: `plucky` (25.04)
+
+ **Install:**
+ > Install via the instructions above.
+
+
+ Fedora>}>
+ Fedora packages are provided via Fedora COPR.
+
+ Supported[^1]: `41`, `40`
+
+ **Install:**
+ ```shell
+ # Add Meshtastic COPR repo
+ sudo dnf copr enable
+ # Install meshtasticd
+ sudo dnf install meshtasticd
+ ```
+
+
+ Experimental builds
+
+ These builds are provided without support, please **do not file issues** relating to Experimental builds.
+
+ Experimental Support: `rawhide`
+
+ **Install - `rawhide`:**
+ > Install via the instructions above.
+
+
+
+ Docker>}>
+ Docker containers are provided via [DockerHub](https://hub.docker.com/r/meshtastic/meshtasticd).
+
+ **Pull:**
+ ```shell
+ docker pull meshtastic/meshtasticd
+ ```
+
+
+
## Configuration
@@ -81,37 +177,6 @@ dtoverlay=spi0-0cs
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
-```
-### Bluetooth Support
-Bluetooth is currently unsupported and not functional on Linux Native devices. This may change in the future.
-
### GPS Support
- You can enable UART by running the below commands (which additionally will disable serial console tty)
@@ -138,44 +203,86 @@ dtoverlay=uart0
sudo raspi-config nonint do_serial_cons 1 # Disable Serial Console
```
+### 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`.[^1]
+
+[^1]: Fedora packages do not currently include **web server** support.
+
+To enable this:
+```yaml
+Webserver:
+ Port: 443 # Port for Webserver & Webservices
+ RootPath: /usr/share/meshtasticd/web # Root Dir of WebServer
+```
+### Bluetooth Support
+Bluetooth is currently unsupported and not functional on Linux Native devices. This may change in the future.
+
### Persistence
- The persistent .proto db files of the portduino version of meshtasticd are stored under: `/root/.portduino/default/prefs/`.
### Advanced Setup and Troubleshooting
-#### Creating and Enabling a Systemctl Script (non .deb installs)
-
+#### Enabling the systemd service
To configure the device to start and stop meshtasticd as as service using systemctl you can setup the service unit using the instructions below.
-Create the service unit file:
+
+
+ Create the systemd service (only for manual installs)
-Create a new file in the /etc/systemd/system/ directory with a name like meshtasticd.service.
-```shell
-sudo nano /etc/systemd/system/meshtasticd.service
-```
-Add the following content to the file:
+ The `meshtasticd` systemd service is automatically installed when using the official Meshtastic packages.
+ These instructions are only needed when installing manually.
-```plaintext
-[Unit]
-Description=Meshtastic Daemon
-After=network.target
+ Create the service unit file:
-[Service]
-ExecStart=/usr/sbin/meshtasticd
-Restart=always
-User=root
-Group=root
-Type=simple
+ Create a new file in the /etc/systemd/system/ directory with a name like meshtasticd.service.
+ ```shell
+ sudo nano /etc/systemd/system/meshtasticd.service
+ ```
+ Add the following content to the file:
-[Install]
-WantedBy=multi-user.target
-```
+ ```plaintext
+ [Unit]
+ Description=Meshtastic Daemon
+ After=network.target
-Reload systemd to recognize the new service:
-```shell
-sudo systemctl daemon-reload
-```
+ [Service]
+ ExecStart=/usr/sbin/meshtasticd
+ Restart=always
+ User=root
+ Group=root
+ Type=simple
+
+ [Install]
+ WantedBy=multi-user.target
+ ```
+
+ Reload systemd to recognize the new service:
+ ```shell
+ sudo systemctl daemon-reload
+ ```
+
+
Enable the service to start on boot:
```shell
@@ -193,39 +300,22 @@ Check the status of the service:
```shell
sudo systemctl status meshtasticd
```
+This will give you a detailed view of the service status and any potential errors.
Stop the service:
```shell
sudo systemctl stop meshtasticd
```
-This will give you a detailed view of the service status and any potential errors.
-
By following these steps, you set up a systemd service for meshtasticd that will start automatically at boot and restart if it crashes. You can manage it using the standard systemctl commands (start, stop, restart, status, etc.).
-#### View Logs of Mesthastic
+#### View Logs of Meshtastic
To view the log output of the meshtasticd service, use the below command to read them out of the system journal.
```shell
journalctl -u meshtasticd -b
```
-#### Installation of drivers
-
-- 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.
-
#### Avahi setup
This will allow the Android client to auto-discover your Linux Native device.
@@ -260,6 +350,9 @@ Then save and exit.
Interaction with Meshtastic can be conducted via the command line:
-```shell
+```plaintext
meshtastic --host localhost ...
```
+See:
+- [CLI Installation](/docs/software/python/cli/installation/)
+- [CLI Usage](/docs/software/python/cli/usage/)
diff --git a/package.json b/package.json
index bc91391f..3f49e3f1 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
"@docusaurus/theme-mermaid": "3.6.1",
"@giscus/react": "^3.0.0",
"@heroicons/react": "^2.1.1",
+ "@iconify/react": "^5.2.0",
"@mdx-js/react": "^3.0.1",
"@meshtastic/js": "2.3.7-5",
"autoprefixer": "^10.4.17",