I am trying to get some definitive information about using the Raspberry Pi Camera V2 on the Nvidia Jetson Nano. There is a lot of information out there but it is confusing and sometimes contradictory.
What I believe to be fact:
The Nano will not work with Pi Camera V1 (the OV5647 chip). It DOES work with Pi Camera V2 (the imx219 chip)
The following command shows video from camera in a window. The image has very low latency, but is quite grainy:
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),width=3820, height=2464, framerate=21/1, format=NV12' ! nvvidconv flip-method=2 ! 'video/x-raw,width=960, height=616' ! nvvidconv ! nvegltransform ! nveglglessink -e
Dmesg reports some errors with the imx219. Is this normal, or do I have a hardware problem ?
dmesg | grep imx219
[ 1.256995] imx219 7-0010: tegracam sensor driver:imx219_v2.0.6
[ 1.281750] imx219 8-0010: tegracam sensor driver:imx219_v2.0.6
[ 1.305103] imx219 8-0010: imx219_board_setup: error during i2c read probe (-121)
[ 1.305137] imx219 8-0010: board setup failed
[ 1.305243] imx219: probe of 8-0010 failed with error -121
[ 1.468690] vi 54080000.vi: subdev imx219 7-0010 bound
I don’t get this, but some people report the message:
tegra-vii2c 546c0000.i2c: no acknowledge from address 0x10
Can I confirm device is working using i2c-detect ? i2c-detect -y 7 and i2c-detect -y 8 do not show any devices. Is that correct ?
Cheese does not find the Pi camera. I believe that this is normal and true for everybody, because the csi camera is not a Video For Linux device or a UVC device. This despite installing v4l-utils package as suggested by some.
guvcview does find the camera but is unable to display video. It reports:
Device: vi-output, imx219 7-0010
Frame rate: 21/1 fps
Resolution: 3264 x 2464
Camera Output: RG10 10 bit Bayer RGRG/GBGB (Unsupported)
The problem appears to be that guvcview does not understand the RG10 format. Is there any way to fix that ? Do I need to install something to be able to view the camera output in cheese or guvcview ?
I have the same problem, it may be version jetpack 4.4 ?
This log shows probing 2 CSI cameras. The first line tells driver is probing first camera and is followed by no error message, so it has been successfully probed.
Next lines show that probing the second camera failed. If you only have one camera, this is expected.
Last line shows the first camera has been correctly bound to vi.
Don’t worry unless you have 2 cameras.
For next points, you have to consider that IMX219 is a 10 bits Bayer sensor. In order to be able to view its images, you have to debayer these into a YUV or RGB format. You would have to use software able to handle bayer RG10 format. This can be done by software but it is CPU hungry.
Jetsons have some dedicated HW that can do debayering. So they access the V4L node with a bypass to ISP for debayering (and auto adjust many things : gain exposure, whiteBalance…) and provide YUV format such as NV12 into NVMM memory (contiguous DMAable memory). This is managed with Argus library, and with nvarguscamerasrc plugin in gstreamer framework.
@Honey_Patouceul thanks for clearing up the i2c issue. I do have a single camera connected, so looks like the hardware is working.
You lost me a little over the debayering. I get that the Nano has hardware to process the bayer format. Is there nothing like a driver, that can use the Nano hardware, to produce an output that is visible to cheese and guvcview and all the other programs that use conventional video sources. Maybe that is the wrong question and there is a way to feed conventional video processing programs from gstreamer.
please refer to Camera Architecture Stack from the developer guide.
bayer sensors were outputting RAW formats, it needs a de-bayer process to convert as YUV frames.
there’s Image Signal Processor (ISP) to handle de-bayer process, please also note that, ISP only support with bayer sensors.
you may access camera stream with nvarguscamerasrc gstreamer plugins.
please also refer to Approaches for Validating and Testing the V4L2 Driver for some sample commands.