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..4809a691 --- /dev/null +++ b/docs/hardware/devices/linux-native-hardware/linux-native-hardware.mdx @@ -0,0 +1,117 @@ +--- +id: linux-native-hardware +title: Meshtastic on Linux-Native Devices +sidebar_label: Linux Native Devices +sidebar_position: 11 +--- + +This guide 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 +- Ubuntu 22.04 X86_64 with a CH341-SX1262 DIY dongle +- Debian GNU/Linux trixie/sid riscv64 on Cvitek CV180X ASIC, C906 (Milk-V Duo), on the SPI bus + +### 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 +``` +- 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. + +### 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 on Pi5 requires modifications in `/boot/firmware/config.txt`: + +```plaintext +enable_uart=1 +dtoverlay=uart0 +``` + +The correct port for UART GPS after a reboot is `/dev/ttyAMA0`. + +### 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 ... +```