Как настроить нативную службу Meshtastic под управлением DietPi Linux, работающей на OrangePi Zero3 SBC с модулем Waveshare Pico LoRa.
Подключение модуля Waveshare LoRa #
Модуль Waveshare SX1262 Pico LoRa используется для сборки нативного узла Meshtastic на базе Linux. Этот модуль LoRa включает в себя термостабилизированный генератор TCXO и отлично работает с Meshtastic.
Важный:
НЕ ИСПОЛЬЗУЙТЕ плату Waveshare SX1262/SX1268 LoRa для Raspberry Pi! Модуль LoRa на этой плате использует обычный кварцевый генератор, чувствительный к температурному дрейфу и создающий проблемы при передаче длинных сообщений через Meshtastic.
Модуль Waveshare Pico LoRa подключается к OrangePi Zero3 через 26-контактный разъём. В дополнение к трём контактам GPIO и источнику питания 3,3 В используется интерфейс SPI1.

Схема подключения OrangePi Zero3 и модуля Waveshare Pico LoRa
См. руководство Orange Pi Zero3 , глава 3.16, стр. 124 для получения информации о распиновке 26-контактного разъема.
Waveshare Orange Pi Zero3
36 3.3V 17
15 MOSI 19
16 MISO 21
14 CLK 23
38 GND 25
4 BUSY 18
20 RESET 22
5 CS 24
26 DIO1/IRQ 26
Оставшиеся контакты 26-контактного разъёма OrangePi Zero3 можно использовать. Интерфейсы I2C-3 и UART5 будут включены в конфигурации DietPi Linux.
Установка DietPi Linux #
Загрузите DietPi для OrangePi Zero3 и следуйте инструкциям по установке .
Конфигурация DietPi #
Перед первой загрузкой, сразу после прошивки SD-карты, вы можете настроить несколько параметров и сэкономить время на последующей настройке.
На SD-карте откройте раздел DIETPISETUP и отредактируйте текстовые файлы по мере необходимости.
Мои рекомендации:
- Добавьте учетные данные вашей сети Wi-Fi в dietpi-wifi.txt .
- В dietpi.txt настройте локализацию, раскладку клавиатуры, статические параметры сети, предустановленное программное обеспечение и т.д.
Обязательная настройка в dietpiEnv.txt , которую необходимо выполнить до или после первой загрузки:
- Включите наложения дерева устройств для SPI1, I2C3 и UART5, как показано ниже, больше ничего не меняйте:
# Multiple prefixes are supported separated by space
overlay_prefix=sun50i-h616
overlays=uart5 i2c3-ph
user_overlays=dietpi-spi1_1
Не используйте ни один из оверлеев Allwinner для SPI. Кастомная версия DietPi включит SPI1 на 26-контактном разъёме, включая вывод CS1!
Конфигурацию dietpiEnv.txt можно выполнить после первой загрузки. Файлы находятся в папке /boot . В этом случае используйте:
sudo nano /boot/dietpiEnv.txt
sudo mkimage -C none -A arm64 -T script -d /boot/boot.cmd /boot/boot.scr
Используйте прилагаемый sudo dietpi-configинструмент для дополнительной настройки DietPi после первой загрузки.
- Не включайте/отключайте/переключайте SPI в dietpi-config в разделе «Дополнительные параметры» !
Сборка пакета Meshtasticd №
Сборка нативного пакета Meshtasticd для Debian основана на моей версии прошивки Meshtastic , модифицированной для локальной сборки в установленной системе Debian. Оригинальная прошивка оптимизирована для сборки на Github с использованием рабочих процессов, поэтому сборка локально невозможна.
Установка зависимостей #
Предположим, что в рабочей папке dietpi находится пользователь home и сборка пакета запускается под этим пользователем.
- Platformio
# You may reboot before you start building
# Download Platformio installer
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
# Install first batch of dependencies
sudo apt-get -y install python3.11-venv software-properties-common build-essential devscripts equivs
# Install Platformio
python3 get-platformio.py
# Create user links for Platformio environment
mkdir -p .local/bin
ln -s ~/.platformio/penv/bin/platformio ~/.local/bin/platformio
ln -s ~/.platformio/penv/bin/pio ~/.local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb ~/.local/bin/piodebuggdb
# Edit the dietpi users .bashrc and add the additional location to PATH
nano .bashrc
# add line:
export PATH=$PATH:$HOME/.local/bi
- Зависимости сборки
# Install second batch of dependencies
sudo apt-get -y install debhelper-compat lsb-release tar gzip python3-protobuf python3-grpcio git g++ pkg-config libyaml-cpp-dev libgpiod-dev libbluetooth-dev libusb-1.0-0-dev libi2c-dev libuv1-dev openssl libssl-dev libulfius-dev liborcania-dev libx11-dev libinput-dev libxkbcommon-x11-dev libdistro-info-perl
- Клонировать репозиторий прошивок
# Clone firmware
git clone https://github.com/Mictronics/meshtastic_firmware.git meshtasticd
# Use Mictronics branch
git checkout mictronics
# Change to local repository
cd meshtasticd
# Build a package satisfying a package's build-dependencies
sudo mk-build-deps --install --remove --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/c
Ветка Mictronics в моей прошивке не содержит файл userPrefs.jsonc из соображений безопасности (во избежание утечки учётных данных на Github)!
Вам необходимо скопировать или создать этот файл из основной ветки или исходного репозитория прошивки перед сборкой. Без userPrefs.jsonc сборка завершится ошибкой !
- Сборка пакета
# Start the package build by running
bash debian/ci_pack_sdeb.sh
- [Необязательно] Пересоздайте пакет в любое время, например, после обновления репозитория.
# Reset repository to HEAD as it is modified during package build
git reset --hard
# Get repository updates
git pull
# Remove old build files
dh_clean
# Start the package build
bash debian/ci_pack_sdeb.sh
Установка пакета Meshtasticd #
Окончательный двоичный пакет Meshtasticd находится в домашней папке пользователя dietpi и может быть установлен оттуда.
# Install Meshtasticd binary package (use your build package file name!)
sudo dpkg -i meshtasticd_2.7.2.0~local84f0c3e9~unstable_arm64.deb
# Disable Meshtasticd service prior configuration
sudo systemctl disable meshtasticd
Конфигурация сервиса Meshtasticd #
Для запуска службы Meshtasticd требуется выполнить некоторые настройки. Конфигурация Meshtasticd находится в /etc/meshtasticd.
# Copy and enable hardware configuration for the above Waveshare Pico LoRa module connection
sudo cp /etc/meshtasticd/available.d/lora-ws-raspberry-pico-to-orangepi-03.yaml /etc/meshtasticd/config.d/lora-ws-raspberry-pico-to-orangepi-03.yaml
# Edit Meshtasticd service configuration
sudo nano /etc/meshtasticd/config.yaml
# Keep unchanged:
Module: auto
# Uncomment and change:
I2C:
I2CDevice: /dev/i2c-2
# The Meshtasticd service will then find I2C devices on the 26-pin header I2C3 interface
# Enable webserver
Webserver:
Port: 9443 # Port for Webserver & Webservices
RootPath: /usr/share/meshtasticd/web # Root Dir of WebServer
SSLKey: /etc/meshtasticd/ssl/private_key.pem # Path to SSL Key, generated if not present
SSLCert: /etc/meshtasticd/ssl/certificate.pem # Path to SSL Certificate, generated if not present
# Set numbers as desired:
MaxNodes: 1000
MaxMessageQueue: 100
# Uncomment or set MAC address. The service will not run without.
MACAddressSource: eth0
# You may change the log level as desired:
LogLevel: debug # debug, info, warn, error
При настройке уровня журнала debugобязательно ограничьте его размер! В противном случае журнал службы meshtasticd мгновенно займёт оперативную память или дисковое пространство.
# Open the journal configuration
sudo nano /etc/systemd/journald.conf
# Recommentation is to change storage in volatile so the journal is stored in memory (RAM).
# In that case set RuntimeMaxUse as desired.
# When Storage is set to persistent or auto the journal is stored on disk.
# In that case set SystemMaxUse as desired.
[Journal]
Storage=volatile
SystemMaxUse=48M
RuntimeMaxUse=48M
# Reboot after change..
Запуск службы Meshtasticd #
После окончательной настройки мы можем запустить службу.
# Enable Meshtasticd service
sudo systemctl enable meshtasticd
# Start service
sudo service meshtasticd start
# Check service status
sudo service meshtasticd status
Журнал отладки №
Журнал отладки службы Meshtasticd можно найти в журнале с помощью sudo journalctl -u meshtasticd -b