Home

Awesome

Device Firmware Update application

DFU application allows to flash new firmware on the DK. The process has three steps:

  1. Selecting zip file with an appropriate firmware.
  2. Selecting BLE device with open bootloader.
  3. Starting firmware upload.

Settings screen allows to change the DFU library parameters used for uploading firmware.

<img src="App/fastlane/screenshots/en-US/iPhone 8 Plus-01Devices.png" width="300"> <img src="App/fastlane/screenshots/en-US/iPhone 8 Plus-02Settings.png" width="300">

iOS DFU Library

Version Carthage compatible

Installation

For Cocoapods:

target 'YourAppTargetName' do
    use_frameworks!
    pod 'iOSDFULibrary'
end
pod install

For Carthage:

github "NordicSemiconductor/IOS-DFU-Library" ~> x.y // Replace x.y with your required version
carthage update --use-xcframeworks --platform iOS // other supported platforms: macOS, tvOS, watchOS

For Swift Package Manager:

// swift-tools-version:5.6
import PackageDescription

let package = Package(
  name: "<Your Product Name>",
  dependencies: [
    .package(
      url: "https://github.com/NordicSemiconductor/IOS-DFU-Library", 
      .upToNextMajor(from: "<Desired Version>")
    )
  ],
  targets: [.target(name: "<Your Target Name>", dependencies: ["NordicDFU"])]
)

Device Firmware Update (DFU)

The nRF5x Series chips are flash-based SoCs, and as such they represent the most flexible solution available. A key feature of the nRF5x Series and their associated software architecture and S-Series SoftDevices is the possibility for Over-The-Air Device Firmware Upgrade (OTA-DFU). See Figure 1. OTA-DFU allows firmware upgrades to be issued and downloaded to products in the field via the cloud and so enables OEMs to fix bugs and introduce new features to products that are already out on the market. This brings added security and flexibility to product development when using the nRF5x Series SoCs.

This repository contains a tested library for iOS 8+ platform which may be used to perform Device Firmware Update on the nRF5x device using an iPhone or an iPad.

DFU library has been designed to make it very easy to include these devices into your application. It is compatible with all Bootloader/DFU versions.

Alt text for your video

Service Changed characteristic

In order the DFU to work with iOS, the target device MUST have the Service Changed characteristic with Indicate property in the Generic Attribute service. Without this characteristic iOS will assume that services of this device will never change and will not invalidate them after switching to DFU bootloader mode.

Service Changed characteristic behavior:
Secure DFU from SDK 12:
Secure DFU from SDK 14:

Documentation

See the documentation for more information.


Requirements

The library is compatible with nRF51 and nRF52 devices with S-Series Soft Device and the DFU Bootloader flashed on.


DFU History

Legacy DFU

Secure DFU

This library is fully backwards compatible and supports both the new and legacy DFU. The experimental buttonless DFU service from SDK 12 is supported since version 1.1.0. Due to the fact, that this experimental service from SDK 12 is not safe, you have to set enableUnsafeExperimentalButtonlessServiceInSecureDfu to true to enable it, this is off by default. Read the method documentation for details. It is recommended to use the Buttonless service from SDK 13 (for non-bonded devices, or 14 for bonded). Both are supported since DFU Library 1.3.0.

Check platform folders for mode details about compatibility for each library.

Other frameworks

React Native

An unofficial library for both iOS and Android that is based on this library is available for React Native: react-native-nordic-dfu

Flutter

A library for both iOS and Android that is based on this library is available for Flutter: nordic_dfu

Xamarin

Simple binding library for iOS is available on nuget: Laerdal.Dfu


Resources