Implementing Eddystone EID (and AES) on the nRF52805

Hello, I'm in the process of attempting to implement Eddystone EID on the nRF52805.

It's been a bit of a nightmare, so I'm finally taking the bold step to make my first forum post!

The current sample for eddystone doesn't have any EID implementations yet... It's under 'TODO'

Here is all the documentation from Google:

 https://github.com/google/eddystone/tree/master/configuration-service

https://github.com/nrfconnect/sdk-zephyr/tree/main/samples/bluetooth/eddystone#id1

For now, I'm stuck on even just figuring out how to encrypt the beacons UUID and get the EID.

Please help Slight smile

  • Thanks for all the help Einar!

    I'm still struggling with the following portions:

    -IRK Generation (I'm still a little uncertain how to use pointers to create it)

    -Creating, and USING an identity with advertising.

    After the IRK key has been exchanged, the NRF will completely disconnect, and change its ble parameters. Specifically using BT_LE_ADV_NCONN [Non-connectable advertising with private address]

    I assume this allows for address resolution?

    The ESP32 will then scan, and when it finds a mac address from the correct manufacturer (I'll filter them a bit) it will do the math to confirm if the address resolves using the IRK.

  • adojang said:
    -IRK Generation (I'm still a little uncertain how to use pointers to create it)

    That is done by the bt_id_create() function. For instance, to generate an IRK you need to provide an array that is all 0. Something like this (just typing now so there may be typos but the principle should be correct):

    bt_addr_le_t addr; // set to someting sensible, refer to samples
    uint8_t my_irk[16] = {0};
    err = bt_id_create(&addr, my_irk)

    Here you provide an empty IRK buffer, so when the bt_id_create() function returns, the new IRK is written to the buffer an you can send it to the peer. Also, the identity (including IRK) is stored in flash of the nRF for later use, so you do not need to keep track of it yourself after exchanging with the peer. Refer to the bt_id_crate() API doc for details.

    adojang said:

    USING an identity with advertising.

    After the IRK key has been exchanged, the NRF will completely disconnect, and change its ble parameters. Specifically using BT_LE_ADV_NCONN [Non-connectable advertising with private address]

    when starting to advertise you can use BT_LE_ADV_NCONN, yes. Then, as long as privacy is configured, that will be used (with the configured identity).

Related