Debugging
Monitor, debug, and verify content displayed on devices
TelemetryOS provides several debugging options:
- A browser-based Web Preview sandbox that simulates device resolutions, orientations and hardware events enabling iteration without device deployment
- Isolated app runtimes (display, settings, background workers) and secure message-passing between them that make it easy to inspect and reproduce inter-component state and hardware calls
- Background workers and serverless functions supporting independent execution/testing to trace data flows and scheduling logic;
- Optional Docker side‑cars on TelemetryOS Edge devices for running local helpers or model services alongside the TOS Player for edge behavior reproduction;
- Scoped storage (device/instance/app/account) and real‑time subscriptions enabling configuration and sync issue observation;
- The SDK's web‑centric tooling (React/TypeScript structure and Studio) which enables standard browser devtools and logging workflows during development and in the preview environment.
Debugging in TelemetryOS
Core Approach
- Reproduce reliably in the Sandbox/Preview (local dev or CI preview) before hitting devices.
- Narrow scope: is it app (React), OS/Player, network, or content pipeline?
Primary Tools
- Sandbox Preview — run the app locally via the TelemetryOS dev sandbox to reproduce UI/logic issues.
- Device Inspector / Remote Console — view realtime logs, stdout/stderr, and console messages from a Node Pro.
- System Logs — TelemetryOS Edge logs (systemd/journald, TOS Player runtime logs). Pull via remote shell or support bundle.
- Network Tools — ping, traceroute, proxying (Charles/Fiddler) to inspect API calls and resource loads.
- CI/CD Preview (Git-to-Screen) — check deployment artifacts and build logs for pipeline failures.
- SDK Debug Flags — enable verbose logging in TelemetryOS SDK (use TELEMETRYOS_LOG_LEVEL=debug or equivalent).
- Browser DevTools — when running web apps in the sandbox or remote webview.
Common Workflows
- Reproduce locally in Sandbox -> enable SDK verbose logs -> run through failing flow -> capture console + network traces.
- If device-only: reproduce, collect Device Inspector logs + TelemetryOS Edge logs, capture screenshot/video, include timestamp and device ID.
- For intermittent failures: enable persistent verbose logging and collect a support bundle after the failure window.
- For content/render issues: validate assets via CDN (URL, MIME type, CORS), check caching headers and player cache behavior.
What to Collect for Support
- Exact timestamps (UTC), device ID/serial, player software version, app commit SHA, and plan/environment.
- Logs: app console, TOS Player runtime, TelemetryOS Edge system logs.
- Network captures or failing API responses.
- Repro steps and minimal repro (Sandbox link or repo/commit).
Typical Failure Modes and Quick Checks
- App crash/unresponsive — check runtime stack trace, memory usage, and CPU; reproduce in Sandbox.
- Asset not showing — confirm URL, headers, content-type, and CDN caching.
- Deployment failing — inspect CI logs, build step errors, and Git webhook payloads.
- Device provisioning/heartbeat missing — check network, device time sync, firewall rules, and device certificates.
- Playback stutter — inspect hardware utilization and media encoding bitrate vs player capabilities.
Best Practices
- Add structured logging (contextual fields: deviceId, user, requestId).
- Use feature flags and staged rollouts through Git-to-Screen.
- Write small reproducible test pages/components for isolating UI issues.
- Automate smoke tests in CI that run in Sandbox preview.
Updated 21 days ago
What’s Next