← Back to team overview

debcrafters-packages team mailing list archive

[Bug 2107304] Re: Intel MIPI Camera not working out of the box on 25.04 where it did on 24.10

 

I am also affected by this bug and have found a temporary working
solution for the integrated camera on my Dell Precision 5490 running
Ubuntu 25.04.

Problem:
The Intel MIPI Camera (OmniVision OV01A10 sensor, IPU6 driver) does not function in standard applications like Zoom, Cheese, or Guvcview when run as a normal user. While sudo cheese -d "Intel MIPI Camera" successfully displays a video feed, direct access by user applications or services fails. Logs show libcamera warnings about "Inappropriate ioctl for device" and "sensor kernel driver needs to be fixed," along with GStreamer "streaming stopped, reason not-negotiated (-4)" errors. This indicates a compatibility and negotiation issue between the libcamera stack and the V4L2 interface used by applications, specifically when the ipu6 driver is involved in a non-privileged context.

Solution:
A GStreamer pipeline can be used to capture the stream from libcamera and output it to a v4l2loopback virtual device, which applications like Zoom can then successfully utilize.

Prerequisites:

    v4l2loopback kernel module installed and loaded.

    GStreamer plugins: gstreamer1.0-libcamera, gstreamer1.0-plugins-good
(for videoconvert), and gstreamer1.0-plugins-bad (for v4l2sink).

Implementation Steps:

    Load v4l2loopback module:
    Ensure the virtual camera device (/dev/video0) is available.

    sudo modprobe v4l2loopback exclusive_caps=1

    Execute the GStreamer pipeline:
    Run this command in a terminal. It must remain active while the camera is in use.

    gst-launch-1.0 libcamerasrc ! videoconvert !
video/x-raw,format=YUY2,width=1024,height=768,framerate=30/1 ! v4l2sink
device=/dev/video0

        libcamerasrc: Captures video from the Intel MIPI Camera via the
libcamera backend.

        videoconvert: Converts the stream from libcamerasrc's native
output format (ABGR8888 at 1024x768) to YUY2. This is crucial as direct
negotiation was failing.

        video/x-raw,format=YUY2,width=1024,height=768,framerate=30/1:
Specifies the target output format, resolution, and framerate for the
v4l2sink.

        v4l2sink device=/dev/video0: Outputs the processed video stream
to the virtual V4L2 device (/dev/video0).

    Select the Virtual Camera in Applications:

        Launch Zoom (or other V4L2-compatible application).

        Navigate to its video settings.

        Select the v4l2loopback device, typically labeled "Virtual
Camera", "Dummy Video Device (0x0000)", or /dev/video0.

        The live camera feed should now be visible.

    Terminate the stream:
    To stop the virtual camera, return to the terminal running gst-launch-1.0 and press Ctrl+C.

This workaround successfully bridges the libcamera stream to a V4L2
device, allowing compatibility with applications that do not natively
support libcamera or encounter issues with the ipu6 driver's direct V4L2
interface.

Please let me know if further details or logs from my system would be
helpful.

** Changed in: ffmpeg (Ubuntu)
       Status: Confirmed => Opinion

-- 
You received this bug notification because you are a member of
Debcrafters packages, which is subscribed to libcamera in Ubuntu.
https://bugs.launchpad.net/bugs/2107304

Title:
  Intel MIPI Camera not working out of the box on 25.04 where it did on
  24.10

Status in ffmpeg package in Ubuntu:
  Opinion
Status in ipu6-drivers package in Ubuntu:
  Confirmed
Status in libcamera package in Ubuntu:
  Confirmed

Bug description:
  From discourse post:
  https://discourse.ubuntu.com/t/intel-mipi-camera-not-working-out-of-the-box-on-25-04-where-it-did-on-24-10/59072/1

  The ipu6 camera on a Dell Precision 5480 worked out-of-the-box on
  Ubuntu 24.10, but no longer does on 25.04-beta.  It was suggested on
  Discourse that this might be a regression in libcamera.  I personally
  don't understand the v4l/libcamera stack well enough to triage /
  route.

  Here's what I'm seeing --

  `ffplay /dev/video0` produces a video test image instead of actual
  video.

  However, gstreamer is able to show a good video stream via --

  $ gst-launch-1.0 libcamerasrc ! video/x-raw,width=1024,height=768 !
  autovideosink

  This is on 25.04 beta with libcamera 0.4 --

  $ lsb_release -rd
  Description:    Ubuntu Plucky Puffin (development branch)
  Release:        25.04

  $ apt-cache policy libcamera-v4l2
  libcamera-v4l2:
    Installed: (none)
    Candidate: 0.4.0-5ubuntu1
    Version table:
       0.4.0-5ubuntu1 500
          500 http://us.archive.ubuntu.com/ubuntu plucky/main amd64 Packages

  The cam util spews several errors + warnings, but does find the camera
  --

  $ cam -l
  [0:35:00.604727833] [36429]  INFO Camera camera_manager.cpp:327 libcamera v0.4.0
  [0:35:00.618451974] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:354 'ov01a10 3-0036': Recommended V4L2 control 0x009a0922 not supported
  [0:35:00.618464560] [36436] ERROR V4L2 v4l2_subdevice.cpp:1127 'ov01a10 3-0036': Unable to get rectangle 2 on pad 0/0: Inappropriate ioctl for device
  [0:35:00.618467885] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:401 'ov01a10 3-0036': The PixelArraySize property has been defaulted to 1280x800
  [0:35:00.618470480] [36436] ERROR V4L2 v4l2_subdevice.cpp:1127 'ov01a10 3-0036': Unable to get rectangle 1 on pad 0/0: Inappropriate ioctl for device
  [0:35:00.618472866] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:412 'ov01a10 3-0036': The PixelArrayActiveAreas property has been defaulted to (0, 0)/1280x800
  [0:35:00.618478424] [36436] ERROR V4L2 v4l2_subdevice.cpp:1127 'ov01a10 3-0036': Unable to get rectangle 0 on pad 0/0: Inappropriate ioctl for device
  [0:35:00.618480400] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:420 'ov01a10 3-0036': Failed to retrieve the sensor crop rectangle
  [0:35:00.618482222] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:426 'ov01a10 3-0036': The sensor kernel driver needs to be fixed
  [0:35:00.618484025] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:428 'ov01a10 3-0036': See Documentation/sensor_driver_requirements.rst in the libcamera sources for more information
  [0:35:00.618621741] [36436]  WARN CameraSensorProperties camera_sensor_properties.cpp:473 No static properties available for 'ov01a10'
  [0:35:00.618625448] [36436]  WARN CameraSensorProperties camera_sensor_properties.cpp:475 Please consider updating the camera sensor properties database
  [0:35:00.618630274] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:594 'ov01a10 3-0036': Failed to retrieve the camera location
  [0:35:00.618632937] [36436]  WARN CameraSensor camera_sensor_legacy.cpp:616 'ov01a10 3-0036': Rotation control not available, default to 0 degrees
  [0:35:00.619180138] [36436]  WARN IPAProxy ipa_proxy.cpp:160 Configuration file 'ov01a10.yaml' not found for IPA module 'simple', falling back to 'uncalibrated.yaml'
  [0:35:00.619189114] [36436]  WARN IPASoft soft_simple.cpp:96 IPASoft: Failed to create camera sensor helper for ov01a10
  Available cameras:
  1: 'ov01a10' (\_SB_.PC00.LNK1)

  v4l2-ctl sees many ipu6 video devices.  This looks wrong, but I'm not
  sure what it should look like, and don't have a working system to
  compare against.

  $ v4l2-ctl --list-devices
  ipu6 ():
          /dev/video1
          /dev/video2
          /dev/video3
          /dev/video4
          /dev/video5
          /dev/video6
          /dev/video7
          /dev/video8
          /dev/video9
          /dev/video10
          /dev/video11
          /dev/video12
          /dev/video13
          /dev/video14
          /dev/video15
          /dev/video16
          /dev/video17
          /dev/video18
          /dev/video19
          /dev/video20
          /dev/video21
          /dev/video22
          /dev/video23
          /dev/video24
          /dev/video25
          /dev/video26
          /dev/video27
          /dev/video28
          /dev/video29
          /dev/video30
          /dev/video31
          /dev/video32

  ipu6 (PCI:0000:00:05.0):
          /dev/media0

  Virtual Camera (platform:v4l2loopback-000):
          /dev/video0

  dmesg shows the following ipu6 logs --

  $ sudo dmesg | grep ipu6
  [   10.600627] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002)
  [   22.119139] pci 0000:00:05.0: deferred probe pending: intel-ipu6: IPU6 bridge init failed
  [   22.822604] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
  [   22.840063] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
  [   22.909654] intel-ipu6 0000:00:05.0: CSE authenticate_run done
  [   22.909664] intel-ipu6 0000:00:05.0: IPU6-v3[a75d] hardware version 5

  ProblemType: Bug
  DistroRelease: Ubuntu 25.04
  Package: libcamera0.4 0.4.0-5ubuntu1
  ProcVersionSignature: Ubuntu 6.14.0-15.15-generic 6.14.0
  Uname: Linux 6.14.0-15-generic x86_64
  ApportVersion: 2.32.0-0ubuntu5
  Architecture: amd64
  CasperMD5CheckResult: pass
  CurrentDesktop: ubuntu:GNOME
  Date: Sun Apr 13 21:06:13 2025
  InstallationDate: Installed on 2024-07-25 (263 days ago)
  InstallationMedia: Ubuntu 22.04.4 v0.7.8 "Custom Jammy Jellyfish" (20240617)
  ProcEnviron:
   LANG=en_US.UTF-8
   PATH=(custom, no user)
   SHELL=/usr/bin/zsh
   TERM=xterm-ghostty
   XDG_RUNTIME_DIR=<set>
  SourcePackage: libcamera
  UpgradeStatus: Upgraded to plucky on 2025-04-11 (3 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ffmpeg/+bug/2107304/+subscriptions