I am bringing up a custom OV5647 tegracam driver on Jetson Orin NX (P3767) with P3768 carrier.
- Jetson Orin NX (P3767) + P3768
- JetPack / L4T: R36.5.0
- Kernel: 5.15.185-tegra
- Camera: OV5647 Raspberry Pi v1.3-style module via CSI adapter cable
Current status:
- Custom OV5647 driver probes successfully
- Sensor chip ID is read correctly:
- 0x300a = 0x56
- 0x300b = 0x47
- chip ID = 0x5647
- Sensor binds successfully to tegra-capture-vi
- /dev/video0 is created
- media graph looks correct
- VIDIOC_STREAMON succeeds
But capture always fails with:
tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
So the control path seems OK, but no valid frame reaches VI.
Probe log:
[ 60.942192] ov5647_mini 9-0036: ov5647_probe: starting probe
[ 60.942200] ov5647_mini 9-0036: ov5647_probe: could not force MCLK extperiph1
[ 60.942377] ov5647_mini 9-0036: tegracam sensor driver:ov5647_mini_v2.0.6
[ 60.942381] ov5647_mini 9-0036: ov5647_board_setup: calling ov5647_power_on
[ 60.953180] ov5647_mini 9-0036: ov5647_board_setup: ov5647_power_on done
[ 60.953385] ov5647_mini 9-0036: ov5647_board_setup: chip ID MSB read = 0x56
[ 60.953583] ov5647_mini 9-0036: ov5647_board_setup: chip ID LSB read = 0x47
[ 60.953586] ov5647_mini 9-0036: ov5647_board_setup: detected OV5647 chip ID 0x5647
[ 60.959290] tegra-camrtc-capture-vi tegra-capture-vi: subdev ov5647_mini 9-0036 bound
Streaming log:
[ 61.026311] ov5647_mini 9-0036: ov5647_set_mode: writing common mode table
[ 61.043772] ov5647_mini 9-0036: ov5647_set_mode: writing 640x480@30 mode table
[ 61.049459] ov5647_mini 9-0036: ov5647_set_mode: mode tables applied
[ 61.049471] ov5647_mini 9-0036: ov5647_start_streaming: writing start stream table
[ 61.053809] ov5647_mini 9-0036: ov5647_start_streaming: start stream table applied
[ 61.053819] ov5647_mini 9-0036: ov5647_dump_regs: 0x0100 = 0x01
[ 61.053824] ov5647_mini 9-0036: ov5647_dump_regs: 0x3000 = 0x0f
[ 61.053828] ov5647_mini 9-0036: ov5647_dump_regs: 0x3001 = 0xff
[ 61.053833] ov5647_mini 9-0036: ov5647_dump_regs: 0x3002 = 0xe4
[ 61.053846] ov5647_mini 9-0036: ov5647_dump_regs: 0x4800 = 0x04
[ 61.053851] ov5647_mini 9-0036: ov5647_dump_regs: 0x4837 = 0x16
[ 61.053855] ov5647_mini 9-0036: ov5647_dump_regs: 0x380c = 0x07
[ 61.053860] ov5647_mini 9-0036: ov5647_dump_regs: 0x380d = 0x3c
[ 61.053864] ov5647_mini 9-0036: ov5647_dump_regs: 0x380e = 0x01
[ 61.053868] ov5647_mini 9-0036: ov5647_dump_regs: 0x380f = 0xf8
[ 63.708522] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 66.268519] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 68.828707] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
media-ctl -p:
Media controller API version 5.15.185
Media device information
driver tegra-camrtc-ca
model NVIDIA Tegra Video Input Device
driver version 5.15.185
Device topology
-
entity 1: 13e00000.host1x:nvcsi@15a00000- (2 pads, 2 links)
pad0: Sink ← “ov5647_mini 9-0036”:0 [ENABLED]
pad1: Source → “vi-output, ov5647_mini 9-0036”:0 [ENABLED] -
entity 4: ov5647_mini 9-0036 (1 pad, 1 link)
device node /dev/v4l-subdev1
pad0: Source
[fmt:SBGGR10_1X10/640x480@1/60 field:none colorspace:srgb]
→ “13e00000.host1x:nvcsi@15a00000-”:0 [ENABLED] -
entity 6: vi-output, ov5647_mini 9-0036 (1 pad, 1 link)
device node /dev/video0
pad0: Sink
← “13e00000.host1x:nvcsi@15a00000-”:1 [ENABLED]
v4l2-ctl --list-formats-ext -d /dev/video0:
[0]: ‘BG10’ (10-bit Bayer BGBG/GRGR)
Size: Discrete 640x480
Interval: Discrete 0.017s (60.000 fps)
What I already tried:
- Ported DTS from Jetson IMX219-C reference
- Updated sensor node for OV5647
- Changed discontinuous_clk and tested
- Changed reset-gpios polarity and tested
- Adjusted OV5647 mode table
- Enabled OV5647 internal color bar test pattern (0x503d = 0x80)
- Disabled gain/exposure/frame-rate writes during bring-up
- Confirmed stream-related registers keep expected values after STREAMON
At this point the sensor clearly probes and enters streaming state at register level, but VI still times out and no frame is captured.
Questions:
- Which DTS / CSI link settings should I inspect next on tegra234/P3767-P3768 for OV5647 in this exact situation?
- Is there any known OV5647 reference DTS / tegracam driver for Jetson Orin NX / P3767-P3768?
- Should I add a dedicated pwdn-gpios path for OV5647 instead of reusing reset-gpios semantics from the IMX219-based reference?https://drive.google.com/drive/folders/1pIGo3pTRfN6bDVHZEd9_Pos7CvYHT2op?usp=sharing