Naar inhoud springen

NRF52: Long range OTA

Uit MeshWiki

Op deze pagina staan wat notities en aanwijzingen over 'over the air' updates op langere afstand.

Omdat de doorvoersnelheid van LoRa beperkt is, wordt vaak gebruik gemaakt van Bluetooth Low Energy (BLE) of WiFi. Sommige repeaters zijn door hun hoge positionering lastig bereikbaar. Ook kan de 2.4GHz antenne van je telefoon beperkend werken. Er zijn echter mogelijkheden om veel grotere afstanden te behalen (+100M[1]).

Waarschuwing: Mislukte updates kunnen er toe lijden dat je toegang tot je repeater verliest, en deze middels USB opnieuw flashed moet worden! Zorg dat je het update process uitgebreid is test alvorens een lastig bereikbare repeater te updaten middels de tools op deze pagina.

[Todo: uitleg/links naar OTA fix bootloader]

[Todo: scope is BLE en NRF52 gebaseerde repeaters]

Tools

Om de OTA update via een computer uit te kunnen voeren kan gebruikt gemaakt worden van de Python Nordic Legacy DFU Tool. Dit is een Python script wat zowel via een grafische interface of middels de command line benadert kan worden.

De onderstaande hoofdstukken laten zien hoe de command line interface (CLI) gebruikt kan worden. Deze geeft net wat meer instelmogelijkheden dan de grafische interface. Zo kan bijvoorbeeld de Bluetooth adapter gekozen worden, wat handig is wanneer je systeem meerdere Bluetooth adapters heeft (zoals wanneer je een USB adapter aansluit op een laptop).

Ubuntu 24.04

De volgende commandos halen het script binnen onder Ubuntu 24.04 (en afgeleiden). Voor andere distributies kunnen de commandos mogelijk iets afwijken.

Haal eerst het script en diens afhankelijkheden binnen:

# Clone het DFU script
git clone https://github.com/recrof/nrf_dfu_py.git
cd nrf_dfu_py/

# Maak een Python virtual environment aan
sudo apt install python3-venv
python3 -m venv venv

# Activeer het virtual environment. Dit moet je iedere keer doen voordat je het script wil gebruiken.
source venv/bin/activate

# Installeer Python afhankelijkheden
pip install -r requirements.txt

In de basis kan het script op de onderstaande manier gebruikt worden. Geef de gewenste firmware zip en device naam. Voor de device naam kan je Bluetooth MAC adres van je repeater ingeven, of het script je repeater laten zoeken. Het MAC adres wordt weergegeven in de app nadat je het start ota command hebt gegeven. Om het script zelf het juiste MAC adres te laten zoeken geef je de Bluetooth naam van je repeater op. Eventueel kan ook het bt-adapter -d commando gebruikt worden om zowel het MAC adres als de device naam te vinden. Hier onder twee voorbeelden:

./dfu_cli.py ~/Downloads/RAK_4631_repeater-v1.15.0-dee3e26.zip AA:BB:CC:EE:DD:FF
./dfu_cli.py ~/Downloads/RAK_4631_repeater-v1.15.0-dee3e26.zip RAK4631_OTA

Verder zijn de volgende opties interessant:

  • --high-mtu - 'Maximum transmission unit'. Verhoogd de maximale pakket grote, wat het upload process significant versneld.
  • --adapter - Stelt de te gebruiken Bluetooth adapter in. Handig als er meerdere Bluetooth adapters in je computer aanwezig zijn. Gebruik bt-adapter -i om te zien welke adapters beschikbaar zijn. De adapters worden geïdentificeerd als hciX, waar de X een nummer is. Bijvoorbeeld hci0, hci1, etc.
  • --retry - Hoe vaak het script opnieuw verbinding moet opzetten als deze onverhoopt verbroken wordt. Bij een onbetrouwbare verbinding kan het helpen om deze flink te verhogen ten opzichte van de standaard 3 pogingen.


Voorbeeld met het bovenstaande gecombineerd:

./dfu_cli.py --high-mtu --adapter=hci1 --retry=10 ~/Downloads/RAK_4631_repeater-v1.15.0-dee3e26.zip RAK4631_OTA

Hardware

Hieronder een lijst van door de community geteste hardware. Zie test resultaten voor de te verwachten range.

Bluetooth adapters
Type Opmerkingen
TP-Link UB500 Plus Long Range Vaste antenne.
Antennes
Type Connector Opmerkingen

Test resultaten

Datum/Team Hardware Max range Opmerkingen
21-5-2026 / MeshCore Mierlo SenseCAP Solar P1 <-> TP-Link UB500 Plus Long Range ~200M M.b.v. nrf_dfu_py, Ubuntu 24.04. Omgeving met weinig RF interferentie.