Basler dart: payload discarded ("host bandwidth insufficient") streams silently with no throughput limit applied
Where: bench unit SN12062 (Windows), Basler dart du1_imx334m. Surfaced during a preview-perf measurement run (LVP color-audit-phase1 @ 9847fec), bundle SN12062-2026-05-28-165913.zip.
Symptom: continuous Pylon grab failures, err_code=3791651346 -- "Payload data has been discarded. Payload data can be discarded by the camera device if the available bandwidth is insufficient." ~143 occurrences across the run, intermittent (peaks at 6 consecutive, mostly 1). The camera keeps streaming at ~16-28 fps, so frames drop silently; the user gets no warning.
Root cause: the dart's data rate exceeds what the host USB link sustains (Basler's own err_code says so). First-order this is a host/USB-path condition -- verify USB3 port / cable / dedicated controller (not a shared hub) on SN12062.
Two code gaps found in triage (drivers/pyloncamera.py, drivers/camera.py):
-
Throughput-control knobs are orphaned. set_device_link_throughput_limit, set_bandwidth_reserve_mode, set_gev_packet_size exist but have ZERO production callers -- never invoked at camera connect. So LVP applies no throughput limit; the dart runs at default (max) and over-saturates a marginal link. There is no path that throttles to fit the host.
-
Discards never surface (observability). camera.py warns at log level only and signals "stop grabbing" only at MAX_CONSECUTIVE_FAILURES=128; intermittent drops (max 6 consecutive here) never trip it, so no Rule-14 user notification. The driver's own [INSTR MISSED]/[INSTR RESYNC] bandwidth-stress instrumentation also did NOT fire during the 143 discards -- the early-warning signal that should catch this was silent.
Disposition (agreed):
- Bench: reboot SN12062 (clear stale USB-controller/driver state), then verify the dart's USB path -- USB3 port / cable / dedicated controller, not a shared hub. Most likely real fix.
- (this issue) track it.
- Wire throughput control into Pylon connect (behavior change -- needs a value/default; do not default-throttle healthy setups without multi-host data).
- Close the observability gap (get
[INSTR MISSED] firing on darts and/or a Rule-14 warning on sustained discards).
Status: bench verification pending; code items 3/4 are behavior changes awaiting design sign-off.
Basler dart: payload discarded ("host bandwidth insufficient") streams silently with no throughput limit applied
Where: bench unit SN12062 (Windows), Basler dart
du1_imx334m. Surfaced during a preview-perf measurement run (LVPcolor-audit-phase1@9847fec), bundleSN12062-2026-05-28-165913.zip.Symptom: continuous Pylon grab failures,
err_code=3791651346-- "Payload data has been discarded. Payload data can be discarded by the camera device if the available bandwidth is insufficient." ~143 occurrences across the run, intermittent (peaks at 6 consecutive, mostly 1). The camera keeps streaming at ~16-28 fps, so frames drop silently; the user gets no warning.Root cause: the dart's data rate exceeds what the host USB link sustains (Basler's own err_code says so). First-order this is a host/USB-path condition -- verify USB3 port / cable / dedicated controller (not a shared hub) on SN12062.
Two code gaps found in triage (
drivers/pyloncamera.py,drivers/camera.py):Throughput-control knobs are orphaned.
set_device_link_throughput_limit,set_bandwidth_reserve_mode,set_gev_packet_sizeexist but have ZERO production callers -- never invoked at camera connect. So LVP applies no throughput limit; the dart runs at default (max) and over-saturates a marginal link. There is no path that throttles to fit the host.Discards never surface (observability).
camera.pywarns at log level only and signals "stop grabbing" only atMAX_CONSECUTIVE_FAILURES=128; intermittent drops (max 6 consecutive here) never trip it, so no Rule-14 user notification. The driver's own[INSTR MISSED]/[INSTR RESYNC]bandwidth-stress instrumentation also did NOT fire during the 143 discards -- the early-warning signal that should catch this was silent.Disposition (agreed):
[INSTR MISSED]firing on darts and/or a Rule-14 warning on sustained discards).Status: bench verification pending; code items 3/4 are behavior changes awaiting design sign-off.