The Qorvo DWM3000EVB boards can communicate over Bluetooth UWB. They probably interoperate best with Raspberry Pi 3+. Do confirm that before making your project depend on them!

We have four of these.

Official documentation and library links

The link labeled “DWS3000 API Software and API Guide” is an archive containing libraries and documentation.

Build guide

These instructions were made for DWS3000_Release_v1.1

There is a README in there for building the library and examples on the Raspberry Pi 3B, but these instructions do not work out of the box for recent versions of Raspbian. Go through these additional steps:

  1. Ensure that wiringPi is installed on your Pi. You can download and build it from https://github.com/WiringPi/WiringPi if not.
  2. Edit some files located in Software/DW3000_API/Sources/API/Src/platform_rpi:

--- port.h before +++ port.h after @@ -42,6 +42,9 @@

#define UNUSED(x) (void)(x)

+#ifndef _PORT_C +extern'' +#endif'' pthread_mutex_t dwt_lock;

/* DW IC IRQ (EXTI15_10_IRQ) handler type. */

--- port.c before +++ port.c after @@ -11,6 +11,7 @@  * @author DecaWave  */

+#define _PORT_C #include <port.h>

  1. Edit the Makefile at Software/DW3000_API/Sources/API/Makefile.rpi:

--- Makefile.rpi before +++ Makefile.rpi after @@ -502,8 +502,8 @@    $(eval PROG_OBJS:=$($(PROG)_OBJS))    $(eval PROG_BUILD_DIR:=$($(PROG)_BUILD_DIR))    @echo "Building target" $@ "..." - $(CC) $(CFLAGS) $(PROG_FLAGS) -o $(PROG_BUILD_DIR)/$@ $(EXE_LDFLAGS) \ - $(SHARED_EX_OBJS) $(PROG_OBJS) -l$(NAME) +   $(CC) $(CFLAGS) $(PROG_FLAGS) -o $(PROG_BUILD_DIR)/$@ \ +   $(SHARED_EX_OBJS) $(PROG_OBJS) -l$(NAME) $(EXE_LDFLAGS) 

# libdw3000 # Rule to link objects together and create symlinks (for versioning).

  1. (optional) Comment out any example programs you’re not interested in, so they will not be compiled:

--- Makefile.rpi before +++ Makefile.rpi after @@ -417,49 +417,49 @@

# List of simple examples to build. Edit this list to change which executables are built. TEST_PROGRAMS:=$(TEST_READING_DEV_ID) \ - $(TEST_SIMPLE_TX) \ - $(TEST_SIMPLE_TX_PDOA) \ ... - $(TEST_LE_PEND_RX) +#$(TEST_SIMPLE_TX) \ +#$(TEST_SIMPLE_TX_PDOA) \ ... +#$(TEST_LE_PEND_RX)