cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4 MCU

AnWa_1259496
Contributor

We have various devices using the PsOC4 BLE platform and suddenly finding it is not possible to pair more than one following a recent Windows 10 update.

Believed to be 1909 but could be an earlier build.

This issue also extends to all of the example projects, building projects such as BLE keyboard, BLE Mouse, Battery Level demo or any other example and trying to pair any two in any combination does not work.

The second one gives a Windows error "Try connecting your device again".

The UART on the second one shows:

CYBLE_EVT_AUTH_REQ: security=3, bonding=1, ekeySize=10, err=0

CYBLE_EVT_GAP_ENCRYPT_CHANGE: 1

CYBLE_EVT_AUTH_FAILED: 8

CYBLE_EVT_GATT_DISCONNECT_IND

CYBLE_EVT_GAP_DEVICE_DISCONNECTED: 13

This issue does not happen on earlier windows 10 builds or windows 7.

It is possible to pair the second device if the first is removed, but never two at the same time. It is also possible to pair one of these Cypress BLE devices and any other devices such as a Microsoft BLE mouse etc.

The issue with the second device happens whether the first device is still connected ot not. If the first device is in the paired devices list, the second cannot be paired.

0 Likes
1 Solution
VenkataD_41
Moderator
Moderator

Hi Andy,

As a workaround for the issue you are facing, add CyBle_GapGenerateKeys API in stack_on event as shown below.

CYBLE_GAP_SMP_KEY_DIST_T Keys;

case CYBLE_EVT_STACK_ON:

CyBle_GapGenerateKeys(0x77,&Keys);

Please check and update whether this resolves the issue.

Thanks

Ganesh

View solution in original post

8 Replies
VenkataD_41
Moderator
Moderator

Hi,

Please check the reason for the CYBLE_EVT_AUTH_FAILED event. You can read it from the event parameter of that particular event. Please inform this to us.

Please use the latest version of BLE component i.e BLE v3.64 and check once. Also, is it happening with particular pairing method or all the pairing methods.

Please attach a demo project that is able to pair with previous versions of Windows and not with present version of windows.

Thanks

Ganesh

0 Likes
AnWa_1259496
Contributor

Thanks for your reply.

Here is a process to reproduce this issue:

From Creator 4.3, open the HID Mouse example.

Update BLE component to 3.63

Download to Kitprog

In Windows 10, add device.

Device should pair sucessfully and cursor moves as per example.

Close and re-open Creator

Open any other example project (or open the previously-saved example mouse again)

Change BLE address to avoid overlap

Build and download to Kitprog.

In Windows 10, the first device will be in the device list but disconnected (it makes no difference if connected or not)

Attempt to pair

Error "Try connecting your device again"

The reason code is shown in my first port in the UART prinout, it is reason 8, which is "Unspecified reason".

At this point another device (I have a Microsoft mouse for testing) can be paired even if the first Cypress device is still in the device list. The issue only happens if two Cypress devices are attempted to be paired, but the type of project is unimportant.

I have attached the project which can be opened twice (change the address) but this is not strictly needed as any 2 example projects can be used to replicate.

0 Likes
VenkataD_41
Moderator
Moderator

Hi

This looks like a bug specific to (and in the BLE stack of) Windows 10 version 1909. As you mentioned, we have tested with version 1703 and we are able to pair multiple times with the same name (but different BLE Addresses). Result from 4 times pairing:

As bonding is per BLE Address, changing the BLE address should have made Windows beleive that this is a new device (which is what happens with my version of Windows). Please make following changes: Along with the BLE Address, change the Name of the device also (Say BLE Mouse 1). If this pairs then it means that with the new update, they are saving and comparing the device name also.

Thanks

Ganesh

0 Likes
AnWa_1259496
Contributor

As mentioned in my original post the issue happens with any two devices using this platform. For example if the second device is the HID keyboard or even Battery level Demo, or any of the examples, the issue happens.

if the second device is not a Cypress device it will pair.

I just double checked this again by renaming the mouse device name.

0 Likes
VenkataD_41
Moderator
Moderator

Hi,

Sorry for the redundant questions. We understood the problem.

Please note that the company ID is sent to the peer even before the pairing starts. It is shared as part of Version information in the VERSION_IND PDU. This can not be changed and will always be shared with the peer as soon as the link is up.

From above, we would like to say that from Cypress side, there is no issue from our BLE perspective associated with Windows OS version. The BLE spec remain unchanged from our side irrespective of the OS version.

We request you to enquire with Microsoft regarding this issue.

Thank you

Best regards

Ganesh

0 Likes
AnWa_1259496
Contributor

I agree with your view that this is a Microsoft issue.

But it would surely be a concern for Cypress than one of its Bluetooth platforms will not fully function with the worlds most popular OS.

I will attempt to raise this with Microsoft myself but not sure how far I will get.

0 Likes
VenkataD_41
Moderator
Moderator

Hi Andy,

Yes. You are correct. This would be definitely our concern.

We have forwarded this issue to our BLE stack team. They will be looking into this issue on priority basis.

I will let you know if we find any reason at our side regarding this.

Meanwhile, please check with Microsoft too from your side.

Thanks

Ganesh

0 Likes
VenkataD_41
Moderator
Moderator

Hi Andy,

As a workaround for the issue you are facing, add CyBle_GapGenerateKeys API in stack_on event as shown below.

CYBLE_GAP_SMP_KEY_DIST_T Keys;

case CYBLE_EVT_STACK_ON:

CyBle_GapGenerateKeys(0x77,&Keys);

Please check and update whether this resolves the issue.

Thanks

Ganesh

View solution in original post