• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

NordicSemiconductor/Android-DFU-Library: A library with DFU feature for Android ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

NordicSemiconductor/Android-DFU-Library

开源软件地址(OpenSource Url):

https://github.com/NordicSemiconductor/Android-DFU-Library

开源编程语言(OpenSource Language):

Java 73.0%

开源软件介绍(OpenSource Introduction):

DFU Application

Download

This is a standalone Android application which utilizes DFU library. It allows for selecting a .zip file which can be uploaded to nRF5 devices with nRF5 DFU bootloader.

Note: To update a devices running Zephyr or NCS-based firmware use nRF Connect Device Manager app instead.

Play store

Application is available in Play Store.

Deep links

Application opens links with the provided format for both http and https. link_to_file should be replaced with a valid link. Clicking on the link automatically opens app which starts downloading to Download folder on the phone. Downloaded file is displayed in the app and ready to use.

Link format: https://www.nordicsemi.com/dfu/?file=link_to_file

Note: Keep in mind to replace '&' with '%26' in the link_to_file.

Zip file extension support

Application can handle opening .zip files from system level. Selected file will be used as an upload source.

DFU Library

Download

This is an Android library for performing a DFU (Device Firmware Update) on devices running nRF5 SDK firmware with DFU bootloader. iOS version of the same library can be found at IOS-DFU-Library.

Note: For devices running nRF Connect SDK (NCS), please use nRF Connect Device Manager library instead.

Usage

Setting up

The DFU library is available on Maven Central repository. Add it to your project by adding the following dependency:

implementation 'no.nordicsemi.android:dfu:2.1.0'

Latest version targeting API lower than 31 is 1.11.1.

For projects not migrated to Android Jetpack, use version 1.8.1.

Note: Those versions are not maintained anymore. All new features and bug fixes will be released on the latest version only.

Proguard / R8

If you use proguard/R8, add the following line to your proguard rules (although this should be added automatically): -keep class no.nordicsemi.android.dfu.** { *; }

Required permissions

Android 4.3 - 11

To communicate with Bluetooth LE devices on Android version 4.3 until 11 two permissions were required: BLUETOOTH and BLUETOOTH_ADMIN. It is enough to put them in the AndroidManifest.xml file. If your app targets API 31 or newer set android:maxSdkVersion="30" as on API 31 they were replaced by BLUETOOTH_CONNECT and BLUETOOTH_SCAN runtime permissions (see below).

Android 6 - 11

If your device is using the Nordic Buttonless Service for switching from app mode to DFU bootloader mode, this library will handle switching automatically. In case your bootloader is configured to advertise with incremented MAC address (that is you use Secure DFU and the device is not bonded) this library will need to scan for the new BluetoothDevice. In Android 6-11, location permission is required and has to be granted in runtime before DFU is started.

Starting from Android 8.1.0, all scans done without a scan filter whilst the screen is turned off will not return any scan results.

Note: "ACCESS_BACKGROUND_LOCATION" permission would also be required to trigger a successful DFU whilst the device screen is turned off, mainly to receive the scan results when scanning and connecting to the peripheral in bootloader mode while the device screen is turned off.

Android 12+

Starting from Android 12 location permission is not needed, instead BLUETOOTH_CONNECT is required. When your device is using buttonless service and changes MAC address, it also requires BLUETOOTH_SCAN permission to be granted. This permission can be used with neverForLocation flag. Read more in Bluetooth permissions.

Retrying

Starting from version 1.9.0 the library is able to retry a DFU update in case of an unwanted disconnection. However, to maintain backward compatibility, this feature is by default disabled. Call initiator.setNumberOfRetries(int) to set how many attempts the service should perform. Secure DFU will be resumed after it has been interrupted from the point it stopped, while the Legacy DFU will start again.

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.

Device Firmware Update

This repository contains a tested library for Android 4.3+ platform which may be used to perform Device Firmware Update on the nRF5x device using a phone or a tablet.

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

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

  • SDK 4.3.0 - First version of DFU over Bluetooth Smart. DFU supports Application update.
  • SDK 6.1.0 - DFU Bootloader supports Soft Device and Bootloader update. As the updated Bootloader may be dependent on the new Soft Device, those two may be sent and installed together.
    • Buttonless update support for non-bonded devices.
  • SDK 7.0.0 - The extended init packet is required. The init packet contains additional validation information: device type and revision, application version, compatible Soft Devices and the firmware CRC.
  • SDK 8.0.0 - The bond information may be preserved after an application update. The new application, when first started, will send the Service Change indication to the phone to refresh the services.
    • Buttonless update support for bonded devices
    • sharing the LTK between an app and the bootloader.

Secure DFU

  • SDK 12.0.0 - New Secure DFU has been released. Buttonless service is experimental.
  • SDK 13.0.0 - Buttonless DFU (still experimental) uses different UUIDs. No bond sharing supported. Bootloader will use address +1.
  • SDK 14.0.0 - Buttonless DFU is no longer experimental. A new UUID (0004) added for bonded only devices (previous one (0003) is for non-bonded only).
  • SDK 15.0.0 - Support for higher MTUs added.

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 call starter.setUnsafeExperimentalButtonlessServiceInSecureDfuEnabled(true) to enable it. 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.

Related libraries

React Native

A 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: flutter-nordic-dfu

Xamarin

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

Resources




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap