DFU SDK 2.0 for Mac OS X

The Device Firmware Upgrade (DFU) package provides all the software necessary to implement USB firmware update applications for Apple’s Mac OS X. (The version 2.0 firmware is backwards compatible with the previous version 1.9 SDK). A downloadable pdf describing this software may be accessed from here.

The software comprises a user-mode static library (source code available) that implements a complete standards compliant DFU driver, with interfaces in C++ and Cocoa/Objective-C. The core driver is fully customisable, and can be adapted to suit specific device requirements.

Key features are:

  • 100% native Objective-C/Cocoa application interface classes
  • extensible user-mode C++ core driver with support for firmware download, upload and verify
  • standards compliant to USB-IF DFU specification versions 1.0 and 1.1
  • available extensions include support for Cambridge Silicon Radio (including PSKEY access)
  • optional kernel driver component for use with devices normally blocked by the OS kernel
  • multithreaded implementation ensures application responsiveness at all times
  • compatible with Apple Mac OS X 10.6, 10.7 and 10.8
  • supports all 32 or 64 bit Intel based Macintosh computers
  • extensive source-level and HTML documentation
  • flexible licensing options, including full source-code availability
  • Xcode 3.x or 4.x development environment support (Xcode 4.6.2 recommended)
  • clean licence terms (no GPL contamination)

The package provides three main components.

Our architecture builds on a kernel driver that manages Mac OSX interactions. On top is a static library in Objective-C/Cocoa. The application codes sits on top

The first is a sample application in Objective-C/Cocoa, supplied with full source code. This can be used as a starting point for customisation, or as an example reference for integration in to an existing code base or for a new development.

The second is a static library. This provides Objective-C classes to support  application development and C++ classes that provide the main driver implementation. By subclassing the main C++ driver class it is possible to adapt the driver to non-standard hardware (notably CSR based devices), without requiring modifications to the UI code.

The third layer is an optional kernel driver that is used to manage interactions between the standard Mac OS X USB stack and the device under update. This is required only if your device is potentially captured or in-use by the OS. The driver is needed for any device that presents a HID or Bluetooth personality at any point during the firmware update process.

Robust Extensible Architecture – DFU Architecture

An architectural approach is used to ensure that applications are robust and responsive.

Where possible, driver components are implemented as user-mode C++ classes using a simple inheritance pattern to permit extensibility by the end-user.

The driver protocol implementation is single-threaded for ease of development, simplifying unit-test cases for maximum reliability. Multithreading support is then added by means of an RPC wrapper layer, while a further Objective-C/Cocoa interface provides the UI interaction.

This approach combines the best application fluidity and responsiveness, while also permitting driver development and customisation using a simple and robust single-threaded development model.

Firmware update applications built using DFU's tools are robust and responsive

Flexible Licensing Options

We can organise three ways to license the software, depending on your budget and requirements:

  • binary SDK (with pre-build driver and library, and full sample application source)
  • full source SDK (including the kernel/DFU driver source code)
  • turnkey application development to your specification

All packages include free maintenance updates for one year. We are also able to organise a proactive test service to ensure that ongoing compatibility for your hardware and software against future OS revisions.