nordic_dfu 7.1.0
nordic_dfu: ^7.1.0 copied to clipboard
This library allows you to do a Device Firmware Update (DFU) of your nrf51 or nrf52 chip from Nordic Semiconductor. Fork of flutter-nordic-dfu.
nordic_dfu #
Fork from flutter_nordic_dfu and updated with latest dependencies, now with macOS support from version 6.0.0.
This library allows you to do a Device Firmware Update (DFU) of your nrf51 or nrf52 chip from Nordic Semiconductor. It works for Android, iOS, and MacOS.
This is the implementation of the reference "react-native-nordic-dfu"
For more info about the DFU process, see: Resources
Run example #
-
Add your dfu zip file to
example/assets/file.zip -
Run example project
-
Scan device
-
Start dfu
Usage #
You can pass an absolute file path or asset file to NordicDfu
Use absolute file path
await NordicDfu().startDfu(
'EB:75:AD:E3:CA:CF', '/file/to/zip/path/file.zip'
);
// With callback
await NordicDfu().startDfu(
'EB:75:AD:E3:CA:CF',
'assets/file.zip',
fileInAsset: true,
onProgressChanged: (
deviceAddress,
percent,
speed,
avgSpeed,
currentPart,
partsTotal,
) {
print('deviceAddress: $deviceAddress, percent: $percent');
},
);
Use asset file path
/// just set [fileInAsset] true
await NordicDfu().startDfu(
'EB:75:AD:E3:CA:CF', 'assets/file.zip',
fileInAsset: true,
);
Parallel DFU #
Available from version 7.0.0
Concurrent DFU Processes #
- DFU operations can run simultaneously on multiple devices.
- Callbacks are triggered correctly and independently for each device.
Interface change #
- Updated
abortDfumethod to include an optionaladdressparameter:- If an address is provided: The DFU process for the specified device will be aborted. (iOS only)
- If no address is provided: All active DFU processes will be aborted.
- Added error handling for
abortDfu:FlutterError("INVALID_ADDRESS")is thrown if the provided address does not match any active DFU process.FlutterError("NO_ACTIVE_DFU")is thrown if no address is provided and there are no active DFU processes.
iOS #
- ✅ Devices update in parallel.
- ✅ Callbacks set in
startDfuare called independently for each device. - ✅ All active DFU processes can be aborted using the
abortDfumethod without anaddress. - ✅ DFU processes can be individually aborted using the
abortDfumethod with anaddress.
Android #
- ✅ Devices update in parallel (set limit of 8).
- ✅ Callbacks set in
startDfuare called independently for each device. - ✅ All active DFU processes can be aborted using the
abortDfumethod without anaddress. - ❌ DFU processes cannot be individually aborted using the
abortDfumethod with anaddressdue to current limitations in the underlying Android-DFU-Library.
Address Mapping #
The Nordic DFU library now includes an address mapping feature to track devices during firmware updates. Read the full documentation to learn how this improves reliability when devices change MAC addresses in DFU mode.
Resources #
- DFU Introduction
- Secure DFU Introduction
- How to create init packet
- nRF51 Development Kit (DK) (compatible with Arduino Uno Revision 3)
- nRF52 Development Kit (DK) (compatible with Arduino Uno Revision 3)