OTA Updating hard to reach nRF52 based repeaters with a drone
As we added more and more repeaters to our local mesh in Slovakia, we found out it’s not always possible to physically reach some repeater sites often enough. We incrementally got better in addressing this issue by experimenting with different approaches. I built a custom nrf dfu app that works on desktop OSes, so you can use external bluetooth adapters with rp-sma ports and directional antennas.
Updating local repeater with uConsole, high-power BLE adapter and directional antenna
My buddy lucidnx started to experiment with nrf_dfu_py and created a whole framework for drone updating. This solution works well, but the rpi zero approach is not trivial to setup, requires additional DIY and it’s hard to use and debug. That’s why I decided to build more user-friendly version, so the drone doesn’t need to carry whole linux board on its back.
Older version of Drone updater - with Raspberry Pi Zero 2W and hefty battery pack. 70g total payload
Xiao nRF52840 packs a perfect combination of things you want for very small low-power repeater updater: nRF MCU is power efficient, it has 2MB of onboard flash and it has full blown USB controller. Inspired with Arduino bootloader that has UF2 mode, I decided to use the external 2MB flash as Mass Storage with real FAT12 filesystem, so you can even use a phone to copy over the firmware file, configure the updater and review the update log - very handy in the field.
DJI Neo2 with Xiao nRF52840 updater and 250mAh Li-Ion battery. 7.5g total payload
Be sure the repeater you want to update uses oltaco’s OTAFIX bootloader with version at least 2.1 or higher
Get the firmware on Project releases page. There are 2 boards supported: Xiao nRF52840 and RAK3401/RAK4631 with RAK15001 external flash module. We’ll focus on Xiao, as that’s easier to pick up for most of the readers.
updater-xiao_nrf52840-vX.X.uf2updater-xiao_nrf52840-vX.X.uf2 to newly opened usb driveconfig.txt with text editorble_name to OTA name your repeater uses, here are few examples:
4631 | 3401 for RAK based boars - covers both RAK4631 and RAK3401 1WSENSECAP | SCAP for Seeed SenseCap Solar P1XIAO for XIAO NRF52 based repeater(yeah, you can update Xiao with your Xiao!)T114 for Heltec T114ProMicro | PROM for FakeTec / Promicro based boardsstart ota to your repeater and make sure Xiao is blinking blue - that means it’s ready to flash your repeaterstart ota failedlog.txt in Xiao’s USB drive - it should hold update process with timestamps relative to boot. You can look at how successful update log looks likeLet us know if this guide helped you flash your distant repeaters! Don’t hesitate to ask any questions either in the comments or on our Discord.