BLE Connect Error 133

Hello,

I am developing BLE peripheral Reader FW using nRF Connect SDK v2.0.0 on VSCode

I have developed my application using NRF52840 DK (development board) and it works on it.

I can connect to Mobile client (nRF Connect Application on Samsung S21 phone) and also read BLE ID from the service specific app.

However, when same application I flash on my custom board (got from HW team), the Mobile Client doesn’t seem to connect !!

I used Nrf Connect Application to test .. connect disconnect, here is the log.

Not sure, whats happening if you can give your expertise. See below.

 

On custom platform:

 

nRF Connect, 2022-06-30
rfID (EE:A6:78:9B:3E:37)
D 15:57:44.590 gatt.close()
D 15:57:44.595 wait(200)
V 15:57:44.796 Connecting to EE:A6:78:9B:3E:37...
D 15:57:44.796 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D 15:57:49.883 [Callback] Connection state changed with status: 133 and new state: DISCONNECTED (0)
E 15:57:49.884 Error 133 (0x85): GATT ERROR
I 15:57:49.884 Disconnected

 

On nRF52840 DK:

 

nRF Connect, 2022-06-30
rfID (CF:48:4D:88:18:4E)
V 16:00:59.531 Connecting to CF:48:4D:88:18:4E...
D 16:00:59.531 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D 16:01:00.240 [Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I 16:01:00.240 Connected to CF:48:4D:88:18:4E
V 16:01:00.262 Discovering services...
               

  • Pictures from nrf connect android application : 

    what does this ms time mention means ?

    Signal strength is same on both boards .. but this time seems different. 

    Could that be causing this problem .. ?

    If yes, how can i fix it !?

    On custom board, the BLE on reader, doesn’t even connect to BLE App on Android Phone.

    Same Android Phone connects to BLE MCU running the same Application on Development Board.

    For Custom Board : 

    For DK : 

  • Hi

    Error 133 is a generic error on Android and could be caused by multiple different things. However, the most common reason when having this issue only on a custom board, is that the custom board does not implement the external 32.768 kHz crystal the application will try to use it by default and result in crystal drift that can end up like a 133 error when connecting to an Android device.

    If this is the issue, try adding 

    CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y to your prj.conf file.

    Best regards,

    Simon

  • Hi SImonr,

    Thanks for your detailed response.

    Your solution works.

    Yes, that was the issue. 

    The DK board has external 32 khz crystal (LFXO) and nrf connect sdk by default is configured to use this LFXO.

    I used the same sdk using LFXO but my custom board doesnt have external crystal. So, i have to change my application to use internal RC.

    Perfect and on to the point answer that described the issue and had the solution.

    Thanks.

  • The time in ms highlighted in previous screenshots was the advertising interval (time between BLE advertisements).

    Due to this disconnect between whats present on custom board and whats configured in application for using 32 KHz, the advertising interval was much faster than expected and may be establishing a connection got failed.

    After the solution was applied in application to configure the correct source for 32 KHz, the advertising interval seems now correct as seen for DK.

Related