{"record":{"id":"1242ba6f46c3b7f9","repo":"microg/GmsCore","slug":"not-supported-err-1242ba","errorCode":"NOT_SUPPORTED_ERR","errorMessage":"BluetoothAdapter null","messagePattern":"BluetoothAdapter null","errorType":"error_code","errorClass":"RequestHandlingException","httpStatus":null,"severity":"error","filePath":"play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/hybrid/ble/HybridClientScan.kt","lineNumber":72,"sourceCode":"        }\n        Log.d(TAG, \"Target device with EID: ${serviceData.joinToString(\"\") { \"%02x\".format(it) }}\")\n        if (CryptoHelper.decryptEid(serviceData, seed) == null) {\n            Log.d(TAG, \"EID verification failed, not matching current session, continuing scan\")\n            return\n        }\n        stopScanning()\n        onScanSuccess(serviceData)\n    }\n\n    override fun onScanFailed(errorCode: Int) {\n        onScanFailed(RequestHandlingException(ErrorCode.UNKNOWN_ERR, \"BLE scan failed: $errorCode\"))\n    }\n\n    @SuppressLint(\"MissingPermission\")\n    fun startScanning() {\n        if (scanStatus.compareAndSet(false, true)) {\n            try {\n                val adapter = bluetoothLeAdapter ?: throw RequestHandlingException(ErrorCode.NOT_SUPPORTED_ERR, \"BluetoothAdapter null\")\n                if (!adapter.isEnabled) {\n                    val enabled = adapter.enable()\n                    if (!enabled) {\n                        throw RequestHandlingException(ErrorCode.NOT_SUPPORTED_ERR, \"Unable to enable Bluetooth\")\n                    }\n                }\n                val scanner = adapter.bluetoothLeScanner ?: throw RequestHandlingException(ErrorCode.NOT_SUPPORTED_ERR, \"BluetoothLeScanner null\")\n\n                val filters = listOf(\n                    ScanFilter.Builder().setServiceData(UUID_ANDROID, EMPTY_SERVICE_DATA, EMPTY_SERVICE_DATA_MASK).build(),\n                    ScanFilter.Builder().setServiceData(UUID_IOS, EMPTY_SERVICE_DATA, EMPTY_SERVICE_DATA_MASK).build()\n                )\n                val settings = ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build()\n                scanner.startScan(filters, settings, this)\n                Log.d(TAG, \"BLE scanning started\")\n            } catch (t: Throwable) {\n                onScanFailed(RequestHandlingException(ErrorCode.UNKNOWN_ERR, \"startScan failed: ${t.message}\"))\n            }","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/hybrid/ble/HybridClientScan.kt#L54-L90","documentation":"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.","triggerScenarios":"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.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}