You are not logged in.

#176 2026-01-12 05:50:55

shtrom
Member
Registered: 2009-06-10
Posts: 10
Website

Re: How to use the IPU6 webcam with kernel 6.10+?

reacocard wrote:

Steps that should replicate my setup:

Thanks for this! I finally have a working IPU6 cam on my 2024 XPS 16 (9640) https://wiki.archlinux.org/title/Dell_XPS_16_(9640) with 6.18.4-arch1-1 and the V4L2 loopback.

Offline

#177 2026-01-12 19:53:31

merijn
Member
Registered: 2009-02-06
Posts: 10

Re: How to use the IPU6 webcam with kernel 6.10+?

I've been able to get my webcam to work with libcamera, gstreamer, v4l2loopback, and chromium. I'll share the details here.
I'm not using the intel proprietary packages (intel-ipu6-dkms-git intel-ipu6-camera-bin intel-ipu6-camera-hal-git icamerasrc-git)

With the newest kernel I could immediately get a picture with qcam but I could not get it to work with either firefox or chromium.
With the following configuration I am finally able to use my webcam with nextcloud talk under chromium. The quality is not great, its greenish and a bit low on light. Its clearly missing calibration data. But its responsive and very usable.

laptop: Dell Latitude 7450
Kernel: 6.18.4-arch1-1
Sensor: INT3537
Camera name: hi556

dmesg |grep intel-ip6
intel-ipu6 0000:00:05.0: Found supported sensor INT3537:00

recognised by libcamera as: (leaving out the warnings here)

cam -l
Available cameras:
1: 'hi556' (\_SB_.PC00.LNK1)

Related packages I have installed:

local/pipewire-v4l2 1:1.4.9-2
local/v4l2loopback-dkms 0.15.3-1
local/v4l2loopback-utils 0.15.3-1
local/gst-plugin-libcamera 0.6.0-2
local/libcamera 0.6.0-2
local/libcamera-ipa 0.6.0-2
local/libcamera-tools 0.6.0-2
local/pipewire-libcamera 1:1.4.9-2
local/gstreamer 1.26.10-2

Create the following file:

cat /etc/modprobe.d/v4l2loopback.conf     
options v4l2loopback video_nr=60 card_label="v4l2_hi556_loopback" exclusive_caps=1
modprobe v4l2loopback

Now you've created a v4l2 loopback device /dev/video60

Use gstreamer to send the signal from your webcam to the v4l2loopback device:

gst-launch-1.0 libcamerasrc name="hi556" ! queue ! videoconvert ! video/x-raw,format=YUY2 ! v4l2sink name=v4l2sink-hi556 device=/dev/video60

I noticed that adding any other video settings here, like the resolution, would result in no video output
if all goes well you should see a counter going up (counting seconds of video stream sent to v4l2 sink.

Test it with ffplay:

ffplay /dev/video60

After this you should see a webcam device in chromium called: "v4l2_hi556_loopback" (don't let ffplay run in the background)

First I had "PipeWire Camera support" disabled in chrome://flags/
But now I've set it to "Default" again and its still working
Firefox does not see my v4l2loopback device for some reason.
obs works

edit
After using the camera for some time the image can start to flicker. And Gstreamer would show the following warnings:

WARNING: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink-hi556: A lot of buffers are being dropped.                                                  
Additional debug info:        
../gstreamer/subprojects/gstreamer/libs/gst/base/gstbasesink.c(3146): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink-hi556:        
There may be a timestamping problem, or this computer is too slow. 

Last edited by merijn (2026-01-13 11:13:00)

Offline

#178 2026-01-14 06:15:33

duzhuo
Member
From: Beijing, China
Registered: 2026-01-14
Posts: 1
Website

Re: How to use the IPU6 webcam with kernel 6.10+?

merijn wrote:

I've been able to get my webcam to work with libcamera, gstreamer, v4l2loopback, and chromium. I'll share the details here.
I'm not using the intel proprietary packages (intel-ipu6-dkms-git intel-ipu6-camera-bin intel-ipu6-camera-hal-git icamerasrc-git)

With the newest kernel I could immediately get a picture with qcam but I could not get it to work with either firefox or chromium.
With the following configuration I am finally able to use my webcam with nextcloud talk under chromium. The quality is not great, its greenish and a bit low on light. Its clearly missing calibration data. But its responsive and very usable.

laptop: Dell Latitude 7450
Kernel: 6.18.4-arch1-1
Sensor: INT3537
Camera name: hi556

dmesg |grep intel-ip6
intel-ipu6 0000:00:05.0: Found supported sensor INT3537:00

recognised by libcamera as: (leaving out the warnings here)

cam -l
Available cameras:
1: 'hi556' (\_SB_.PC00.LNK1)

Related packages I have installed:

local/pipewire-v4l2 1:1.4.9-2
local/v4l2loopback-dkms 0.15.3-1
local/v4l2loopback-utils 0.15.3-1
local/gst-plugin-libcamera 0.6.0-2
local/libcamera 0.6.0-2
local/libcamera-ipa 0.6.0-2
local/libcamera-tools 0.6.0-2
local/pipewire-libcamera 1:1.4.9-2
local/gstreamer 1.26.10-2

Create the following file:

cat /etc/modprobe.d/v4l2loopback.conf     
options v4l2loopback video_nr=60 card_label="v4l2_hi556_loopback" exclusive_caps=1
modprobe v4l2loopback

Now you've created a v4l2 loopback device /dev/video60

Use gstreamer to send the signal from your webcam to the v4l2loopback device:

gst-launch-1.0 libcamerasrc name="hi556" ! queue ! videoconvert ! video/x-raw,format=YUY2 ! v4l2sink name=v4l2sink-hi556 device=/dev/video60

I noticed that adding any other video settings here, like the resolution, would result in no video output
if all goes well you should see a counter going up (counting seconds of video stream sent to v4l2 sink.

Test it with ffplay:

ffplay /dev/video60

After this you should see a webcam device in chromium called: "v4l2_hi556_loopback" (don't let ffplay run in the background)

First I had "PipeWire Camera support" disabled in chrome://flags/
But now I've set it to "Default" again and its still working
Firefox does not see my v4l2loopback device for some reason.
obs works

edit
After using the camera for some time the image can start to flicker. And Gstreamer would show the following warnings:

WARNING: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink-hi556: A lot of buffers are being dropped.                                                  
Additional debug info:        
../gstreamer/subprojects/gstreamer/libs/gst/base/gstbasesink.c(3146): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink-hi556:        
There may be a timestamping problem, or this computer is too slow. 

Thanks for sharing. Its work on my Acer Swift SF314-512 with Debian sid.

Offline

#179 2026-01-14 07:12:31

schard
Forum Moderator
From: Hannover
Registered: 2016-05-06
Posts: 2,530
Website

Re: How to use the IPU6 webcam with kernel 6.10+?

Mod note: @duzhuo please refrain from unnecessary full-quotes. Thank you.


Inofficial first vice president of the Rust Evangelism Strike Force

Offline

#180 2026-02-14 19:21:03

platelminto
Member
Registered: 2026-02-14
Posts: 1

Re: How to use the IPU6 webcam with kernel 6.10+?

Got my webcam fully working on the X1 Carbon Gen 11 (i7-1355U, OV2740 sensor, kernel 6.18) using the in-tree IPU6 driver + libcamera. The default uncalibrated profile looks pretty bad so I put together a CCM tuning file that helps. Couldn't find one anywhere online so posting it here.

Install packages:

sudo pacman -S libcamera libcamera-ipa libcamera-tools gst-plugin-libcamera pipewire-libcamera

WirePlumber config — tells PipeWire to use libcamera instead of raw V4L2 (which only gives unusable bayer data):

mkdir -p ~/.config/wireplumber/wireplumber.conf.d
# ~/.config/wireplumber/wireplumber.conf.d/99-libcamera.conf
wireplumber.profiles = {
   main = {
      monitor.v4l2 = disabled
      monitor.libcamera = optional
   }
}

Firefox: set media.webrtc.camera.allow-pipewire to true in about:config, otherwise you get 30+ ipu6 entries in the camera dropdown instead of one usable device.

Tuning file — this is the main thing, without it libcamera falls back to uncalibrated.yaml and the image is washed out and green:

# /usr/share/libcamera/ipa/simple/ov2740.yaml
# SPDX-License-Identifier: CC0-1.0
%YAML 1.1
---
version: 1
algorithms:
  - BlackLevel:
  - Awb:
  - Agc:
  - Adjust:
  - Ccm:
      ccms:
        - ct: 6500
          ccm: [ 2.25, -1.00, -0.25,
                -0.45,  1.35, -0.20,
                 0.00, -0.60,  1.60 ]

Boot race condition fix — WirePlumber often starts before the IPU6 driver is ready, so the camera doesn't show up until you manually restart it. This service handles it automatically:

# ~/.config/systemd/user/restart-wireplumber.service
[Unit]
Description=Restart WirePlumber to pick up libcamera device
After=wireplumber.service pipewire.service

[Service]
Type=oneshot
ExecStartPre=/usr/bin/sleep 5
ExecStart=/usr/bin/systemctl --user restart wireplumber

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable restart-wireplumber.service

Reboot after all of the above.

Notes:
- Still not perfect — there's a slight green cast that seems to come from the debayer stage before the CCM runs. The values aren't properly calibrated, just eyeballed, so if anyone can refine them please share.
- pacman -Syu will probably overwrite the tuning yaml when libcamera updates, keep a backup.

Offline

#181 2026-02-16 10:36:31

aljinovic
Member
Registered: 2026-02-16
Posts: 1

Re: How to use the IPU6 webcam with kernel 6.10+?

@platelminto your config helped a lot, thanks!

  • the `Ccm` part didn't work for Carbon X1 Gen10 with ov2740 (purple tint),

  • disabling Agc stops the flickering!

Here's the config that works well for me:

# /usr/share/libcamera/ipa/simple/ov2740.yaml
# SPDX-License-Identifier: CC0-1.0
%YAML 1.1
---
version: 1
algorithms:
  - BlackLevel:
  - Awb:
#  - Agc:
  - Adjust:

Offline

#182 2026-02-23 18:05:41

frnkq
Member
Registered: 2017-04-26
Posts: 3

Re: How to use the IPU6 webcam with kernel 6.10+?

Configs working for Thinkpad X1 Nano Gen 3, thank you @platelminto
The Tuning file was my missing piece, as the image was constantly flickering and with a very intrusive green tint.
I also had to disable Agc. This is my CCM, which is a bit brighter but still has a slight green tint.:

  - Ccm:
      ccms:
        - ct: 6500
          ccm: [ 3.05, -1.40, -0.15,
          -0.40,  2.70, -0.95,
          0.00, -1.50,  3.60 ]

Offline

Board footer

Powered by FluxBB