Re: [REGRESSION?] Intel IPU6/OV2740 camera fails to stream after camera use on ThinkPad X1 Carbon Gen 10

Sakari Ailus <[email protected]>
Newsgroups org.kernel.vger.linux-media
Organization Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo
Message-ID <[email protected]>
Hi Durgesh,

Thank you for the e-mail.

On Sun, Aug 23, 2026 at 06:26:45PM -0400, Durgesh Ajgaonkar wrote:
> Hello,
> 
> I am reporting two problems with the built-in OV2740 camera on a ThinkPad
> X1 Carbon Gen 10 with Intel IPU6:
> 
> 1. When the camera is functioning, 1280x720 video is limited to
> approximately 10-11 FPS.

Do you use libcamera (e.g. qcam) or the downstream psys driver / Intel
Camera HAL in this case?

I just tested Yoga G7 here and it works fine, albeit with a fairly high CPU
load, with qcam.

> 
> 2. After certain camera-use sequences, the camera can subsequently fail to
> produce frames. In the failing state, the IPU6 ISYS/CSI2 driver reports CRC
> errors, packet-header errors, FIFO overflow, frame synchronization errors,
> and eventually a stream stop timeout.
> 
> The camera can work normally from a clean state, but after using the camera
> through another camera application, qcam can subsequently fail to produce
> frames. In the failing state, the kernel reports errors from the IPU6 ISYS
> CSI2 receiver, including CRC errors, packet header errors, FIFO overflow,
> frame synchronization errors, and eventually a stream stop timeout.
> 
> Hardware/software information:
> 
> - Laptop: Lenovo ThinkPad X1 Carbon Gen 10
> - Camera sensor: OV2740
> - Camera interface: Intel IPU6
> - IPU6 PCI device: 0000:00:05.0
> - Sensor ACPI/I2C identifier: INT3474:01
> - Sensor I2C address: 0x36
> - Normal kernel: 7.1.8-1-cachyos
> - libcamera: 0.7.0+ov01a10.2
> - qcam: libcamera qcam
> - Distribution: CachyOS
> 
> The kernel detects the IPU6 and sensor correctly:
> 
>     intel-ipu6 0000:00:05.0: Found supported sensor INT3474:01
>     intel-ipu6 0000:00:05.0: Connected 1 cameras
>     intel-ipu6 0000:00:05.0: IPU6-v3[465d] hardware version 5
> 
> The media topology shows the OV2740 connected to IPU6 CSI2 port 1,
> which is connected to ISYS Capture 8 (/dev/video8):
> 
>     ov2740 17-0036
>         -> Intel IPU6 CSI2 1
>         -> Intel IPU6 ISYS Capture 8 (/dev/video8)
> 
> The sensor/CSI2 topology reports:
> 
>     ov2740 17-0036:
>         SGRBG10_1X10/1932x1092
> 
>     Intel IPU6 CSI2 1:
>         SGRBG10_1X10/1932x1092
> 
>     /dev/video8:
>         1932x1092 BG10
> 
> The relevant v4l2-ctl output for /dev/video8 shows:
> 
>     Driver name      : isys
>     Card type        : ipu6
>     Bus info         : PCI:0000:00:05.0
>     Driver version   : 6.18.42
>     Video Capture
>     Metadata Capture
>     I/O MC
>     Streaming
> 
>     Format Video Capture:
>         Width/Height      : 1932/1092
>         Pixel Format      : 'BG10'
>         Field             : None
>         Bytes per Line    : 3904
>         Size Image        : 4267072
> 
> A direct v4l2-ctl streaming attempt on /dev/video8 also fails in the
> problematic state:
> 
>     v4l2-ctl -d /dev/video8 \
>         --set-fmt-video=width=1932,height=1092,pixelformat=BG10 \
>         --stream-mmap \
>         --stream-count=10
> 
> returns:
> 
>     VIDIOC_STREAMON returned -1 (Broken pipe)
> 
> and produces a zero-byte output file.

This won't work because the MC pipeline hasn't been configured yet.

> 
> This indicates that the problem is not limited to qcam's UI or camera
> application. The failure also occurs when attempting to stream directly
> through the V4L2 ISYS capture device.
> 
> In contrast, qcam can successfully open and stream the camera on the same
> CachyOS kernel from a working state.
> 
> A successful qcam run produced:
> 
>     Found 5 IPU6 camera(s) via libcamhal
>     Found IPU6 camera 0: ov2740-uf (facing=0)
>     Adding camera 'ipu6-ov2740-uf-0'
>     Opening camera device 0
>     Camera device 0 opened successfully
>     Configured HAL stream: 1280x720 NV12
>     Streaming started for camera 0
>     Streaming stopped for camera 0

Qcam works as libcamera does set up the pipeline.

> 
> The complete successful qcam output is attached as:
> 
>     qcam-cachyos-success.txt
> 
> The important difference is the kernel output observed during the failing
> state. The IPU6 ISYS reports:
> 
>     intel_ipu6_isys.isys intel_ipu6.isys.40:
>         csi2-1 error: Payload checksum (CRC) error
> 
>     csi2-1 error: Single packet header error corrected
>     csi2-1 error: Multiple packet header errors detected
>     csi2-1 error: Payload checksum (CRC) error
>     csi2-1 error: Transfer FIFO overflow
>     csi2-1 error: Incomplete long packet detected
>     csi2-1 error: Frame sync error
>     csi2-1 error: Inter-frame long packet discarded
> 
> Later the driver reports:
> 
>     stream stop time out
>     stream close error: 3
> 
> The complete dmesg from the failing state is attached as:
> 
>     dmesg-cachyos-qcam-failure.txt
> 
> I have also observed that qcam can work when it is the first camera
> application started, while subsequent attempts can fail after the camera
> has been used by another camera application. I have not established
> whether this ordering is required to reproduce the problem in every case,
> so I am reporting it as an observed condition rather than a definitive
> cause.
> 
> The failure appears to leave the IPU6 CSI2/ISYS path in a state where the
> sensor is detected and the media topology remains present, but streaming
> cannot successfully start or complete.
> 
> For comparison, the sensor is correctly detected and the media links are
> present in the failing state. The relevant topology is:



> 
>     ov2740 17-0036
>         -> Intel IPU6 CSI2 1 [ENABLED, IMMUTABLE]
>         -> Intel IPU6 ISYS Capture 8 (/dev/video8) [ENABLED]
> 
> I would appreciate advice on which component is responsible for this
> failure and whether this points to an IPU6 ISYS/CSI2 driver issue, an
> OV2740 sensor driver issue, or an interaction with the IPU6 userspace
> HAL/libcamera implementation.
> 
> I can provide the complete media-ctl topology, v4l2-ctl output, additional
> kernel logs, and reproduction details if needed.
> 
> Thank you.
> [0:13:28.593759853] [6662]  INFO Camera camera_manager.cpp:340 libcamera v0.7.0+ov01a10.2
> [08-23 18:13:38.195] CamHAL[INF] aiqb file name OV2740_CJFLE23_ADL.aiqb
> [08-23 18:13:38.196] CamHAL[INF] aiqb file name OV2740_CJFLE23_ADL.aiqb
> [08-23 18:13:38.197] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [08-23 18:13:38.197] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [08-23 18:13:38.197] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [08-23 18:13:38.197] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [08-23 18:13:38.197] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [08-23 18:13:38.197] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [08-23 18:13:38.198] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [08-23 18:13:38.198] CamHAL[INF] aiqb file name AR0234_TGL_10bits.aiqb
> [0:13:28.780464326] [6667]  INFO IPU6 ipu6.cpp:714 Found 5 IPU6 camera(s) via libcamhal
> [0:13:28.780493938] [6667]  INFO IPU6 ipu6.cpp:175 Found IPU6 camera 0: ov2740-uf (facing=0)
> [0:13:28.780512190] [6667]  INFO Camera camera_manager.cpp:223 Adding camera 'ipu6-ov2740-uf-0' for pipeline handler ipu6
> [0:13:28.812790617] [6662]  INFO Camera camera.cpp:1216 configuring streams: (0) 1280x720-NV12/sYCC
> [0:13:28.812904980] [6667]  INFO IPU6 ipu6.cpp:232 Opening camera device 0
> [0:13:28.818307627] [6667]  INFO IPU6 ipu6.cpp:240 Camera device 0 opened successfully
> [0:13:28.870234989] [6667]  INFO IPU6 ipu6.cpp:276 Configured HAL stream: 1280x720 NV12, stream_id=0 size=1382400
> Using software format conversion from NV12
> [0:13:29.367371564] [6667]  INFO IPU6 ipu6.cpp:327 Streaming started for camera 0
> [0:14:12.224443123] [6667]  INFO IPU6 ipu6.cpp:374 Streaming stopped for camera 0
> [08-23 18:14:21.700] CamHAL[WAR] Failed to open file /run/camera/ov2740-uf_VIDEO.aiqd, error No such file or directory

Intel camera HAL issues should be filed to the intel/ipu6-camera-hal Github
project.

> [    0.709157] SCSI subsystem initialized
> [    0.855334] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
> [    4.940121] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002)
> [    4.961892] intel-ipu6 0000:00:05.0: Found supported sensor INT3474:01
> [    4.962116] intel-ipu6 0000:00:05.0: Connected 1 cameras
> [    4.962909] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
> [    4.980282] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
> [    5.049740] intel-ipu6 0000:00:05.0: CSE authenticate_run done
> [    5.049746] intel-ipu6 0000:00:05.0: IPU6-v3[465d] hardware version 5
> [    5.084116] intel_ipu6_psys: loading out-of-tree module taints kernel.
> [    5.084122] intel_ipu6_psys: module verification failed: signature and/or required key missing - tainting kernel
> [    5.099043] intel_ipu6_psys.psys intel_ipu6.psys.40: pkg_dir entry count:8
> [    5.099420] intel_ipu6_psys.psys intel_ipu6.psys.40: psys probe minor: 0
> [    7.894742] ov2740 i2c-INT3474:01: supply AVDD not found, using dummy regulator
> [    7.894849] ov2740 i2c-INT3474:01: supply DOVDD not found, using dummy regulator
> [    7.894865] ov2740 i2c-INT3474:01: supply DVDD not found, using dummy regulator
> [  495.209979] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Payload checksum (CRC) error
> [  495.631202] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Single packet header error corrected
> [  495.631217] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Multiple packet header errors detected
> [  495.631221] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Payload checksum (CRC) error
> [  495.631225] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Transfer FIFO overflow
> [  495.631228] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Incomplete long packet detected
> [  495.631231] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Frame sync error
> [  495.631234] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Inter-frame long packet discarded
> [  495.664758] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Multiple packet header errors detected
> [  495.664777] intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-1 error: Payload checksum (CRC) error
> [  550.389252] intel_ipu6_isys.isys intel_ipu6.isys.40: stream stop time out
> [  550.484045] intel_ipu6_isys.isys intel_ipu6.isys.40: stream close error: 3

-- 
Regards,

Sakari Ailus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.