Troubleshooting
Use this guide when something "doesn't work" and you need a fast path to root cause.
1) Confirm You Are Talking To The Right Device
- Open OS > Settings > API endpoint and confirm the base URL points at the device you think it does.
- Confirm the device is reachable on the network (VPN, VLAN, mDNS, firewall rules).
- If the UI loads but data is missing, go to OS > Systems and check if tabs show as disconnected (WebSockets blocked).
2) Start With Systems: Logs, Then Processes
Logs
- Open OS > Systems > Logs.
- Check these sources first:
helios-engine.servicefor stream/pipeline runtime failures.helios-api.servicefor API errors and request failures.helios-peripherals.servicefor I2C/IMU/peripheral issues.Kernel (dmesg)for device/driver level errors.
- Look for tight loops: repeating errors every second usually means a crash-restart or a failing health loop.
Processes
- Open OS > Systems > Processes.
- Sort by CPU and memory and identify the top consumers.
- If the UI is laggy or previews are dropping frames, check for a runaway process or memory pressure.
3) Streams: Most Failures Are Capture Or Codec Mismatch
Stream Won't Start
- Go to OS > Devices > Streams and open the stream.
- In Stream Settings (Stream tab), verify:
- Backend + Mode match your camera.
- Target FPS / interval is reasonable.
- Decoder and encoder selections make sense for the selected format.
- If the stream was recently changed, click Apply stream settings (this restarts the stream).
Preview Is Black / Frozen
- Check OS > Systems > Logs for decoder/encoder errors.
- Temporarily disable the decoder, apply settings, and confirm raw preview behavior.
- Try a known-good mode (lower resolution, lower FPS) to rule out bandwidth/CPU limits.
Capture-Last Is Empty
Capture-last clips require the per-stream shadow recorder.
- Open the stream.
- In Stream Settings (Stream tab), enable Shadow recorder.
- Confirm the stream is healthy (capture-last clips are disabled during active continuous recording).
4) Pipelines: Validate First, Then Check Outputs
Pipeline Doesn't Run Or Shows No Outputs
- Open OS > Pipelines and validate the pipeline graph.
- Attach the pipeline to a stream via OS > Devices > Streams > (stream) > Pipelines tab.
- In the stream Pipelines tab:
- Keep the grid at
1x1while debugging unless you specifically need multiplexing. - Select an output port that actually produces frames (commonly
framefor annotated overlays).
- Keep the grid at
Pipeline Tuning Makes It Worse
- Use the tuner to apply per-stream overrides.
- If the stream becomes unstable, remove overrides or detach the pipeline to get back to baseline.
5) Peripherals: Use I2C To Prove Hardware Is Present
I2C Inventory Looks Wrong
- Open OS > Systems > I2C.
- Click Rescan and confirm the bus and device addresses appear.
- If Rescan errors on your build, reload the page and re-check inventory. A missing device is still a wiring/power/bus issue until proven otherwise.
- If the bus is missing entirely, check wiring/power and kernel logs (
dmesg).
IMU Shows Idle / No Samples
- Confirm the IMU is visible in OS > Systems > I2C.
- Check OS > Systems > Logs for
helios-peripherals.service. - In OS > Systems > IMU, try:
- Refresh.
- Adjust update interval.
- If the live stream stalls, it may fall back to polling; persistent failure is almost always a peripherals runtime issue.
6) When You Need To Escalate (Support Or A GitHub Issue)
Include:
- Device model and what hardware is attached (camera(s), IMU, Coral, etc.).
- What you expected vs what happened.
- A short timestamp window.
- Logs:
helios-engine.servicehelios-api.servicehelios-peripherals.servicedmesg
- Screenshots of:
- Stream settings (backend/mode/decoder/encoder)
- Pipeline graph (or exported pipeline)
- Systems tab that shows the failure (I2C/IMU/Processes)