DRIVE OS Version: 7.0.3
Hello,
We are developing a custom camera module for Drive OS 7.0.3 (actually porting from DriveOS 6.0.8) and following the publicly available Camera Device Driver (CDD) and SIPL Device Block documentation. However, we have encountered inconsistencies between the documentation and the actual public SDK.
1. The documentation requires subclassing internal SIPL C++ classes
The CDD guide explicitly states that to add a new camera, serializer, or deserializer, we must implement glue logic by inheriting from:
-
CNvMSensor -
CNvMDeserializer -
CNvMSerializer -
CNvMCameraModule
(References: “Creating a New SIPL Device Block Camera Device Driver”, “Glue Logic for Deserializer”, etc : Architecture of a SIPL Device Block Camera Device Driver (CDD) — NVIDIA DriveOS 7.0.3 Linux SDK Developer Guide )
However, these classes and headers are not present in the public DriveOS 7.0.3 SDK and therefore cannot be included or subclassed.
2. The documentation states that drivers must be “provided before creating a DevBlkCDIDevice”
The CDI API reference says:
“Before the client can create a DevBlkCDIDevice object, it must provide a device driver.” [developer.nvidia.com]
or:
”You must create SIPL device block device drivers for the sensor and EEPROM in the camera module.”
But the public SDK does not expose any API for explicitly registering a driver.
(like it was DoCreateCDIDevice, CreateSensor etc in previous SDK)
3. The only publicly documented way to load new drivers is directory-based scanning
The “Deploying the New Driver” section says new drivers should be placed in:
/usr/lib/nvsipl_drv/
and SIPL will auto-load them.
However, this contradicts references elsewhere in the CDD guide to programmatically attaching drivers to the Device Block.
4. IInterfaceProvider is documented, but custom interfaces do not solve CDI registration
I have found documentation for nvsipl::IInterfaceProvider and GetInterface(UUID) (API reference).
This enables custom DDI interfaces, but does not explain how CDI drivers should be registered or bound to device instances without the hidden code that was previously available in DOS 6.x.x.
Questions for clarification
Q1 — What is the correct, officially supported workflow for public DriveOS 7.x SDK users to add a new camera/serializer/deserializer driver?
Should we use:
-
CDI‑only drivers + directory-based auto discovery,
-
or is there a missing public API for registering drivers programmatically,
-
or is full SIPL source access required (CNvM* classes) to integrate new devices?
Q2 — Are CNvMSensor / CNvMDeserializer / CNvMSerializer intended only for partners with full SIPL source access?
If so, please confirm that public SDK users should ignore all documentation referring to these classes. Will these files be received from an Nvidia representative?
Q3 — Is directory-based auto‑discovery the only supported mechanism for public SDK users to integrate new CDI drivers?
If not, please provide the public API name and usage example for programmatic CDI driver registration.
Q4 — For auxiliary devices (PMIC, temp sensor), is the correct approach:
-
Implement a CDI driver,
-
Load via
/usr/lib/nvsipl_drv/, -
Optionally expose DDI via
IInterfaceProvider+ UUID, -
Bind it to the Device Block via platform configuration?
Will these hidden files be received from an Nvidia representative if needed?
Thank you!