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

Android BLE services not discovered

Hi,
I have Lenovo tab E8 tablet with Android 7.0 and I connect to a BLE device (nrf52832 SDK 15.2.0 S132) from my Qt 5.11.2 app. After succesfull connection I discover services. However, everytime only Generic access service is discovered (my BLE device contains 5 services).

D BluetoothGatt: connect() - device: CC:C6:2F:F7:55:3D, auto: false
D BluetoothGatt: registerApp()
D BluetoothGatt: registerApp() - UUID=d483db22-5289-457f-8c9b-6e6d82f13428
D BluetoothGatt: onClientRegistered() - status=0 clientIf=6
W QtBluetoothGatt: Using Android v23 BluetoothDevice.connectGatt()
D BluetoothGatt: onClientConnectionState() - status=0 clientIf=6 device=CC:C6:2F:F7:55:3D
D BluetoothDevice: getBondState: state = 12
D BluetoothGatt: discoverServices() - device: CC:C6:2F:F7:55:3D
D BluetoothGatt: onSearchComplete() = Device=CC:C6:2F:F7:55:3D Status=0 // here only Generic Access service is discovered
D BluetoothGatt: configureMTU() - device: CC:C6:2F:F7:55:3D mtu: 512
W QtBluetoothGatt: MTU change initiated
D BluetoothGatt: onConfigureMTU() - Device=CC:C6:2F:F7:55:3D mtu=247 status=0
W QtBluetoothGatt: MTU changed to 247

I also tried - Nordic's nRF Connect for Android - it also discovers only Generic Access service. I'm not sure, but I think the problem is related to the MTU change...

I tried also on some other Android devices and also on different platforms and communication with my BLE device works there.

Parents Reply Children
  • Unfortunately, I don't have spare nrf52 board, I will try to get it. I must correct myself - the error is not related to MTU size, but the fact that pairing is requested from my Qt app (by calling https://doc.qt.io/qt-5/qbluetoothlocaldevice.html#requestPairing). If I bond my device using tablet's bluetooth settings or using nrf Connect, then later in my app I'm able to connect to the device and discover all services. I know the sniffer is neccessary to debug this issue, but maybe someone else had similar issue and can help me.

  • I am having the same issue with my Lenovo Tab 3 Pro, Android 6.1, connecting to Nordic device with Uart service, No matter the Mobile app, or SDK 15.2 package example I run I always connect, start service discovery and timeout.

    Your suggestion about the bonding of devices led me to look into the SDK 15.2 for an example with security bonding and I tried the example,  nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_gatts_c

    It will finally connect to the Lenovo running the nrf Connect app, but it took me a while to notice when the device is connecting, the Lenovo vibrates(default notification alert) and has a pop up notification for pair request.

    If you do not click on and accept this pair request, the device will never let the app connect to it.

    After clicking accept, services are discovered, everything is running great on the nrf Connect app, and I can disconnect/reconnect without this pair request coming up anymore.

    Hope you can find a solution from this example like I will be trying to do next.

Related