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.

@JerryChang
jetson io from nvme won’t work?

hello _av,

this topic has been solved.
you may init another new discussion thread for tracking this.

did you meant you cannot configure pins through Jetson-IO when device is flashed and booted on external partition, i.e. NVME?
please share some details,
for example,
is your target with both internal eMMC and external NVMe devices?
may I know how you flash the target. are you using… l4t_initrd_flash.sh --external-device nvme0n1p1..?

let’s have new thread for tracking this issue.
thanks

@JerryChang Thank you for following up!
Could you extend what is the solution for connecting the default ov5693 CSI tx2 devkit sensor to Orin devkit, please?
It won’t work without two things - 1. cable adapter of undefined type? 2. device tree modification of some sort? right?

Moreover, you may find the other thread pertaining the nvme jetson-io issue

hello _av,

please note that… there’s possible approach instead of a concrete solution.

due to different board design, you cannot connect e3326 camera board to AGX Orin DevKit directly, it’s blocked by hardware power-key button.
that’s why we do not enable device tree overlay for e3326 camera board.

so,
you may… 1) have cable adapter, and 2) device tree modification, to enable this camera board.
you may select E3333 as reference driver, since E3333 and E3326 were using the same camera sensor.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.