IMX477 Camera NvBufSurfaceFromFd Failed on Custom Carrier Board - JetPack 6 R36.5.0

Hardware Setup:

  • Custom carrier board (ES-0083 V1.0)
  • Module: Jetson Orin Nano
  • JetPack: R36.5.0 (kernel 5.15.185-tegra)
  • Camera: Raspberry Pi HQ Camera (Sony IMX477) on CAM2 connector J13
  • DTBO: tegra234-p3767-camera-p3768-imx477-C.dtbo (modified)

=== CURRENT STATUS ===

  • /dev/video0 exists ✅
  • imx477 subdev bound successfully ✅
  • Sensor modes detected ✅
  • Capture FAILS ❌

=== DMESG OUTPUT ===
[1.955645] i2c-mux-gpio bus@0:cam_i2cmux: 2 port mux on 3180000.i2c adapter
[11.846372] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[12.147076] imx477 9-001a: imx477_board_setup: error during i2c read probe (-121)
[12.147115] imx477 9-001a: board setup failed
[12.147192] imx477: probe of 9-001a failed with error -121

NOTE: When using -C overlay with lane_polarity=6:
[11.846372] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[12.180863] tegra-camrtc-capture-vi: subdev imx477 9-001a bound
(no errors - but capture still fails)

=== GSTREAMER PIPELINE USED ===
gst-launch-1.0 nvarguscamerasrc num-buffers=1 sensor-id=0 !
nvvidconv !
‘video/x-raw, format=I420’ !
jpegenc !
filesink location=/home/parkzap/test.jpg

=== CAPTURE ERROR ===
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
Error generated: gstnvarguscamerasrc.cpp threadExecute:760
NvBufSurfaceFromFd Failed
GST_ARGUS: Done Success (but file is 0 bytes)

=== ARGUS DAEMON LOG ===
Module_id 30 Severity 2: PIX_SHORT
corr_err: notifyBits: 0x120000
FuSaCaptureViErrorDecode VI Error in frame: 7
FALCON_ERROR 0x00000e
SCF: Error ResourceError: Error 15 Received for sensor 0
(in FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 664)
Module_id 30 Severity 2: EMB_SHORT
corr_err: notifyBits: 0x120000
FuSaCaptureViErrorDecode VI Error in frame: 8
FALCON_ERROR 0x00000e
SCF: Error ResourceError: Error 15 Received for sensor 0

=== MEDIA PIPELINE (media-ctl -p) ===

  • entity 1: 13e00000.host1x:nvcsi@15a00000- (2 pads, 2 links)
    pad0: Sink ← “imx477 9-001a”:0 [ENABLED]
    pad1: Source → “vi-output, imx477 9-001a”:0 [ENABLED]
  • entity 4: imx477 9-001a (1 pad, 1 link)
    pad0: Source [fmt:SRGGB10_1X10/1920x1080@1/60]
    → “13e00000.host1x:nvcsi@15a00000-”:0 [ENABLED]
  • entity 6: vi-output, imx477 9-001a (1 pad, 1 link)
    device node: /dev/video0

=== GPIO STATE ===
gpio-331 (PCC.03 |mux) out lo
gpio-397 (PH.06 |cam_reset_gpio) out lo

=== I2C STATUS ===
Camera detected on bus 9 (i2c@0 mux channel 0)
as 9-001a
Bus 10 (i2c@1 mux channel 1) shows nothing
i2ctransfer read of model ID register returns
correct values when camera first detected

=== CURRENT DTBO SETTINGS ===
tegra_sinterface = “serial_c”
port-index = 2
bus-width = 2
lane_polarity = “6” (changed from 0, fixes PIX_SHORT)
mclk_khz = “24000”
reset-gpios = <0xf3 0xa0 0x00>
mux-gpios = <0x105 0x13 0x00>
i2c-parent = <0x222>

=== CUSTOM BOARD CSI MAPPING (from schematic) ===
CAM2 connector J13 (AFC07-S22FCC-00):

  • CSI2 lanes: CLK, D0, D1
  • CSI3 lanes: CLK, D0, D1
  • I2C: CAM1_I2C_SCL/SDA via mux U19 (TS3USB30ERSWR)
  • PWDN: CAM1_PWDN via buffer U18 (SN74LV1T125DBVR)
  • MCLK: CAM1_MCLK from SODIMM pin 122
  • I2C mux control: GPIO PCC.03 (gpio-331, gpio_aon offset 0x13)
  • Reset: SODIMM GPIO → PH.06 (gpio-397, offset 0x3e)

=== ISSUES FIXED SO FAR ===

  1. Original DTBO broken phandles (0xffffffff):
    mux-gpios fixed to <0x105 0x13 0x00>
    i2c-parent fixed to <0x222>
    reset-gpios fixed to <0xf3 0x3e 0x00>
  2. lane_polarity changed 0->6 (reduces PIX_SHORT errors)
  3. duplicate channel-0 error fixed by removing
    host1x@13e00000 block from overlay

=== INSTALLED PACKAGES ===
nvidia-l4t-multimedia installed
nv_imx477.ko version: imx477_v2.0.6
compatible: “ridgerun,imx477”

=== QUESTIONS ===

  1. NvBufSurfaceFromFd Failed - is this caused by wrong
    CSI interface config or missing packages on JetPack 6?
  2. Correct lane_polarity for IMX477 on custom board?
  3. Camera on bus 9 instead of bus 10 - wrong mux channel?
  4. PIX_SHORT/EMB_SHORT with FALCON_ERROR 0x00000e -
    what does this indicate for custom board bring-up?
  5. Correct procedure to create custom DTBO for IMX477
    on custom carrier board with JetPack 6 R36.5.0?
  6. Is reset GPIO PH.06 correct for this board or
    should it be a different pin?

Thank you for any guidance.

Looks like duplicate with below topic.