I need help getting my ipu6 Camera to work

Hello Everyone

I have a Lenovo Thinkbook 13x Gen4 and it has an ipu6 Camera. I’ve read that these Camera should work with the Kernel 6.11 and newer but I had no luck so far. currently I am on Fedora 41 Kernel 6.11.11.

Someone already did lots of work for this device and I found This Reddit Post and This One. This Person also created a GitHub - GitHub - craigcabrey/thinkbook-13x-gen4-enablement: Tracking hardware enablement for Linux on the 2024 ThinkBook 13x Gen4 . I am really glad that this user put up this much work, since Lenovo doesn’t do it.

While doing some research I fount this topic here and this one. I’ve installed v4l-utils and the akmod-intel-ipu6. I also tried this fix here, but I got an Error Message while doing it.

After I installed v4l-utils and I’ve used v4l2-ctl --list-devices, it would list 47 video devices and 1 media device. When I type this command in today, after a reboot, I get the following message:

Cannot open device /dev/video0, exiting.

Now I think Fedora can’t find any Camera Device at all.

The Camera is really important to me because I often go on Online Meetings and I am currently applying to jobs. Can someone help me to get the Camera to work?

Thank you :slight_smile:

Throwing spit-balls here, but you could try installing Pipewire camera:
$ dnf search pipewire | grep camera
pipewire-plugin-libcamera.x86_64: PipeWire media server libcamera support

Again, do not try this if you have any hint it might upset the rest of your system, warranty definitely not included here :smiley: :smile:. I definitely see how it would be useful to have it work.


UPDATE 2024-12-14 10:08 GMT: Check this post on Arch How to use the IPU6 webcam with kernel 6.10+? (Page 4) / Kernel & Hardware / Arch Linux Forums, check you have the corresponding packages (I mean Arch => Fedora dnf …). I suppose you do, so try How to use the IPU6 webcam with kernel 6.10+? (Page 4) / Kernel & Hardware / Arch Linux Forums, which I quote:

I discovered this through a blog post written by developer Jan Grulich. That’s as simple as creating the file $HOME/.config/wireplumber/wireplumber.conf.d/99-libcamera.conf and putting in it:

wireplumber.profiles = {
   main = {
      monitor.v4l2 = disabled
      monitor.libcamera = optional
   }
}

Oh, definitely relogin your DE session or, better yet, reboot.

Good luck with the interviews! You could add me if it you’d think it would benefit you https://www.linkedin.com/in/bogdanbiv/. God speed! Go transform some coffee into bugs :stuck_out_tongue_winking_eye:

1 Like

Thank you so much for your answer! I can give some hints to your LinkedIn, although I doubt you’re looking for a job as a City Planner and Building Regulator? :stuck_out_tongue:

I’ve tried to install these packages, but the only one I could find was libcamera.i686, which I installed. Sadly, the rest is beyond my Skillset, I need a bit help. When I tried to list the devices with sudo dmesg | grep -i ipu6, nothing happens. I also tried creating a File under /home/.config/wireplumber but it tells me that the directory doesn’t exist.

In the linked Blogpost, there was a command to list some devices - ls /sys/bus/i2c/devices
The output is:

i2c-0   i2c-11  i2c-14  i2c-17  i2c-2   i2c-4  i2c-7  i2c-CSC3551:00-cs35l41-hda.0  i2c-CSC3551:00-cs35l41-hda.3  i2c-HIMX1092:00
i2c-1   i2c-12  i2c-15  i2c-18  i2c-20  i2c-5  i2c-8  i2c-CSC3551:00-cs35l41-hda.1  i2c-DIOO5644:00               i2c-OVTI02C1:00
i2c-10  i2c-13  i2c-16  i2c-19  i2c-3   i2c-6  i2c-9  i2c-CSC3551:00-cs35l41-hda.2  i2c-GXTP5100:00

Sadly, I don’t know enough about Fedora/Linux yet, to make sense of these guides :frowning: could you help me out please?

That path is missing one huge part.
It should be /home/$USER/.config/wireplumber and that would be filled in properly with the suggested path $HOME/.config/wireplumber (also written as ~/.config/wireplumber).

As you gain more experience it becomes easy to recognize that $HOME represents the users home directory.

1 Like

Thanks for the clarification! I looked into the proper directory (in the user path) and I couldn’t find a folder for wireplumber. Wireplumber is installed. But I still don’t have a video0 device, even when searching the whole output of dmesg, there’s no mention of the ipu6 cameras.

Doesn’t that mean, that Fedora doesn’t find any Cameras at all? Even weirder, after installing v4l-utils, it said that I had 47 ipu6 Cameras and now they’re all gone?

1 Like

~/., ~, $HOME, ${HOME}, /home/$USER is being used interchangeably throughout Unixes/ Linux. Only Macs have /Users/$USER so that’s different. There may be other jargon we use, but we’re not conscious about it

Everytime someone suggests putting ~/.config/DOES_NOT_EXIST/smth, that path was either created automagically by default or at some point you manually create it. If it exists, it’s being read, otherwise it’s ignored. Be careful what you retain in $HOME/.config and its brothers such as $HOME/.plasma or however it’s called in Gnome.

You should also have available libcamera.x86_64 so try
sudo dnf install libcamera libcamera-apps libcamera-gstreamer libcamera-tools libcamera-v4l2 libcamera-qcam

It’s possible we somehow disabled V4L2, yet pipewire / wireplumber does not pick it up properly. It’s wierd as V4L2 should work in parallel with pipewire. Anyway, even if it does work with Pipewire, you need it to work with Zoom or Firefox or Webex, MS Teams what have you. You need to test full circle not only with libcamera-apps, but also the rest of the app.


Please remember I’m not an expert at this, it’s safer (more reliable) if you either set up dual boot with Windows for interviews and/or get a junk, used, USB webcam. They should sell at around 30$ if I remember prices. Get your problem solved, then you’ll have time for tinkering with Linux. I know because I keep procrastinating on applying to jobs too.


UPDATE: good grief, I don’t know why I’ve put commas in my command ^^^
there should be no commas between the packages we try to install:
this is bad sudo dnf install libcamera, libcamera-apps, libcamera-gstreamer, DNF understands the comma as part of the package name which is not what I meant

Both /usr/bin/cam and /usr/bin/qcam don’t work?

$ /usr/bin/cam --list
[2:17:01.320356465] [28739]  INFO Camera camera_manager.cpp:325 libcamera v0.3.2
[2:17:01.417883823] [28742]  WARN V4L2 v4l2_pixelformat.cpp:346 Unsupported V4L2 pixel format H264
Available cameras:
1: 'OBSBOT Tiny 4K: OBSBOT Tiny 4K ' (\_SB_.PCI0.XHC_.RHUB.HS02-2:1.0-6e30:fef4)

Hey, thank you again for your answer. I needed some time to test things out, Tried with ChatGPT too to find a solution - so far none. I couldn’t install the drivers manually and I don’t want to touch Windows again soon on my Laptop. But I found a spare USB Camera at work and it’s helping me out so far, thanks for the tip! I was so fixated on the Error, that this didn’t come into my mind.

Yesterday I did a fresh install, because I may have overdone it with trying and having no clue what I am doing… After the Install, I could update directly to Kernel 6.12.4 and I hoped it would fix my issues. But so far, no luck.

Installing akmod-intel-ipu6 was the easiest way to get my PC to boot at all, but now I can’t enable Kernel Lockdown anymore - oh well…
Sadly libcamera and libcamera-qcam don’t help at all. Also The Apps that should work with the ipu6 Camera, don’t work either.

Thanks to your research and the Blogpost, I am certain that Intel only did the work for some but not all ipu6 Cameras, and sadly mine isn’t supportet - yet (fingers crossed). I’ll leave this topic open for now. Maybe someone will stumble upon this and figured a solution or there are updates to this topic. If someone else would like to give it a shot, please feel free :slight_smile:

I found out my Camera Model, which is ov02e10 and a Github Page with the drivers: ipu6-drivers/drivers/media/i2c at master · intel/ipu6-drivers · GitHub
But I need some time to learn, how I can install this. Right now it’s outside of my knowledge.

Thanks again!

1 Like

Over decades using linux, I have found it important to have USB replacments for mission-critical devices – often either too new to have kernel support or older devices that are inadvertently disabled by changes in newer kernels (because linux devs generally have newer gear, so don’t notice that some change breaks old devices). For older devices I have often found that current USB devices outperform the original kit.

1 Like

Hey there, I’ve bought a ChatGPT Subscritption and I tried for a week now to get this thing to work, with permanent success. I was able to get the Camera working! With this command gst-launch-1.0 v4l2src device=/dev/video8 ! videoconvert ! autovideosink I can get a Windows that works quite well! FPS and Resolution both look good and the Camera works.

But I have to tell you again, I am a Linux Newbie. I recently switched fully from Windows to Linux and I have literally no Idea, what I was doing! But I thought I might share my progress.

That’s why I asked ChatGPT to summarize all of our approach thoroughly and formulate it, so that anyone with Deeper Knowledge could work with this.

I really hope that this can help to further Implementation of the Camera support. Please let me know if I can provide further Information. I have to get it out of ChatGPT first because I am really a Beginner.

I will also do a fresh Install again, because my System uses quite a lot of RAM and it’s quite unstable after all that tinkering. I don’t think it’s healthy for my Production System, to be running with this many modifications.

Here’s the Output of ChatGPT:


Issue Summary:
I have been trying to get my Intel IPU6 Camera to work on Fedora 41 on my Lenovo ThinkBook 13x Gen 4.
The camera sensor is OV02C10, and the drivers were installed using Fedora’s akmod-intel-ipu6 package.
Despite multiple attempts, the camera is still not working in applications like GNOME Snapshot or browsers.

1. Initial Attempt – Manual IPU6 Driver Installation

Initially, I followed the manual installation guide from Intel’s ipu6-drivers GitHub repository.

  • The drivers were compiled successfully but did not result in a working camera.
  • After loading the modules (intel_ipu6_isys, intel_ipu6, ipu_bridge), the camera was detected as /dev/video* devices but did not produce an image.
  • PipeWire and xdg-desktop-portal did not recognize the camera properly.
  • GStreamer worked (gst-launch-1.0 icamerasrc ! videoconvert ! autovideosink), meaning the camera was functional at the driver level, but applications could not access it

2. Switching to Fedora’s Built-in IPU6 Support

Since Fedora 41 already includes akmod-intel-ipu6, ipu6-camera-bins, and ipu6-camera-hal, I decided to switch to Fedora’s built-in support.

  • However, these packages were already installed from the beginning, meaning the manual driver installation likely did not interfere.
  • Using v4l2-ctl --list-devices, the camera was listed under ipu6, but /dev/video0 was a v4l2loopback device instead of a real camera feed.
  • mpv av://v4l2:/dev/video0 returned Not a video capture device.
  • GStreamer worked (gst-launch-1.0 icamerasrc ! videoconvert ! autovideosink), meaning the camera was functional at the driver level, but applications could not access it.

3. Debugging PipeWire & xdg-desktop-portal

Since GStreamer worked but applications like GNOME Snapshot did not, the issue appeared to be with PipeWire and xdg-desktop-portal.

  • Running pw-cli ls Device showed that PipeWire recognized the device as "Intel MIPI Camera" under v4l2_device._sys_devices_virtual_video4linux_video0.
  • Running flatpak run org.gnome.Snapshot produced the error:
    Hack! The parsing of the iface name has failed: iface object does not exist at path /org/freedesktop/portal/desktop/request/...
    
  • systemctl --user status xdg-desktop-portal showed repeated failures with No skeleton to export and Failed to create background monitor: Failed to own background monitor D-Bus name.
  • Restarting PipeWire & xdg-desktop-portal had no effect (systemctl --user restart pipewire pipewire-pulse wireplumber xdg-desktop-portal xdg-desktop-portal-gtk).
  • Installing xdg-desktop-portal-wlr caused conflicts and had to be removed.

4. Summary of Key Findings

  • The IPU6 drivers work, and the camera can be accessed using GStreamer.
  • PipeWire detects the camera, but applications cannot access it.
  • xdg-desktop-portal fails with No skeleton to export and Failed to own background monitor D-Bus name.
  • Removing and reinstalling xdg-desktop-portal had no effect.
  • /dev/video0 is recognized as a loopback device, which might explain why applications cannot use it.

5. Next Steps & Questions for Fedora Developers

:bulb: What changes are required in xdg-desktop-portal to properly expose IPU6 cameras to applications?
:bulb: Why does Fedora default to a v4l2loopback device (/dev/video0) instead of directly exposing the camera?
:bulb: Are there additional configurations needed to enable PipeWire integration with IPU6?

Any insights or fixes from Fedora developers would be greatly appreciated. Thanks for your help! :rocket:

There is a fair bit more information in Jan’s post than just this snippet. I’m having problems right now getting to his site, but you should be able to find the referenced blog post here.

Good luck!