Disconnection error 0x28 (CYBLE_HCI_INSTANT_PASSED_ERROR)

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
LuDi_2288466
Level 2
Level 2
10 replies posted 5 replies posted 5 questions asked

Hello,

I am using CYBLE-212020-01 modules which sends and receives some values over BLE from App.

So while testing with some devices , on some devices it gets disconnected abruptly.

And the disconnection error is : CYBLE_HCI_INSTANT_PASSED_ERROR (0x28)

Some iphone/android devices are able to maintain the connection without fault, some get disconnected almost immediately on every connection.  This happens using our custom app.

What is this error? What is the reason? How to fix this?

Thanks in advance for any replies.

Lucia

0 Likes
1 Solution
Yugandhar
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 5 likes given

Hello Lucia,

1. The Instant Passed error code indicates that an LMP PDU or LL PDU that includes an instant cannot be performed because the instant when this would have occurred has passed.
2. For example when the master sends LL_CONNECTION_UPDATE_REQ or LL_CHANNEL_MAP_REQ, it will sends an instant value. The Instant field shall be used to indicate the connEventCount when the updated parameters shall be applied; this is known as the instant. The master should allow a minimum of 6 connection events that the slave will be listening for before the instant occurs.
3. To resolve this issue, please follow the below steps before programming your project.
    a. Please assign the correct cap-trim values for the ECO as per the KBA - ECO Capacitance Trim Values for EZ-BLE™ Modules - KBA218990.
    b. Are you using Low Power Modes in your design and also configuring the WCO sleep clock accuracy in the firmware?If yes, please go through the page #12 of AN92584 document for correct configuration.
    c. Please call CyBle_ProcessEvents in regular intervals. If any custom function is there which consumes more time for execution, please call CyBle_ProcessEvents inside it. Also, please make sure that the BLESS interrupt priority is highest i.e., the priority should be 0.
    d. Do you have any Interrupt routine in your project? If then don't write big code inside ISR. Instead, set a variable inside ISR and check the variable status and call the function in main loop.

Thanks,
P Yugandhar.

View solution in original post

0 Likes
1 Reply
Yugandhar
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 5 likes given

Hello Lucia,

1. The Instant Passed error code indicates that an LMP PDU or LL PDU that includes an instant cannot be performed because the instant when this would have occurred has passed.
2. For example when the master sends LL_CONNECTION_UPDATE_REQ or LL_CHANNEL_MAP_REQ, it will sends an instant value. The Instant field shall be used to indicate the connEventCount when the updated parameters shall be applied; this is known as the instant. The master should allow a minimum of 6 connection events that the slave will be listening for before the instant occurs.
3. To resolve this issue, please follow the below steps before programming your project.
    a. Please assign the correct cap-trim values for the ECO as per the KBA - ECO Capacitance Trim Values for EZ-BLE™ Modules - KBA218990.
    b. Are you using Low Power Modes in your design and also configuring the WCO sleep clock accuracy in the firmware?If yes, please go through the page #12 of AN92584 document for correct configuration.
    c. Please call CyBle_ProcessEvents in regular intervals. If any custom function is there which consumes more time for execution, please call CyBle_ProcessEvents inside it. Also, please make sure that the BLESS interrupt priority is highest i.e., the priority should be 0.
    d. Do you have any Interrupt routine in your project? If then don't write big code inside ISR. Instead, set a variable inside ISR and check the variable status and call the function in main loop.

Thanks,
P Yugandhar.

0 Likes