Would be nice if you support me: https://buymeacoffee.com/bmks — thank you very much!!
Important: Use at your own risk. You, the device owner, are responsible for any damage, data loss, or bricked devices.
With a Waveshare LoRa HAT on Raspberry Pi, this fork (based on MeshCore v1.13.0) can build and run native MeshCore:
Tested with the following LoRa HAT: https://www.amazon.de/dp/B0C61XFGHC?ref=ppx_yo2ov_dt_b_fed_asin_title
Important to know:
- Default you can only use
RepeaterORCompanion. - If you are crazy like me, you could use my
spi-bridge(create multiple VIRTUAL-spi devices out of one HW-spi) and startRepeaterANDCompanionon the same Raspberry PI :D. Here you go for the SPI-Bridge: https://github.com/dabeani/RPI_spi-bridge
Current status:
- Repeater is working fine.
- Connect to Companion from Mobile Phone via Ethernet, BLE untestet until now.
Reference hardware settings (recommended to mirror in env files):
- pyMC_Repeater radio settings JSON: https://github.com/rightup/pyMC_Repeater/blob/3e47122daee85734d323009d67f606257828698f/radio-settings.json
- Apply matching values in:
/etc/raspberrypimc/repeater.env/etc/raspberrypimc/companion.env
Core radio/runtime keys:
RPI_FREQ_HZ=869618000
RPI_SF=8
RPI_BW_HZ=62500
RPI_CR=8
RPI_TX_DBM=22
# Radio backend selector
RPI_RADIO_DRIVER=sx1262 # or: sx127x
# SPI device node prefix (default: /dev/spidev)
RPI_SPI_DEV_PREFIX=/dev/spidev
RPI_SPI_BUS=0
RPI_SPI_CS=0
RPI_SPI_SPEED_HZ=1000000
RPI_CS_PIN=21
RPI_RESET_PIN=18
RPI_BUSY_PIN=20
RPI_IRQ_PIN=16
RPI_TXEN_PIN=13
RPI_RXEN_PIN=12
RPI_USE_TCXO=0
RPI_USE_DIO2_RF=0Notes:
- If
RPI_RADIO_DRIVERis unset, default issx1262. - If
RPI_SPI_DEV_PREFIXis unset, default is/dev/spidev. - Repeater/Companion binaries now read role config files directly on startup:
- repeater:
/etc/raspberrypimc/repeater.env - companion:
/etc/raspberrypimc/companion.env
- repeater:
- Optional override for both binaries:
RPI_CONFIG_FILE=/path/to/custom.env. - Role config file values are applied as effective runtime values at startup.
- After changing env values, restart the service:
sudo systemctl restart raspberrypimc-repeater.service
sudo systemctl restart raspberrypimc-companion.serviceOn startup, both native binaries print:
startup-config: ...(interpreted effective values)radio-diag: {...}(current radio diagnostic JSON)
Use these lines to verify values such as RPI_SPI_DEV_PREFIX, pins, speed, and radio driver immediately after start.
Package install/upgrade does not overwrite existing files:
/etc/raspberrypimc/repeater.env/etc/raspberrypimc/companion.env
Defaults are shipped as examples:
/usr/share/raspberrypimc/repeater.env.example/usr/share/raspberrypimc/companion.env.example
If a role env file is missing, package post-install creates it from the matching example.
These are compile-time options (rebuild required after changes):
MAX_CONTACTSMAX_GROUP_CHANNELSMESH_DEBUGMESH_PACKET_LOGGING
For RaspberryPiMC native targets, set them in platformio.ini under:
[env:RaspberryPiMC_native_repeater][env:RaspberryPiMC_native_companion]
If you use an SX127x-based module, set the driver explicitly and adjust GPIO pins to your wiring:
RPI_RADIO_DRIVER=sx127x
RPI_SPI_DEV_PREFIX=/dev/spidev
RPI_SPI_BUS=0
RPI_SPI_CS=0
RPI_SPI_SPEED_HZ=1000000
# Example GPIO mapping (change for your board/wiring)
RPI_CS_PIN=21
RPI_RESET_PIN=18
RPI_IRQ_PIN=16
RPI_TXEN_PIN=-1
RPI_RXEN_PIN=-1Then restart the service and verify from CLI:
radio-diag
Expected: "driver":"sx127x" in the diagnostic JSON.
sudo apt-get update
sudo apt-get install -y libgpiod-dev gpiod jq curlsudo dpkg -i raspberrypimc-native-repeater_*.deb
sudo nano /etc/raspberrypimc/repeater.env
sudo systemctl enable --now raspberrypimc-repeater.service
systemctl is-enabled raspberrypimc-repeater.service
systemctl status raspberrypimc-repeater.service --no-pagersudo apt-get update
sudo apt-get install -y python3 python3-pip python3-venv python3-dev libgpiod-dev gpiod jq curlBuild target should be Linux aarch64 (best: build directly on the Pi).
cd ~/MeshCoreRPI
sudo apt update
sudo apt install -y python3-venv python3-full
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
pip install platformio
platformio run -e RaspberryPiMC_native_repeater
platformio run -e RaspberryPiMC_native_companioncd ~/MeshCoreRPI
git pull
rm -rf ~/MeshCoreRPI/RaspberryPiMC/dist/*
bash RaspberryPiMC/build_deb.sh repeater
sudo dpkg -i RaspberryPiMC/dist/raspberrypimc-native-repeater_*.deb
sudo nano /etc/raspberrypimc/repeater.env
sudo systemctl enable --now raspberrypimc-repeater.serviceVerify persistence after reboot:
systemctl is-enabled raspberrypimc-repeater.service
systemctl status raspberrypimc-repeater.service --no-pagerAfter env changes:
sudo systemctl restart raspberrypimc-repeater.servicecd ~/MeshCoreRPI
git pull
bash RaspberryPiMC/build_deb.sh companion
sudo dpkg -i RaspberryPiMC/dist/raspberrypimc-native-companion_*.deb
sudo systemctl restart raspberrypimc-companion.service
systemctl status raspberrypimc-companion.service --no-pager/usr/lib/raspberrypimc/companion/program \
--freq 869618000 --sf 8 --bw 62500 --cr 8 --tx 22 \
--radio-driver sx1262 \
--spi-dev-prefix /dev/spidev \
--spi-bus 0 --spi-cs 0 --cs-pin 21 --spi-speed 1000000 \
--reset-pin 18 --busy-pin 20 --irq-pin 16 --txen-pin 13 --rxen-pin 12 \
--no-tcxo --no-dio2-rfFeel Free to Download / Modify / Distribute