Orin Nano Dev-Kit with JetPack 6.0 PR Not Detecting CSI Camera

I have the official Orin Nano dev-kit with JetPack 6.0 PR installed. The Hello AI project installed properly, I am able to toggle the GPIO pins with C++ code, and the UART serial communication streams data to other devices flawlessly.

However, my Raspberry Pi V2 camera connected to the CAM0 CSI port is not deteced. Also tried an IMX219-160 camera, but the same problem. To check if the Orin Nano detects anything, I tried the command “v4l2-ctl”, but it does not work:

$ v4l2-ctl
bash: v4l2-ctl: command not found

I also tried the “nvgstcapture-1.0” command, but neither camera is detected. This is the error output:

$ nvgstcapture-1.0
Encoder null, cannot set bitrate!
Encoder Profile = High
Codec not supported. Falling back to opensrc H264 encoder
Supported resolutions in case of ARGUS Camera
  (2) : 640x480
  (3) : 1280x720
  (4) : 1920x1080
  (5) : 2104x1560
  (6) : 2592x1944
  (7) : 2616x1472
  (8) : 3840x2160
  (9) : 3896x2192
  (10): 4208x3120
  (11): 5632x3168
  (12): 5632x4224

Runtime ARGUS Camera Commands:

  Help : 'h'
  Quit : 'q'
  Set Capture Mode:
      mo:<val>
          (1): image
          (2): video
  Get Capture Mode:
      gmo
  Set sensor orientation:
      so:<val>
          (0): none
          (1): Rotate counter-clockwise 90 degrees
          (2): Rotate 180 degrees
          (3): Rotate clockwise 90 degrees
  Get sensor orientation:
      gso
  Set sensor mode:
      smo:<val> e.g., smo:1
  Get sensor mode:
      gsmo
  Set Whitebalance Mode:
      wb:<val>
          (0): off
          (1): auto
          (2): incandescent
          (3): fluorescent
          (4): warm-fluorescent
          (5): daylight
          (6): cloudy-daylight
          (7): twilight
          (8): shade
          (9): manual
  Get Whitebalance Mode:
      gwb
  Set Saturation (0 to 2):
      st:<val> e.g., st:1.25
  Get Saturation:
      gst
  Set Exposure Compensation (-2 to 2):
      ec:<val> e.g., ec:-2
  Get Exposure Compensation:
      gec
  Set Auto Whitebalance Lock:
      awbl:<val> e.g., awbl:0
  Get Auto Whitebalance Lock:
      awbl
  Set Auto Exposure Lock:
      ael:<val> e.g., ael:0
  Get Auto Exposure Lock:
      gael
  Set TNR Mode:
      tnrm:<val> e.g., tnrm:1
          (0): OFF
          (1): FAST
          (2): HIGH QUALITY
  Get TNR Mode:
      gtnrm
  Set TNR Strength (-1 to 1):
      tnrs:<val> e.g., tnrs:0.5
  Get TNR Strength:
      gtnrs
  Set EE Mode:
      eem:<val> e.g., eem:1
          (0): OFF
          (1): FAST
          (2): HIGH QUALITY
  Get EE Mode:
      geem
  Set EE Strength (-1 to 1):
      ees:<val> e.g., ees:0.5
  Get EE Strength:
      gees
  Set Auto Exposure Anti-Banding (0 to 3):
      aeab:<val> e.g., aeab:2
          (0): OFF
          (1): MODE AUTO
          (2): MODE 50HZ
          (3): MODE 60HZ
  Get Auto Exposure Anti-Banding:
      gaeab
  Set Gain Range:
      gr:<val><space><val> e.g., gr:1 16
  Get Gain Range:
      ggr
  Set Exposure Time Range:
      etr:<val><space><val> e.g., etr:34000 35000
  Get Exposure Time Range:
      getr
  Set ISP Digital Gain Range:
      dgr:<val><space><val> e.g., dgr:2 152
  Get ISP Digital Gain Range:
      gdgr
  Capture: enter 'j' OR
           followed by a timer (e.g., jx5000, capture after 5 seconds) OR
           followed by multishot count (e.g., j:6, capture 6 images)
           timer/multihot values are optional, capture defaults to single shot with timer=0s
  Start Recording : enter '1'
  Stop Recording  : enter '0'
  Video snapshot  : enter '2' (While recording video)
  Get Preview Resolution:
      gpcr
  Get Image Capture Resolution:
      gicr
  Get Video Capture Resolution:
      gvcr


Runtime encoder configuration options:

  Set Encoding Bit-rate(in bytes):
      br:<val> e.g., br:4000000
  Get Encoding Bit-rate(in bytes):
      gbr
  Set Encoding Profile(only for H.264):
      ep:<val> e.g., ep:1
          (0): Baseline
          (1): Main
          (2): High
  Get Encoding Profile(only for H.264):
      gep
  Force IDR Frame on video Encoder(only for H.264):
      Enter 'f' 


bitrate = 4000

Using winsys: x11 
** Message: 05:12:55.349: <main:4732> iterating capture loop ....
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:792 No cameras available

For JetPack 6.0 PR, what is the correct command for listing connected devices? And best way to check functionality of CSI camera?

Please enable the camera by jetson-io first.
Then check the kernel for the driver loading.

sudo dmesg | grep -i imx219

Big problem after trying to enable the camera - Orin Nano dev-kit will no longer boot beyond the Nvidia splash screen. The steps I followed to enable the camera are summarized at Arducam. I basically used the “/opt/nvidia/jetson-io/jetson-io.py” script.

After the splash screen comes up, the ubuntu desktop does not load, I just get a blinking cursor at the upper left of the screen. I did manage to capture the initial boot process through the serial console. See attachment. Please help.

serial_console20240919.txt (72.0 KB)

Looks like unable load the file system.
Could you reflash the system by sdkmanager to run the jetson-io to try again.

The Jetpack 6.0 PR is installed via an SD card. Are you saying I have to re-image the card? I have many projects created and saved information, and a lot of time invested in the current SD card. Is it possible to repair or undo the jetson.io steps using the serial console to save it? I’m able to run very basic linux commands via Putty from my Windows 10 PC connected to the dev-kit serial console pins.

L4TLauncher: Attempting Recovery Boot
EFI stub: Booting Linux Kernel...

The boot stuck in recovery boot. Please read this post.

I read the post, but not very helpful. I think what you and ShaneCCC are suggesting is to re-flash my Orin Nano official dev-kit (currently has Jetpack 6.0 PR). But this is a major problem because I will lose many projects and libraries.

Just to be clear, are you implying there is no way to undo the camera-enable steps from the serial console? Again, the trouble started when I did the enable using the “/opt/nvidia/jetson-io/jetson-io.py” script.

If the undo solution is not possible, can you tell me which CSI camera works by default on JetPack 6.0 PR?

If a CSI camera must be enabled, please explicitly describe how to enable a Raspberry Pi v2 camera so that I and other Orin Nano customers avoid this detrimental boot problem.

Hi,

No, that is not what I mean. The point here is not reflash the board.

The point here is you need to recover current situation from recovery image by using the method I shared in above post.

It is just that user’s jetpack version is too old to do this recovery, so he can only reflash the board.

But as you are using jetpack6, you could recover it by using serial console.

We need to check the log before recovery image happened. To dump such log, you need to recover from recovery image first.

The logic here

  1. Your did something and lead to system crash

  2. The board fails to boot into kernel for consecutive 3 times because the crash in (1).

  3. The board will go into recovery image/recovery boot to prevent your board keep rebooting in (2).

We only care about the error log from (1), but currently you only share the log in (3).
You need to follow the post to make it back to (1) and dump the log.

Great, some success, I got the dev-kit to boot successfully. But not out of the woods yet. I followed these steps to make a direct boot from my serial console:

Press ESC to enter UEFI Menu, then choose Device Manager → NVIDIA Configuration → L4T Configuration → OS chain A status → (The value is Unbootable if UEFI attempts recovery kernel) choose Normal → Save and exit, reboot, UEFI will try Direct Boot.

When the boot process made it to the “L4T boot options” (see below), I quickly pressed the “0” key to boot from the “primary kernel”. Then the dev-kit booted successfully to the ubuntu desktop. All my projects and libraries and bookmarks are still there! This is great!

Serial console snippet:

L4TLauncher: Attempting Direct Boot
L4T boot options
0: primary kernel
1: Custom Header Config: <CSI Camera IMX219 Dual>
Press 0-1 to boot selection within 3.0 seconds.
Press any other key to boot default (Option: 1)
ASSERT [L4TLauncher] /out/nvidia/bootloader/uefi/Jetson_RELEASE/edk2-nvidia/Silicon/NVIDIA/Library/TegraDeviceTreeOverlayLib/TegraDeviceTreeKernelOverlayLib.c(48): ((BOOLEAN)(0==1))

Full serial console text:
serialconsole20240920_try2.txt (85.0 KB)

Not done yet. If I try to reboot, I’ll have the same problem. How do I undo the camera-enable process, which started the trouble in the first place? Can it be done with the “/opt/nvidia/jetson-io/jetson-io.py” script? Or is there a better and more robust way?

Hi,

Just to clarify. What is the exact “same problem” you are talking about?

Are you saying that this is the error you hit?

ASSERT [L4TLauncher] /out/nvidia/bootloader/uefi/Jetson_RELEASE/edk2-nvidia/Silicon/NVIDIA/Library/TegraDeviceTreeOverlayLib/TegraDeviceTreeKernelOverlayLib.c(48): ((BOOLEAN)(0==1))

The “same problem” I’m referring to is failure to boot all the way to the ubuntu desktop. It’s temporarily working through the steps you suggested ( Press ESC to enter UEFI Menu, then choose Device Manager → NVIDIA Configuration → L4T Configuration → OS chain A status → (The value is Unbootable if UEFI attempts recovery kernel) choose Normal → Save and exit, reboot, UEFI will try Direct Boot).

If you see the serial console snippet above, the two L4T boot options are “0: primary kernel” and “1: Custom Header Config: CSI Camera IMX219 Dual”. The default is “1”, so if I don’t intervene and select “0”, it will not boot.

Again, the problem started when I tried to enable the camera with the “/opt/nvidia/jetson-io/jetson-io.py” script. What I want to do now is undo that. Is this clear now?

Hi,

Just to clarify. I am clear about the “method” you did to cause error there, but what I want to clarify now is what error you hit .

The boot option (1) is created from jetson-io. What is the error log you hit when you choose that boot option 1 Custom Header Config: CSI Camera IMX219 Dual?

This one?

ASSERT [L4TLauncher] /out/nvidia/bootloader/uefi/Jetson_RELEASE/edk2-nvidia/Silicon/NVIDIA/Library/TegraDeviceTreeOverlayLib/TegraDeviceTreeKernelOverlayLib.c(48): ((BOOLEAN)(0==1))

BTW, what is jetpack6.0 PR? We don’t have such version but only Jetpack6.0 DP and GA.

JetPack 6.0 PR means the Production Release downloaded from Nvidia official site and I chose the SD Card Image method. I write the “PR” acronym to distinguish from the Development Preview (DP) jetpack released prior.

Regarding the boot failure with the camera-enabled, by default the system chooses “1: Custom Header Config: CSI Camera IMX219 Dual”, I don’t choose that. From there on, the boot process appears to start failing here:

Jetson System firmware version 36.2.0-gcid-34956989 date 2023-11-30T18:35:35+00:
00
ESC   to enter Setup.
F11   to enter Boot Manager Menu.
Enter to continue boot.
**  WARNING: Test Key is used.  **

L4TLauncher: Attempting Direct Boot
L4T boot options
0: primary kernel
1: Custom Header Config: <CSI Camera IMX219 Dual>
Press 0-1 to boot selection within 3.0 seconds.
Press any other key to boot default (Option: 1)
ASSERT [L4TLauncher] /out/nvidia/bootloader/uefi/Jetson_RELEASE/edk2-nvidia/Silicon/NVIDIA/Library/TegraDeviceTreeOverlayLib/TegraDeviceTreeKernelOverlayLib.c(48): ((BOOLEAN)(0==1))

Resetting the system in 5 seconds.
▒▒▒▒Shutdown state requested 1
Rebooting system ...

The full serial-console text shows what happens when the system chooses 1": Custom Header Config: CSI Camera IMX219 Dual", followed by me intervening and choosing the boot option “0: primary kernel”.
serialconsole20240920_try2.txt (85.0 KB)
.
.
Right now all I want to do is undo the camera-enabled option done with the “/opt/nvidia/jetson-io/jetson-io.py” script. It clearly fouled up the boot process. Please explain how to undo with or without jetson-io.py.

The 1": Custom Header Config: CSI Camera IMX219 Dual" is just the configuration generated by jetson-io.

Go to your /boot/extlinux/extlinux.conf and remove the 2nd option shall make it disappeared.

1 Like

Part 1 - Boot Problem Solved
Thanks @WayneWWW, removing the 2nd option in “/boot/extlinux/extlinux.conf” repaired the boot problem. For others experiencing this problem, the trouble began after I attempted to enable the CSI camera with the “/opt/nvidia/jetson-io/jetson-io.py” script. This changes the default boot process and fails. Here’s the bad extlinux.conf file produced by jetson-io.py:
extlinux.conf.bad-camera-enable-backup.txt (1.3 KB)

This is the correct “extlinux.conf” file that enables a successful boot all the way to the ubuntu desktop:
extlinux.conf.txt (921 Bytes)

If you experience the boot problem, follow these steps to force a Direct boot: Power off then Power On. Press ESC to enter UEFI Menu, then choose Device Manager → NVIDIA Configuration → L4T Configuration → OS chain A status → (The value is Unbootable if UEFI attempts recovery kernel) choose Normal → Save and exit, reboot, UEFI will try Direct Boot. When the boot process reaches the “L4T boot options”, you’ll have 3 seconds to choose the “0” option for the “primary kernel” boot. This will complete the boot process all the way to the ubuntu desktop so you can make the above “extlinux.conf” repairs.

Part 2 - How to Enable CSI Camera
Right. I still need to enable a CSI camera. Questions for Nvidia:

(1) which CSI cameras have been successfully tested on a Orin Nano dev-kit with JetPack 6.0 Production Release (via SD card image)? RPi V2 camera?
(2) how is the CSI camera enabled such that the boot process is not broken? jetson-io.py clearly did not work.
(3) Can the enable be done by modifying the “extlinux.conf” file directly? with what statements?
(4) are there any cameras that work by default on the CAM0 or CAM1 ports?

We were confirmed IMX219/IMX477 enable by jetson-io working well without any problem.

It looks like the issue here is the overall BSP version does not match to what you said.

Although you told us it is jeptack6 production release, your UEFI log indicates it is not.

Jetson System firmware version 36.2.0-gcid-34956989 date 2023-11-30T18:35:35+00:

Your version is still 36.2 which is the DP version of jetpack6. That could lead to jetson-io didn’t work properly.

Something is not right with the “/opt/nvidia/jetson-io/jetson-io.py” script. Already been through that and it fouled up the boot process. Luckily the situation was reconciled with guidance from @WayneWWW and I did not have to reflash the SD card. All my work was saved. The JetPack version I currently have is definitely the Production Release from the Official Nvidia download site . It was a major improvement from the faulty DP version. I started from scratch with an SD Card Image as soon as the Production Release was announced. I also run the update and “sudo apt-get upgrade” command at least twice a week. Here’s the JetPack proof from my official dev-kit terminal:

jet@sky:~$ cat /etc/nv_tegra_release 
# R36 (release), REVISION: 3.0, GCID: 36923193, BOARD: generic, EABI: aarch64, DATE: Fri Jul 19 23:24:25 UTC 2024
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia
 

jet@sky:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.5 LTS
Release:	22.04
Codename:	jammy


jet@sky:~$ sudo apt-cache show nvidia-jetpack
[sudo] password for jet: 
Package: nvidia-jetpack
Source: nvidia-jetpack (6.0)
Version: 6.0+b106
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 6.0+b106), nvidia-jetpack-dev (= 6.0+b106)
Homepage: http://developer.nvidia.com/jetson
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_6.0+b106_arm64.deb
Size: 29296
SHA256: 561d38f76683ff865e57b2af41e303be7e590926251890550d2652bdc51401f8
SHA1: ef3fca0c1b5c780b2bad1bafae6437753bd0a93f
MD5sum: 95de21b4fce939dee11c6df1f2db0fa5
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

Package: nvidia-jetpack
Source: nvidia-jetpack (6.0)
Version: 6.0+b87
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 6.0+b87), nvidia-jetpack-dev (= 6.0+b87)
Homepage: http://developer.nvidia.com/jetson
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_6.0+b87_arm64.deb
Size: 29298
SHA256: 70be95162aad864ee0b0cd24ac8e4fa4f131aa97b32ffa2de551f1f8f56bc14e
SHA1: 36926a991855b9feeb12072694005c3e7e7b3836
MD5sum: 050cb1fd604a16200d26841f8a59a038
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

.
If I interpreted the “cat /etc/nv_tegra_release” echo correctly, I have R36.3.0, installed in July, 2024. If that is still not the correct version, then the JetPack Image on the Official Nvidia JetPack Download site is not current.

I did extensive research on this camera-enable problem. Others had similar problems, and they got it to work by reverting back to Jetpack 5.x.x, which is not an option for me.

What else can I check for you on my dev-kit?