lib_dfu: Device firmware upgrade over a serial interface

FAVOURITE VERSION RELEASED COMMENTS DOCUMENTATION SOFTWARE
2.1.0 2026-05-01 v2.1.0 now fully supports both USB and I2C DFU devices, and improves Flash erase handling VIEW HTML VIEW PDF ZIP
View older versions
2.0.0 2026-03-27 v2 adds I2C DFU device and host for XCORE with an host app for Raspberry Pi, along with adding XCommon-CMake build system support and some changes in Flash access ZIP ZIP

Summary

The Device Firmware Upgrade (DFU) library provides functionality to facilitate firmware updates over almost any transport physical layer. It includes support for handling DFU packets, managing firmware images, and ensuring the integrity of the update process.

Features

  • One upgrade slot

  • Support USB DFU spec v1.1

  • Support for custom transport layers

Known issues

  • USB example reports several warnings such as “port “XS1_PORT_1F” on tile[0] is not connected to any pins in this package.”, this is normal on small packages that do not have all the pins bonded out.

  • The lib_device_control client handling currently consumes an additional thread as it is not distributable.

  • For DFU over I2C the bus speed of up to 100kbps is supported. This is also supported with no clock stretching for all commands except upload.

  • DFU_ABORT request is supported in upload but not in download.

Development repo

Required tools

  • XMOS XTC Tools: 15.3.1 or later

Required libraries (dependencies)

Support

This package is supported by XMOS Ltd. Issues can be raised against the software at www.xmos.com/support or using GitHub issues.

Scroll to Top
Cookie Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Strictly Necessary Cookies

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.

Analytics Cookies

This website uses Google Analytics to collect anonymous information such as the number of visitors to the site, and the most popular pages.

Keeping this cookie enabled helps us to improve our website.