Hello!
I have some devices with a custom built PCB on my desk, all of which have my own custom firmware on it.
Sadly the devices don't have access to the debug pins so I can only update via bluetooth.
When I first flashed these devices I flashed a full firmware package (bootloader, softdevice and application) which was based on a different firmware (let's call it OLD) I wrote some time ago.
This firmware package also includes the Secure BLE DFU Service so my plan was to update the devices later with the new firmware I am developing right now.
All good so far, I've done this before, no troubles yet.
Now I have finished to prepare my new firmware (let's call it NEW) and it's almost ready for production.
I realized that the bootloader I flashed before includes the private key of the OLD firmware.
I wanted to replace the private key in the NEW firmware to prevent the user from being able to flash the wrong firmware onto the wrong device, potentially killing it.
But now I have run into the problem that I am actually trying to avoid.
I have to update the existing firmware via bluetooth but I am unable to do so because my NEW firmware uses a new private key.
I have tried to create a temporary DFU distribution package containing the NEW bootloader (which has been compiled with the NEW private key) but signed with the OLD key.
Sadly that does not work. When trying this on an open PCB I have access to the RTT log I can see the following error output
00> :INFO:Image verified 00> :INFO:Prevalidate FAILED! 00> :INFO:Sending Response: [0x4, 0x4]
So I guess replacing the bootloader with a different one is not possible?
Or am I missing something?
Would be a really really big shame if the devices I have flashed before are now at a dead end :(
Any help is appreciated!
Also, big shout out to the Nordic staff and support team! The SDK and documentation you provide is great, as is the support you offer!