Search code examples
kotlinbluetoothbluetooth-lowenergyandroid-bluetooth

Does the SRS-XB01 Speaker have a duel-stack


I've been having trouble programmatically connecting to or scanning for the SRS-XB01 Bluetooth speaker on Android using Kotlin. The one exception is when I use BluetoothAdapter.startDiscovery() when it's in pairing mode but this is unhelpful since I need to detect it when it is paired. I tried connecting to it with BluetoothDevice.connectGatt(). I tried scanning for it with BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner and I tried using BluetoothAdapter.startDiscovery()

Nothing is working but I know it's possible because I used an app called "Bluetooth Intensity" and it detects it not only when its paired but also connected and gets it's RSSI about every 4 seconds.

So I was wondering if it has a duel-stack. I found a spec saying it's communication system is "ver. 4.2". I'm under the impression that that's a duel-stack but am not sure. If so, do I have to use connectGatt in a unusual way?

Edit: I've been able to scan for and detect all my other Bluetooth Clasic and Ble devices


Solution

  • The SRS-XB01 Bluetooth is capable of playing music and works as a speaker for incoming calls. Both of these functionalities are part of Bluetooth Classic, not of Bluetooth Low Energy (BLE). The Help Guide for the speaker also says

    Make the BLUETOOTH connection from the BLUETOOTH device.

    No special app, which would be required for BLE, is needed. Just use your phones Bluetooth settings to connect to the speaker.

    This also explains why you can't find the speaker using a BLE scanner. The RSSI (Received Signal Strength Indication) is not only used by BLE but also by Bluetooth Classic and WiFi.

    Bluetooth Version 4.2 does not automatically suggest a dual stack, there could be a device using Bluetooth Classic version 5.0 without BLE functionality.