This page presents the DecaDuino Library.


DecaDuino is an Arduino library which provides a driver for the DecaWave DW1000 transceiver, and modules based on this transceiver, such as DecaWave DWM1000.

Since the DecaWave DW1000/DWM1000 is based on a Ultra Wide Band (UWB) Physical layer, DecaDuino can be used as an open framework for wireless Time-of-Flight (ToF) ranging systems.



DecaDuino supports the PJRC Teensy 3.2/3.1/3.0; an example of this support is the DecaWiNo. Others Arduino boards have not been tested yet. User feedback on the topic will be greatly appreciated. Others boards are supported: DecaWave DWM1001 evaluation board, but also our Yahu and Nomi.

PHY Driver

DecaDuino is a Physical-layer Service Access Point (PHY-SAP). It provides the two conventional Physical-Data (PD) and Physical Layer Management Entity (PLME) SAPs which enable MAC-level protocols to send/receive data and configure the transceiver (channel, transmission rate, preamble parameters…).

Since this framework was designed to aid in the implementation of Time-of-Flight based ranging protocols, DecaDuino also provides access to the DW1000’s Physical-level high precision timer (64GHz/40bit) which enables precise message timestamping at both transmission (t_TX) and reception (t_RX). Finally, DecaDuino implements DW1000’s advanced synchronization/timestamping functionalities such as delayed transmission and receiver skew evaluation, which are required for efficient centimetre-level ranging protocols using Time-of-Flight.

DecaDuino Stack and ToF evaluation protocol sequence

DecaDuino comes with several Arduino examples implementing the most popular ranging protocols such as Two-Way Ranging (TWR) and Symetrical Double-Sided Two-Way Ranging (SDS-TWR). All example sketches are available as usual in the Arduino IDE menu:

File > Examples > DecaDuino


The DecaDuino’s tutorials section of this documentation proposes many examples.


Using DecaDuino is subject to licensing: