![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I have been working on getting the camera on the ThinkPad X1 Carbon Gen 12 to work under Fedora.
This requires 3 things:
I have also rebased the out of tree IPU6 ISP and proprietary userspace stack in rpmfusion and I have integrated the USBIO drivers into the intel-ipu6-kmod package. So for now getting the cameras to work on the X1 Carbon Gen 12 requires installing the out of tree drivers through rpmfusion. Follow these instructions to enable rpmfusion, you need both the free and nonfree repos.
Then make sure you have a new enough kernel installed and install the rpmfusion akmod for the USBIO drivers:
sudo dnf update 'kernel*'
sudo dnf install akmod-intel-ipu6
The latest version of the out of tree IPU6 ISP driver can co-exist with the mainline / upstream IPU6 CSI receiver kernel driver. So both the libcamera software ISP FOSS stack and Intel's proprietary stack can co-exist now. If you do not want to use the proprietary stack you can disable it by running 'sudo ipu6-driver-select foss'.
After installing the kmod package reboot and then in Firefox go to Mozilla's webrtc test page and click on the "Camera" button, you should now get a camera permisson dialog with 2 cameras: "Built in Front Camera" and "Intel MIPI Camera (V4L2)" the "Built in Front Camera" is the FOSS stack and the "Intel MIPI Camera (V4L2)" is the proprietary stack. Note the FOSS stack will show a strongly zoomed in (cropped) image, this is caused by the GUM test-page, in e.g. google-meet this will not be the case.
I have also been making progress with some of the other open IPU6 issues:
This requires 3 things:
- Some ov08x40 sensor patches, these are available as downstream cherry-picks in Fedora kernels >= 6.12.13
- A small pipewire fix to avoid WirePlumber listing a bunch of bogus extra "ipu6" Video Sources, these fixes are available in Fedora's pipewire packages >= 1.2.7-4
- I2C and GPIO drivers for the new Lattice USB IO-expander, these drivers are not available in the upstream / mainline kernel yet
I have also rebased the out of tree IPU6 ISP and proprietary userspace stack in rpmfusion and I have integrated the USBIO drivers into the intel-ipu6-kmod package. So for now getting the cameras to work on the X1 Carbon Gen 12 requires installing the out of tree drivers through rpmfusion. Follow these instructions to enable rpmfusion, you need both the free and nonfree repos.
Then make sure you have a new enough kernel installed and install the rpmfusion akmod for the USBIO drivers:
sudo dnf update 'kernel*'
sudo dnf install akmod-intel-ipu6
The latest version of the out of tree IPU6 ISP driver can co-exist with the mainline / upstream IPU6 CSI receiver kernel driver. So both the libcamera software ISP FOSS stack and Intel's proprietary stack can co-exist now. If you do not want to use the proprietary stack you can disable it by running 'sudo ipu6-driver-select foss'.
After installing the kmod package reboot and then in Firefox go to Mozilla's webrtc test page and click on the "Camera" button, you should now get a camera permisson dialog with 2 cameras: "Built in Front Camera" and "Intel MIPI Camera (V4L2)" the "Built in Front Camera" is the FOSS stack and the "Intel MIPI Camera (V4L2)" is the proprietary stack. Note the FOSS stack will show a strongly zoomed in (cropped) image, this is caused by the GUM test-page, in e.g. google-meet this will not be the case.
I have also been making progress with some of the other open IPU6 issues:
- Camera's failing on Dell XPS laptops due to iVSC errors (rhbz#2316918, rhbz#2324683) after a long debugging session this is finally fixed, the fix for this will be available in Fedora kernels >= 6.13.4 which should show up in updates-testing today
- Camera's no working on Microsoft Surface book with ov7251 sensor, the fix for this has landed upstream
X1 12th
Date: 2025-03-04 12:40 pm (UTC)Great progress on the X1 12th. I have that laptop with Fedora 42, I am following all your updates since December but without success. I am running today
* Linux fedora 6.14.0-0.rc5.43.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Mar 3 17:52:05 UTC 2025 x86_64 GNU/Linux
* Package "akmod-intel-ipu6-0.0-20.20250115git13c466e.fc42.x86_64" is already installed.
But cam -l
[0:28:04.172121208] [10729] INFO Camera camera_manager.cpp:327 libcamera v0.4.0
[0:28:04.192708820] [10732] INFO SimplePipeline simple.cpp:1581 No sensor found for /dev/media0
Available cameras:
What can I miss in my configuration that still camera is not detected?
Re: X1 12th
Date: 2025-03-05 01:23 pm (UTC)Likewise, very happy to see how much progress is made and appreciate the work, but following these instructions, something is still not working.
Using the gum test on firefox, camera access is confirmed, status is 'Success' plus fedora confirms the device is in use.
However, video is null, in other browsers (Vivaldi) I get a black box.
Activity light next to the webcam doesn't activate, so I am not sure the hardware is really active.
dmesg | grep ipu6
[ 4.196350] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002)
[ 4.196591] intel-ipu6 0000:00:05.0: IPU6 in secure mode touch 0x80000000 mask 0x0
[ 4.223106] intel-ipu6 0000:00:05.0: FW version: 20230925
[ 4.224209] intel-ipu6 0000:00:05.0: Found supported sensor OVTI08F4:00
[ 4.224253] intel-ipu6 0000:00:05.0: Connected 1 cameras
[ 4.225808] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
[ 4.260978] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
[ 4.307805] intel-ipu6 0000:00:05.0: CSE authenticate_run done
[ 4.307817] intel-ipu6 0000:00:05.0: IPU6-v4[7d19] hardware version 6
[ 4.626198] intel_ipu6_psys.psys intel_ipu6.psys.40: pkg_dir entry count:8
[ 4.626601] intel_ipu6_psys.psys intel_ipu6.psys.40: psys probe minor: 0
cam -l
[0:20:42.849329255] [5860] INFO Camera camera_manager.cpp:325 libcamera v0.3.2
[0:20:42.869452848] [5863] INFO SimplePipeline simple.cpp:1548 No sensor found for /dev/media0
Available cameras:
Re: X1 12th
Date: 2025-03-06 03:00 pm (UTC)Interesting I have received several reports of things still not working with the following error showing in dmesh:
Feb 24 12:56:14 x1c12-mipi kernel: ov08x40 i2c-OVTI08F4:00: chip id mismatch: 560858!=0
But I'm not seeing this on my X1C gen 12.
I've just prepared a test-kernel with some ov08x40 driver changes which hopefully / maybe fix this:
https://bugzilla.redhat.com/show_bug.cgi?id=2333387#c9
You can find the test kernel there, please give this a try.
Lets continue discussing this "ov08x40 i2c-OVTI08F4:00: chip id mismatch: 560858!=0" in the bug.
Regards,
Hans
ERROR: pipeline doesn't want to preroll.
Date: 2025-06-06 04:23 pm (UTC)Hans, first of all thank you for your great work. I ported your work to Gentoo and I was finally able to grab a video from the X1C cam with QCam from libcamera. I ported your kernel patches to 6.14.x-getoo and patches for Intel's usbio to Gentoo, I packaged libcamera 0.5.0 for Gentoo and at least the kernel/libcamera part seems to work. Yeah! I wished I could help more, but I am not much of a kernel programmer or embedded developer.
While qcam can grab a video from the OVTI08F4 sensor, GStreamer and Piperwire do not seem to work, in particular no user-land application (Kamoso, Firefox/Chrome, IMs) shows a camera.
gst-device-monitor-1.0
showsWhen I try
gst-launch-1.0 libcamerasrc camera-name="\\_SB_.PC00.LNK1" ! xvimagesink
I get the following resultI googled this error messages found an article in the SUSE help forum which pointed back to your article "IPU6 camera support in Fedora 41". I checked all the referenced patches
However, all those patches are already included in the upstream versions which I use as the base for my Gentoo packages.