UWB Frames Encapsulation

This is the latest UWB frame protocol specification compliant with Sewio infrastructure.


  • RTLS Studio: version 2.6.0 or newer

  • Anchor FW: version 3.1.6 or newer

  • Tag FW: version 3.127.7 or newer

  • Tag Leonardo Configurator 1.3.2 or newer

  • Setting → Blink Profile = RF5 


The full UWB frames contain various overhead fields which are appended as it goes from APP to PHY layer.

Sewio UWB frame encapsulation example from APP to PHY Layer

Briefly on the layers

Physical LayerPhysical layer. The lowest layer of the system. This layer knows nothing about the content of the transmitted frame. The only information that is given to this layer is the length of the frame and the frame itself as an array of data bytes. This frame is processed by a UWB transceiver.
MAC Layer

MAC layer ensures the successful transfer of the frame from point A to point B. So the following fields are used by this layer:

  • MAC_header

    • fcode - frame control field - it is used to determine what kind of UWB frame it is. Based on this field the individual nodes can decide whether to drop the packet or process it.

    • srcAddr - this field uniquely identifies the sender of the frame. This field may not be included in all UWB messages. In some cases, it is not important to know who sent the message

    • destAddr - the address of the node for which the message is intended. This field may not be included in all UWB messages.

    • seqNum - sequence number of the message. It is incremented modulo 256.

    • BC_num -number of BC_sequence. The tag sends the number of the last successful BC transaction. It is used by the Anchor to recognize if the tag receives the message, that was sent to the anchor by it.

    • BC_opt* - back-channel options. This field is sent only in back-channel data messages from Anchor to Tag. It contains optional parameters of back-channel behavior (immediate ACK etc.).

    • MAC_footer

      • CRC16 - cyclic redundancy check. Additional CRC to ensure consistency of the packet. (CRC is also added at the PHY layer, however, this is not enough ).

n - this field contains lentgt of BC_opt parameters - it be extended in the futurenumber of ACK retransmissions after successful receive of back-channelimmediate AC
Presentation LayerThis layer act as a multiplexer. It takes the raw data from the frame and passes it to the specific application.
Application LayerThis is the top layer where the user payload is sent and received.

Examples of UWB frames

The simplest blink without any application or system data

PHY  layerMAC layerPHY layer
PHY headerfcodesrcAddrseqNumPHY footer
(generated by DW1000)0xBB0x22035eb140660x20CRC16 (generated by DW1000)

The blink with battery level

PHY  layerMAC layerpresentation layerAPP layerPHY layer
PHY headefcodesrcAddrseqNummsgTypeAPP IDlengthAPP dataPHY footer
(generated by DW1000)0xBB0x22035eb140660x200x640x00010x010xC8CRC16 (generated by DW1000)

The blink with battery level and barometer data

PHY  layerMAC layerpresentation layerAPP layer*
PHY headefcodesrcAddrseqNummsgTypeAPP IDlengthAPP data (battery level)
(generated by DW1000)0xBB0x22035eb140660x200x64


(batt lvl)

APP layerPHY layer
APP IDlengthAPP data (baro data)PHY footer
0x0005 (sensors data)0x050x08AABBCCDDCRC16 (generated by DW1000)

*at APP layer can be data from multiple application 

Let's continue with layer details here: