microg/GmsCore · error · RequestHandlingException
NOT_SUPPORTED_ERR
NOT_SUPPORTED_ERR
Error message
BluetoothAdapter null
What it means
Environment guard in HybridClientScan.startScanning: BluetoothAdapter.getDefaultAdapter() returned null, meaning the device has no Bluetooth hardware (or it is unavailable), so BLE scanning for hybrid security keys cannot start.
Source
Thrown at play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/hybrid/ble/HybridClientScan.kt:72
}
Log.d(TAG, "Target device with EID: ${serviceData.joinToString("") { "%02x".format(it) }}")
if (CryptoHelper.decryptEid(serviceData, seed) == null) {
Log.d(TAG, "EID verification failed, not matching current session, continuing scan")
return
}
stopScanning()
onScanSuccess(serviceData)
}
override fun onScanFailed(errorCode: Int) {
onScanFailed(RequestHandlingException(ErrorCode.UNKNOWN_ERR, "BLE scan failed: $errorCode"))
}
@SuppressLint("MissingPermission")
fun startScanning() {
if (scanStatus.compareAndSet(false, true)) {
try {
val adapter = bluetoothLeAdapter ?: throw RequestHandlingException(ErrorCode.NOT_SUPPORTED_ERR, "BluetoothAdapter null")
if (!adapter.isEnabled) {
val enabled = adapter.enable()
if (!enabled) {
throw RequestHandlingException(ErrorCode.NOT_SUPPORTED_ERR, "Unable to enable Bluetooth")
}
}
val scanner = adapter.bluetoothLeScanner ?: throw RequestHandlingException(ErrorCode.NOT_SUPPORTED_ERR, "BluetoothLeScanner null")
val filters = listOf(
ScanFilter.Builder().setServiceData(UUID_ANDROID, EMPTY_SERVICE_DATA, EMPTY_SERVICE_DATA_MASK).build(),
ScanFilter.Builder().setServiceData(UUID_IOS, EMPTY_SERVICE_DATA, EMPTY_SERVICE_DATA_MASK).build()
)
val settings = ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build()
scanner.startScan(filters, settings, this)
Log.d(TAG, "BLE scanning started")
} catch (t: Throwable) {
onScanFailed(RequestHandlingException(ErrorCode.UNKNOWN_ERR, "startScan failed: ${t.message}"))
}View on GitHub (pinned to 157c9d86ac)
Solutions
- Check for Bluetooth hardware before starting hybrid flows and offer USB/NFC alternatives
- Report an error to the user that BLE is unavailable on this device
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/hybrid/ble/HybridClientScan.kt:72 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06).
Data as JSON: /api/errors/1242ba6f46c3b7f9.
Report an issue: GitHub.