Ap1302 ( ar0144) streaming in default prebuilt binaries

Hi , has anyone tried streaming the ar0144 camera ( X-RPI-CAM-MIPI-A2), with the default prebuilt provided.

sudo ./uuu -v -b emmc_all ./imx-boot-imx95-a1-19x19-verdin-sd.bin-flash_all
./imx-image-full-imx95-19x19-verdin.wic

I flashed the iMX95 Verdin Evaluation kit with this and changed the dtb file to ap1302,

setenv fdtfile imx95-19x19-verdin-lt8912-ap1302.dtb

I downloaded the ap1302 fw.bin from a git and placed it in /lib/firmware. The camera is get probed and getting utilised in i2c 2 as 3C , it shows UU

root@imx95-19x19-verdin:~# dmesg | grep ap1302
[ 0.495813] /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c: Fixed dependency cycle(s) with /soc/csi@4ad30000
[ 0.586946] /soc/csi@4ad30000: Fixed dependency cycle(s) with /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c
[ 0.672519] /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c: Fixed dependency cycle(s) with /soc/csi@4ad30000
[ 0.720872] /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c: Fixed dependency cycle(s) with /soc/csi@4ad30000
[ 0.825205] /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c: Fixed dependency cycle(s) with /soc/csi@4ad30000
[ 0.843537] /soc/csi@4ad30000: Fixed dependency cycle(s) with /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c
[ 2.357412] /soc/csi@4ad30000: Fixed dependency cycle(s) with /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c
[ 2.367053] /soc/bus@42000000/i2c@42530000/ap1302_mipi@3c: Fixed dependency cycle(s) with /soc/csi@4ad30000
[ 8.665887] ap1302 2-003c: **AP1302 revision 0.2.6 detected

**
After this i checked the media-ctl and linked it
root@imx95-19x19-verdin:~# media-ctl -d 0 -p
Media controller API version 6.12.20

Media device information

driver mxc-isi
model FSL Capture Media Device
serial
bus info platform:4ad50000.isi
hw revision 0x0
driver version 6.12.20

Device topology

  • entity 1: crossbar (13 pads, 10 links, 3 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev0
    routes:
    2/0 → 5/0 [ACTIVE]
    2/0 → 6/0 [ACTIVE]
    2/0 → 7/0 [ACTIVE]
    pad0: SINK,MUST_CONNECT
    pad1: SINK,MUST_CONNECT
    pad2: SINK,MUST_CONNECT
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
    ← “4ac10000.syscon:formatter@20”:1 [ENABLED,IMMUTABLE]
    pad3: SINK,MUST_CONNECT
    pad4: SINK,MUST_CONNECT
    ← “mxc_isi.output”:0 [ENABLED,IMMUTABLE]
    pad5: SOURCE
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
    → “mxc_isi.0”:0 [ENABLED,IMMUTABLE]
    pad6: SOURCE
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
    → “mxc_isi.1”:0 [ENABLED,IMMUTABLE]
    pad7: SOURCE
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
    → “mxc_isi.2”:0 [ENABLED,IMMUTABLE]
    pad8: SOURCE
    → “mxc_isi.3”:0 [ENABLED,IMMUTABLE]
    pad9: SOURCE
    → “mxc_isi.4”:0 [ENABLED,IMMUTABLE]
    pad10: SOURCE
    → “mxc_isi.5”:0 [ENABLED,IMMUTABLE]
    pad11: SOURCE
    → “mxc_isi.6”:0 [ENABLED,IMMUTABLE]
    pad12: SOURCE
    → “mxc_isi.7”:0 [ENABLED,IMMUTABLE]

  • entity 15: mxc_isi.0 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev1
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:5 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.0.capture”:0 [ENABLED,IMMUTABLE]

  • entity 18: mxc_isi.0.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video0
    pad0: SINK
    ← “mxc_isi.0”:1 [ENABLED,IMMUTABLE]

  • entity 26: mxc_isi.1 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev2
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:6 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.1.capture”:0 [ENABLED,IMMUTABLE]

  • entity 29: mxc_isi.1.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video1
    pad0: SINK
    ← “mxc_isi.1”:1 [ENABLED,IMMUTABLE]

  • entity 37: mxc_isi.2 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev3
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:7 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.2.capture”:0 [ENABLED,IMMUTABLE]

  • entity 40: mxc_isi.2.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video2
    pad0: SINK
    ← “mxc_isi.2”:1 [ENABLED,IMMUTABLE]

  • entity 48: mxc_isi.3 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev4
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:8 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.3.capture”:0 [ENABLED,IMMUTABLE]

  • entity 51: mxc_isi.3.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video3
    pad0: SINK
    ← “mxc_isi.3”:1 [ENABLED,IMMUTABLE]

  • entity 59: mxc_isi.4 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev5
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:9 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.4.capture”:0 [ENABLED,IMMUTABLE]

  • entity 62: mxc_isi.4.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video4
    pad0: SINK
    ← “mxc_isi.4”:1 [ENABLED,IMMUTABLE]

  • entity 70: mxc_isi.5 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev6
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:10 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.5.capture”:0 [ENABLED,IMMUTABLE]

  • entity 73: mxc_isi.5.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video5
    pad0: SINK
    ← “mxc_isi.5”:1 [ENABLED,IMMUTABLE]

  • entity 81: mxc_isi.6 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev7
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:11 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.6.capture”:0 [ENABLED,IMMUTABLE]

  • entity 84: mxc_isi.6.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video6
    pad0: SINK
    ← “mxc_isi.6”:1 [ENABLED,IMMUTABLE]

  • entity 92: mxc_isi.7 (2 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev8
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    compose.bounds:(0,0)/1920x1080
    compose:(0,0)/1920x1080]
    ← “crossbar”:12 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:YUV8_1X24/1920x1080 field:none colorspace:jpeg xfer:srgb ycbcr:601 quantization:full-range
    crop.bounds:(0,0)/1920x1080
    crop:(0,0)/1920x1080]
    → “mxc_isi.7.capture”:0 [ENABLED,IMMUTABLE]

  • entity 95: mxc_isi.7.capture (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video7
    pad0: SINK
    ← “mxc_isi.7”:1 [ENABLED,IMMUTABLE]

  • entity 103: mxc_isi.output (1 pad, 1 link)
    type Node subtype V4L flags 0
    pad0: SOURCE
    → “crossbar”:4 [ENABLED,IMMUTABLE]

  • entity 110: 4ac10000.syscon:formatter@20 (2 pads, 2 links, 1 route)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev9
    routes:
    0/0 → 1/0 [ACTIVE]
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
    ← “csidev-4ad30000.csi”:1 [ENABLED,IMMUTABLE]
    pad1: SOURCE
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
    → “crossbar”:2 [ENABLED,IMMUTABLE]

  • entity 115: csidev-4ad30000.csi (2 pads, 2 links, 1 route)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev10
    routes:
    0/0 → 1/0 [ACTIVE]
    pad0: SINK
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
    ← “ap1302 2-003c”:2 [ENABLED]
    pad1: SOURCE
    [stream:0 fmt:UYVY8_1X16/1920x1080 field:none colorspace:smpte170m xfer:709 ycbcr:601 quantization:lim-range]
    → “4ac10000.syscon:formatter@20”:0 [ENABLED,IMMUTABLE]

  • entity 120: ap1302 2-003c (3 pads, 2 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev12
    pad0: SINK
    [stream:0 fmt:SGRBG12_1X12/1280x800 field:none colorspace:srgb
    crop.bounds:(0,0)/1280x800
    crop:(0,0)/1280x800]
    ← “ar0144 0”:0 [ENABLED,IMMUTABLE]
    pad1: SINK
    [stream:0 fmt:SGRBG12_1X12/1280x800 field:none colorspace:srgb
    crop.bounds:(0,0)/1280x800
    crop:(0,0)/1280x800]
    pad2: SOURCE
    [stream:0 fmt:UYVY8_1X16/1280x800 field:none colorspace:srgb
    crop.bounds:(0,0)/1280x800
    crop:(0,0)/1280x800]
    → “csidev-4ad30000.csi”:0 [ENABLED]

  • entity 124: ar0144 0 (1 pad, 1 link, 0 routes)
    type V4L2 subdev subtype Sensor flags 0
    device node name /dev/v4l-subdev11
    pad0: SOURCE
    [stream:0 fmt:SGRBG12_1X12/1280x800 field:none colorspace:srgb]
    → “ap1302 2-003c”:0 [ENABLED,IMMUTABLE]

    After this if i try streaming , i get broken pipe error
    root@imx95-19x19-verdin:~# v4l2-ctl -d /dev/video0 --set-fmt-video=width=1280,height=800,pixelformat=UYVY --stream-mmap --stream-count=100 --verbose
    VIDIOC_QUERYCAP: ok
    VIDIOC_G_FMT: ok
    The pixelformat ‘UYVY’ is invalid
    VIDIOC_REQBUFS returned 0 (Success)
    VIDIOC_CREATE_BUFS returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_G_FMT returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_STREAMON returned -1 (Broken pipe)

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


AR0144 Camera Streaming Issue on Verdin iMX95 EVK

Based on your setup description, you’re encountering a “Broken pipe” error when attempting to stream from the AR0144 camera through the AP1302 ISP on the Verdin iMX95 EVK. This appears to be a pipeline configuration issue.

Analysis of Your Current Setup

Your media pipeline shows the camera is detected and linked correctly:

  • AR0144 sensorAP1302 ISPCSI interfaceISI capture
  • The AP1302 revision 0.2.6 is detected successfully (1)
  • Media controller topology shows proper linking between entities

Troubleshooting Steps

1. Format Compatibility Check

The error message indicates “The pixelformat ‘UYVY’ is invalid” - this suggests a format mismatch in your pipeline. Your AR0144 outputs SGRBG12_1X12/1280x800 but you’re trying to capture UYVY.

2. Pipeline Format Configuration

You need to ensure format compatibility throughout the entire pipeline:

  • AR0144 sensor: SGRBG12_1X12/1280x800
  • AP1302 ISP output: UYVY8_1X16/1280x800
  • ISI capture: Should match the ISP output format

3. Port Requirements

For proper operation, ensure these ports are accessible (1):

  • 22 (Dev Board SSH Connection)
  • 2375 (Docker API)
  • 2222 (Container SSH Connection)

Related Camera Performance Considerations

The community has reported V4L2 performance limitations on similar Verdin modules (2). When implementing your streaming application, consider that memory mapping operations may have performance constraints compared to command-line tools.

Multi-Camera Support Context

The Verdin iMX95 EVK can support multiple cameras through different interfaces (3). Your current single camera setup should work, but the pipeline configuration needs to be properly aligned.

Recommended Next Steps

  1. Verify format support: Check what formats /dev/video0 actually supports
  2. Configure pipeline formats: Ensure consistent format configuration from sensor to capture
  3. Test with GStreamer: Try streaming with GStreamer to isolate V4L2 vs. application issues
  4. Check firmware loading: Verify the AP1302 firmware is loading correctly from /lib/firmware

The “Broken pipe” error typically indicates a pipeline configuration mismatch rather than a hardware issue, given that your camera detection and media controller setup appear correct.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.