Dawn Stream diagnostics

Use console commands and stats to verify sessions, capture path, bitrate, and input. Prefix ps_* is historical (Pixel Streaming alignment); the product name is Dawn Stream.

Console commands

CommandPurpose
ps_startStreaming / ps_stopStreamingStart / stop streaming
ps_dumpStatsPrint aggregated session stats
ps_setBitrate <kbps>Change target bitrate (clamped to min/max)
ps_forceKeyframeRequest an IDR/keyframe
ps_disconnectViewer [viewerId]Drop a viewer (empty = active viewer)
ps_statOverlay [0|1]Toggle ImGui HUD
ps_setInputOwner <viewerId|->Grant or revoke input (- revokes)
ps_registerAppData <name> / ps_sendAppData <name> <text>Binary app-message diagnostics
ps_recordInput / ps_stopRecord [path]Input recording (needs Experimental)
ps_replayInput <path> / ps_stopReplayInput replay
ps_recordMedia <basePath> / ps_stopMediaMedia recording (needs Experimental)

Enable Diagnostics.LogStats for periodic logs; StatsCsvPath (or --dawnstream-stats-csv) writes a time series. The reference player status bar shows client decode / jitter; the server emits stats.serverReport about every 2 s.

ps_dumpStats field guide

FieldMeaning
statusRuntime state (Disabled, streaming, …)
viewer / owner / viewersPrimary viewer id, input owner, count
backendstub or libwebrtc (native also reports via backend string)
WxH / codecEncode size and codec
convWhether GPU color convert is active
capPathzerocopy or readback
capFps / sendFpsCapture vs send framerate
captured / submitted / droppedFrame counters
capLat / convLat / encLatCapture / convert / encode latency (ms)
clientDec / clientJitterViewer-reported decode and jitter buffer (ms)
target / actualTarget vs measured bitrate (kbps)
rtt / lossRTT and packet loss
keyframes / kfReqKeyframes sent / requests
inAccepted / inRejectedInput events accepted / rejected
reconnectsSignaling reconnect count
transport / relay / protoICE candidate types and TURN relay flag

How to read quickly

  • backend=stub + black video → open media CMake gates ( Building for real media).
  • capFps≈0 with real backend → capture pass miss or no frames; check CapturePassHierarchy.
  • capFps>0 but sendFps≈0 → encode / WebRTC send path issue.
  • inAccepted rising, game not moving → gameplay binding / focus, not Dawn Stream reject.
  • inRejected rising → not input owner or filter/schema rejection.
  • capPath=zerocopy with rising RSS on reconnect → turn zero-copy off.
  • relay=true → media via TURN (expected on locked networks; watch latency).

CSV and overlays

  • Diagnostics.StatsCsvPath + interval → machine-readable series for soak / weak-network tools under Gems/DawnStream/Tools/.
  • ps_statOverlay 1 or Diagnostics.StatOverlay → on-screen HUD in supported builds.
  • Player UI: statsPanel, graphs URL params ( Browser and input).

Troubleshooting

SymptomLikely causeWhat to try
Black videoStub adapter; capture pass miss; codec negotiationConfirm media gates; ps_dumpStats for backend/capFps/sendFps; check CapturePassHierarchy / CaptureSlot
Cannot reach signalingBad URL/port; token mismatch; firewallHit /healthz; align DAWNSTREAM_AUTH_TOKEN with PS_*; start with local ws://
ICE failureMissing TURN; UDP blockedConfigure TURN; try forceTurn; check IcePortMin/Max
Video but no inputNot input owner; key filter; blur releaseConfirm owner; check KeyFilter; click video to focus
Stutter / low FPSLow bitrate; software encode overload; resolution too highDrop to 720p30; hardware encode; tune min/max bitrate; inspect dropped
Rising memoryZero-copy on with frequent reconnectsKeep ZeroCopyCapture=false or limit reconnect rate
Stuck keysAbnormal disconnectExpect ReleaseAll; ps_disconnectViewer then reconnect
Capture works in Editor but not GameLauncherPass hierarchy root renamedRely on runtime remap; or set hierarchy to match window pipeline

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.