I am facing SCF timeout issues on my Orin NX while streaming from a camera using the nvargus-daemon. Here is the scenario:
Hardware: Orin NX SOM on custom carrier board
Camera: IMX477
Software: L4T R35.6.2
nvargus-daemon version: 0.99.33
Observation:
Stream starts successfully, but immediately logs red errors:
SCF: Error BadValue: NvPHSSendThroughputHints
socket connection /var/lib/nvphs/nvphsd.ctl to PHS failed: No such file or directory
connecting to Power Hinting Service failed. Is PHS running?
SCF: Error Timeout: waitForIdle() timed out
ResourceAlreadyInUse: All descriptors are already pending
it’s the Power Hint Service (PHS), it is a service that helps optimize power consumption on Jetson Orin NX.
it’s /etc/systemd/system/nvphs.service to load/enable the service during boot-up.
Thank you for the explanation about Power Hint Service.
I would like to clarify that the core issue is not only PHS availability, but camera streaming stops mid-way with SCF / FuSa ISP timeouts, even with a single IMX477 Arducam.
The stream starts successfully, but after some time it fails with the following fatal Argus errors:
FuSa Capture Status failed
Status syncpoint signaled but status value not updated
Camera HwEvents wait, this may indicate a hardware timeout occurred
All descriptors are already pending
waitForIdle() timed out
This suggests the root cause is ISP/CSI pipeline stalling, not only missing PHS.
Additional details:
Platform: Jetson Orin NX
L4T: R35.6.2
Camera: Single IMX477 (Arducam)
Streaming via: gst-launch / nvarguscamerasrc
Failure occurs mid-stream, not at startup
If PHS is mandatory for camera stability on Orin NX, could you confirm which package provides nvphsd.service and whether it should be running by default on full JetPack images?
Any guidance to isolate the root cause would be greatly appreciated.
Understood that PHS is deprecated and not required for camera stability — I will ignore nvphs-related errors.
Since IMX477 works normally on the Orin NX developer kit, this points to a platform-specific or driver-level issue on my setup.
However, I am seeing repeatable mid-stream failures with the following fatal Argus errors:
FuSa Capture Status failed
Status syncpoint signaled but status value not updated
Camera HwEvents wait, hardware timeout occurred
All descriptors are already pending
waitForIdle() timed out
These errors indicate the ISP did not receive frame-end, leading to buffer starvation and Argus collapse.
To help isolate the root cause, could you please advise:
Which subsystem timeout typically triggers FuSa Capture Status failed?
CSI link stall?
Sensor not streaming?
ISP clock / bandwidth drop?
What debug steps or traces are recommended on Orin NX to determine whether the stall is:
Sensor-side (frame not sent)
CSI-side (CRC / deskew / settle issues)
ISP-side (clock or syncpoint issues)
Are there any known IMX477 corner cases on Orin NX (exposure, frame length, resolution/fps transitions) that can cause mid-stream ISP timeouts?
Are there device-tree properties on Orin NX (CSI settle time, discontinuous clock, lane polarity, deskew) that commonly cause this behavior when mismatched?
Also, for alignment with your internal validation, could you please confirm:
• The JetPack / L4T version used when testing IMX477 on the Orin NX developer kit
• Whether the test was done using LibArgus (nvarguscamerasrc / gst-launch) or V4L2-only
I am currently using Jetson Linux R35.6.2, and I want to ensure I am testing against the same software baseline.
Any guidance on narrowing this down would be very helpful.
please refer to Camera Architecture Stack.
let’s have v4l2 standard IOCTL to test camera stream without ISP.
for instance, $ v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=500
JP-5.1.5/r35.6.1 has already include all the bug fixes although there’re some camera stability issue within early JP-5 release, see-also Topic 268833, Topic 276217, Topic 305949.
we’re testing with Raspberry Pi, IMX477 on JP-5.1.5 to confirm the stream stability, is it possible to confirm it (i.e. Arducam’s IMX477) with Orin NX developer kit as well?
I would like to double check how long did it took to reproduce fatal Argus errors?
please give it another try to boost all the VI/CSI/ISP clocks.
sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate
you may also try to configure enableCamInfiniteTimeout and test with Argus sample app, for example, userAutoExposure
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate
Observed Behavior
After applying the above:
Streaming works perfectly
No timeout issues
Works across multiple soft and hard reboots
I tested 6 times, each run ~20 minutes
After several successful runs, the issue reappears
So this workaround is **not stable long-term
Logs – When streaming starts
**
From journalctl -u nvargus-daemon -f:
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found
---- imager: No override file found. ----
E/ libnvphs:socket: Error[2]: socket connection /var/lib/nvphs/nvphsd.ctl to PHS failed
D/ libnvphs:socket: Warning: connecting to Power Hinting Service failed. Is PHS running?
SCF: Error BadValue: NvPHSSendThroughputHints
**Logs – When streaming gets stuck
**
SCF: Error Timeout: waitForNewerSample()
SCF_AutocontrolACSync failed to wait for an earlier frame to complete
SCF: Error Timeout: Sending critical error event for Session 1
waitForIdleLocked remaining request 24921
SCF: Error Timeout: waitForIdle() timed out
SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction
PowerServiceCore:handleRequests: timePassed = 25537
After this point:
Stream freezes
Only restarting nvargus-daemon or reboot recovers
Could you please help me with the reason why timeout issue occured while streaming.
Any guidance on root cause analysis or official long-term fix would be appreciated.
it looks boosting clock helps, please refer to Sensor Pixel Clock to review your clock rate settings, which must be set correctly to avoid potential issues.
besides.. you may also check Supported Modes and Power Efficiency, since you’re working with a customize board, please use the power estimator tool to estimate the power and generate the nvpmodel config for your actual use-case.
we’ve test on developer kit with single camera stream for days to confirm camera stability.
I would suspect it’s thermal related to trigger throttling, please execute with $ sudo tegrastats to monitor system loadings and also temperature.
it seems it’s running at relatively low power mode, which has 4 CPUs offline.
for instance, CPU [41%@1420,8%@1420,9%@1420,8%@1420,off,off,off,off]
please have system config for switching to MaxN for confirmation.