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

nRF Connect desktop Error: "failed to get descriptor"

Hi,

I am trying to use nRF Connect for desktop with a dongle or nrf52 DK to connect with another board. When I want to get the value from the connected board, it would always display this error: "failed to get descriptor", no matter whether using "notify". I cannot read or write anything

 

Could you please tell me how to solve this problem?

Thank you in advance!

Best,

Taoyi

Parents
  • Hi Taoyi

    According to the error message, another GATT operation is already in progress, so I assume the connected board is already doing something GATT related. What application is this? I just tested myself, using the ble_app_hrs example application (SDK v.16.0.0), and don't run into this problem at all using two nRF52 DKs. AS you can see in the log below, reading and writing attribute values do not cause any issues.

    Best regards,

    Simon

  • I tried the hrs example in the official SDK and it works. The example I was running was provided by another company and it was just a simplified version of the official ble_hrs_example.  

    When I tried to connect it using nrf connect for android, if I first open the notification, and then read the cccd, it works. However, if I first read the cccd, then it returns the error! It depends on the order! All other functions (read the location...) could work.

     Thus, I'm thinking that could it be possible that some configurations are wrong? or some parameters are wrong? or something is missing?

    Here's the code of charateristic add part

        memset(&add_char_params, 0, sizeof(add_char_params));
        add_char_params.uuid              = BLE_UUID_HEART_RATE_MEASUREMENT_CHAR;
        add_char_params.max_len           = MAX_HRM_LEN;
        add_char_params.init_len          = 0;
        add_char_params.p_init_value      = initial_hrm;
        add_char_params.is_var_len        = true;
        add_char_params.char_props.notify = 1;
        add_char_params.cccd_write_access = p_hrs_init->hrm_cccd_wr_sec;
    				
    	
        err_code = characteristic_add(p_hrs->service_handle, &add_char_params, &(p_hrs->hrm_handles));
        if (err_code != NRF_SUCCESS)
        {
            return err_code;
        }

    Thank you very much

Reply
  • I tried the hrs example in the official SDK and it works. The example I was running was provided by another company and it was just a simplified version of the official ble_hrs_example.  

    When I tried to connect it using nrf connect for android, if I first open the notification, and then read the cccd, it works. However, if I first read the cccd, then it returns the error! It depends on the order! All other functions (read the location...) could work.

     Thus, I'm thinking that could it be possible that some configurations are wrong? or some parameters are wrong? or something is missing?

    Here's the code of charateristic add part

        memset(&add_char_params, 0, sizeof(add_char_params));
        add_char_params.uuid              = BLE_UUID_HEART_RATE_MEASUREMENT_CHAR;
        add_char_params.max_len           = MAX_HRM_LEN;
        add_char_params.init_len          = 0;
        add_char_params.p_init_value      = initial_hrm;
        add_char_params.is_var_len        = true;
        add_char_params.char_props.notify = 1;
        add_char_params.cccd_write_access = p_hrs_init->hrm_cccd_wr_sec;
    				
    	
        err_code = characteristic_add(p_hrs->service_handle, &add_char_params, &(p_hrs->hrm_handles));
        if (err_code != NRF_SUCCESS)
        {
            return err_code;
        }

    Thank you very much

Children
No Data
Related