File: C:/Users/fred/.codex/.tmp/plugins/plugins/zoom/skills/probe-sdk/troubleshooting/common-issues.md
# 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.