I can't provision nrf52840 Dongle

Hi!

I have three new nrf52840 dongles and I am not able to provision any of them. I load the code nrf/bluetooth/mesh/light (SDK v2.1.0) in one of them for the first time and I use the mobile app nrf Mesh (v3.2.4) to provision it. I press +Add Node button but the mobile doesn't find the Dongle Mesh Light. I have tried this step with an Iphone 6 and with a BQ Aquaris U Plus but I get the same result. I have tried it using SDK v1.9.0 but still getting the same result. The Dongle is absolutly new, the SDK is the last version, I load the merged.hex file and I have tried with IOS and Android OS. 

What do you think is happening here?

Thanks you for your time.

New tests (edited):

I have loaded light_switch from SDK v1.8 in a new Dongle (literally new) and both phones BQ and Iphone detect the Dongle. Then, I have loaded light_switch SDK v2.1.0 in another new Dongle (again, literally new) and none of the phones detect the Dongle. Is it something wrong with 2.1.0 SDK version for Ble Mesh samples?

  • Hi Carlos,

    I recently had a different issue caused by the same thing and I ended up creating a python script that created a hex file with 0xff in all positions not programmed. This effectively overwrites all data in these regions including the provisioning data and should allow you to get going.

    I have since also found the suggestion here (https://devzone.nordicsemi.com/f/nordic-q-a/44727/nrf52840-dongle-erase-provisioning-data) but I don't know if that works for you.

    My code for creating the blank data is below. It is kinda crude and you need to sort the boundaries yourself. It could be polished a lot more but I only needed it once! When I loaded it info nRF programmer it reported back any issues that it had which made debug cycle faster. Take the output and save it as text in a *.hex file.

    I hope this helps,

    Daniel

    def calc_checksum(data):
    sum_val = 0
    for i in range(0, len(data), 2):
    sum_val += int(data[i:i+2], 16)
    sum_val = sum_val % 256
    checksum_val = (~ sum_val + 1) % 256
    checksum = f"{checksum_val:02X}"
    return checksum


    def add_line(byte_count, address, data_string, sc=":", record_type=0):
    # sc = ":" #start code
    # bc = 2**4 # byte count
    # addr = 2**4
    # rt = 0 # record type
    # # data_string = f"{255:02X}" * bc
    # data_string = "87050000910500009B05000000000000"
    hex_line = f"{sc}{byte_count:02X}{address:04X}{record_type:02X}{data_string}"
    cs = calc_checksum(hex_line[1:])
    hex_line += cs + '\n'
    return hex_line


    def create_block(start_address, length):
    base_address = int(start_address / 2**16)
    start_address -= base_address * 2**16
    hex_lines = ""
    hex_lines += add_line(2, 0, f"{base_address:04X}", record_type=4)
    # while length > 16:
    for j in range(int(length / 16)):
    count = min(16, length)
    hex_lines += add_line(count, j*16+start_address, "FF"*count)
    length -= count
    return hex_lines


    file_lines = ""
    file_lines += create_block(0x34A00, 0xB600)
    file_lines += create_block(0x40000, 0x10000)
    file_lines += ":00000001FF" # end of file

    print(file_lines)
Related