I recently received the uBlox XPLR-AOA-3 Dev Kit. It’s an easy way to do direction finding. I’ll be using this to implement a “follow me” robot. (Note that the image above is for the AOA-1/2 kits, and that the antenna is different in the AOA-3 kit.)

It took a bit to get it up and running, as there are some details that are easy to miss. This article deals with installing the firmware on the tag that comes with the kit, a necessary step as it does not come pre-flashed. As a bonus, I show how to do it from macOS.

Install nrfutil

The tool used to flash the tag is nrfutil (I don’t know why a uBlox product uses a Nordic Semiconductor flashing tool).

Install that on macOS via Brew:

% brew install nrfutil

nrfutil has a ton of sub-commands that have to be installed separately. In particular, you need the dfu sub-command, which comes from the nrf5sdk-tools package. I found this by Googling, and I don’t know how to find other packages:

% nrfutil install nrf5sdk-tools

You can see installed commands with nrfutil list:

% nrfutil list
Command        Version  Description
nrf5sdk-tools  1.0.1    nRF5 SDK tools that were available in nRF Util 6

Found 1 installed command(s)

Download the C209 Firmware

The C209 firmware is available on GitHub. You can download pre-built releases from here.

Unzip the file (in my case it was c209_aoa_tag_2_0_1-001.zip), and you’ll get a few versions:

% ls -l c209_aoa_tag_2_0_1-001
total 0
drwxrwxr-x@ 7 rmann  staff   224B May  4  2023 debug_c209_aoa_tag_for_dfu_boot/
drwxrwxr-x@ 7 rmann  staff   224B May  4  2023 debug_c209_aoa_tag_no_boot_required/
drwxrwxr-x@ 7 rmann  staff   224B May  4  2023 release_c209_aoa_tag_for_dfu_boot/
drwxrwxr-x@ 7 rmann  staff   224B May  4  2023 release_c209_aoa_tag_no_boot_required/

You will need to install one of the for_dfu versions.

Flash the Tag

The tag must be placed into DFU mode. Hold down S2 (the lower-left button) while pressing the reset button (the lower-right). You won’t see any evidence it’s in DFU mode (the USB device does not re-enumerate).

When using nrfutil, it wants a zip file. A successful invocation looks like this (replace the path and port as appropriate):

% nrfutil dfu serial -pkg /path/to/c209/firmware/release/c209_aoa_tag_2_0_1-001/release_c209_aoa_tag_for_dfu_boot/NINA-B4-DF-TAG-SW-2.0.1-001.zip -p /dev/cu.usbserial-DP04O6V2 -b 115200 -fc 1
  [####################################]  100%          
Device programmed.

That’s it for the tag. You can open it up and install a CR2032 battery to power it.

As to using it, that’s for another article. One thing to note, it’s not strictly necessary to get the full AOA-3 dev kit. The antenna (ANT-B10) alone is all you need, but it’s slightly more challenging to connect to it. And so far, there’s no way I’ve found to get just an ANT-B10 and a tag, or to buy a tag separately.