This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF52840 BLE DFU Debug - In field DFU

Hi,

I currently have a nRF52840DK pre-programmed with the DFU over BLE, but with the debug version. I am unable to physically get to the device, if I wish to perform a DFU must I encrypt the hex file with the public key for it to work? 

Thanks,

Aaron

Parents Reply Children
  • Hi, 

    Yes I have used the Buttonless DFU via BLE, however, my application I wish to program to the device does not use the buttonless DFU. Is it just a matter of setting the correct ram addresses etc for the softdevice in my application so it can just sit above the SD without ever interacting with it again?

  • Hi Aaron, 

    I'm not sure I understand what you described: "Is it just a matter of setting the correct ram addresses etc for the softdevice in my application so it can just sit above the SD without ever interacting with it again?"

    What exactly you want to do with this ? 

    If you don't have any physical access to the device, how can you program your application ? RAM address has nothing to do with application location, it's the Flash address. Unless you run your entire application on RAM, which is pretty uncommon. 

  • Hi,

    Apologies for the lack of clarity. We currently have a nRF52DK in field within an enclosure, so no availability to the USB ports. Before the device was deployed it was flashed with the BLE buttonless DFU example but using the debug version (public key).

    My question pertains to the hex file to be used over this service. Must I use nrfutil to encrypt the file using the SDK's public key to allow for a successful update?

  • Hi, 

    If you use the public key that is provided by default in the debug version (which only for testing) your image need to be signed by the privatekey that we used to generate the debug public key. This is the debug public key for SDK15.3 : 

    __ALIGN(4) _PK_CONST uint8_t pk[64] =
    {
    0x0e, 0xdf, 0x9f, 0xc8, 0xe6, 0x7b, 0x4e, 0x1a, 0xce, 0xe8, 0x6f, 0x86, 0xe2, 0x91, 0xc2, 0x98, 0x42, 0xc0, 0x23, 0x72, 0xfc, 0x76, 0xe6, 0xd2, 0xf7, 0x74, 0xfc, 0x09, 0x9f, 0xbf, 0x88, 0x5a,
    0x79, 0x78, 0xd4, 0x2f, 0xcb, 0x27, 0x84, 0xb1, 0xd1, 0x82, 0x70, 0xf9, 0xe0, 0x14, 0xf9, 0x49, 0xa4, 0x47, 0xe9, 0x33, 0xaf, 0x7d, 0x07, 0x1d, 0xd0, 0x93, 0x4b, 0xd2, 0x93, 0x8b, 0xe6, 0x20
    };

    Please check and confirm that you used the public key of your SDK in your bootloader. I'm afraid that we don't keep the private key and can't provide to you as we mentioned in the node, it's a throwaway private key.  

Related