Arducam IMX477 UVC Camera Adapter not working with B01

I can’t get the Arducam IMX477 UVC and raspi hq camera to work with jet pack 4.5. /dev/video0 is present, but gestreamer (or any other application) can’t open the camera. The LED on the camera board is also not lid. Confined operation o camera and ardu board on other computer.
How can I get the Arducam IMX477 UVC board to work with jetson nano B01?

Suppose it’s USB camera right?
What command to verify it?

Thank you for the quick response.
Yes it is a usb camera.

I tried the following …

  • OpenCV 4.5
  • v4l2-ctl
  • cheese
  • ffmpeg
  • gst-device-monitor-1.0

on Mac and raspbian cv2.VideoCapture(0) just works out of the box.

On jetpack I get the following:

[ WARN:0@2.483] global cap_gstreamer.cpp (2076) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Internal data stream error.
[ WARN:0@2.484] global cap_gstreamer.cpp (1053) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0@2.485] global cap_gstreamer.cpp (616) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created

V4l2-ctl gets me the following:

v4l2-ctl -d /dev/video0 --list-formats-ext
Index : 0
Type : Video Capture
Pixel Format: ‘MJPG’ (compressed)
Name : Motion-JPEG
Size: Discrete 4032x3040
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 3840x2160
Interval: Discrete 0.050s (20.000 fps)
Size: Discrete 2592x1944
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2560x1440
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.017s (60.000 fps)
Size: Discrete 1600x1200
Interval: Discrete 0.020s (50.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.010s (100.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.010s (100.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.013s (80.000 fps)

And in more detail:

v4l2-ctl --all -d 0
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : Arducam IMX477 HQ Camera
Bus info : usb-70090000.xusb-2.4.2
Driver version: 4.9.201
Capabilities : 0x84200001
Video Capture
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 3840/2160
Pixel Format : ‘MJPG’
Field : None
Bytes per Line : 0
Size Image : 16589389
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 3840, Height 2160
Default : Left 0, Top 0, Width 3840, Height 2160
Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 3840, Height 2160
Selection: crop_bounds, Left 0, Top 0, Width 3840, Height 2160
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 20.000 (20/1)
Read buffers : 0
brightness 0x00980900 (int) : min=-64 max=64 step=1 default=0 value=0
contrast 0x00980901 (int) : min=0 max=64 step=1 default=32 value=32
saturation 0x00980902 (int) : min=0 max=128 step=1 default=64 value=64
hue 0x00980903 (int) : min=-40 max=40 step=1 default=0 value=0
white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
gamma 0x00980910 (int) : min=72 max=500 step=1 default=100 value=100
gain 0x00980913 (int) : min=0 max=100 step=1 default=0 value=0
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2
white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
sharpness 0x0098091b (int) : min=0 max=6 step=1 default=3 value=3
backlight_compensation 0x0098091c (int) : min=0 max=2 step=1 default=1 value=1
exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=3
exposure_absolute 0x009a0902 (int) : min=1 max=5000 step=1 default=157 value=157 flags=inactive
exposure_auto_priority 0x009a0903 (bool) : default=0 value=0
focus_auto 0x009a090c (bool) : default=1 value=1

For Cheese I get:

cheese:3364): Gtk-WARNING **: 13:01:49.208: Theme parsing error: cheese.css:7:35: The style property GtkScrollbar:min-slider-length is deprecated and shouldn’t be used anymore. It will be removed in a future version
** Message: 13:01:49.672: cheese-application.vala:211: Error during camera setup: No device found
(cheese:3364): cheese-CRITICAL **: 13:01:49.723: cheese_camera_device_get_name: assertion ‘CHEESE_IS_CAMERA_DEVICE (device)’ failed
(cheese:3364): GLib-CRITICAL **: 13:01:49.723: g_variant_new_string: assertion ‘string != NULL’ failed
(cheese:3364): GLib-CRITICAL **: 13:01:49.723: g_variant_ref_sink: assertion ‘value != NULL’ failed
(cheese:3364): GLib-GIO-CRITICAL **: 13:01:49.723: g_settings_schema_key_type_check: assertion ‘value != NULL’ failed
(cheese:3364): GLib-CRITICAL **: 13:01:49.723: g_variant_get_type_string: assertion ‘value != NULL’ failed
(cheese:3364): GLib-GIO-CRITICAL **: 13:01:49.723: g_settings_set_value: key ‘camera’ in ‘org.gnome.Cheese’ expects type ‘s’, but a GVariant of type ‘(null)’ was given
(cheese:3364): GLib-CRITICAL **: 13:01:49.723: g_variant_unref: assertion ‘value != NULL’ failed
** (cheese:3364): CRITICAL **: 13:01:49.723: cheese_preferences_dialog_setup_resolutions_for_device: assertion ‘device != NULL’ failed

ffmpeg returns

fmpeg -f video4linux2 -list_formats all -i /dev/video0
ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
[video4linux2,v4l2 @ 0x55a21bd600] Compressed: mjpeg : Motion-JPEG : 4032x3040 3840x2160 2592x1944 2560x1440 1920x1080 1600x1200 1280x960 1280x720 640x480
/dev/video0: Immediate exit requested


Device found:
name : Arducam IMX477 HQ Camera
class : Video/Source
caps : image/jpeg, width=(int)4032, height=(int)3040, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)10/1;
image/jpeg, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)20/1;
image/jpeg, width=(int)2592, height=(int)1944, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
image/jpeg, width=(int)2560, height=(int)1440, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1;
image/jpeg, width=(int)1600, height=(int)1200, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)50/1;
image/jpeg, width=(int)1280, height=(int)960, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1;
image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)100/1;
image/jpeg, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)80/1;
udev-probed = true
device.bus_path = platform-70090000.xusb-usb-0:2.4.4:1.0
sysfs.path = /sys/devices/70090000.xusb/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4:1.0/video4linux/video0
device.bus = usb
device.subsystem = video4linux = 0c45 = “Arducam\x20Technology\x20Co.\x2c\x20Ltd.” = 636d = “Arducam\ IMX477\ HQ\ Camera”
device.serial = Arducam_Technology_Co.__Ltd._Arducam_IMX477_HQ_Camera_UC517
device.capabilities = :capture:
device.api = v4l2
device.path = /dev/video0
v4l2.device.driver = uvcvideo
v4l2.device.card = “Arducam\ IMX477\ HQ\ Camera”
v4l2.device.bus_info = usb-70090000.xusb-2.4.4
v4l2.device.version = 264649 (0x000409c9)
v4l2.device.capabilities = 2216689665 (0x84200001)
v4l2.device.device_caps = 69206017 (0x04200001)
gst-launch-1.0 v4l2src device=/dev/video0 ! …

Could you try below command.

gst-launch-1.0 v4l2src device="/dev/video0" ! 'image/jpeg,width=640,height=480' ! nvv4l2decoder mjpeg=1 ! nvvidconv !  'video/x-raw(memory:NVMM),fromat=NV12' ! nvegltransform ! nveglglessink
1 Like

Thank you very much.
That work… I have no idea why (since I am a total noob)
But I can probably figure that out by my self.
This threat seems to be very helpful when trying to use gstreamer with opencv:

From this point on, I will try to resolve why cv2.videocapture does not work out of the box like on other platforms.

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