The original repo is poorly maintained and we've taken some changes from different forks over the last couple of years.
This is a fork of a fork which seems to have all the changes we want (Salt and pepper fork)
This fork was done to get the changes in this PR from the original repo. It appears the previous converge fork changes are in the salt & pepper fork, which this is a fork of. It adds the alternativeAdvertisingNameEnabled
feature.
Hopefully there will be a better maintained version of this repo in future. I have bumped this version to 3.4.0 and updated the package.json so we can publish this to github packages.
For now I have appended -2022 on the repo name, so we can end up deleting this repo in future and replacing with something more stable.
This library allows you to do a Device Firmware Update (DFU) of your nrf51 or nrf52 chip from Nordic Semiconductor. It works for both iOS and Android.
For more info about the DFU process, see: Resources
- Please keep in mind the our availability to maintain this fork is limited and is based on our project needs.
- If need the main documentation you can find it here.
- This fork contains the latest verisons of
iOSDFULibrary
&Android-BLE-Library
.
Install and link the NPM package per usual with
npm install --save https://github.com/Salt-PepperEngineering/react-native-nordic-dfu
or
yarn add https://github.com/Salt-PepperEngineering/react-native-nordic-dfu
For React Native below 60.0 version
react-native link react-native-nordic-dfu
Unfortunately, the ios project is written in Objective-C so you will need to use use_frameworks! :linkage => :static
.
Note: We are considering rewriting the ios module on Swift, but it depends very much on how much free time we have and how much we needed right now.
Podfile
:
- Flipper Disabled
target "YourApp" do
...
pod "react-native-nordic-dfu", path: "../node_modules/react-native-nordic-dfu"
...
use_frameworks! :linkage => :static
...
:flipper_configuration => FlipperConfiguration.disabled,
...
end
- Flipper enabled
static_frameworks = ['iOSDFULibrary']
pre_install do |installer|
installer.pod_targets.each do |pod|
if static_frameworks.include?(pod.name)
puts "Overriding the static_frameworks? method for #{pod.name}"
def pod.build_type;
Pod::BuildType.new(:linkage => :static, :packaging => :framework)
end
end
end
end
target "YourApp" do
...
pod "react-native-nordic-dfu", path: "../node_modules/react-native-nordic-dfu"
...
:flipper_configuration => FlipperConfiguration.enabled,
...
end
AppDelegate.mm
:
...
#import "RNNordicDfu.h"
...
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[RNNordicDfu setCentralManagerGetter:^() {
return [[CBCentralManager alloc] initWithDelegate:nil queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)];
}];
// Reset manager delegate since the Nordic DFU lib "steals" control over it
[RNNordicDfu setOnDFUComplete:^() {
NSLog(@"onDFUComplete");
}];
[RNNordicDfu setOnDFUError:^() {
NSLog(@"onDFUError");
}];
...
}
cd newExample
yarn setup
- Go to
newExample/App.tsx
- Update the
filePath
variable with the link to the firmware file - Update the
BleManagerService.init('', '');
function with the DFU Service & the device name - Press
Connect to Device in Area
button - When you see some small info about the device on the screen Press the
Start Update
- If you have any problems connecting to the Device pleas consult the react-native-ble-manager
- For configuration issues please also check this (Pilloxa#171)
- 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)