Sony IMX728: failed to read deserializer

Hello @SivaRamaKrishnaNV ,
The camera_sample app does not work for single camera.
The command used:
sudo ./sample_camera --rig test.rig.json --offscreen 2
The RIG File (for interface I have tried combinations in range csi-e and csi-f + links 0..3):

{
    "rig": {
        "sensors": [
            {
                "name": "camera:sensor:name",
                "nominalSensor2Rig_FLU": {
                    "quaternion": [
                        0.0,
                        0.0,
                        0.0,
                        1.0
                    ],
                    "t": [
                        0.0,
                        0.0,
                        0.0
                    ]
                },
                "parameter": "camera-name=IMX728_RGGB,interface=csi-e,link=0,output-format=processed,isp-mode=yuv420-uint8,file-buffer-size=16777216,skip-eeprom=1,fifo-size=4",
                "properties": null,
                "protocol": "camera.gmsl"
            }
        ],
        "vehicle": {
            "valid": false
        },
        "vehicleio": []
    },
    "version": 8
}

The log:

[DW][ERROR][getBasePathFor] Warning: SamplesDataPath::getBasePathFor(): 'DATA_ROOT' not found in search paths [/home/thor/data | /nvidia-hpc/bin/dw_samples.runfiles/av/data | /nvidia-hpc/bin/dw_samples/sample_camera.runfiles/av/data | /nvidia-hpc/bin/dw_samples/data | /nvidia-hpc/bin/data | /nvidia-hpc/data]
[DW][INFO] ProgramArguments: Missing argument 'dwTracePath' requested
[DW][INFO] WindowEGL: find EGL devices
[DW][INFO] WindowEGL: found 1 EGL devices
[DW][INFO] WindowEGL: init EGL with GLES3 context
[DW][INFO] WindowEGL: bind OpenGLES3 API
[DW][INFO] WindowEGL: offscreen mode -> use EGL PBuffer surface 1280x800
[DW][INFO] WindowEGL: create EGL context
[DW][INFO] WindowEGL: assign EGL context to current thread
[08-01-2026 07:39:04] Adding variable DW_Base:DW_Version
[08-01-2026 07:39:04] Added variable DW_Base:DW_Version
[08-01-2026 07:39:04] Platform: number of GPU devices detected 1
[08-01-2026 07:39:04] Platform: currently selected GPU device 0, Resource Data Dir: trt_10_08_10_05, Arch: ga10b
[08-01-2026 07:39:04] Platform: currently selected GPU device integrated ID 0
[08-01-2026 07:39:04] Context::mountResourceCandidateDataPath resource FAILED to mount from './resources': VirtualFileSystem: Failed to mount './resources/resources.pak'
[08-01-2026 07:39:04] Context::mountResourceCandidateDataPath resource FAILED to mount from '/home/thor/data': VirtualFileSystem: Failed to mount '/home/thor/data/resources.pak'
[08-01-2026 07:39:04] Context::findDataRootInPathWalk: Could not find ./data/DATA_ROOT in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[08-01-2026 07:39:04] Context::findDataRootInPathWalk: Could not find ./data/DATA_ROOT in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[08-01-2026 07:39:04] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[08-01-2026 07:39:04] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[08-01-2026 07:39:04] SDK: No resources(.pak) mounted, some modules will not function properly
[08-01-2026 07:39:04] [08-01-2026 07:39:04] Initialize DriveWorks SDK v7.0.3
[08-01-2026 07:39:04] [08-01-2026 07:39:04] Release build with GNU 13.2.0 from  against Drive PDK v7.0.3.0
[08-01-2026 07:39:04] SensorFactory::createSensor() -> time.nvpps, nvpps-device=/dev/nvpps0
[08-01-2026 07:39:04] Found driver: time.nvpps
[08-01-2026 07:39:04] TimeSensorNVPPS: initialized with no UTC time reference.
[08-01-2026 07:39:04] output-timestamp parameter is deprecated and will be removed in next release[08-01-2026 07:39:04] SensorFactory: Override default timeSensor with the user passed one
[08-01-2026 07:39:04] EndpointNVPPS: started on /dev/nvpps0
[08-01-2026 07:39:04] SensorFactory::loadPluginLibraryHelper:Succeed to load dynamic lib - /usr/local/driveworks/targets/aarch64-Linux/lib/libsensor_plugin_public_radar.so
[08-01-2026 07:39:04] fromFile: Loading rig file: test.rig.json
[08-01-2026 07:39:04] createFromVehicleVIN: Failed to open a file '/tmp/car_vin' - file likely does not exist - skipping overlay
[08-01-2026 07:39:04] No valid data file found for camera:sensor:name in parameter string: camera-name=IMX728_RGGB,interface=csi-e,link=0,output-format=processed,isp-mode=yuv420-uint8,file-buffer-size=16777216,skip-eeprom=1,fifo-size=4 (using configuration folder ./)
[08-01-2026 07:39:04] createFromVehicleVIN: Failed to open a file '/tmp/car_vin' - file likely does not exist - skipping overlay
[DW][INFO] onInitialize: creating camera.gmsl with params: camera-name=IMX728_RGGB,interface=csi-e,link=0,output-format=processed,isp-mode=yuv420-uint8,file-buffer-size=16777216,skip-eeprom=1,fifo-size=4
[08-01-2026 07:39:04] SensorFactory::createSensor() -> camera.gmsl, camera-name=IMX728_RGGB,interface=csi-e,link=0,output-format=processed,isp-mode=yuv420-uint8,file-buffer-size=16777216,skip-eeprom=1,fifo-size=4
[08-01-2026 07:39:04] Found driver: camera.gmsl
[08-01-2026 07:39:04] CameraBase: pool size set to 16
[08-01-2026 07:39:04] SensorFactory::createSensor() -> camera.gmsl.master, 
[08-01-2026 07:39:04] Found driver: camera.gmsl.master
[08-01-2026 07:39:04] CameraMaster::parseDevBlock Getting device info list.
[08-01-2026 07:39:04] CameraClient: isYUVCamera, m_cameraInfo is null
[08-01-2026 07:39:04] CameraClient, setting isp-mode to yuv420-uint8
[08-01-2026 07:39:04] CameraClient, isp-mode set to yuv420-uint8
[08-01-2026 07:39:04] Platform: Detected Drive Thor P3960
[08-01-2026 07:39:04] Adding blockId
[08-01-2026 07:39:04] CameraMaster::addBlockId: custom interfaces have been disabled
[08-01-2026 07:39:04] devBlock: 0 Passive = 0 Interface = csi-e Camera_name = IMX728_RGGB Link = 0 GroupInit = 0 RecCfg = 0
[08-01-2026 07:39:04] Camera Match Name: IMX728_RGGB Description: Sony IMX728 RGGB module, MAX96717, 30FPS linkIndex: 4294967295 serInfo.Name: MAX96717F
[08-01-2026 07:39:04] Authentication is disabled for camera IMX728_RGGB
[08-01-2026 07:39:04] CameraMaster::parseCSIPortMapInfo failed to read deserializer Tx port number from device tree, error  No such file or directory
[08-01-2026 07:39:04] CameraMaster::parseCSIPortMapInfo setting default deserializer Tx port to :  4294967295
[08-01-2026 07:39:04] Not an EEPROM supported camera IMX728_RGGB
[08-01-2026 07:39:04] Driveworks exception thrown: DW_INVALID_ARGUMENT: CameraMaster: no deserializer detected, cannot initialize NvSIPL.

**** Stack trace ****
0xffff8932dc0c : dw::core::ExceptionWithStackTrace::traceStack()+188 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdwshared.so.7.0
0xffff89c8c158 : ???()+0 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff89ea9ab4 : dw::sensors::camera::CameraMaster::addConfiguration(dw::sensors::camera::CameraCfgParams&)+5316 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff89e85344 : dw::sensors::camera::CameraClient::praseCameraCfgParams(dw::core::BaseString<512ul, char> const&, dw::sensors::camera::CameraCfgParams&)+772 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff89e88e24 : dw::sensors::camera::CameraClient::setupProtocol(dwSensorParams const&, dw::core::BaseString<512ul, char> const&, dw::core::BaseString<32ul, char> const&)+708 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff89e9439c : dw::sensors::camera::CameraClient::CameraClient(dw::sensors::SensorFactory&, dwSensorParams const&)+1516 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff89e94b28 : dw::sensors::camera::CameraClient::create(dw::sensors::SensorFactory*, dwSensorParams const&)+56 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff89e50a78 : dw::sensors::camera::CameraGMSLSelector::create(dw::sensors::SensorFactory*, dwSensorParams const&)+600 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff8a51cf9c : ???()+0 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff8a51c170 : dw::sensors::SensorFactory::createSensor(dwSensorParams const&)+1152 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff8a404e2c : dwSAL_createSensor()+124 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xaaaabf385ffc : ???()+0 at /nvidia-hpc/bin/dw_samples/sample_camera
0xaaaabf399ef8 : ???()+0 at /nvidia-hpc/bin/dw_samples/sample_camera
0xaaaabf39bf34 : ???()+0 at /nvidia-hpc/bin/dw_samples/sample_camera
0xaaaabf3a3fa4 : ???()+0 at /nvidia-hpc/bin/dw_samples/sample_camera
0xaaaabf3833a8 : ???()+0 at /nvidia-hpc/bin/dw_samples/sample_camera
0xffff88a084c4 : ???()+0 at /lib/aarch64-linux-gnu/libc.so.6
0xffff88a08598 : __libc_start_main()+152 at /lib/aarch64-linux-gnu/libc.so.6
0xaaaabf3835b0 : ???()+0 at /nvidia-hpc/bin/dw_samples/sample_camera


terminate called after throwing an instance of 'std::runtime_error'
  what():  [2026-01-08 07:39:04] [DW][ERROR][dwSAL_createSensor] DW Error DW_INVALID_ARGUMENT executing DW function:
 dwSAL_createSensor(&camera_list[camera_idx], params_list[camera_idx], sal)
 at /usr/local/driveworks/samples/src/sensors/camera/camera/CameraCustomSimpleApp.cpp:151
Aborted

I want to double check if the above commands are working when cameras connected in Red color circled port?

@SivaRamaKrishnaNV , yes, second from the top port

@SivaRamaKrishnaNV ,
As fdiscussed before, I am attaching a photo of camera connection.

@SivaRamaKrishnaNV could you please let me know if you have an update on this?

Could you try with below gmsl parameter in rig.json
camera-name= IMX728_RGGB,interface=csi-ef,CPHY-mode=1,link=0,output-format=processed,async-record=1,file-buffer-size=16777216 and share your observation. Use --offscreen=1 flag with sample_camera to avoid GUI display.

@SivaRamaKrishnaNV
Thanks for the instructions.
Unfortunately, the observations are the same.
I have run the sample_camera application with following RIG File:

{
    "rig": {
        "sensors": [
            {
                "name": "camera:sensor:name",
                "nominalSensor2Rig_FLU": {
                    "quaternion": [
                        0.0,
                        0.0,
                        0.0,
                        1.0
                    ],
                    "t": [
                        0.0,
                        0.0,
                        0.0
                    ]
                },
                "parameter": "camera-name=IMX728_RGGB,interface=csi-ef,CPHY-mode=1,link=0,output-format=processed,async-record=1,file-buffer-size=16777216",
                "properties": null,
                "protocol": "camera.gmsl"
            }
        ],
        "vehicle": {
            "valid": false
        },
        "vehicleio": []
    },
    "version": 8
}

Run as follows: ./sample_camera --rig /tmp/rig.json --offscreen 1

The log is:

[DW][ERROR][getBasePathFor] Warning: SamplesDataPath::getBasePathFor(): 'DATA_ROOT' not found in search paths [/nvidia-hpc/data | /nvidia-hpc/bin/dw_samples.runfiles/av/data | /nvidia-hpc/bin/dw_samples/sample_camera.runfiles/av/data | /nvidia-hpc/bin/dw_samples/data | /nvidia-hpc/bin/data | /nvidia-hpc/data]
[DW][INFO] ProgramArguments: Missing argument 'dwTracePath' requested
[DW][INFO] WindowEGL: find EGL devices
[DW][INFO] WindowEGL: found 1 EGL devices
[DW][INFO] WindowEGL: init EGL with GLES3 context
[DW][INFO] WindowEGL: bind OpenGLES3 API
[DW][INFO] WindowEGL: offscreen mode -> use EGL PBuffer surface 1280x800
[DW][INFO] WindowEGL: create EGL context
[DW][INFO] WindowEGL: assign EGL context to current thread
[13-01-2026 14:20:51] Adding variable DW_Base:DW_Version
[13-01-2026 14:20:51] Added variable DW_Base:DW_Version
[13-01-2026 14:20:51] Platform: number of GPU devices detected 1
[13-01-2026 14:20:51] Platform: currently selected GPU device 0, Resource Data Dir: trt_10_08_10_05, Arch: ga10b
[13-01-2026 14:20:51] Platform: currently selected GPU device integrated ID 0
[13-01-2026 14:20:51] Context::mountResourceCandidateDataPath resource FAILED to mount from './resources': VirtualFileSystem: Failed to mount './resources/resources.pak'
[13-01-2026 14:20:51] Context::mountResourceCandidateDataPath resource FAILED to mount from '/nvidia-hpc/data': VirtualFileSystem: Failed to mount '/nvidia-hpc/data/resources.pak'
[13-01-2026 14:20:51] Context::findDataRootInPathWalk: Could not find ./data/DATA_ROOT in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[13-01-2026 14:20:51] Context::findDataRootInPathWalk: Could not find ./data/DATA_ROOT in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[13-01-2026 14:20:51] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[13-01-2026 14:20:51] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_base.so.7.0
[13-01-2026 14:20:51] SDK: No resources(.pak) mounted, some modules will not function properly
[13-01-2026 14:20:51] [13-01-2026 14:20:51] Initialize DriveWorks SDK v7.0.3
[13-01-2026 14:20:51] [13-01-2026 14:20:51] Release build with GNU 13.2.0 from  against Drive PDK v7.0.3.0
[13-01-2026 14:20:51] SensorFactory::createSensor() -> time.nvpps, nvpps-device=/dev/nvpps0
[13-01-2026 14:20:51] Found driver: time.nvpps
[13-01-2026 14:20:51] TimeSensorNVPPS: initialized with no UTC time reference.
[13-01-2026 14:20:51] output-timestamp parameter is deprecated and will be removed in next release[13-01-2026 14:20:51] SensorFactory: Override default timeSensor with the user passed one
[13-01-2026 14:20:51] EndpointNVPPS: started on /dev/nvpps0
[13-01-2026 14:20:51] SensorFactory::loadPluginLibraryHelper:Succeed to load dynamic lib - /usr/local/driveworks/targets/aarch64-Linux/lib/libsensor_plugin_public_radar.so
[13-01-2026 14:20:51] fromFile: Loading rig file: /tmp/rig.json
[13-01-2026 14:20:51] createFromVehicleVIN: Failed to open a file '/tmp/car_vin' - file likely does not exist - skipping overlay
[13-01-2026 14:20:51] No valid data file found for camera:sensor:name in parameter string: camera-name=IMX728_RGGB,interface=csi-ef,CPHY-mode=1,link=0,output-format=processed,async-record=1,file-buffer-size=16777216 (using configuration folder /tmp/)
[13-01-2026 14:20:51] createFromVehicleVIN: Failed to open a file '/tmp/car_vin' - file likely does not exist - skipping overlay
[DW][INFO] onInitialize: creating camera.gmsl with params: camera-name=IMX728_RGGB,interface=csi-ef,CPHY-mode=1,link=0,output-format=processed,async-record=1,file-buffer-size=16777216
[13-01-2026 14:20:51] SensorFactory::createSensor() -> camera.gmsl, camera-name=IMX728_RGGB,interface=csi-ef,CPHY-mode=1,link=0,output-format=processed,async-record=1,file-buffer-size=16777216
[13-01-2026 14:20:51] Found driver: camera.gmsl
[13-01-2026 14:20:51] CameraBase: pool size set to 16
[13-01-2026 14:20:51] SensorFactory::createSensor() -> camera.gmsl.master, 
[13-01-2026 14:20:51] Found driver: camera.gmsl.master
[13-01-2026 14:20:51] CameraMaster::parseDevBlock Getting device info list.
[13-01-2026 14:20:51] CameraClient: isYUVCamera, m_cameraInfo is null
[13-01-2026 14:20:51] Platform: Detected Drive Thor P3960
[13-01-2026 14:20:51] Adding blockId
[13-01-2026 14:20:51] CameraMaster::addBlockId: custom interfaces have been disabled
[13-01-2026 14:20:51] devBlock: 0 Passive = 0 Interface = csi-ef Camera_name = IMX728_RGGB Link = 0 GroupInit = 0 RecCfg = 0
[13-01-2026 14:20:51] Camera Match Name: IMX728_RGGB Description: Sony IMX728 RGGB module, MAX96717, 30FPS linkIndex: 4294967295 serInfo.Name: MAX96717F
[13-01-2026 14:20:51] Authentication is disabled for camera IMX728_RGGB
[13-01-2026 14:20:51] CameraMaster::parseCSIPortMapInfo failed to read deserializer Tx port number from device tree, error  No such file or directory
[13-01-2026 14:20:51] CameraMaster::parseCSIPortMapInfo setting default deserializer Tx port to :  4294967295
[13-01-2026 14:20:51] Not an EEPROM supported camera IMX728_RGGB
[13-01-2026 14:20:51] Driveworks exception thrown: DW_INVALID_ARGUMENT: CameraMaster: no deserializer detected, cannot initialize NvSIPL.

**** Stack trace ****
0xffff9547dc0c : dw::core::ExceptionWithStackTrace::traceStack()+188 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdwshared.so.7.0
0xffff95ddc158 : ???()+0 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff95ff9ab4 : dw::sensors::camera::CameraMaster::addConfiguration(dw::sensors::camera::CameraCfgParams&)+5316 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff95fd5344 : dw::sensors::camera::CameraClient::praseCameraCfgParams(dw::core::BaseString<512ul, char> const&, dw::sensors::camera::CameraCfgParams&)+772 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff95fd8e24 : dw::sensors::camera::CameraClient::setupProtocol(dwSensorParams const&, dw::core::BaseString<512ul, char> const&, dw::core::BaseString<32ul, char> const&)+708 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff95fe439c : dw::sensors::camera::CameraClient::CameraClient(dw::sensors::SensorFactory&, dwSensorParams const&)+1516 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff95fe4b28 : dw::sensors::camera::CameraClient::create(dw::sensors::SensorFactory*, dwSensorParams const&)+56 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff95fa0a78 : dw::sensors::camera::CameraGMSLSelector::create(dw::sensors::SensorFactory*, dwSensorParams const&)+600 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff9666cf9c : ???()+0 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff9666c170 : dw::sensors::SensorFactory::createSensor(dwSensorParams const&)+1152 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xffff96554e2c : dwSAL_createSensor()+124 at /usr/local/driveworks/targets/aarch64-Linux/lib/libdw_sensors_std.so.7.0
0xaaaac1eccffc : ???()+0 at ./bin/dw_samples/sample_camera
0xaaaac1ee0ef8 : ???()+0 at ./bin/dw_samples/sample_camera
0xaaaac1ee2f34 : ???()+0 at ./bin/dw_samples/sample_camera
0xaaaac1eeafa4 : ???()+0 at ./bin/dw_samples/sample_camera
0xaaaac1eca3a8 : ???()+0 at ./bin/dw_samples/sample_camera
0xffff94b584c4 : ???()+0 at /lib/aarch64-linux-gnu/libc.so.6
0xffff94b58598 : __libc_start_main()+152 at /lib/aarch64-linux-gnu/libc.so.6
0xaaaac1eca5b0 : ???()+0 at ./bin/dw_samples/sample_camera


terminate called after throwing an instance of 'std::runtime_error'
  what():  [2026-01-13 14:20:51] [DW][ERROR][dwSAL_createSensor] DW Error DW_INVALID_ARGUMENT executing DW function:
 dwSAL_createSensor(&camera_list[camera_idx], params_list[camera_idx], sal)
 at /usr/local/driveworks/samples/src/sensors/camera/camera/CameraCustomSimpleApp.cpp:151
Aborted (core dumped)