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

iOS Shows "nRF5x" as device name even if no device name is advertised

Hello,

I am developing a BLE peripheral with three services:

  • Device Information Service
  • Custom service #1 with two characteristics
  • Custom service #2 with one characteristcs

In advertisement data the advertisement type flags and manufacturer specific data i present, and in the scan response data one of the service UUID. I cannot understand why iOS shows the device name "nRF5x".

This is kind of how the code looks like:

static uint8_t m_adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET;

void start_advertise(void)
{

    uint32_t err_code;
    static uint8_t m_enc_advdata[BLE_GAP_ADV_SET_DATA_SIZE_MAX];
    static uint8_t m_enc_srdata[BLE_GAP_SCAN_BUFFER_MAX];
    ble_uuid128_t base_uuid = MY_SERVICE_UUID128;
    ble_gap_adv_data_t m_adv_data;

    ble_gap_adv_params_t adv_params =
    {
        .properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED,
        .p_peer_addr = 0,
        .filter_policy = BLE_GAP_ADV_FP_ANY,
        .interval = BLE_APP_ADV_INTERVAL,
        .duration = BLE_APP_ADV_TIMEOUT_IN_SECONDS,
        .primary_phy = BLE_GAP_PHY_1MBPS,
        .secondary_phy = BLE_GAP_PHY_1MBPS
    };

    err_code = sd_ble_gap_adv_stop(m_adv_handle);
    APP_ERROR_CHECK(err_code);

    conn_params_init();

    m_enc_advdata[0] = 2;   /* BLE AD Length */
    m_enc_advdata[1] = BLE_GAP_AD_TYPE_FLAGS;
    m_enc_advdata[2] = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;

    m_enc_advdata[3] = 0x0F; /* BLE Ad length */
    m_enc_advdata[4] = BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA; /* Manufacturer specific data */
    m_enc_advdata[5] = 0xXX; /* Company */
    m_enc_advdata[6] = 0xYY; /* Company */

    /*
     * Some specific advertisement data here
     */

    m_enc_advdata[18] = 0xZZ;
    m_adv_data.adv_data.p_data = m_enc_advdata;
    m_adv_data.adv_data.len = 19;

    m_enc_srdata[0] = 17;
    m_enc_srdata[1] = BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE;
    memcpy(&m_enc_srdata[2], &base_uuid, 16);

    m_adv_data.scan_rsp_data.p_data = m_enc_srdata;
    m_adv_data.scan_rsp_data.len = 18;

    err_code = sd_ble_gap_adv_set_configure(&m_adv_handle, &m_adv_data, &adv_params);
    APP_ERROR_CHECK(err_code);

    err_code = sd_ble_gap_adv_start(m_adv_handle, SERIAL_BLE_CONN_CFG_TAG);
    APP_ERROR_CHECK(err_code);

}

Any ideas how to fix this? I rather not advertising what chip is used.

Related