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

Wireless programming Arduino with nrf8001

We're building a low cost device with an nRF8001 as the only means of communication as physical access is closed after the device is built.

Is there any way to change the nRF8001 output mode to stream data directly to the micro so we can program it wirelessly, for firmware updates? Supporting electronics can be added and the dedicated pins on the micro will be available.

Parents
  • You can examine the BTLE optiboot bootloader for the nRF8001 and the ATMega328p and check if it fits your needs. This bootloader currently allows firmware update over UART and over the BTLE.

    Let me know if this works for you.

    DFU_nRF8001_ble_optiboot_Android_nRFToolbox_1_16_0.pcapng

    Edit: Attached a sniffer trace using nRFSniffer (1.0.1.1148) and wireshark version 1.10.9 showing the working DFU

  • Thank you for the sniff trace, I'll try to do one as soon as I have the PCA10000 with me again.

    In the meantime, I've done some more tests and found that the only way I could get to "Transmitting application" was when I had a faulty reset wire on my custom board. With that fixed, the result is the same as the one replicated on a bare Arduino with Adafruit breakout: DFU process starts, application on MCU jumps to bootloader but after a few seconds it disconnects, and the application starts again.

    I have still don't know what could be stopping the DFU process from working, seeing as you are able to do with virtually the same hardware. All the fuses are the same, I've ensured the bootloader is correctly flashed by dumping it and md5, the pinout is the same. I'm using the example files provided straight out of the BLE-SDK downloaded from github.com/.../ble-sdk-arduino .

    I have also tried the ble_proximity_with_dfu_template and the Android app tells me "GATT ERROR" in the DFU process.

Reply
  • Thank you for the sniff trace, I'll try to do one as soon as I have the PCA10000 with me again.

    In the meantime, I've done some more tests and found that the only way I could get to "Transmitting application" was when I had a faulty reset wire on my custom board. With that fixed, the result is the same as the one replicated on a bare Arduino with Adafruit breakout: DFU process starts, application on MCU jumps to bootloader but after a few seconds it disconnects, and the application starts again.

    I have still don't know what could be stopping the DFU process from working, seeing as you are able to do with virtually the same hardware. All the fuses are the same, I've ensured the bootloader is correctly flashed by dumping it and md5, the pinout is the same. I'm using the example files provided straight out of the BLE-SDK downloaded from github.com/.../ble-sdk-arduino .

    I have also tried the ble_proximity_with_dfu_template and the Android app tells me "GATT ERROR" in the DFU process.

Children
No Data
Related