How can I reconfigure the camera's virtual address in SIPL driver?

Hi Nvidia:
I’m working on SIPL camera image capturing. The HW details is,

Platform: jetson Agx orin. (imx728 + max96717 + max96712)
BSP: jetpack 7.2
SIPL ver: jetson_sipl_api_r39.2.0_aarch64.tbz2

From imx728 case, the driver assign the virtual address of sensor and eeprom as 0x08 and 0x09.

image

It seems these value cannot be modified from the source code. Is there any way to reset device virtual address?
Thank you.

Hi,

0x08 and 0x09 are GMSL I2C virtual aliases on the deserializer bus, not CSI virtual channels and not the sensor’s native I2C address. They are assigned by Camera HAL, not by the IMX728 / EEPROM driver.

On this module the physical (native) addresses stay:

  • IMX728: 0x1C (HSL default is 0x1A; the R0SIM728 module config overrides it)
  • EEPROM: 0x54
  • MAX96717: 0x40

HAL walks the module device table (sensor → EEPROM → serializer) and allocates the next free 7-bit alias from 0x08–0x77. For the first camera on that I2C adapter that becomes:

  • sensor virtual 0x08
  • EEPROM virtual 0x09
  • serializer virtual 0x0A (written to MAX96717 device address register 0x0000)

MAX96717 then programs I2C translators A/B (0x0042–0x0045: VirtA, PhysA, VirtB, PhysB) so the SoC talks to 0x08/0x09 and the serializer maps those to the real devices on the camera I2C bus. A second module on the same adapter continues the pool (0x0B, 0x0C, …). That is expected so several cameras can share the same physical sensor/EEPROM addresses.

These virtual aliases cannot be changed from the IMX728 source, and query JSON i2cAddress does not select them.
sensors[].i2cAddress / eeproms[].i2cAddress are the physical addresses used as translator destinations. Change those only if the part on your module is not actually at 0x1C / 0x54. If the JSON physical address does not match the hardware, I2C to that device will fail.

There is no SIPL query field in JetPack 7.2 / SIPL r39.2 to pick a specific virtual I2C address. HAL always takes the next free alias. Driver I2C still uses the physical address in HSL; HAL remaps it to the virtual alias. Serializer init uses the physical address until its own address has been remapped.

If capture works, you generally do not need to change 0x08/0x09. If you need a different alias (for example another device already uses 0x08 on the same adapter as MAX96712), that would require a Camera HAL change; it is not something the IMX728 driver can override today.

Please confirm whether the goal is a different physical address on the module, or a different virtual alias on the deserializer I2C bus, and whether another device on that bus already sits at 0x08/0x09.

Hi ShaneCCC, Thank you

I need a different virtual alias to my cam module to avoid ID conflict.
But it seems Camera HAL source not included in jetson_sipl_api_r39.2.0_aarch64.tbz2, is there any other way to reconfigure the alias ID?

Thank you.