Transport troubleshooting

Transport troubleshooting

Structured fault isolation for SRT, relay/native backends, internal MPEG-TS multicast, and platform networking. Use with Network and transport for port reference and Transport configuration for safe edits.

Capability gate: tsduckctl transport is always in the CLI wrapper; it needs tsduck-transport-info installed to succeed and then reports native or relay effective backend. tsduck-transport-info bind-status and pixop-net require their respective binaries. Relay-only diagnostics (bonded listeners, stall recovery) apply when TRANSPORT_BACKEND=relay. On native-only images (helper absent), use tsduckctl check, native .env keys, and ss -uln for listeners. Confirm with pixop-version and command -v tsduck-transport-info.

First response (READ-ONLY)

Run on the appliance before restarting services:

pixop-version
tsduckctl check main
tsduckctl check egress-main
pixop-flow --secs 5

When command -v tsduck-transport-info succeeds:

tsduckctl transport main
tsduckctl transport egress-main

Collect logs only if checks are inconclusive:

tsduckctl logs main
tsduckctl logs egress-main
journalctl -u tsduck-in@main -n 100 --no-pager
journalctl -u tsduck-out@egress-main -n 100 --no-pager

Avoid unnecessary tsduckctl restart — restarts clear egress startup drain and interrupt live sessions.

Layer model

Diagnose bottom-up:

  [A] UDP socket bind on 5000 / 5001
  [B] SRT handshake / encryption (passphrase, pbkeylen, mode)
  [C] MPEG-TS packets at 239.0.0.1:5500
  [D] Pixop processing → 239.0.0.1:5501
  [E] Mux / PCR / PID → 239.0.0.1:5600
  [F] Egress SRT to downstream

A success at layer A does not imply B; B does not imply valid TS at C.

Symptom reference

Ingest: check shows port not bound

SignalsLikely causeSafe action
systemctl inactive for tsduck-in@mainService failed start; relay template errorjournalctl -u tsduck-in@main; fix TRANSPORT_BACKEND / missing *.ingest.args
TRANSPORT_BACKEND=relay without relay helper/templatesRelay not available on this imageRevert to native or migrate to a relay-capable qualified image
Invalid backend stringTypo in .envSet native or relay only
Bonded template, partial bindLocal listener IP missing, port in use, or start failureMultipath and bonded SRT; pixop-net multipath verify; journalctl -u tsduck-in@main

Ingest: bound but encoder cannot connect

SignalsLikely causeSafe action
Local bind OK; peer timeoutAWS SG, NACL, on-prem firewall, wrong public IPOpen UDP 5000 from encoder CIDR; verify tsduckctl credentials address
KVM userspace labPeer targets LAN IP instead of 127.0.0.1 forwardUse forwarded host ports from KVM quickstart
Encryption failurePassphrase or pbkeylen mismatch (16 on ingest)Re-share credentials sheet securely — do not ticket secrets
Caller/listener inversionEncoder in listener modeAppliance template expects listener; encoder caller

tsduckctl check may show bound (SRT session unverified) — that is normal without an active peer.

Ingest: SRT connected but pixop-flow quiet at :5500

SignalsLikely causeSafe action
SRT app shows connectedNo MPEG-TS payload or wrong encapsulationConfirm encoder sends MPEG-TS over SRT; probe with partner tools
Relay logs, no TS--output stdout missing or relay child crashValidate template; journalctl -u tsduck-in@main
Exit 3 from pixop-flowInput exceeds TS_TARGET_BITRATE at tapReduce source bitrate or adjust backbone per design

Processing: :5500 active, :5501 idle

SignalsLikely causeSafe action
Cold startGPU models loadingKeep continuous source ≥ 1 minute
pixop-live not runningContainer faultpixopctl status; journalctl -u pixop-live
License failureMarketplace / JWTpixop-license doctor or KVM license status

PID / picture: flow OK but wrong or frozen image

SignalsLikely causeSafe action
Default PID 101 wrong for feedPMT differsREAD-ONLY tsduckctl detect-video-pid main --secs 10
Unambiguous detection—APPLY only after review: tsduckctl detect-video-pid main --apply
PCR drift / continuityPID/PCR mismatchRe-run detect; avoid manual PMT hacks

Egress: bound on 5001 but receiver sees nothing

SignalsLikely causeSafe action
:5600 quiet in pixop-flowIngress/mux not delivering merged TSFix upstream layers first
Recent egress restartEGRESS_STARTUP_DRAIN_MS discards initial TSWait ~2 s; retry receiver
Receiver passphrase/pbkeylenEgress uses 32Match tsduckctl credentials
SG on receiver pathUDP 5001 blockedOpen to receiver CIDR

Egress: processed video expected but output looks like source

SignalsLikely causeSafe action
Early timelinePre-enhancement buffer in captureProbe longer; select HEVC program in analyzer
Wrong output PID in monitorMonitoring pre-mux tapMeasure at SRT egress, not encoder return feed

Multicast / PCR internal (operator awareness)

Multicast loss on 239.0.0.1 is almost always a local pipeline issue, not external switching. Symptoms mirror PID or PIPELINE_LATENCY stress:

SignalsLikely causeSafe action
:5501 drops under loadLatency too low for GPU pathREAD-ONLY tsduckctl tune-latency main; APPLY after review
Continuity errors on :5600PCR remap starvationTune latency; check pixop-flow exit 3

Relay ingress stall / blackhole (relay backend)

SignalsLikely causeSafe action
Log lines: input reset, receive-queue-fullPath blackhole with prior mediaCorrelate with network event; recovery may be automatic
Idle sourceNo delivered payloadRecovery must not trigger — if it does, capture journals
Frequent resetsEncoder or path instabilityFix network; do not disable recovery without cause analysis

Wrong SRT key or mode

SignalsLikely causeSafe action
libsrt encryption errorPassphrase typoRe-export from tsduckctl credentials through secure channel
pbkeylen=16 vs 32 swappedIngest vs egress confusionIngest 16, egress 32 per template
Native vs relay mismatchEdited .env but relay template still old URIWhen helper installed: tsduckctl transport warnings; align template and TRANSPORT_BACKEND

AWS security group / NACL

SignalsLikely causeSafe action
ss shows 0.0.0.0:5000 on guest; peer failsSG inboundAdd SrtInputCidr / SrtOutputCidr per AWS Marketplace quickstart
pixop-preflight OK externally brokenPreflight cannot see SGFix VPC rules; test with srt-live-transmit from allowed host
Outbound license errorsEgress to AWS blockedSample CFN allows outbound all — tighten only with care

KVM bridge vs userspace

SymptomContextAction
Cannot reach guest from LANUserspace installUse 127.0.0.1 forwards or reinstall with --bridge
Works on host, not remoteSLIRP bindingExpected; bridge for production

Credential and file sensitivity

RiskMitigation
Passphrase in ticketUse tsduckctl credentials on appliance only
World-readable .envMust be 0600 root
Pasting secrets into *.argsUse @SRT_PASSPHRASE@ only

Stream presence tools

ToolUse
pixop-flow --secs 5Mbps per stage; exit 0/3/10
pixop-preflightLocal listeners, license, disk — not SG
tsduckctl check mainBind + unit active; may print bound (SRT session unverified)
tsduckctl transport mainEffective backend summary when helper installed (native or relay); extra relay bind detail when backend is relay
curl -sS http://<management-host>:8080/v1/metricsFrame counters after input seen (restrict 8080 to ManagementCidr / trusted LAN)

Pixop does not expose a first-class “SRT packet loss percent” metric in these CLIs — do not infer loss from absence of such a field.

Command cheat sheet

GoalCommandMutates?
Listener readinesstsduckctl check mainNo
Effective transporttsduckctl transport main (if tsduck-transport-info present)No
UDP bind detailss -uln on ports 5000/5001 (any release)No
Path bitratepixop-flow --secs 5No
Video PID sampletsduckctl detect-video-pid mainNo
Apply PIDtsduckctl detect-video-pid main --applyYes — restarts ingress
Latency recommendationtsduckctl tune-latency mainNo
Apply latencytsduckctl tune-latency main --applyYes — restarts ingress
Relay logsjournalctl -u tsduck-in@main -n 200No
Multipath preflightpixop-net multipath verify --relay-args ...No

When to restart

SituationRestart?
SG rule fixedNo — peers reconnect
Template or .env transport editYes — affected tsduckctl restart <instance>
detect-video-pid --apply / tune-latency --applyAutomatic ingress restart
pixopctl restart after encoder changeNo — for nvencc.args / Pixop only
Flapping SRT with no config changeNo — diagnose peer/network first

Escalation evidence

When opening a support case, attach non-secret artifacts:

pixop-pack-config    # if support requests config-only bundle
pixop-support-bundle # when full diagnostics approved
pixop-version
tsduckctl check main
tsduckctl check egress-main
pixop-flow --secs 5

If command -v tsduck-transport-info succeeds, add tsduckctl transport main and tsduckctl transport egress-main.

Include: AMI/QCOW2 version, deployment (AWS/KVM), symptom layer (A–F above), timestamps of restarts, and whether relay or native backend is active. Never attach tsduckctl credentials output or .env passphrases to tickets.

Related


Did this page help you?