Getting started


I am completely new to this product. I am working on a project which involves developing an indoor positioning system for a classroom and my boss wants me to be able to directly communicate with the DW 1000 chip on this device as he says that it is programmable. I wanted to know or at least get some pointers about these things:

  1. How to program the DWUSB, what language to use?
  2. Is it possible to do SPI with the DW 1000 chip in order to get range data from it using maybe a Raspberry Pi?
  3. I guess, how to get the raw data from all the sensors?

Thank you, any response appreciated


Hi vmmech,

The DWUSB is mainly designed to be used alongside the CUWB server and is not intended to be used as a USB module for the DW1000 chip.
However, the DWUSB offers the ability to communicate directly with the DW1000 chip over SPI.

The DWUSB is a Ciholas-made hardware that utilizes the DW1000 chip, and uses USB for communication.
The firmware for the DWUSB is written in the C language and the source code for the firmware is not available to the public.

The DWUSB has two operation modes: Normal Mode, which is proprietary to Ciholas, and allows performing two-way ranging and precise location of tags when used in conjunction with the Ciholas CUWB server (all available on the website). To use the CUWB server you can download the binary and documentation from the website. No programming is required. The CUWB server emits the locations of all the tracked tags over ethernet. Those location packets can be used by your own program for your specific implementation.
The second operation mode is Bridge Mode. It gives you raw access to the DW1000 chip’s SPI bus over USB. You can issue SPI commands to the DW1000 by sending USB commands to the DWUSB.

The DWUSB hardware doesn’t expose the SPI pins of the DW1000 chip, so connecting the DW1000 to a Raspberry PI using SPI is not possible.
However, you can plug the DWUSB to a Raspberry PI over USB, and use the Bridge Mode to talk with the DW1000 chip directly over the SPI<–>USB link that the Bridge Mode provides.

Please note that the DW1000 chip is an advanced chip, and it takes tens or hundreds of SPI transactions to get it properly setup, and ready for transmissions and receptions.
We provide example Python scripts that use the Bridge mode to configure the DW1000 chip and uses it to transmit and receive packets.
You can use those examples as a starting point for your project.
All your code that interacts with the DW1000 will have to be written in Python.

If by the sensors, you mean the 9-axis inertial, and the pressure sensors, then the CUWB server emits those sensor values out over ethernet similar to the way it emits the location packets.
The bridge mode also allows you access to the MPU9250’s SPI bus, and the LPS25H’s I2C interface.
As for the DW1000, the only way to get raw data out of it is by using the Bridge Mode.

For more information, please have a look at the DW1000 datasheet and user manual. They provide a good insight into the steps required to configure and use the DW1000 chip.

I hope this helps answering your questions. Please let us know if you have any other questions or concerns.



Do you have a link to the example Python code that talks to the DWUSB module over USB?



We don’t have the Bridge code available publicly yet.
Please email me at the email below and we’ll send you an early copy of the Bridge firmware alongside the Python examples.