# Probe SDK Common Issues ## Permissions denied or missing streams Symptoms: - Permission request returns error. - No stream returned for diagnostics. Checks: - HTTPS/secure context is used. - Not in insecure context (`http://`, mixed content, blocked iframe permissions policy). - Browser-level camera/mic permissions are granted. - Device is not locked by another app. ## No media devices detected Symptoms: - `requestMediaDevices` returns empty sets for mic/camera/speaker. Checks: - OS-level privacy settings allow browser device access. - External USB/Bluetooth devices are connected before page load. - Virtual device drivers are installed and recognized by the browser. - Browser enterprise policies are not blocking media device enumeration. ## Video diagnostic fails to render Symptoms: - `diagnoseVideo` error or blank target. Checks: - Renderer option key and target match selected renderer. - `video-tag` renderer uses HTMLVideoElement target. - WebGL/WebGL2/WebGPU renderers use canvas/offscreen canvas target. ## Network diagnostic never completes Symptoms: - `startToDiagnose` does not return final report in expected duration. Checks: - `probeDuration` and `connectTimeout` values are reasonable. - Domain and optional JS/WASM URLs are reachable. - Browser/network policies do not block probing paths. ## Report field mismatch in app code Symptoms: - Undefined fields when parsing final report. Checks: - Add compatibility adapter for `basicInfo` vs `basicInfoEntries`. - Add compatibility adapter for `supportedFeatures` vs `featureEntries`. - Pin SDK version and align parser tests to that version. ## Residual resource usage after diagnostics Symptoms: - Camera indicator remains active. - Memory/network usage persists after leaving page. Checks: - Call `stopToDiagnoseVideo` and/or `releaseMediaStream`. - Call `stopToDiagnose` on early exit. - Call `cleanup()` on route/page teardown.