Home/Updates without a cable
The OTAFIX bootloader
Update your radio from your phone,
with no cable at all
MeshDTN can send new firmware to your radio over Bluetooth — nothing plugged in, nothing on a computer. It needs one thing installed on the board first, and that is a one-time job: drag a file onto a drive, about a minute. The app checks for it and tells you, so if you skip this page nothing breaks — the update simply isn’t offered.
Why a second thing has to be installed
The part that receives an update is not the part you update
Firmware is what MeshDTN publishes and what the flasher writes. Underneath it sits a separate, much smaller program — the bootloader — whose only job is to receive a new firmware image and install it. It was written into the board at the factory, sometimes years ago.
Most boards ship with a bootloader that cannot reliably receive an update over the air. Some cannot do it at all. When an over-the-air update is refused, it is almost always the bootloader refusing — and no firmware we publish can change that, because the bootloader is the thing doing the refusing.
OTAFIX is a replacement bootloader that works. It is not ours; we didn’t write it and we don’t maintain it.
What changes once it is on
A radio you never have to plug in again
Updates from the app
New firmware goes over Bluetooth, from the phone already paired with the radio. No cable, no computer, no adapter.
First time from a new phone, you may need the radio in front of you — why.
A Station you can leave up
A solar box on a pole stops being a climb every time there is a new release. That is the case where this matters most.
The app knows
MeshDTN reads which bootloader your radio has before offering anything. With OTAFIX you get the update. Without it you get a link back here.
Read this before you run an update
A failed update leaves the radio blank until you retry
The bootloader erases the old firmware before the first byte of the new one arrives. That is how it works and it is not a defect. But it means there is no going back part-way: if a transfer fails, the radio sits in its bootloader — silent, carrying nothing, with no firmware to fall back to.
It is not broken, and the app can finish the job without a cable. A radio left waiting like this appears at the top of Update a radio over Bluetooth, by name, with Finish the update beside it. That completes the transfer over the air — and it is still offered after you close and reopen the app, which is what somebody actually does when an update fails.
It has to be within a few meters of your phone to be reached. If it stays out of sight, the fallback is the physical one: press its reset button twice, plug it into a computer, and install the firmware over the cable.
Even so: not in the middle of something you need the radio for, and not at the top of a pole on your only way up.
How to install it
Five steps, once per board, at your desk
Plug the board into a computer
A USB data cable, not a charge-only one. If nothing appears at the next step, the cable is the first thing to suspect.
Double-press the reset button
Two presses, close together. On most boards it reappears as a USB drive. That drive is the bootloader, and dropping a file on it is how you replace it.
No drive, just a serial port? That is a real situation with a real answer, and it is not something you did wrong. Read this before going further.
Check what you have
Open INFO_UF2.TXT on that drive. It names the bootloader installed now. If it already says OTAFIX, you are done — close it and carry on.
Drag the file onto the drive
Get the file for your board below, and drop it on the USB drive. The board writes it and restarts by itself. Don’t unplug it while it writes.
Confirm
Double-press reset again and open INFO_UF2.TXT once more. It should now name OTAFIX. That board is done for good.
The first update from a phone the radio doesn’t know
The update runs over an encrypted Bluetooth link, so the first time a particular phone talks to a particular radio, Android asks for a PIN. After that the two are paired and it never asks again.
If your radio has a screen, the PIN is on it — a fresh six digits each time the radio boots, existing nowhere else. So that first update needs you within sight of the board. If your radio has no screen, the PIN is fixed and set when the firmware was built.
Take your time over it — the app waits, tells you what it is waiting for, and nothing on the radio has changed yet at that point. A refused or mistyped PIN leaves the radio exactly as it was.
If your board shows a serial port and no drive
There are two different reasons for this, and only one of them is about your board. Work out which you have before doing anything else — the second one costs you nothing to fix.
1. Something asked the bootloader for a serial session. Flashing tools commonly do this: they tap the USB port at 1200 baud, which tells the bootloader to come up as a serial port and nothing else. A board in this mode never shows a drive, whatever board it is. If you arrived here through a flashing tool, an IDE, or a script rather than by pressing the button yourself, this is almost certainly what happened. Unplug the board, plug it back in, and double-press the reset button by hand.
2. The bootloader your board shipped with doesn’t offer a drive. Then the drag-and-drop route genuinely isn’t open to you, and there is no setting that changes it. The SenseCAP T1000-E is a reported example.
We have not surveyed which boards fall into the second group, and we are not going to guess. What a board shows before OTAFIX is installed depends on the bootloader its maker put there, which is not something we ship or can read. Two are confirmed to show a drive — the Wio Tracker L1 and the SenseCAP Solar Node P1 — and the T1000-E is reported not to. Every other board is unknown, and this page will keep saying so until somebody checks one.
The serial route, and its risk
OTAFIX publishes a .zip for each board alongside the .uf2, and it installs over that serial port with adafruit-nrfutil. It is a real route and it does work — it is how we recover boards on our own bench.
It is not equivalent to dragging a file onto a drive, and we will not pretend it is. Dropping a .uf2 on a drive is handled by the bootloader that is already running and is hard to get wrong. Writing a bootloader over serial replaces the very thing doing the writing: if it goes wrong part-way, the board may need a hardware debugger — an SWD probe and the wires to reach the pads — to bring back. Another cable will not do it.
So we are not going to talk you through it step by step. If you are comfortable with adafruit-nrfutil and an SWD probe is within reach if it goes badly, the files are on OTAFIX’s releases page. If that sentence does not describe you, the honest advice is to leave the bootloader alone: the board still updates over USB with a cable, which works on every board and risks nothing.
One thing that is settled: once OTAFIX is on a board, it does offer a drive. Every board OTAFIX builds for names a drive volume in its own board definition — the Wio Tracker L1’s is TRACKER L1, the T1000-E’s is T1000-E — so whichever route you take this time, a later bootloader update is a drag-and-drop.
This does not install MeshDTN
Replacing the bootloader leaves your firmware alone. If the board is new, flash MeshDTN afterwards the normal way.
Get the file
Seeed Studio SenseCAP Solar Node P1-Pro
The reference Station board. We serve its file from this site because somebody about to mount a Station should not be hunting through a releases page.
sensecap_solar_p1_bootloader-0.9.2-OTAFIX2.2.uf2
Drop this on the board’s USB drive, not into the flasher.
MIT licensed, © 2016 Adafruit Industries —
the license, and where the file came from.
Any other board
Take the file for yours from the OTAFIX releases page. Match your board’s name exactly — a bootloader built for a different board will not run on yours, and a board that looks similar is not the same board.
Easier: pick your board in the flasher. It tells you, for that specific board, whether a bootloader exists and where to get it.
Which boards can do this
Not all of them, and the flasher will tell you
OTAFIX is a bootloader for nRF52840 chips. Of the 95 boards in our flasher, 41 are nRF52840 — and for 32 of those a bootloader is published. Those are the boards that can take updates over Bluetooth. That leaves nine — eight with no OTAFIX build at all, and one we cannot place. Both are named below.
Eight nRF52840 boards have no OTAFIX build and update over USB only: Heltec MeshPocket, Heltec MeshSolar / MeshTower, Heltec Tower V2, Keepteen LT1, LilyGo T-Impulse Plus, Meshtiny, SenseCAP MeshTracker X1, and UnitEng Nano G2 Ultra. There is nothing to install for these and nothing you are missing — they are simply cable-only for now.
One board we cannot place either way: the Minewsemi ME25LS01. OTAFIX builds for a target called minewsemi_mx25le01, and we do not know whether that is this module under another name or a different part. The part strings do not match and nothing we can read settles it — so rather than put it on a list and have somebody flash a bootloader built for different silicon, we are leaving it off both. If you own one and can tell us, please do. Until then it is the one board here with no answer, and it updates over USB like any other.
The other 54 boards are not nRF52840 at all — ESP32, RP2040 and STM32WL. This page does not apply to them, and they have their own flashing routes.
Counts as of the current OTAFIX release. Don’t work from this list — pick your board in the flasher and it will say what applies to that board today.
Credit where it’s due
This is not our work
OTAFIX is maintained by oltaco as a fork of the Adafruit nRF52 Bootloader, and it was written up by the MeshCore project, where the problem was diagnosed. We host one file for one board and point everybody else upstream. The source, the other boards and every later release are theirs.