linux-native-hardware
Эта страница описывает настройку Meshtastic на устройствах с нативным Linux, используя portduino для запуска прошивки Meshtastic под Linux.
Предварительные требования и совместимость оборудования
Перед началом настройки убедитесь, что устройство соответствует следующим требованиям:
Тестированные устройства
SPI
- Raspberry Pi: Zero 2, 3, 4, Pi 400 и Pi 5 на Raspbian
bookworm. - Luckfox Pico: femtofox на Ubuntu 22.04
jammy.
USB (CH341)
- Debian 12 (
bookworm) с MeshStick. - Ubuntu LTS (
24.04,22.04) с MeshStick. - Fedora
41с MeshStick. - Контейнер Docker meshtasticd с передачей MeshStick.
Совместимость оборудования
:::caution Warning
- UART HAT и HAT на базе чипов SX1302/SX1303 не поддерживаются. Только HAT, использующие SPI-радио, могут работать с Meshtastic.
- Waveshare SX1262 LoRaWAN Hat для Raspberry Pi не рекомендуется для развертывания. У него есть известные аппаратные ограничения, которые могут влиять на длинные сообщения. Если вы вынуждены использовать его, пожалуйста, используйте роль CLIENT_MUTE, чтобы избежать повторной трансляции.
- Pine64 Pinedio также не рекомендуется для развертывания, поскольку он страдает от аналогичных аппаратных ограничений, как Waveshare SX1262 LoRaWAN Hat.
См.: The Meshtastic CRC Problem :::
- Тестированные USB-устройства включают MeshStick и USB-адаптер Pinedio CH341.
- Тестированные LoRa-HAT для Raspberry Pi включают MeshAdv-Pi v1.1, Adafruit RFM9x и Elecrow Lora RFM95 IOT.
- Поддержка I²C-дисплеев, SPI-дисплеев и клавиатурного ввода подтверждена. Необходимо учитывать возможные конфликты пинов при наложении HAT.
Системные требования
- Бинарный файл Meshtastic
meshtasticdтребует доступа root или пользователя с правами доступа к GPIO, SPI и другим интерфейсам. - Распределение Linux, совместимое с пакетами установки Meshtastic.
Установка
Установка Meshtasticd
Интерфейсы оборудования
USB
Поддержка USB через CH341 была добавлена в Meshtastic 2.5.18.
Обратите внимание, что для распознавания Linux нескольких устройств CH341-USB на борту должна быть EEPROM, прошитая с уникальным серийным номером. Устройства вроде Pine64 Pinedio v1 не включают это.
SPI (Raspberry Pi)
Включить поддержку SPI для LoRa-радио
- Это можно сделать, выполнив следующие команды на Raspberry Pi (2-5)
sudo raspi-config nonint set_config_var dtparam=spi on /boot/firmware/config.txt # Enable SPI
# Ensure dtoverlay=spi0-0cs is set in /boot/firmware/config.txt without altering dtoverlay=vc4-kms-v3d or dtparam=uart0
sudo sed -i -e '/^\s*#\?\s*dtoverlay\s*=\s*vc4-kms-v3d/! s/^\s*#\?\s*(dtoverlay|dtparam\s*=\s*uart0)\s*=.*/dtoverlay=spi0-0cs/' /boot/firmware/config.txt
# Insert dtoverlay=spi0-0cs after dtparam=spi=on if not already present
if ! sudo grep -q '^\s*dtoverlay=spi0-0cs' /boot/firmware/config.txt; then
sudo sed -i '/^\s*dtparam=spi=on/a dtoverlay=spi0-0cs' /boot/firmware/config.txt
fi
- Или это можно сделать вручную, включив поддержку SPI в
/boot/firmware/config.txt:
dtparam=spi=on
dtoverlay=spi0-0cs
I²C (Raspberry Pi)
Включить поддержку I²C
Включено с помощью:
sudo raspi-config nonint set_config_var dtparam=i2c_arm on /boot/firmware/config.txt # Enable i2c_arm
Или вручную включено в /boot/firmware/config.txt:
dtparam=i2c_arm=on
UART (Raspberry Pi)
Включить поддержку UART для GPS
- Вы можете включить UART, выполнив следующие команды (которые дополнительно отключат консоль tty)
sudo raspi-config nonint do_serial_hw 0 # Enable Serial Port (enable_uart=1)
sudo raspi-config nonint do_serial_cons 1 # Disable Serial Console
- Или вы можете вручную включить UART для GPS-HAT, внеся изменения в
/boot/firmware/config.txt:
# Needed for all Pi device.
enable_uart=1
# Needed for the Pi 5 only.
dtoverlay=uart0
- Правильный порт для UART GPS на Pi 5 после перезагрузки —
/dev/ttyAMA0. - Правильный порт для UART GPS на более ранних версиях Pi после перезагрузки —
/dev/ttyS0. - Возможно, потребуется отключить консоль на Pi и перезагрузить
sudo raspi-config nonint do_serial_cons 1 # Disable Serial Console
Настройка
Настройка Meshtasticd
- Конфигурация meshtasticd по умолчанию находится в
/etc/meshtasticd/config.yaml. Еслиconfig.yamlнайден в текущей директории, он имеет приоритет. А файл конфигурации, указанный с опцией-c/--config, имеет наивысший приоритет.
Чтобы включить LoRa-радио, подключенное к вашему устройству, сначала найдите его конфигурацию в пресетах, затем скопируйте в config.d.
# First, locate your radio hardware
ls /etc/meshtasticd/available.d
# Ex: display-waveshare-2.8.yaml lora-MeshAdv-900M30S.yaml lora-meshstick-1262.yaml
# Then, copy desired config to `config.d`
# Example:
cp /etc/meshtasticd/available.d/lora-MeshAdv-900M30S.yaml /etc/meshtasticd/config.d/
:::info
Файл config.yaml чувствителен к пробелам, поэтому убедитесь, что отступы и пробелы правильные.
:::
Веб-сервер
meshtasticd имеет поддержку веб-сервера начиная с релиза 2.3.0.
Чтобы включить это:
Webserver:
Port: 443 # Port for Webserver & Webservices
RootPath: /usr/share/meshtasticd/web # Root Dir of WebServer
Поддержка Bluetooth
Bluetooth в настоящее время не поддерживается и не работает на устройствах с нативным Linux. Это может измениться в будущем.
Постоянное хранение
- Постоянные файлы базы данных .proto версии portduino meshtasticd хранятся в:
/root/.portduino/default/prefs/.
Расширенная настройка и устранение неисправностей
Включение службы systemd
Чтобы настроить устройство для запуска и остановки meshtasticd как службы с помощью systemctl, вы можете настроить единицу службы, используя инструкции ниже.
Создать службу systemd (только для ручных установок)
Служба systemd meshtasticd автоматически устанавливается при использовании официальных пакетов Meshtastic.
Эти инструкции нужны только при ручной установке.
Создайте файл единицы службы:
Создайте новый файл в директории /etc/systemd/system/ с именем вроде meshtasticd.service.
sudo nano /etc/systemd/system/meshtasticd.service
Добавьте следующее содержимое в файл:
[Unit]
Description=Meshtastic Native Daemon
After=network-online.target
StartLimitInterval=200
StartLimitBurst=5
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
User=root
Group=root
Type=simple
ExecStart=/usr/bin/meshtasticd
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Перезагрузите systemd, чтобы распознать новую службу:
sudo systemctl daemon-reload
Включите службу для запуска при загрузке:
sudo systemctl enable meshtasticd
Запуск и остановка службы
Запустить службу:
sudo systemctl start meshtasticd
Проверить статус службы:
sudo systemctl status meshtasticd
Это даст подробный обзор статуса службы и возможных ошибок.
Остановить службу:
sudo systemctl stop meshtasticd
Следуя этим шагам, вы настроите службу systemd для meshtasticd, которая будет автоматически запускаться при загрузке и перезапускаться в случае сбоя. Вы можете управлять ею с помощью стандартных команд systemctl (start, stop, restart, status и т.д.).
Просмотр логов Meshtastic
Чтобы просмотреть вывод логов службы meshtasticd, используйте следующую команду для чтения их из системного журнала.
journalctl -u meshtasticd -b
Настройка Avahi
Это позволит клиенту Android автоматически обнаруживать ваше устройство с нативным Linux.
- Установить avahi-daemon (debian/ubuntu)
sudo apt install avahi-daemon
- Настроить Avahi для рекламы узла
Создать файл службы:
sudo nano /etc/avahi/services/meshtastic.service
И вставить следующее:
<?xml version="1.0" standalone="no"?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name>Meshtastic</name>
<service protocol="ipv4">
<type>_meshtastic._tcp</type>
<port>4403</port>
</service>
</service-group>
Затем сохранить и выйти.
Настройка CLI
Взаимодействие с Meshtastic можно проводить через командную строку:
meshtastic --host localhost ...
См.: