JetPack 7.2 SIPL Migration Guide#

This page summarizes the customer-visible migration items when moving SIPL applications, UDDF drivers, and SensorSystemConfig JSON files from JetPack 7.1 to JetPack 7.2.

JetPack installs the released SIPL API files under /usr/src/jetson_sipl_api/sipl. Examples in this guide use sipl/ as the source-tree root.

Package Layout, Build, and Install Changes#

Area

JetPack 7.1

JetPack 7.2

Installed source tree

sipl/

/usr/src/jetson_sipl_api/sipl/

Driver install path

/usr/lib/nvsipl_uddf/

/usr/lib/nvsipl_drv/

Sample app install path

/usr/bin/

/usr/sbin/

Unified camera app

nvsipl_coe_camera

nvsipl_camera

Unified query app

nvsipl_coe_query_test

nvsipl_query

Driver build meta-target

samples

all_drivers

Eagle target

eagleAIO

eagle_driver and eagle_library

Update build scripts, install manifests, and deployment instructions to use the installed source tree and new install paths. CameraHAL discovers UDDF driver libraries from /usr/lib/nvsipl_drv/.

Query and Configuration API Changes#

Camera configuration types moved from nvsipl:: into nvsipl::sensorconfig::. Qualify these names explicitly or add an appropriate using declaration.

JetPack 7.1

JetPack 7.2

Notes

CameraSystemConfig

sensorconfig::SensorSystemConfig

Top-level sensor system config

CameraConfig

sensorconfig::ModuleConfig

Per-module config

CoECamera

sensorconfig::CoEModule

CoE module variant

GmslCamera

sensorconfig::GmslModule

GMSL module variant

GetCameraSystemConfig()

GetSensorSystemConfig()

INvSIPLCameraQuery method rename

CameraDeviceInfoList now exposes module-level and transport-level lists: coeModuleList, gmslModuleList, coeTransportList, and gmslTransportList. The older component lists such as sensorInfoList, eepromInfoList, serInfoList, and deserInfoList were removed from the query result. Iterate module configs and then inspect the active ModuleConfig::moduleType variant to access CoE or GMSL sensor details.

INvSIPLCameraQuery::ParseDatabase() must be called before ParseJsonFile():

auto query = nvsipl::INvSIPLCameraQuery::GetInstance();
status = query->ParseDatabase();
if (status != NVSIPL_STATUS_OK) {
    return status;
}

if (!jsonFile.empty()) {
    status = query->ParseJsonFile(jsonFile);
}

ParseDatabase() loads the built-in sensor, module, and transport database from query libraries under /usr/lib/nvsipl_drv/. ParseJsonFile() then overlays custom configuration on top of that database.

SensorSystemConfig JSON Changes#

JSON name matching is case-sensitive in JetPack 7.2. Module, transport, sensor, serializer, and deserializer names must match the corresponding database entry or UDDF DriverInfo.name exactly.

Migration item

JetPack 7.2 requirement

CoE names

Use exact exported names such as "VB1940" instead of lowercase variants such as "vb1940".

Virtual channel input format

Replace "raw10packed" with "raw10tp".

CoE stereo marker

Remove cameraConfigs[].CoECamera.isStereo. Use a non-zero sensorInfo.sensorGroup plus transportSettings[].sync_sensors.

HAWK FSYNC mode

Replace "fsyncMode": "osc_manual" with "fsyncMode": "external" for HAWK stereo configs.

HAWK sensor fields

Add isTriggerModeEnabled, sensorGroup, and deviceIndex. Remove hsb_metadata_lines.

JetPack 7.2 also adds optional cameraConfigs[].moduleDriverName aliasing. When present, the runtime uses moduleDriverName rather than name to resolve the UDDF module driver and NITO. The name remains the selectable configuration name for tools such as nvsipl_camera -c. If moduleDriverName is absent, driver and NITO lookup falls back to name.

Common uses include:

Config name

moduleDriverName

Purpose

AR0234CS_HAWK_SINGLE_CAMERA

AR0234CS_HAWK

Single-sensor HAWK variant

AR0234CS_HAWK_NON_STEREO

AR0234CS_HAWK

Dual AR0234 without sensor-group sync

VB1940_Stereo

VB1940

Stereo CoE config sharing the VB1940 driver and tuning

SIPL Notifications and Metadata#

The deprecated notification values NOTIF_INFO_ISP_PROCESSING_DONE and NOTIF_INFO_ACP_PROCESSING_DONE were removed. Remove switch cases or handler logic for those values.

JetPack 7.2 adds these notification types:

  • NOTIF_ERROR_ICP_AUTH_OUT_OF_ORDER (212)

  • NOTIF_ERROR_ACP_SETTINGS_DISCONTINUITY (213)

  • NOTIF_ERROR_INTR_RECOVERY (224)

  • NOTIF_WARN_DEVICE_BLOCK_ERROR_INTR_DETECTED (225)

  • NOTIF_ERROR_POWER_LOAD_SWITCH_FAILURE (226)

The deprecated ImageMetaData ISP-statistics fields were removed. Use INvSIPLISPStatCustomInterface::GetIspStatsInfo() for ISP statistics.

UDDF Driver Migration#

Rebuild all out-of-tree UDDF drivers against the JetPack 7.2 headers. The UDDF interface UUIDs for IGmslDeserializer, IGmslModuleControl, IGmslSerializer, and ICoEBridgeControl changed, so drivers built against JetPack 7.1 UUIDs will not load.

Header renames:

  • uddf/ddi/interfaces/ISensorControl.hpp -> uddf/ddi/interfaces/ICameraSensorControl.hpp

  • uddf/cdi/hal/HSLDynamicSequence.hpp -> uddf/cdi/hal/IHSLDynamicSequence.hpp

Removed headers:

  • uddf/cdi/hal/HSLBuilder.hpp

  • uddf/cdi/hal/HSLBuilderStatus.hpp

  • uddf/ddi/DriverTypeIds.hpp

ICoEBridgeControl no longer exposes the fixed HSB_MAX_SENSORS cap or hsbMetadataResolution. CoEBridgeContext::InitConfig::ipAddress and channelNumber are now std::vector fields. Size those vectors for the number of sensors attached to the bridge instead of assuming a fixed count of two sensors.

Stereo and FSYNC Updates#

GMSL stereo uses external FSYNC for HAWK AR0234 modules. Driver-facing public hooks include:

  • IGmslModuleControl::GetModuleFsyncTxId()

  • GmslSerializerContext::GmslSerializerConfig::useExternalFsync

  • DeserializerContext::InitConfig::fsyncTxIdPerLink

CoE stereo uses a non-zero sensorInfo.sensorGroup on both sensors, distinct deviceIndex values, and transportSettings[].sync_sensors set to true. CoE bridges can use CoEBridgeContext::initConfig.frameRate to select the VSYNC rate; CoE module drivers receive the derived stereo state in CoEModuleContext::config.isStereo.

For stereo groups, the secondary sensor reuses the primary sensor’s ISP program and auto-control output. Custom auto-control plugins should expect one control result to be applied to both sensors in the group.

Other Public API Additions#

  • FrameProcessingRate controls how often auto-control and ISP processing run for registered auto-control plugins.

  • ISiplControlAuto::GetIspOverrideSettings() lets an auto-control plugin provide ISP override settings for the current frame.

  • NvSiplControlAutoDef.hpp adds multiCtxIDControl and the ISP_GTM_PLUGIN_OVERRIDE_MIN_CTRLPOINTS / ISP_GTM_PLUGIN_OVERRIDE_MAX_CTRLPOINTS limits.

  • MAX_CAMERAMODULES_PER_BLOCK is now 8.

  • MAX_VIRTUAL_CHANNELS_PER_SENSOR is 4.

  • NvSIPLCapStructs.h adds 3-lane CSI interface values, RAW12 tightly packed input format support, 24-bpp user-defined datatype capture support, and RGB/BGR pixel order flags.

Migration Checklist#

  • Use sipl/ as the source-tree root, or the installed release path /usr/src/jetson_sipl_api/sipl/ on Jetson targets.

  • Update install scripts for /usr/lib/nvsipl_drv/ and /usr/sbin/.

  • Qualify query and configuration types with nvsipl::sensorconfig::.

  • Rename CameraSystemConfig and related config structs to the JetPack 7.2 names.

  • Replace GetCameraSystemConfig() calls with GetSensorSystemConfig().

  • Call ParseDatabase() before every ParseJsonFile() overlay.

  • Update JSON names to exact case, replace raw10packed with raw10tp, and remove CoECamera.isStereo.

  • Use moduleDriverName when one config should reuse another module driver and NITO.

  • Rebuild all UDDF drivers against JetPack 7.2 headers.

  • Update custom CoE bridge drivers for vector-based ipAddress and channelNumber fields.

  • Remove handlers for removed notification values and add handling for new error and warning notifications where appropriate.