Is it safe to try OV5693 camera module E3326 with AGX Orin devkit?

I’m thinking about connecting a TX2 camera module E3326 with OV5693 sensor to my AGX Orin, but I am unsure if it is safe. Some previous posts mentioned issues with DP versions. Seems a kind of support for JP-5.0.2 with AGX Xavier was recently provided.

So I have two main questions:

  1. Is E3326 camera module supported on AGX Orin ? Does it need a custom cabling ? If yes, may you please detail ?

  2. Would I need to run jetson-io.py script before plugging ? In my case it fails to run, seems that it fails because of:

from Jetson import board
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'board' from 'Jetson' (/usr/lib/python3/dist-packages/Jetson/__init__.py)

__init__.py is void file (1 byte 0A).

Is there a known fix for this ?

Thanks for any help on these.

hello Honey_Patouceul,

we do not enable device tree overlay for e3326 camera board.
it’s due to hardware issue, you cannot connect e3326 to AGX Orin DevKit directly. the carrier board layout is different, you’ll see it’s block by hardware power button.

however, there’s multi-camera reference camera board, you’ll see there’s e3333 camera board available through Jetson-IO. it is using same camera driver (ov5693) as e3326, but it’s six cam reference camera board.

Thanks Jerry for your answer.

Just to be sure that I correctly understand, may you precise:

  1. Is it ok with an expanding cable ? If yes, would you please tell the specs for a convenient cable ?
  2. Would the dtb overlay be similar to what was provided for AGX Xavier ?
  3. About jetson-io script, what can I try as fix or workaround ?

hello Honey_Patouceul,

>> Q1
it is okay with an expanding cable. I do remember we had forum developer trying to connect e3326 to AGX Orin with expanding cable.
you may see-also NVIDIA Jetson AGX Xavier Series Camera Module Hardware Design Guide, let me arrange hardware expertise to share some more details.

>> Q2
exactly.
you may putting *.dtbo under /boot/ then Jetson-IO will recognize it.
please see-also developer guide, To Create and Apply a DTB Overlay File.

>> Q3
you may consider it’s a tool to configure your CSI connector. you may follow the doc as mentioned above to create your *.dtbo.
or, you may have old-school style to modify the device tree sources code for using main platform device tree. this will detect/register camera device while kernel boot-up.

Thanks again Jerry for your input.

Q1

I have had no feedback from that forum user about cable details, so I’d be happy to hear more from your hw expertise so that I can order the right samtec connector cable/adapter.

Q2

I’ll try this when I’ll have the correct cabling. My exact case is booting AGX Orin on eMMC for early stages and using a Linux boot from NVME SSD using extlinux.conf, so I’d expect just trying an FDT entry in an extlinux conf entry for test.

Q3

Sorry if my question is naive, but is jetson-io.py script supposed to be only used on first boot after flash ? Because in my case on a running system, it runs void, as reported above. Am I missing a package ?

tree -h /opt/nvidia/jetson-io/
/opt/nvidia/jetson-io/
β”œβ”€β”€ [5.7K]  config-by-function.py
β”œβ”€β”€ [3.8K]  config-by-hardware.py
β”œβ”€β”€ [2.9K]  config-by-pin.py
β”œβ”€β”€ [4.0K]  Headers
β”‚   β”œβ”€β”€ [3.1K]  csi-agx.py
β”‚   β”œβ”€β”€ [ 928]  csi-agx.pyc
β”‚   β”œβ”€β”€ [1.6K]  csi-nano.py
β”‚   β”œβ”€β”€ [ 371]  csi-nano.pyc
β”‚   β”œβ”€β”€ [3.1K]  csi-tx1tx2.py
β”‚   β”œβ”€β”€ [ 965]  csi-tx1tx2.pyc
β”‚   β”œβ”€β”€ [1.7K]  hdr30.py
β”‚   β”œβ”€β”€ [ 408]  hdr30.pyc
β”‚   β”œβ”€β”€ [1.9K]  hdr40.py
β”‚   β”œβ”€β”€ [ 483]  hdr40.pyc
β”‚   β”œβ”€β”€ [1.8K]  __init__.py
β”‚   β”œβ”€β”€ [ 727]  __init__.pyc
β”‚   β”œβ”€β”€ [2.1K]  m2ke.py
β”‚   β”œβ”€β”€ [ 548]  m2ke.pyc
β”‚   └── [4.0K]  __pycache__
β”‚       β”œβ”€β”€ [ 675]  csi-agx.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 314]  csi-nano.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 701]  csi-tx1tx2.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 335]  hdr30.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 379]  hdr40.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 555]  __init__.cpython-38.pyc
β”‚       └── [ 428]  m2ke.cpython-38.pyc
β”œβ”€β”€ [4.0K]  Jetson
β”‚   β”œβ”€β”€ [ 14K]  board.py
β”‚   β”œβ”€β”€ [ 11K]  board.pyc
β”‚   β”œβ”€β”€ [1.4K]  header_def.py
β”‚   β”œβ”€β”€ [ 626]  header_def.pyc
β”‚   β”œβ”€β”€ [ 13K]  header.py
β”‚   β”œβ”€β”€ [ 13K]  header.pyc
β”‚   β”œβ”€β”€ [   0]  __init__.py
β”‚   β”œβ”€β”€ [ 127]  __init__.pyc
β”‚   β”œβ”€β”€ [5.3K]  io.py
β”‚   β”œβ”€β”€ [7.2K]  io.pyc
β”‚   β”œβ”€β”€ [3.4K]  pmx.py
β”‚   β”œβ”€β”€ [2.9K]  pmx.pyc
β”‚   └── [4.0K]  __pycache__
β”‚       β”œβ”€β”€ [9.2K]  board.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 10K]  header.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 526]  header_def.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 131]  __init__.cpython-38.pyc
β”‚       β”œβ”€β”€ [6.0K]  io.cpython-38.pyc
β”‚       └── [2.3K]  pmx.cpython-38.pyc
β”œβ”€β”€ [ 19K]  jetson-io.py
β”œβ”€β”€ [4.0K]  Linux
β”‚   β”œβ”€β”€ [1.3K]  debugfs.py
β”‚   β”œβ”€β”€ [ 555]  debugfs.pyc
β”‚   β”œβ”€β”€ [1.9K]  dt.py
β”‚   β”œβ”€β”€ [1.2K]  dt.pyc
β”‚   β”œβ”€β”€ [3.7K]  extlinux.py
β”‚   β”œβ”€β”€ [2.2K]  extlinux.pyc
β”‚   β”œβ”€β”€ [   0]  __init__.py
β”‚   β”œβ”€β”€ [ 126]  __init__.pyc
β”‚   β”œβ”€β”€ [1.3K]  pinctrl.py
β”‚   β”œβ”€β”€ [ 639]  pinctrl.pyc
β”‚   └── [4.0K]  __pycache__
β”‚       β”œβ”€β”€ [ 447]  debugfs.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 929]  dt.cpython-38.pyc
β”‚       β”œβ”€β”€ [1.7K]  extlinux.cpython-38.pyc
β”‚       β”œβ”€β”€ [ 130]  __init__.cpython-38.pyc
β”‚       └── [ 512]  pinctrl.cpython-38.pyc
└── [4.0K]  Utils
    β”œβ”€β”€ [4.4K]  dtc.py
    β”œβ”€β”€ [4.9K]  dtc.pyc
    β”œβ”€β”€ [1.5K]  fio.py
    β”œβ”€β”€ [ 919]  fio.pyc
    β”œβ”€β”€ [   0]  __init__.py
    β”œβ”€β”€ [ 126]  __init__.pyc
    β”œβ”€β”€ [4.0K]  __pycache__
    β”‚   β”œβ”€β”€ [3.7K]  dtc.cpython-38.pyc
    β”‚   β”œβ”€β”€ [ 736]  fio.cpython-38.pyc
    β”‚   β”œβ”€β”€ [ 130]  __init__.cpython-38.pyc
    β”‚   └── [ 571]  syscall.cpython-38.pyc
    β”œβ”€β”€ [1.5K]  syscall.py
    └── [ 727]  syscall.pyc

8 directories, 70 files

hello Honey_Patouceul,

regarding to your Jetson-IO issue, are you flashed and booted with external partition, such as NVMe?
we’re testing pin configuration with internal eMMC and it worked properly.

1 Like

Thanks again Jerry for your follow-up.
Indeed I was using a Linux rootfs on NVME.
Booting on eMMC I’m able to run jetson-io.

So for AGX CSI connector I see two entries for E3331 and E3333 modules.
Would one be compatible with E3326 ?

Please also let me know when you have some information about the cable adapter specs so that I can order one and really try.

hello Honey_Patouceul,

sorry, we have no such cable and no such info can be shared.
regrading to the CSI configuration, you may select E3333 as reference, E3333 and E3326 were using the same camera sensor,
for example, E3333 is six cam reference board, and E3326 is single camera basically.

BTW,
E3331 it actually a reference driver for using CPHY sensor.