DWM1001 TDOA tags


I’m trying to develop small tags (using just a DWM1001 module + a battery) to use with a TDOA-based system. I just need the tags to emit a UWB blink. I have a few DWM1001 modules as well as a couple DWM1001-DEV boards. The goal was to use these to test that the DWM1001 would work as a tag before committing to buying the rest of the system (which is from another manufacturer).

How do I flash the provided TDOA blink example (which I’m assuming is code I could use for a tag) to the DWM1001 in a way that I can just use that module as a tag, rather than using the whole dev board?

Please let me know if I have any misconceptions about how this works!


The DWM1001-DEV has a J-Link built-in. You just need to use Segger Embedded Studio or J-Flash-Lite to program the TDoA Blink hex file image. That’s it!

Thanks for the reply! Once it has been flashed, would I be able to remove the DWM1001 module (without the board) and use it on its own?

How could I get code onto a DWM1001 (without the dev board) without having to unsolder and resolder on the dev board?


Of course, assuming you have the appropriate carrier board for the module.

Regarding your second query,

option 1: If using PANS, it supports OTA updates
option 2: Assuming custom firmware, make your own board,
option 3: we are making a programming board that allows easy insertion of the DWM1001C into a socket making it easier to program individual modules. Available Q4…


To clarify, what do you mean by an appropriate carrier board? I was under the impression one could just attach a battery to the DWM1001 and it would run.

Very exciting! Looking forward to the new release (and will try to cobble something together in the meantime).

Carrier board - at a minimum, you will need a DC-DC and battery

1 Like

Thank you @Kenneth_Dwyer_DW for your help! It’s made it a lot easier starting up this project.

A couple follow-up questions on the TDOA tags:

  1. Is there any sample code to set up a TDOA anchor to test if my tags properly work? (As I understand it, multiple anchors are necessary to locate position; however, I just want to make sure the signals are being properly received and that there are distinct IDs.)
  2. How does instancereaddeviceid() work? (From the sample code on the DWM1001 page entitled “DWM1001 TDoA Tag Software.”)


1: For Anchors you will need hardware that supports TCXO’s
2: AFAIK, this simply reads the DW1000 device ID register over the SPI.

Our TDoA system uses DWM1001 as Tags but not for Anchors, we have special hardware for the Anchors that has Ethernet backhaul, PoE, TCXO and then a PC running a Location Engine solver. The timestamps from each anchor, resulting from tag blinks, are sent via Ethernet back to the LE. In addition the Anchors need to be sync’ed so we use UWB clock calibration packets that Tx every 150ms.


1 Like

Would it be useful to use our DWTAG as your tag? Already has battery, enclosure, charging means.


The DWTAG design predates the DWM1001 but is remarkably similar using the same exact processor, DW1000, etc. The differences are:

  • DWTAG includes battery, charger (micro USB connector), enclosure.

  • DWTAG uses a 9 axis accel/gyro/mag sensor (MPU-9250) instead of 3 axis accel (LIS2DH12), this provides orientation.

  • nRF52832 pin outs vary between DWTAG and DWM1001, but easily remapped using nRF GPIO/PPI system.

  • DWTAG has an RGB LED which can make any color.

  • DWTAG 1.1 and earlier lacks 32 KHz crystal (1.2 and later has 32 KHz crystal).

It seems like it would be fairly simple to port any code that runs on a DWM1001 to a DWTAG. We have ported our CUWB system to the DWM1001 and that was not difficult so the reverse should be true. Fundamentally, it is an nRF with a DW1000. You use a Tag-Connect cable with a J-Link to program the nRF processor directly, or if your code has over the air updating, then that will work, too, once you get your first binary image loaded.

If there is sufficient interest, we can see about documenting the DWTAG programmer’s model so that someone could port their code to it from a DWM1001.

If a DWTAG is not appropriate, we could design a specifically customized tag for your needs based on the DWM1001 (carrier board, battery, and enclosure), or a full custom design. We do a lot of custom tag designs (about 1 per month lately) as that is the part of the system that is most application specific and/or client specific.

Mike Ciholas, President, Ciholas, Inc
3700 Bell Road, Newburgh, IN 47630 USA
[email protected]
+1 812 962 9408

1 Like

Hi @Kenneth_Dwyer_DW, I had a follow-up question about setting up the carrier board. I checked the DWM1001 datasheet (as well as the schematic), and it seems to suggest that the DC-DC converter is already part of the DWM1001 module. Does that mean it’s already possible to just add a battery?

@mciholas, thanks for the information! I’m actually trying to customize a tag myself and am in the process of learning how to do it :slight_smile: