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

OTA DFU with Public BLE Address

Tl; dr

I tried to use OTA DFU with Public BLE Address, but I failed. Is this possible?

Details

Condition

I modified ble_app_hrs example like below (SDK11, pca10028, s130, armgcc).

static void gap_params_init(void)
{

  ... other codes ...

  ble_gap_addr_t addr;
  addr.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC;
  memcpy(addr.addr, (uint8_t*) NRF_FICR->DEVICEADDR, 6);
  err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE,
                                    &addr);
  APP_ERROR_CHECK(err_code);
}

I checked the status of bootloader by RTT with the iOS nrf toolbox app. I fixed some linker scripts and dfu_types.h to use RTT. No other any codes are modified.

Behaviour

  • When not public BLE address (no modified default one. I don't know which one is actually), the bootloader started direct advertising and connect to the iOS app soon.

  • When public BLE address, the bootloader started direct advertising and does not connect. Then the bootloader repeats direct advertising, then backs to hrs app after timeout.

  • When I tried to cancel the ota dfu from the iOS app while the bootlaoder is retrying, it cannot be canceled correctly and keep searching the device.

Questions

I guess that direct advertising or something does not work public address. Is this guess correct?

References

Parents Reply Children
No Data
Related