Hello,
I am using a Jetson Nano on my custom-designed board and have connected an IMX219 camera module. The camera appears to be detected (ls /dev/video*
and dmesg | grep imx219
show it), but I am unable to get any video output using GStreamer or v4l2-ctl
.
Steps I have tried so far:
- Checked the camera connection and ribbon cable.
- Looked for error messages in
dmesg
output. - Verified that the camera is listed with
v4l2-ctl --list-devices
. - Tested the same camera on a different Jetson Nano, and it worked fine.
However, I still can’t get any video. Could this be a device tree (DTB) configuration issue? Do I need to modify the reset-gpios
settings?
I am using a TCA9548 MUX for CSI, so I modified the device tree (DTS) by replacing PCA9544 references with PCA9548.
However, I am unsure if there are other changes I need to make in the DTS file, such as:
- Where can I check
serial_a
,serial_e
definitions? - What do the values in
reset-gpios = <0x5b 0x97 0x0>;
mean? - Is my
reset-gpios
setting correct, or how should I determine it?
I am not entirely sure about these details. Any suggestions or resources would be greatly appreciated.
I will also attach the relevant device tree files and circuit schematics below.
Thanks!
ls /dev/video*
/dev/video0 /dev/video1
v4l2-ctl --list-devices
vi-output, imx219 7-0010 (platform:54080000.vi:0):
/dev/video0
vi-output, imx219 8-0010 (platform:54080000.vi:4):
/dev/video1
dmesg | grep imx219
[ 4.113802] imx219 7-0010: tegracam sensor driver:imx219_v2.0.6
[ 4.146206] imx219 8-0010: tegracam sensor driver:imx219_v2.0.6
[ 5.082121] vi 54080000.vi: subdev imx219 7-0010 bound
[ 5.092712] vi 54080000.vi: subdev imx219 8-0010 bound
gst-launch-1.0 nvarguscamerasrc sensor_id=1 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=30/1, format=NV12' ! nvvidconv ! omxh264enc iframeinterval=15 control-rate=constant profile=baseline ! video/x-h264, stream-format=byte-stream ! rtph264pay ! udpsink host=192.168.xx.yyy port=3000
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Framerate set to : 30 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
H264: Profile = 66, Level = 40
gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=30/1, format=NV12' ! nvvidconv ! omxh264enc iframeinterval=15 control-rate=constant profile=baseline ! video/x-h264, stream-format=byte-stream ! rtph264pay ! udpsink host=192.168.xx.yyy port=3000
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Framerate set to : 30 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
H264: Profile = 66, Level = 40
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode = 2
Output Stream W = 1920 H = 1080
seconds to Run = 0
Frame Rate = 29.999999
GST_ARGUS: PowerService: requested_clock_Hz=13608000
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
udevadm info --query=all --name=/dev/video0
P: /devices/50000000.host1x/54080000.vi/video4linux/video0
N: video0
L: 0
S: v4l/by-path/platform-54080000.vi-video-index0
E: DEVPATH=/devices/50000000.host1x/54080000.vi/video4linux/video0
E: DEVNAME=/dev/video0
E: MAJOR=81
E: MINOR=0
E: SUBSYSTEM=video4linux
E: USEC_INITIALIZED=6480192
E: ID_V4L_VERSION=2
E: ID_V4L_PRODUCT=vi-output, imx219 8-0010
E: ID_V4L_CAPABILITIES=:capture:
E: ID_PATH=platform-54080000.vi
E: ID_PATH_TAG=platform-54080000_vi
E: ID_FOR_SEAT=video4linux-platform-54080000_vi
E: DEVLINKS=/dev/v4l/by-path/platform-54080000.vi-video-index0
E: TAGS=:seat:uaccess:
udevadm info --query=all --name=/dev/video1
P: /devices/50000000.host1x/54080000.vi/video4linux/video1
N: video1
L: 0
S: v4l/by-path/platform-54080000.vi-video-index3
E: DEVPATH=/devices/50000000.host1x/54080000.vi/video4linux/video1
E: DEVNAME=/dev/video1
E: MAJOR=81
E: MINOR=3
E: SUBSYSTEM=video4linux
E: USEC_INITIALIZED=6257192
E: ID_V4L_VERSION=2
E: ID_V4L_PRODUCT=vi-output, imx219 7-0010
E: ID_V4L_CAPABILITIES=:capture:
E: ID_PATH=platform-54080000.vi
E: ID_PATH_TAG=platform-54080000_vi
E: ID_FOR_SEAT=video4linux-platform-54080000_vi
E: DEVLINKS=/dev/v4l/by-path/platform-54080000.vi-video-index3
E: TAGS=:seat:uaccess:
v4l2-ctl --stream-mmap --stream-count=100 --set-ctrl bypass_mode=0 -d /dev/video0
<<<<<<<<<<<<<<<<<<<<<<< 21.18 fps
<<<<<<<<<<<<<<<<<<<<< 21.18 fps
<<<<<<<<<<<<<<<<<<<<< 21.18 fps
<<<<<<<<<<<<<<<<<<<<< 21.18 fps
<<<<<<<<<<<<<<
v4l2-ctl --stream-mmap --stream-count=100 --set-ctrl bypass_mode=0 -d /dev/video1
nothing
i2cdetect -l
i2c-3 i2c 7000c700.i2c I2C adapter
i2c-13 i2c i2c-6-mux (chan_id 6) I2C adapter
i2c-1 i2c 7000c400.i2c I2C adapter
i2c-11 i2c i2c-6-mux (chan_id 4) I2C adapter
i2c-8 i2c i2c-6-mux (chan_id 1) I2C adapter
i2c-6 i2c Tegra I2C adapter I2C adapter
i2c-4 i2c 7000d000.i2c I2C adapter
i2c-14 i2c i2c-6-mux (chan_id 7) I2C adapter
i2c-2 i2c 7000c500.i2c I2C adapter
i2c-12 i2c i2c-6-mux (chan_id 5) I2C adapter
i2c-0 i2c 7000c000.i2c I2C adapter
i2c-9 i2c i2c-6-mux (chan_id 2) I2C adapter
i2c-10 i2c i2c-6-mux (chan_id 3) I2C adapter
i2c-7 i2c i2c-6-mux (chan_id 0) I2C adapter
i2c-5 i2c 7000d100.i2c I2C adapter
i2cdetect -y -r 7
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
70: UU -- -- -- -- -- -- --
i2cdetect -y -r 8
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
70: UU -- -- -- -- -- -- --
v4l2-compliance -d /dev/video0
v4l2-compliance SHA: not available, 64 bits
Compliance test for device /dev/video0:
Driver Info:
Driver name : tegra-video
Card type : vi-output, imx219 31-0010
Bus info : platform:54080000.vi:0
Driver version : 4.9.140
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Media Driver Info:
Driver name : vi
Model : NVIDIA Tegra Video Input Device
Serial :
Bus info :
Media version : 0.1.0
Hardware revision: 0x00000003 (3)
Driver version : 0.0.0
Interface Info:
ID : 0x03000008
Type : V4L Video
Entity Info:
ID : 0x00000006 (6)
Name : vi-output, imx219 31-0010
Function : V4L2 I/O
Pad 0x01000007 : Sink
Link 0x0200000c: from remote pad 0x1000003 of entity 'nvcsi--2': Data, Enabled
Required ioctls:
test MC information (see 'Media Driver Info' above): OK
test VIDIOC_QUERYCAP: OK
Allow for multiple opens:
test second /dev/video0 open: OK
test VIDIOC_QUERYCAP: OK
test VIDIOC_G/S_PRIORITY: OK
test for unlimited opens: OK
Debug ioctls:
test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
test VIDIOC_LOG_STATUS: OK
Input ioctls:
test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
test VIDIOC_ENUMAUDIO: OK (Not Supported)
test VIDIOC_G/S/ENUMINPUT: OK
test VIDIOC_G/S_AUDIO: OK (Not Supported)
Inputs: 1 Audio Inputs: 0 Tuners: 0
Output ioctls:
test VIDIOC_G/S_MODULATOR: OK (Not Supported)
test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
test VIDIOC_ENUMAUDOUT: OK (Not Supported)
test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
test VIDIOC_G/S_AUDOUT: OK (Not Supported)
Outputs: 0 Audio Outputs: 0 Modulators: 0
Input/Output configuration ioctls:
test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
test VIDIOC_G/S_EDID: OK (Not Supported)
Control ioctls (Input 0):
test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
test VIDIOC_QUERYCTRL: OK
test VIDIOC_G/S_CTRL: OK
test VIDIOC_G/S/TRY_EXT_CTRLS: OK
test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
Standard Controls: 1 Private Controls: 16
Format ioctls (Input 0):
test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
fail: ../../../v4l-utils-1.16.5/utils/v4l2-compliance/v4l2-test-formats.cpp(1190): ret && node->has_frmintervals
test VIDIOC_G/S_PARM: FAIL
test VIDIOC_G_FBUF: OK (Not Supported)
test VIDIOC_G_FMT: OK
test VIDIOC_TRY_FMT: OK
test VIDIOC_S_FMT: OK
test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
test Cropping: OK (Not Supported)
test Composing: OK (Not Supported)
fail: ../../../v4l-utils-1.16.5/utils/v4l2-compliance/v4l2-test-formats.cpp(1681): node->can_scale && node->frmsizes_count[v4l_format_g_pixelformat(&cur)]
test Scaling: OK
Codec ioctls (Input 0):
test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
test VIDIOC_G_ENC_INDEX: OK (Not Supported)
test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
Buffer ioctls (Input 0):
fail: ../../../v4l-utils-1.16.5/utils/v4l2-compliance/v4l2-test-buffers.cpp(522): q.create_bufs(node, 1, &fmt) != EINVAL
test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
test VIDIOC_EXPBUF: OK
Total: 44, Succeeded: 42, Failed: 2, Warnings: 0
dts file: dts_file.txt (310.2 KB)
board circuit:
SCH_PX4-JN_SCHEMATIC_2025-04-09.pdf (337.7 KB)