Hello NVIDIA Developers,
I am developing JETSON AGX camera system on carrier board with JetPack 4.6.2, L4T 32.7.2.
I would like to get RAW14 image from cmos sensor whose driver is based on imx185.c.
In our system, sensor is configured via I2C userland app, not by device driver, so almost of functions implemented in original imx185 driver is modified as dummy function.
According to this post, I added v4l2 RAW14 format into related code. (v4l2-ioctl.c, videocodecv2.h, camera_common.c, sensor_common.c, vi2_formats.h, vi5_format.h)
https://forums.developer.nvidia.com/t/raw14-raw16-in-isp-pipeline/108116/3
After modified device tree and device driver, I could confirm that video I/F (/dev/video0) is appeared and 4-lane MIPI data signal seems to be properly output from sensor on CSI-A & CSI-B (tegra_sinterface = “serial_a”, bus-width = <4>, port-index = <0>) checked by using oscilloscope.
But I cannot still get any image data from video I/F by using v4l2-tool.
Bellows are result of my v4l2 error logs.
- check port binding
$ media-ctl -p -d /dev/media0
Media controller API version 0.1.0
Media device information
------------------------
driver tegra194-vi5
model NVIDIA Tegra Video Input Device
serial
bus info
hw revision 0x3
driver version 0.0.0
Device topology
- entity 1: 15a00000.nvcsi--2 (2 pads, 2 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
<- "imxXXX 2-001b":0 [ENABLED]
pad1: Source
-> "vi-output, imxXXX 2-001b":0 [ENABLED]
- entity 4: 15a00000.nvcsi--1 (2 pads, 2 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev1
pad0: Sink
<- "imxXXX 1-001b":0 [ENABLED]
pad1: Source
-> "vi-output, imxXXX 1-001b":0 [ENABLED]
- entity 7: imxXXX 1-001b (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev2
pad0: Source
[fmt:SRGGB14_1X14/1920x1536 field:none colorspace:srgb]
-> "15a00000.nvcsi--1":0 [ENABLED]
- entity 9: vi-output, imxXXX 1-001b (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video0
pad0: Sink
<- "15a00000.nvcsi--1":1 [ENABLED]
- entity 23: imxXXX 2-001b (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev3
pad0: Source
[fmt:SRGGB14_1X14/1920x1536 field:none colorspace:srgb]
-> "15a00000.nvcsi--2":0 [ENABLED]
- entity 25: vi-output, imxXXX 2-001b (1 pad, 1 link)
type Node subtype V4L flags 0
device node name /dev/video1
pad0: Sink
<- "15a00000.nvcsi--2":1 [ENABLED]
- v4l2 info
$ v4l2-ctl -d0 --l
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'RG14'
Name : 14-bit Bayer RGRG/GBGB
Size: Discrete 1920x1536
Interval: Discrete 0.022s (45.000 fps)
$ v4l2-ctl -d /dev/video0 --all
Driver Info (not using libv4l2):
Driver name : tegra-video
Card type : vi-output, imxXXX 1-001b
Bus info : platform:15c10000.vi:2
Driver version: 4.9.253
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 2
Video input : 0 (Camera 2: no power)
Format Video Capture:
Width/Height : 1920/1536
Pixel Format : 'RG14'
Field : None
Bytes per Line : 3840
Size Image : 5898240
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags :
Camera Controls
group_hold 0x009a2003 (bool) : default=0 value=0 flags=execute-on-write
hdr_enable 0x009a2004 (intmenu): min=0 max=1 default=0 value=0
fuse_id 0x009a2007 (str) : min=0 max=12 step=2 value='' flags=read-only, has-payload
sensor_mode 0x009a2008 (int64) : min=0 max=0 step=0 default=0 value=0 flags=slider
gain 0x009a2009 (int64) : min=0 max=0 step=0 default=0 value=0 flags=slider
exposure 0x009a200a (int64) : min=0 max=0 step=0 default=0 value=30 flags=update, slider
frame_rate 0x009a200b (int64) : min=0 max=0 step=0 default=0 value=1500000 flags=update, slider
sensor_configuration 0x009a2032 (u32) : min=0 max=0 step=0 default=0 flags=read-only, volatile, has-payload
sensor_mode_i2c_packet 0x009a2033 (u32) : min=0 max=0 step=0 default=0 flags=read-only, volatile, has-payload
sensor_control_i2c_packet 0x009a2034 (u32) : min=0 max=0 step=0 default=0 flags=read-only, volatile, has-payload
bypass_mode 0x009a2064 (intmenu): min=0 max=1 default=0 value=0
override_enable 0x009a2065 (intmenu): min=0 max=1 default=0 value=0
height_align 0x009a2066 (int) : min=1 max=16 step=1 default=1 value=1
size_align 0x009a2067 (intmenu): min=0 max=2 default=0 value=0
write_isp_format 0x009a2068 (int) : min=1 max=1 step=1 default=1 value=1
sensor_signal_properties 0x009a2069 (u32) : min=0 max=0 step=0 default=0 flags=read-only, has-payload
sensor_image_properties 0x009a206a (u32) : min=0 max=0 step=0 default=0 flags=read-only, has-payload
sensor_control_properties 0x009a206b (u32) : min=0 max=0 step=0 default=0 flags=read-only, has-payload
sensor_dv_timings 0x009a206c (u32) : min=0 max=0 step=0 default=0 flags=read-only, has-payload
low_latency_mode 0x009a206d (bool) : default=0 value=0
preferred_stride 0x009a206e (int) : min=0 max=65535 step=1 default=0 value=0
sensor_modes 0x009a2082 (int) : min=0 max=30 step=1 default=30 value=1 flags=read-only
- video stream test
$ v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1536,pixelformat=RG14 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=test14.raw --verbose
VIDIOC_QUERYCAP: ok
VIDIOC_S_EXT_CTRLS: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture:
Width/Height : 1920/1536
Pixel Format : 'RG14'
Field : None
Bytes per Line : 3840
Size Image : 5898240
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
Index : 0
Type : Video Capture
Flags : mapped, error
Field : None
Sequence : 0
Length : 5898240
Bytesused: 5898240
Timestamp: 0.000000s (Monotonic, End-of-Frame)
Index : 0
Type : Video Capture
Flags : mapped, error
Field : None
Sequence : 0
Length : 5898240
Bytesused: 5898240
Timestamp: 0.000000s (Monotonic, End-of-Frame)
Index : 1
Type : Video Capture
Flags : mapped, error
Field : None
Sequence : 1
Length : 5898240
Bytesused: 5898240
Timestamp: 0.000000s (Monotonic, End-of-Frame)
Index : 2
Type : Video Capture
Flags : mapped, error
Field : None
Sequence : 2
Length : 5898240
Bytesused: 5898240
Timestamp: 0.000000s (Monotonic, End-of-Frame)
Index : 3
Type : Video Capture
Flags : mapped, error
Field : None
Sequence : 3
Length : 5898240
Bytesused: 5898240
Timestamp: 0.000000s (Monotonic, End-of-Frame)
- appeared kernel message when try to get video stream
[ 404.461995] tegra194-vi5 15c10000.vi: no reply from camera processor
[ 404.462165] tegra194-vi5 15c10000.vi: uncorr_err: request timed out after 2500 ms
[ 404.462308] tegra194-vi5 15c10000.vi: err_rec: attempting to reset the capture channel
[ 404.466001] tegra-capture-ivc ivc-bc00000.rtcpu:ivccontrol@3: No callback found for msg id: 0x39
[ 404.466174] tegra-capture-ivc ivc-bc00000.rtcpu:ivccontrol@3: No callback found for msg id: 0x41
[ 404.466317] tegra-capture-ivc ivc-bc00000.rtcpu:ivccontrol@3: No callback found for msg id: 0x37
[ 404.466919] tegra194-vi5 15c10000.vi: err_rec: successfully reset the capture channel
[ 407.022034] tegra194-vi5 15c10000.vi: no reply from camera processor
- Camera debug messages
https://elinux.org/Jetson/l4t/Camera_BringUp
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
echo 1 > /sys/kernel/debug/tracing/tracing_on
echo 30720 > /sys/kernel/debug/tracing/buffer_size_kb
echo 1 > /sys/kernel/debug/tracing/events/tegra_rtcpu/enable
echo 1 > /sys/kernel/debug/tracing/events/freertos/enable
echo 2 > /sys/kernel/debug/camrtc/log-level
echo 1 > /sys/kernel/debug/tracing/events/camera_common/enable
echo > /sys/kernel/debug/tracing/trace
cat /sys/kernel/debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 371/371 #P:4
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
kworker/0:1-798 [000] .... 288.405947: rtos_queue_peek_from_isr_failed: tstamp:9358277491 queue:0x0bcbb8b8
kworker/0:1-798 [000] .... 288.517935: rtos_queue_peek_from_isr_failed: tstamp:9361336798 queue:0x0bcbb8b8
v4l2-ctl-21005 [002] .... 355.015825: tegra_channel_open: vi-output, imxXXX 1-001b
v4l2-ctl-21005 [000] .... 355.019919: tegra_channel_set_power: imxXXX 1-001b : 0x1
v4l2-ctl-21005 [000] .... 355.019932: camera_common_s_power: status : 0x1
v4l2-ctl-21005 [000] .... 355.020027: tegra_channel_set_power: 15a00000.nvcsi--1 : 0x1
v4l2-ctl-21005 [000] .... 355.020031: csi_s_power: enable : 0x1
v4l2-ctl-21005 [000] .... 355.024612: tegra_channel_close: vi-output, imxXXX 1-001b
v4l2-ctl-21005 [000] .... 355.024624: tegra_channel_set_power: imxXXX 1-001b : 0x0
v4l2-ctl-21005 [000] .... 355.024631: camera_common_s_power: status : 0x0
v4l2-ctl-21005 [000] .... 355.024881: tegra_channel_set_power: 15a00000.nvcsi--1 : 0x0
v4l2-ctl-21005 [000] .... 355.024886: csi_s_power: enable : 0x0
v4l2-ctl-21006 [002] .... 401.890699: tegra_channel_open: vi-output, imxXXX 1-001b
v4l2-ctl-21006 [000] .... 401.893702: tegra_channel_set_power: imxXXX 1-001b : 0x1
v4l2-ctl-21006 [000] .... 401.893721: camera_common_s_power: status : 0x1
v4l2-ctl-21006 [000] .... 401.893817: tegra_channel_set_power: 15a00000.nvcsi--1 : 0x1
v4l2-ctl-21006 [000] .... 401.893852: csi_s_power: enable : 0x1
v4l2-ctl-21006 [001] .... 401.908696: tegra_channel_capture_setup: vnc_id 0 W 1920 H 1536 fmt c4
v4l2-ctl-21006 [002] .... 401.933055: tegra_channel_set_stream: enable : 0x1
v4l2-ctl-21006 [003] .... 401.943497: tegra_channel_set_stream: 15a00000.nvcsi--1 : 0x1
v4l2-ctl-21006 [003] .... 401.943503: csi_s_stream: enable : 0x1
v4l2-ctl-21006 [003] .... 401.943512: tegra_channel_set_stream: imxXXX 1-001b : 0x1
kworker/0:0-21004 [000] .... 401.977959: rtos_queue_peek_from_isr_failed: tstamp:12906146554 queue:0x0bcbb8b8
kworker/0:0-21004 [000] .... 401.977964: rtcpu_start: tstamp:12906148759
kworker/0:0-21004 [000] .... 401.977967: rtos_queue_send_from_isr_failed: tstamp:12906269755 queue:0x0bcb2b38
kworker/0:0-21004 [000] .... 401.977969: rtos_queue_send_from_isr_failed: tstamp:12906269958 queue:0x0bcb73a0
kworker/0:0-21004 [000] .... 401.977970: rtos_queue_send_from_isr_failed: tstamp:12906270159 queue:0x0bcb8f20
kworker/0:0-21004 [000] .... 401.977970: rtos_queue_send_from_isr_failed: tstamp:12906270356 queue:0x0bcb9ce0
kworker/0:0-21004 [000] .... 401.977971: rtos_queue_send_from_isr_failed: tstamp:12906270556 queue:0x0bcbaaa0
kworker/0:0-21004 [000] .... 401.977973: rtcpu_string: tstamp:12906271129 id:0x04010000 str:"Configuring VI GoS.
"
kworker/0:0-21004 [000] .... 401.978023: rtcpu_string: tstamp:12906271410 id:0x04010000 str:"VM GOS[#0] addr=0xc2100000
"
kworker/0:0-21004 [000] .... 401.978033: rtcpu_string: tstamp:12906271715 id:0x04010000 str:"VM GOS[#1] addr=0xc2101000
"
kworker/0:0-21004 [000] .... 401.978040: rtcpu_string: tstamp:12906272008 id:0x04010000 str:"VM GOS[#2] addr=0xc2102000
"
kworker/0:0-21004 [000] .... 401.978046: rtcpu_string: tstamp:12906272288 id:0x04010000 str:"VM GOS[#3] addr=0xc2103000
"
kworker/0:0-21004 [000] .... 401.978053: rtcpu_string: tstamp:12906272598 id:0x04010000 str:"VM GOS[#4] addr=0xc2104000
"
kworker/0:0-21004 [000] .... 401.978059: rtcpu_string: tstamp:12906272878 id:0x04010000 str:"VM GOS[#5] addr=0xc2105000
"
kworker/0:0-21004 [000] .... 401.978066: rtcpu_string: tstamp:12906280836 id:0x04010000 str:"vi5_hwinit: firmware CL2018101701 protocol vers"
kworker/0:0-21004 [000] .... 401.978067: rtcpu_string: tstamp:12906281003 id:0x04010000 str:"on 2.2
"
kworker/0:0-21004 [000] .... 401.978074: rtos_queue_send_from_isr_failed: tstamp:12906304718 queue:0x0bcb2b38
kworker/0:0-21004 [000] .... 401.978075: rtos_queue_send_from_isr_failed: tstamp:12906304950 queue:0x0bcb73a0
kworker/0:0-21004 [000] .... 401.978076: rtos_queue_send_from_isr_failed: tstamp:12906305162 queue:0x0bcb8f20
kworker/0:0-21004 [000] .... 401.978077: rtos_queue_send_from_isr_failed: tstamp:12906305360 queue:0x0bcb9ce0
kworker/0:0-21004 [000] .... 401.978077: rtos_queue_send_from_isr_failed: tstamp:12906305557 queue:0x0bcbaaa0
kworker/0:0-21004 [000] .... 401.978078: rtcpu_string: tstamp:12906306737 id:0x04010000 str:"VI GOS[#0] set to VM GOS[4] base 0xc2104000
"
kworker/0:0-21004 [000] .... 401.978085: rtcpu_vinotify_event: tstamp:12906593559 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:13569892864 data:0x10000000
kworker/0:0-21004 [000] .... 401.978086: rtcpu_vinotify_event: tstamp:12906593716 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:13569896608 data:0x31000001
kworker/0:0-21004 [000] .... 401.978087: rtcpu_vinotify_event: tstamp:12906593891 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:13569897600 data:0x07020001
kworker/0:0-21004 [000] .... 401.978088: rtcpu_vinotify_event: tstamp:12906594038 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:13569950912 data:0x10000000
kworker/0:0-21004 [000] .... 401.978089: rtcpu_vinotify_event: tstamp:12906594210 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:13569954720 data:0x31000002
kworker/0:0-21004 [000] .... 401.978089: rtos_queue_send_from_isr_failed: tstamp:12906634941 queue:0x0bcb2b38
kworker/0:0-21004 [000] .... 401.978090: rtos_queue_send_from_isr_failed: tstamp:12906635102 queue:0x0bcb73a0
kworker/0:0-21004 [000] .... 401.978091: rtos_queue_send_from_isr_failed: tstamp:12906635264 queue:0x0bcb8f20
kworker/0:0-21004 [000] .... 401.978092: rtos_queue_send_from_isr_failed: tstamp:12906635422 queue:0x0bcb9ce0
kworker/0:0-21004 [000] .... 401.978108: rtos_queue_send_from_isr_failed: tstamp:12906635579 queue:0x0bcbaaa0
kworker/0:0-21004 [000] .... 401.978110: rtcpu_nvcsi_intr: tstamp:12906638171 class:GLOBAL type:PHY_INTR0 phy:1 cil:0 st:0 vc:0 status:0x00000089
kworker/0:0-21004 [000] .... 401.978111: rtcpu_nvcsi_intr: tstamp:12906638171 class:GLOBAL type:PHY_INTR0 phy:1 cil:1 st:0 vc:0 status:0x00000088
kworker/0:0-21004 [000] .... 402.089940: rtos_queue_peek_from_isr_failed: tstamp:12911146934 queue:0x0bcbb8b8
kworker/0:0-21004 [000] .... 402.257935: rtos_queue_peek_from_isr_failed: tstamp:12916146936 queue:0x0bcbb8b8
kworker/0:0-21004 [000] .... 402.425934: rtos_queue_peek_from_isr_failed: tstamp:12921146934 queue:0x0bcbb8b8
My question is
- I guess “no reply from camera processor” and other massages told that JETSON AGX detected no valid MIPI data on CSI bus in , is that correct?
- Is this error possible to be caused by parameter mismatch between DT parameters and actual MIPI data signal? For example, pix_clk_hz, line_length, cil_settletime, and so on.