ZED SDK 5.4
Release notes of the ZED SDK 5.4 series. Patch releases are listed newest first. Download links and the full changelog, including ZED Tools and integrations, are available on the ZED SDK 5.4 release page.
What’s New
ZED SDK 5.4 makes the built-in NEURAL depth models noticeably faster: an optimized inference path delivers up to 20% quicker depth inference and ~15% lower GPU load on Jetson Thor, with gains carrying over to Orin and desktop GPUs and the largest wins on heavier pipelines (more cameras, NEURAL PLUS, or concurrent recording), all with outputs unchanged. The release also opens the depth pipeline to custom algorithms through the experimental DEPTH_MODE::CUSTOM: an externally computed disparity or depth map (for example from a custom stereo network) can be fed to the SDK each frame, and the full pipeline (point cloud, spatial mapping, object detection, plane detection) then runs on the ingested data. A companion stereo retrieveTensor overload pre-processes both rectified views in a single fused GPU pass, producing inference-ready tensors that bind directly to frameworks such as TensorRT.
Recording and streaming gain a leaner path. SVO recording and outbound streaming now run entirely from Camera::read(), and stereo rectification is performed on demand, so pure recording or streaming pipelines no longer pay its CPU/GPU cost. A new polling API retrieves encoded H264/H265 packets directly (from incoming, outgoing, or recorded streams) without a second encoding session, and new rectified LEFT_NV12 / RIGHT_NV12 views feed hardware encoders without an extra color conversion.
This release also extends the platform reach with experimental support for ARM desktop systems (SBSA: NVIDIA DGX Spark, GH200, and ARM CUDA servers). A new monotonic MONOTONIC_RAW_CLOCK timestamp option yields timestamps immune to both NTP/PTP step and frequency adjustments, the per-camera lens distortion model is now exposed through LENS_DISTORTION_MODEL, and SLAM GEN_3 reports per-pose confidence. Numerous stability and accuracy fixes round out the release across depth, streaming, calibration, and USB camera handling.
5.4.1
Released: Jul 23, 2026
SDK
General
Features / Improvements
- Enabled Intra Process Communication (IPC) on Windows.
- Improved image timestamp accuracy on GMSL cameras (ZED X / ZED X One families): the frame timestamp is now captured in hardware instead of sampled in software, reducing timestamp jitter by ~10× and making it immune to CPU load. Enabled by default; set
ZED_SDK_DISABLE_HW_TSC_SOF=1to restore the previous software-sampled timestamps. - DGX Spark (GB10): the 5.4.0 USB camera limitation was traced to a platform kernel (xHCI) issue, fixed in Ubuntu’s upcoming
linux-nvidia-7.0kernel; with it, ZED USB cameras are fully functional on DGX Spark. Until its official rollout, the SBSA installer now offers to install that kernel on affected GB10 systems (interactive installs only). - Improved ZED X IMU temperature reading, a valid temperature is now available directly after
sl::Camera::open.
Bug Fixes
- Fixed the IMU camera moving state that was sometimes stuck to MOVING. This was introduced when IMU frequency switched from 400Hz to 200Hz.
- Fixed
Camera::openwith an SVO2 file without high-frequency IMU data: the ZED SDK now runs in degraded mode and some modules won’t be available. - Improved USB camera recovery after a disconnection. Resolves a case where grab() could freeze during automatic reconnection, prevents a hang when a camera is physically unplugged mid-recovery, and ensures images are correct after the camera comes back online. open_timeout_sec is now correctly applied to the reconnection retry window. This applies to both sync and async recovery workflows defined by
sl::InitParameters::async_grab_camera_recovery. - Fixed streaming from a Jetson to a Windows receiver, resolving a wire-format incompatibility that stopped a Windows client from decoding a Jetson stream.
- Fixed effect of
sl::InitParameters::open_timeout_secinsl::Camera::open(): it no longer hangs when a stream has no sender, and now returns after the given timeout instead of freezing. - Fixed an issue where rolling SVO recording could produce empty files after the first one.
- ZED X One 4K: requesting HDR at a resolution that has no HDR sensor mode (only QHD+ and HD1200 have one) is now rejected with a warning instead of leaving the GMSL capture stack unable to reopen the camera (repeated open timeouts until the application restarts).
- Fixed calibration/configuration file parsing and writing being corrupted by the application’s locale.
SLAM
- Fixed GEN_3 positional tracking failing to start when IMU fusion was enabled but the source provided no high-frequency IMU data (e.g. SVO v1 files or network streams without full-rate sensor data). When the source still carries an integrated orientation, tracking now runs visual-inertial using it as a rotation-only attitude prior; when no IMU data is available at all, it falls back to pure visual mode instead of never initializing.
- Fixed excessive positional tracking computation that could push
grab()runtime to 300–400 ms. - With Area Memory off, tracking now correctly runs as pure visual-inertial odometry (VIO) instead of the previously refined pipeline. Behavior with Area Memory enabled is unchanged.
5.4.0
Released: Jun 18, 2026
SDK
General
Features / Improvements
- Optimized the NEURAL depth models’ inference path, improving both runtime and load. Depth inference is up to 20% faster and GPU load is reduced by ~15% on Jetson Thor; gains carry over to Orin and desktop GPUs as well, though the magnitude varies by platform. The improvement scales with pipeline load: heavier workloads (more cameras, more demanding models such as NEURAL PLUS, or recording running on top) tend to see the largest gains. For example, 4 cameras running NEURAL depth on Jetson Thor now reach 60 FPS (up from 53). Outputs are unchanged.
- (Experimental) Added
sl::DEPTH_MODE::CUSTOM: feed your own externally computed disparity or depth map (e.g. from a custom stereo network) to the SDK each frame via the newsl::Camera::ingestCustomDepth(), called betweenCamera::read()andCamera::grab(). The full pipeline then runs on the ingested data (point cloud, spatial mapping, object detection, plane detection, etc.). Disparity or metric depth is accepted at any resolution, in CPU or GPU memory, with an optional confidence map for gradedconfidence_thresholdfiltering. Available in the C++, C, Python and C# APIs. As an experimental feature, downstream modules may not be fully robust to arbitrary custom depth/confidence input and can produce unexpected behavior or reduced accuracy. - Added a stereo overload of
sl::Camera::retrieveTensor(Tensor& left, Tensor& right, const TensorParameters&): both rectified views are pre-processed for inference (resize, color conversion, layout, normalization) in a single fused GPU pass, producing densely packed tensors that can be bound directly as network inputs (e.g. TensorRT). Designed for stereo networks and the newDEPTH_MODE::CUSTOM, usable betweenread()andgrab(). C++ only. - Added a new
sl::TIMESTAMP_CLOCK::MONOTONIC_RAW_CLOCKvalue to the process-wide timestamp clock selector, backed by LinuxCLOCK_MONOTONIC_RAW. LikeMONOTONIC_CLOCK, it is immune to NTP/PTP step adjustments, but it is also not subject to NTP/PTP frequency slewing (adjtimex). Useful when correlating SDK timestamps with free-running hardware counters or with devices that are not time-disciplined by the host. Available in C++, C, Python and C# wrappers. Switch to it before opening any camera withsl::Camera::setTimestampClock(sl::TIMESTAMP_CLOCK::MONOTONIC_RAW_CLOCK). - Added a new polling API to retrieve encoded H264/H265 video packets directly from the SDK, without re-encoding. Exposed via
sl::Camera::retrieveEncodedStreamPacket(EncodedStreamPacket&, ENCODED_STREAM_SOURCE)and the introspection methodsl::Camera::getEncodedStreamsInfo()(also available onsl::CameraOne). Three sources are addressable on a single camera:RECEIVING(incoming network stream when opened withINPUT_TYPE::STREAM),SENDING(outgoingenableStreaming()bitstream, captured before RTP fragmentation), andRECORDING(the SVO encoder output). Each packet is delivered as Annex-B NAL units (SPS/PPS, and VPS for HEVC, inlined in front of every IDR), so writing successive packets to a.h264/.hevcfile produces a self-contained stream playable by any standard player. The tap drops every packet until the first natural IDR arrives, so the first packet returned is always a keyframe; onRECEIVINGstreams this can mean a wait of up to one GOP (~2 s with the SDK default) before the first packet is available. Common use case: muxing the SDK’s outgoing or recorded stream into a custom container (mp4, mkv, etc.) without paying a second encoding session. Works withH264,H265,H264_LOSSLESS, andH265_LOSSLESSrecording modes. - SVO recording and outbound streaming now run entirely from
sl::Camera::read(), no longer requiring a subsequentsl::Camera::grab()to push a frame. - Stereo image rectification is now performed on demand instead of on every frame, eliminating its CPU/GPU cost in pure recording or streaming pipelines where rectified images are never consumed.
- The raw (unrectified) calibration values are now refined by the self-calibration algorithm. As a result, the values reported at runtime may differ slightly from those in your calibration file. These refined values guarantee a better epipolar constraint.
- Added rectified NV12 output to
sl::Camera::retrieveImagevia the newsl::VIEW::LEFT_NV12andsl::VIEW::RIGHT_NV12(also available onsl::CameraOne). These return the rectified image directly as NV12 (YUV 4:2:0 semi-planar), so you no longer have to retrieve BGRA and re-convert before feeding a hardware H264/H265 encoder. Unlike the existingLEFT_NV12_UNRECTIFIED(native-resolution, GPU-only zero-copy), the rectified variant supports resizing (even dimensions) and both CPU and GPU memory. Available in the C++, C, Python and C# wrappers. - Exposed the lens distortion model used by each camera through a new
sl::LENS_DISTORTION_MODELenum (RAD_TAN,FISHEYE,PINHOLE) and a newCameraParameters::lens_distortion_modelfield. Raw/unrectified parameters reportRAD_TANorFISHEYE, rectified parameters reportPINHOLE, so applications can now tell how the reported intrinsics and distortion coefficients should be interpreted instead of having to guess from the coefficient values. Available for stereo and ZED One cameras across the C++, C, Python and C# APIs.
Bug Fixes
- Fixed local streaming: a receiver restarted after an unclean disconnect (ctrl-c, crash, container stop) could silently stop receiving frames shortly after. Also fixed a thread-safety issue that could destabilize the sender when receivers join or leave.
- Fixed H26x streaming on Jetson Nano.
- Fixed H26x (H264/H265) SVO2 recording and playback on devices without a hardware video encoder, which previously failed.
- Fixed SVO recording of a ZED One opened from a local stream, which previously failed with an
SVO_UNSUPPORTED_COMPRESSIONerror and could crash. Local streams use an uncompressed transport with no encoded bitstream to copy, so recording now transcodes automatically (as it already did for stereo cameras). - Fixed camera exposure and gain being saved as zero in SVO files recorded from a stream (all cameras), and in live ZED One SVO2 recordings.
- Improved depth confidence accuracy: fixed two sampling bugs in the depth confidence computation. Depth values are unchanged; confidence is now more reliable, and slightly more pixels pass a given confidence threshold.
- Improved fisheye self-calibration accuracy: fixed an incorrect distortion model that biased the calibration on fisheye cameras.
- Fixed corruption on the right edge of the depth image in FILL mode at some non-standard resolutions.
- Fixed
retrieveMeasure(MEASURE::NORMALS)occasionally mis-flagging valid normals. - Fixed several out-of-bounds GPU memory accesses and a thread-synchronization issue in the depth pipeline, improving stability. Outputs are unchanged.
- Fixed IMU thermal compensation using an out-of-range or invalid temperature reading, which could corrupt the IMU fusion in VIO.
- Improved USB camera detection and reopen reliability on Windows. Cameras no longer intermittently fail to be re-detected after a close/reopen cycle, and
Camera::getDeviceList()now reads the serial number through a lightweight probe instead of fully opening and streaming each camera; repeated enumeration no longer leaves devices in a bad state. - USB cameras already in use are no longer missing from
Camera::getDeviceList(): they are now listed asNOT_AVAILABLEwith their path and model populated instead of being silently dropped. On Linux, opening a busy camera now correctly reports it as in-use instead of failing with a generic error. - Fixed a freeze followed by an automatic camera recovery (reboot) that could occur when rapidly changing manual exposure or gain on USB cameras (e.g. dragging a slider). Unchanged sensor register writes are now skipped, so partial updates can no longer lock up the image sensor.
- Camera video settings get/set now degrade gracefully when a USB camera becomes unavailable, instead of crashing (Windows) or accepting values against a bogus fallback range (Linux).
- Fixed leaks of the V4L2 device descriptor on failed
Camera::open()attempts on Linux, which could keep the camera busy across retries. - Updated udev rules (
99-slabs.rules): sensor (HID) access now works when the camera enumerates on a USB controller other than bus 1 (e.g. Jetson AGX Orin), and the i2c rules for ZED-GMSL now cover every i2c adapter regardless of numbering.
SLAM
Features / Improvements
- Pose confidence is now available when using the GEN_3 algorithm; access it via
sl::Pose::pose_confidenceto filter or weight tracking results by reliability.
Bug Fixes
- Fixed
POSITIONAL_TRACKING_MODE::GEN_3failing to start whenPositionalTrackingParameters::enable_imu_fusionwas set totrue.
Platform
- Added experimental support for ARM desktop platforms (SBSA): NVIDIA DGX Spark, GH200, and ARM CUDA servers. A dedicated installer (
ZED_SDK_Ubuntu24_sbsa_cuda13.0_tensorrt10.16_*, TensorRT libraries bundled) provides the desktop feature set on aarch64. Known limitation: Live USB camera support on these platforms is still experimental and may not work reliably; on the NVIDIA DGX Spark systems we’ve tested, ZED USB cameras are currently not functional. Behavior may differ on other GB10-based systems or with future system updates; we’re investigating with the platform vendor. ZED X (GMSL) cameras are not supported. SVO playback and network‑streamed inputs are unaffected.

