Nano 2GB + Raspi HQ Cam nvarguscamerasrc working but not v4l2-ctl

I have the HQ Camera working with the 2GB nano without mods. gst with nvarguscamersrc works great but I am having problems with using v4l2-ctrl capturing raw images.

I am using the following command:
v4l2-ctl -d /dev/video0 --verbose --set-fmt-video=width=4032,height=3040,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=test.raw

The program just hangs and raw file is 0 bytes. Syslog shows tegra_channel_error_status:error 20022

Thank you in advance for your help!

hello nootropicMan,

may I know which sensor module it is?
could you please dump the pixel formats with below commands,
for example, $ v4l2-ctl -d /dev/video0 --list-formats-ext
thanks

I am using the Raspi HQ camera IMX477 sensor module.

the formats via v4l2-ctl are 4032x3040 @ 30fps and 1920x1080 @ 60fps.

The camera works fine with gst-launch + nvarguscamerasrc at the sepcified formats. v4l2-ctl can list the modes and query other information but wonā€™t save out a raw file.

hello nootropicMan,

please double confirm youā€™re assign correct width, height and pixel formats for v4l2 standard controls.
could you please exclude --stream-to to verify the sensor streams?
for example, $ v4l2-ctl -d /dev/video0 --set-fmt-video=width=4032,height=3040,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=100.
it should output > for each captured frames.
thanks

Hi Jerry, I tried the command and Iā€™m still experiencing the same hang condition. Here is the output:

$ v4l2-ctl -d /dev/video0 --verbose --set-fmt-video=width=4032,height=3040,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=100
VIDIOC_QUERYCAP: ok
VIDIOC_S_EXT_CTRLS: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture:
Width/Height : 4032/3040
Pixel Format : ā€˜RG10ā€™
Field : None
Bytes per Line : 8064
Size Image : 24514560
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags :
VIDIOC_REQBUFS: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_QUERYBUF: ok
VIDIOC_QBUF: ok
VIDIOC_STREAMON: ok
no more ouput after this and hangs indefinitely

Thank you in advance for your help!

hello nootropicMan,

may I also know can 1920x1080@60-fps sensor mode works with v4l2 standard controls?
thanks

Hi Jerry, I tried the same command with 1920x1080 and output and hang condition is the same. Do you think this is a sensor driver issue?

I am using the latest driver from Nvidia:
https://developer.nvidia.com/rpi-imx477-support-nano-2gb

Also, where can I download the source code to this driver?

hello nootropicMan,

you may download the latest (i.e. R32.4.4) L4T sources release package for the source code.
for example,
hereā€™s kernel sources of IMX477,
$L4T_Sources/r32.4.4/Linux_for_Tegra/source/public/kernel/nvidia/drivers/media/i2c/imx477.c

hello nootropicMan,

FYI,
Iā€™m also able to reproduce the issue with Nano-2GB/IMX477.
it seems v4l2-ctl is not working with IMX477 whereas nvarguscamerasrc works.

please having your use-case with nvarguscamersrc,
weā€™re going to check this v4l2 standard control failures internally, will update the status after we come out conclusions.
thanks

Thank you, Jerry. I look forward to your update.

You guys rock!

Hi Jerry,

Is there any update on this issue? Iā€™m currently working on a prototype that requires getting the raw image. Thank you in advance!

hello DicksonChow,

itā€™s still under investigation, we have not root cause the issue yet.

Hi Jerry,

I just did a ā€œsudo apt updateā€ and ā€œsudo apt upgradeā€ and now the camera is no longer detected. Nvargus and v4l2-ctl --all says there is no camera.

hello DicksonChow,

itā€™s kernel manually update, RPi IMX477 Support Nano 2GB.
while youā€™re doing system upgrade, it may refresh the kernel image to revert the changes.
thanks

1 Like

hi all,

FYI,
thereā€™re some changes for the latest L4T release, and it fixes the issue that v4l2-ctl is not working with IMX477 whereas nvarguscamerasrc works.
weā€™re having internal code-review, itā€™s target for the next public JetPack release, (i.e. JetPack-4.6/ l4t-r32.6)
thanks

Can anyone confirm that raw bayer capture is now working via v4l2-ctl for the IMX477? Thanks!

Update - It does appear to be working correctly on the latest L4T stock Nvidia drivers.

hello dustinkerstein,

thatā€™s correct, we have some bug fixes to address v4l2 raw capture failures.
the changes has been merged into JetPack-4.6 (l4t-r32.6), please download the latest Jetpack release for your development.

Thanks! That is the behavior I now see.