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

nRF51822 does not found service

Hi Guys,

I am new in BLE world, so sorry if I ask stupid questions.

I have a Simblee RFD77101 and a nRF 51822 chip. I would like to connect from nRF51 to Simblee and change data via BLE.

I started to use SDK 11 and tutorial ble_central/ble_app_uart_c project with s130 v2.0.0 soft device. To find Simblee and connect to it works well, but data changing not. ble_db_discovery does not find any services, so I cannot send and receive data on any characteristics... I do not get any callback to get "something happend". So my questions:

  1. Shouldn't nRF51 find at least the base services?

  2. Should I add custom service to find Simblee's service?

  3. I started to use wrong project? Or what am I doing/thinking wrong?

Thanks for help! :)

Edit 01:

The Simblee firmware is unknown for me, but yes, i register the service (in ble_nus_c.c, ble_nus_c_init function). Now, I get some debug info:

Connected to target
[DB]: Starting discovery of service with UUID 0xfe84 for Connection handle 0
BLE Event: 48
[DIS]: Services (0), Status: 266
Service UUID 0xfe84 Not found

If I do not specify the service uuid (pass NULL for sd_ble_gattc_primary_services_discover third parameter), i get the base service with characteristics (0x2a00, 0x2a01, 0x2a02, 0x2a04 If i remember well)

Now, if i delete these rows, in ble_nus_c.c, ble_nus_c_init function

err_code = sd_ble_uuid_vs_add(&nus_base_uuid, &p_ble_nus_c->uuid_type);
VERIFY_SUCCESS(err_code);

I get this debug text, and after that, the nRF51 chip crashed, restarted

Connecting to target 77a68eed44c1
BLE Event: 29
BLE Event: 16
Connected to target
[DB]: Starting discovery of service with UUID 0xfe84 for Connection handle 0
BLE Event: 48
[DIS]: Services (0), Status: 0
Found service UUID 0xfe84
BLE Event: 50
previously discovered: 0
currently discovered: 1
Char uuid: 0, read: 1, write: 0, write_no: 0, notify: 1
BLE Event: 50
previously discovered: 1
currently discovered: 1
Char uuid: 0, read: 0, write: 1, write_no: 1, notify: 0
BLE Event: 50
previously discovered: 2
currently discovered: 1
Char uuid: 0, read: 0, write: 1, write_no: 1, notify: 0
BLE Event: 50
BLE Event: 51

I red the documentation about sd_ble_uuid_vs_add , but I do not understand it... :/ What is vendor specific uuid?!

And there are some defines, what i am using for

//#define NUS_BASE_UUID                  {{0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x00, 0x00, 0x40, 0x6E}} /**< Used vendor specific UUID. */
//#define NUS_BASE_UUID  {{0x96, 0x07, 0x0C, 0x49, 0x10, 0x11, 0x0E, 0xDF, 0x53, 0x2B, 0x91, 0x23, 0x60, 0x0B, 0x57, 0x4D}}
#define NUS_BASE_UUID  {{0x2D, 0x30, 0xC0, 0x80, 0xF3, 0x9F, 0x4C, 0xE6, 0x92, 0x3F, 0x34, 0x84, 0xEA, 0x48, 0x05, 0x96}}

#define BLE_UUID_NUS_SERVICE           0xFE84                      /**< The UUID of the Nordic UART Service. */
#define BLE_UUID_NUS_TX_CHARACTERISTIC 0xC081                      /**< The UUID of the TX Characteristic. */
#define BLE_UUID_NUS_RX_CHARACTERISTIC 0xC082                      /**< The UUID of the RX Characteristic. */

Here is an additional image with infos, what i know about Simblee https://ibb.co/jDgfaG

As a result about this debug, i just setup something wrong. But what?

Parents
  • Well the services can be found only if GATT Server exists and has particular Service object with correct UUID on it. The question is how you do it on Simblee.

    The choice of "application" in BLE is matter of both peers. So while on nRF5x you have obvious choice of all read-made examples from nRF5 SDK + possibility to write almost anything (which is GATT Server/Client and GAP Central/Peripheral compliant) in custom FW it must match with the other side. What do you do with Simblee? (I guess it has nRF51 inside but it claims to lock you to some stupid Arduino style IDE and libraries and bootloader so no help from me, sorry;)

Reply
  • Well the services can be found only if GATT Server exists and has particular Service object with correct UUID on it. The question is how you do it on Simblee.

    The choice of "application" in BLE is matter of both peers. So while on nRF5x you have obvious choice of all read-made examples from nRF5 SDK + possibility to write almost anything (which is GATT Server/Client and GAP Central/Peripheral compliant) in custom FW it must match with the other side. What do you do with Simblee? (I guess it has nRF51 inside but it claims to lock you to some stupid Arduino style IDE and libraries and bootloader so no help from me, sorry;)

Children
Related