nRF51 SDK
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
DFU Service Specification

Device Firmware Update Service

Overview

Nordic Device Firmware Update (DFU) Service exposes necessary information to perform Device Firmware Update on the device. NOTE: This is not a service defined by the Bluetooth SIG, a proprietary one to demonstrate a typical firmware update on an nRF51 device.

DFU Service does not depend on any other service. Support for following GATT sub-procedures are mandatory for this service: a. Write Characteristic Value b. Notifications c. Read Characteristic Descriptors d. Write Characteristic Descriptors

DFU GATT Service can operate on Bluetooth Low Energy as transport only.

The Service does not define any new error codes for Attribute Protocol and data exchange in is little endian (LSB first) order.

This service is instantiated as a primary service in the DFU mode.

ota_spec_number

The Service UUID assigned is value 0x1531 over proprietary base, see table below.

UUID For Nordic:

Description Number Base
Company Identifier: 0x0059
UUID Base: 0x23, 0xD1, 0xBC, 0xEA, 0x5F, 0x78, 0x23, 0x15, 0xDE, 0xEF, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00
Service UUID start: 0x1530
Characteristic UUID start: 0x1531

Service Characteristics

DFU Service exposes one instance of characteristics listed in table below. This service does not impose any security requirements.

Characteristic Name Requirement Mandatory Properties Descriptors Description
DFU Packet M WriteWithoutResponse See DFU Packet
DFU Control Point M Write, Notify See DFU Control Point

DFU Packet

UUID: 0x1532 over proprietary base.

Summary:

This characteristic receives firmware to nRF51 device as DFU Packets. The firmware is transferred by writing each fragment as DFU Packet to this characteristic. Size of each packet is in range of 1 to (ATT_MTU - 3).

dfu_packet.png
DFU Packet

DFU Control Point

All DFU Procedures are requested using this characteristic. A DFU Procedure request is initiated by writing to this characteristic. A Response, marking end of procedure is received as a notification. The Characteristic value or the DFU Control PDU has the following format

UUID: 0x1531 over proprietary base.

Summary:

The DFU Control Point characteristic is used to control the state of Device Firmware Update process.

Table below summarizes control point procedure op-code and respective parameters.

dfu_ctrl_pt.png
DFU Control Point

General Error Handling procedures

If an Op Code is written to the DFU Control Point characteristic and the Client Characteristic Configuration descriptors of either or both of the DFU Control Point or the DFU Status Report are not configured for notifications, the DFU Target will return an error response with the Attribute Protocol Application error code set to Client Characteristic Configuration Descriptor Improperly Configured as defined in CSS Part B, Section 1.2 of Supplement to the Bluetooth Core Specification, Version 3 or later.