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=0
Notes:
- 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.service
On 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=-1
Then 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 curl
sudo 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-pager
sudo apt-get update sudo apt-get install -y python3 python3-pip python3-venv python3-dev libgpiod-dev gpiod jq curl
Build 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_companion
cd ~/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.service
Verify persistence after reboot:
systemctl is-enabled raspberrypimc-repeater.service systemctl status raspberrypimc-repeater.service --no-pager
After env changes:
sudo systemctl restart raspberrypimc-repeater.service
cd ~/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-rf
Feel Free to Download / Modify / Distribute