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

Meizu M2 bricks nrf51822

We developed a device based on nrf51822. We use SDK11 and module Device Manager to implement bonding. We have received feedback from the user, that our deivice was bricked after try to bond with Meizu M2.

In the course of the analysis, I determined that function ble_advertising_start(BLE_ADV_MODE_FAST) return err_code: NRF_ERROR_INVALID_PARAM. The device reboots in a loop. This behavior is even in the Nordic example (Nordic_Keyboard SDK11 and SDK12).

I read this post. And I was convinced, that my test Meizu M2 address stored in whitelist with type BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE (but also stored IRK).

I did'nt understand answer in this post. How can i fix this behavior? In advertising module, in device manager or anywhere else?

Update. Attached screen of m_whitelist.Whitelist after bond with Meizu M2.png

Parents
  • I try to repeat this case in SDK12.3 (Nordic keyboard example). Now after bond with Meizu and reset, i catch a Error with code 0x3202 in function

    pm_whitelist_get(whitelist_addrs, &addr_cnt,
                                        whitelist_irks,  &irk_cnt);
    

    in BLE_ADV_EVT_WHITELIST_REQUEST event.

    This is place in id_manager.c file, where error returns:

            if ((addr_type != BLE_GAP_ADDR_TYPE_PUBLIC) &&
            (addr_type != BLE_GAP_ADDR_TYPE_RANDOM_STATIC))
        {
            // The address shared by the peer during bonding can't be used for whitelisting.
            return BLE_ERROR_GAP_INVALID_BLE_ADDR;
        }
    
Reply
  • I try to repeat this case in SDK12.3 (Nordic keyboard example). Now after bond with Meizu and reset, i catch a Error with code 0x3202 in function

    pm_whitelist_get(whitelist_addrs, &addr_cnt,
                                        whitelist_irks,  &irk_cnt);
    

    in BLE_ADV_EVT_WHITELIST_REQUEST event.

    This is place in id_manager.c file, where error returns:

            if ((addr_type != BLE_GAP_ADDR_TYPE_PUBLIC) &&
            (addr_type != BLE_GAP_ADDR_TYPE_RANDOM_STATIC))
        {
            // The address shared by the peer during bonding can't be used for whitelisting.
            return BLE_ERROR_GAP_INVALID_BLE_ADDR;
        }
    
Children
No Data
Related