cancel
Showing results for 
Search instead for 
Did you mean: 

Studio Bluetooth

koTs_4636851
New Contributor II

I am trying to develop a BLE application utilizing CYBT-343026-01 series modules and ez-serial firmware version  EZ-Serial WICED Firmware V1.1.14 .

smp_query_bonds  command does not work according [1]  page 113 .  In [1] page 113 you say that the commands return a response with the number of bonded devices but it does not return the number and the the smp_bond_entry events.   smp_bond_entry events are sent by the cypress module for each bond entry ([1] page 150).  EZ-serial can store a maximum of four bonded devices .

I have proper configured  with smp_set_security_parameters( [1] page 116) the pairing mode. I have managed to bond ( pair ) my phone successfully with cypress BLE module . I can confirm it from the BLE test android application which I am using . The android application is the nRF connect from Nordic Semiconductors.

https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Connect-for-desktop

I can confirm that my phone is bonded with the cypress module also with the android application lightBlue

https://play.google.com/store/apps/details?id=com.punchthrough.lightblueexplorer&hl=en_GB

May you suggest another android application to Test?

First I am setting the pairing mode

Send command smp_set_security_parameters (SSBP, ID=7/11)

(0xC0),(0x06),(0x07),(0x0B),(0x09),(0x00),(0x10),(0x00),(0x03),(0x01),(0x8E)

mode = 0x08 | 0x01, bonding  = 0x00, keysize  = 0x10 , pairprop  = 0x00, io  = 0x03,

flags    = 0x01

Receive event

(0xC0),(0x02),(0x07),(0x0B),(0x00),(0x00),(0x6D)  Response for smp_set_security_parameters (SSBP, ID=7/11) 

From the user guide [1] page 117  I am reading that there are no response parameters but from the logic analyser there are one uint16_t or two uint8_t parameters which are 0x00 ,0x00 ( the 5th and 6th byte  of the response. May you clarify these parameters ?

Subsequently  I am bonding (pairing) with my smartphone and I am receiving these events sequence:

gap_connected (C, ID=4/5)

(0x80) (0x0F) (0x04) (0x05) (0x01) (0x63), (0xFF),(0xF9),(0x4F),(0x16),(0x53),(0x00),(0x28),(0x00),(0x00),(0x00),(0xBC),(0x02),(0x00),(0x2B)   gap_connected (C, ID=4/5)  conn_handle = 0x01  , address   , type = 0x00   ,  interval = 0x0028  , slave_latency = 0x0000 , supervision_timeout = 0x02BC, bond = 0x00

(0x80),(0x05),(0x07),(0x02),(0x01),(0x00),(0x00),(0x00),(0x00),(0x28)    smp_pairing_requested (P, ID=7/2)  conn_handle =0x01 ,mode = 0x00,  bonding =0x00  , keysize =0x00  , pairprop =0x00

(0x80),(0x03),(0x07),(0x03),(0x01),(0x00),(0x00),(0x27)  smp_pairing_result (PR, ID=7/3)  conn_handle =0x01  , result = 0x0000.

(0x80),(0x02),(0x07),(0x04),(0x01),(0x00),(0x27)    smp_encryption_status (ENC, ID=7/4)

conn_handle =0x01  , status= 0x0000.

(0x80),(0x07),(0x04),(0x08),(0x01),(0x06),(0x00),(0x00),(0x00),(0xF4),(0x01),(0x28)

gap_connection_updated (CU, ID=4/8)  conn_handle = 0x01  , interval =0x0060 , slave_latency = 0x0000  , supervision_timeout = 0x01F4

(0x80),(0x07),(0x04),(0x08),(0x01),(0x27),(0x00),(0x00),(0x00),(0xF4),(0x01),(0x49),

gap_connection_updated (CU, ID=4/8)  conn_handle = 0x01  , interval =0x0027 , slave_latency = 0x0000  , supervision_timeout = 0x01F4

(0x80),(0x02),(0x04),(0x02),(0x00),(0x03),(0x24)

gap_adv_state_changed (ASC, ID=4/2)   state = 0x00   , reason = 0x03

After the bonding procedure I try to read the bond entries

Send Command

(0xC0),(0x00),(0x07),(0x01),(0x61) smp_query_bonds (/QB, ID=7/1)

Receive response

(0xC0),(0x03),(0x07),(0x01),(0x00),(0x00),(0x00),(0x64), smp_query_bonds (/QB, ID=7/1) count = 0

I am not receiving smp_bond_entry event according ([1] page 150) with the bonding information for the bonded device. Also the   smp_query_bonds  response ([1] page 113)

Parameter Count  shows Bond entries are zero.

I can see from the nRF connect that I have bonded with the device . Where is the error ? Can you clarify please ?

I have attached also the logic analyser diagram sequence2_Pairing Bug.logicdata . You can open it utilizing [2]. Or Open the attached text documents for TX and RX with the aforementioned commands ,responses and events sequence .

Thanks

Kostas

[1] EZ-Serial_WICED_Firmware_Platform_User_Guide_for_CYW2070x-based_Modules-v1.1.14 . pdf

[2] https://www.saleae.com/downloads/

0 Likes
3 Replies
Owen_Zhang123
Moderator
Moderator

I have checked internally and the command is not supported yet.

koTs_4636851
New Contributor II

Hi XinghaoZ

In documment [1] page 113 it says that it is supported.  I want to use this command in order to unpair ( delete the pairing information from the cypress module).  How i will do that?   In [1] page 113 it says that  EZ-Serial currently supports a maximum of four bonded devices at the same time. To bond with additional devices after all four bond slots are full, you must delete one of the existing bonds with the smp_delete_bond (/BD, ID=7/2) API command. May you help me with that ?  I am utilizing CYBT-343026-01 series modules and ez-serial firmware version  EZ-Serial WICED Firmware V1.1.14 .  If i bond ( pair) with 4 devices and subsequently i try to bond(pair) with a 5th device how i will delete one of the four?  May you clarify please?

Thanks

Kostas

[1] EZ-Serial_WICED_Firmware_Platform_User_Guide_for_CYW2070x-based_Modules-v1.1.14 . pdf

star_4633391
New Contributor

Hi XinghaoZ,

Thank you for your response. Is it possible for this functionality to be implemented and what would the procedure be for requesting this? What would the timescale be?

Is there an alternative to using a smp_query_bonds command if it is not yet implements? I can't see an alternative way to know which devices are currently bonded and therefore which device to request to un-bond using the smp_delete_bond command. This would mean after bonding 4 devices, the only way to bond a new device would be to wipe the flash (e.g. with a system_factory_reset command).

Regards,

Stephen

0 Likes