Bug 2454119 - Missing imx471 module for IPU7 MIPI Camera (SONY471A) on Lunar Lake
Summary: Missing imx471 module for IPU7 MIPI Camera (SONY471A) on Lunar Lake
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: 43
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Kate Hsuan
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-04-01 21:15 UTC by anis
Modified: 2026-08-24 20:07 UTC (History)
17 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:


Attachments (Terms of Use)
journalctl -b 0 -k > kernel.txt (126.08 KB, text/plain)
2026-04-01 21:16 UTC, anis
no flags Details
lsusb > lsusb.txt (452 bytes, text/plain)
2026-04-01 21:16 UTC, anis
no flags Details
ls -l /sys/bus/i2c/devices/ > i2c-devices.txt (2.32 KB, text/plain)
2026-04-01 21:17 UTC, anis
no flags Details
ls -l /sys/bus/spi/devices/ > spi-devices.txt (537 bytes, text/plain)
2026-04-01 21:17 UTC, anis
no flags Details

Description anis 2026-04-01 21:15:09 UTC
1. Please describe the problem:
I am testing the new FOSS IPU7 stack on Fedora 43 with a Lunar Lake laptop (Lenovo X9 15). The IPU7 initializes perfectly and detects the sensor (dmesg shows "Found supported sensor SONY471A:00" and "Connected 1 cameras"). However, the camera does not work because the specific `imx471` driver module is missing from the kernel tree, preventing the sensor from binding to /dev/media0. 

I have verified that pipewire-plugin-libcamera, libcamera-ipa, and intel-vsc-firmware are installed. I also ensured the proprietary stack is not active.

2. What is the Version-Release number of the kernel:
kernel-6.19.10-200.fc43.x86_64

3. Did it work previously in Fedora? If so, what kernel version did the issue
   *first* appear?  Old kernels are available for download at
   https://koji.fedoraproject.org/koji/packageinfo?packageID=8 :
No, this is a new hardware enablement request for Lunar Lake MIPI cameras.

4. Can you reproduce this issue? If so, please provide the steps to reproduce
   the issue below:
Yes, always.
Steps:
1. Boot Fedora 43.
2. Run `modprobe imx471` (returns FATAL: Module imx471 not found).
3. Run `cam -l` (returns "No sensor found for /dev/media0").

5. Does this problem occur with the latest Rawhide kernel? To install the
   Rawhide kernel, run ``sudo dnf install fedora-repos-rawhide`` followed by
   ``sudo dnf update --enablerepo=rawhide kernel``:
I have not tested Rawhide, but according to upstream Intel IPU7 driver discussions, the `imx471` sensor module is not yet merged into the mainline kernel.

6. Are you running any modules that not shipped with directly Fedora's kernel?:
No. The system is completely clean and fully FOSS. Proprietary intel-ipu6 packages and custom DKMS modules were explicitly removed.

7. Please attach the kernel logs. You can get the complete kernel log
   for a boot with ``journalctl --no-hostname -k > dmesg.txt``. If the
   issue occurred on a previous boot, use the journalctl ``-b`` flag.
As requested by the Fedora X86 MIPI CameraHwEnablement Wiki, I enabled dyndbg for int3472 via grubby. I will attach the requested `kernel.txt`, `lsusb.txt`, `i2c-devices.txt`, and `spi-devices.txt` (along with an acpidump) immediately after submitting this bug report.

Reproducible: Always

Comment 1 anis 2026-04-01 21:16:18 UTC
Created attachment 2135703 [details]
journalctl -b 0 -k > kernel.txt

Comment 2 anis 2026-04-01 21:16:46 UTC
Created attachment 2135704 [details]
lsusb > lsusb.txt

Comment 3 anis 2026-04-01 21:17:03 UTC
Created attachment 2135705 [details]
ls -l /sys/bus/i2c/devices/ > i2c-devices.txt

Comment 4 anis 2026-04-01 21:17:20 UTC
Created attachment 2135706 [details]
ls -l /sys/bus/spi/devices/ > spi-devices.txt

Comment 5 Hans de Goede 2026-04-02 11:47:55 UTC
Kate Hsuan is working on cleaning up the out of tree imx471 driver and submitting it for mainline inclusion, assigning this to Kate.

Comment 6 Kate Hsuan 2026-04-17 09:01:31 UTC
Patchset was submitted and can be found at the following URL

https://lore.kernel.org/linux-media/20260417083214.222189-1-hpa@redhat.com/T/#t

Comment 7 anis 2026-06-16 16:02:39 UTC
Hi Kate and team,

Hope you are doing well. I've been quietly following the great progress on the linux-media mailing list regarding the IMX471 driver and the Bayer format flip implementation. Thank you so much for all the hard work you've put into this !

I am currently running Fedora 44 on my Lenovo ThinkPad X9 and checking the updates regularly. I was just wondering if there is any Koji test kernel available yet that includes the latest iteration of your patches ?
I would be more than happy to install it, test the camera orientation/colors on my specific hardware, and report back here to help validate your code before mainline inclusion.

Thanks again!
Best regards,

Anis

Comment 8 Kate Hsuan 2026-06-23 02:34:02 UTC
Hi Anis

It can be found at https://koji.fedoraproject.org/koji/taskinfo?taskID=146423786

and find the details in bz2483180 

Thank you

Comment 9 anis 2026-06-23 06:12:27 UTC
Hi Kate,

I successfully installed and booted the Koji kernel from task 146423786 on my Lenovo ThinkPad X9 (Lunar Lake).

I can confirm that the patch works perfectly. Here are the technical validation points:
- modinfo imx471 now correctly reports the module.
- The sensor binds successfully to /dev/media0.
- Tested with qcam (libcamera v0.7.1 via SoftISP): the camera stream works natively. The image orientation is 100% correct regardless of the upside-down mounting, and the Bayer order works as expected (tested with the fallback uncalibrated.yaml profile in libcamera).

Thank you so much for the hard work! You can add my tag to the patchset:

Tested-by: computman anis

Comment 10 Kate Hsuan 2026-06-26 06:33:21 UTC
Thank you for your testing.

Please rely to the mail thread with Tested-by tag and than I can add you to the commit message.
https://lore.kernel.org/linux-media/20260624033508.27391-4-hpa@redhat.com/

Comment 11 jonas 2026-07-15 17:53:33 UTC
I have one of the newer ThinkPad X9 15p models (types 21VV and 21VW). With the  latest kernel update to 7.1.3-201.fc44 I can now make some use of the camera.

This is the output of "cam -l"

[0:07:18.269961965] [15250]  INFO Camera camera_manager.cpp:340 libcamera v0.7.1
[0:07:18.283259796] [15253] ERROR V4L2 v4l2_subdevice.cpp:1192 'imx471 0-001a': Unable to get rectangle 0 on pad 0/0: Invalid argument
[0:07:18.283300497] [15253]  WARN CameraSensor camera_sensor_legacy.cpp:421 'imx471 0-001a': Failed to retrieve the sensor crop rectangle
[0:07:18.283303387] [15253]  WARN CameraSensor camera_sensor_legacy.cpp:427 'imx471 0-001a': The sensor kernel driver needs to be fixed
[0:07:18.283305147] [15253]  WARN CameraSensor camera_sensor_legacy.cpp:429 'imx471 0-001a': See Documentation/sensor_driver_requirements.rst in the libcamera sources for more information
[0:07:18.283401594] [15253]  WARN CameraSensorProperties camera_sensor_properties.cpp:538 No static properties available for 'imx471'
[0:07:18.283405273] [15253]  WARN CameraSensorProperties camera_sensor_properties.cpp:540 Please consider updating the camera sensor properties database
[0:07:18.283410058] [15253]  WARN CameraSensor camera_sensor_legacy.cpp:502 'imx471 0-001a': No sensor delays found in static properties. Assuming unverified defaults.
[0:07:18.285579805] [15253]  WARN IPAProxy ipa_proxy.cpp:196 Configuration file 'imx471.yaml' not found for IPA module 'simple', falling back to '/usr/share/libcamera/ipa/simple/uncalibrated.yaml'
[0:07:18.285617504] [15253] ERROR V4L2 v4l2_subdevice.cpp:1192 'imx471 0-001a': Unable to get rectangle 0 on pad 0/0: Invalid argument
[0:07:18.285622770] [15253]  WARN CameraSensor camera_sensor_legacy.cpp:881 'imx471 0-001a': The analogue crop rectangle has been defaulted to the active area size
[0:07:18.291966938] [15254]  INFO IPAProxySoftWorker soft_ipa_proxy_worker.cpp:443 Starting worker for IPA module /usr/lib64/libcamera/ipa/ipa_soft_simple.so with IPC fd = 19
[0:07:18.292340304] [15254]  WARN IPASoft soft_simple.cpp:104 IPASoft: Failed to create camera sensor helper for imx471
[0:07:18.292532619] [15253]  INFO Camera camera_manager.cpp:223 Adding camera '\_SB_.LNK0' for pipeline handler simple
[0:07:18.354553968] [15253]  INFO Camera camera_manager.cpp:223 Adding camera '\_SB_.PC00.XHCI.RHUB.HS01-1.1.3.1.2:1.0-046d:08e5' for pipeline handler uvcvideo
Available cameras:
1: Internal front camera (\_SB_.LNK0)
2: External camera 'HD Pro Webcam C920' (\_SB_.PC00.XHCI.RHUB.HS01-1.1.3.1.2:1.0-046d:08e5)

The picture quality using qcam is ok, but it is quite dark and slightly green tinted. I guess that is expected since the output above shows no specific calibrations for this sensor.

The camera does not yet seem to work with Firefox or GNOME camera, which simply don't show it as an option.

I hope this test report is useful. I also haven't seen much about the "X9 15p" models specifically.

Comment 12 Kate Hsuan 2026-07-16 05:45:31 UTC
Hi,

if qcam shows the image, the camera works.

Unlike traditional capture devices, the IPU7 solution is based on pipewire and libcamera. You need to enable pipewire camera support in Firefox through the following steps.
1. Open Firefox and type about:config in the address bar.
2. Accept the warning prompt.
3. Search for the setting "media.webrtc.camera.allow-pipewire" and ensure it is set to true.

Comment 13 John Cronin 2026-08-22 11:53:09 UTC
Hi Kate,

Thank you for the imx471 driver on the X9. It is very welcome — happy
to help with testing or follow-up patches.

Comment 11 still applies on Fedora 44 kernel 7.1.8-200.fc44 (ThinkPad
X9-15, SONY471A / IPU7). Stock imx471:

  VIDIOC_SUBDEV_G_SELECTION CROP          → EINVAL
  CROP_DEFAULT / CROP_BOUNDS              → 8,8 4656×3496
  NATIVE_SIZE                             → 0,0 4672×3512

libcamera logs:
  Unable to get rectangle 0 on pad 0/0: Invalid argument
  Failed to retrieve the sensor crop rectangle

Cause: imx471_get_selection() filled CROP then fell out of the switch
and returned -EINVAL.

Patches on linux-media:

  v1  Message-ID: <20260816194259.151947-1-john.cronin>
  v2  Message-ID: <20260822112505.3493870-1-john.cronin>
      (your 2026-08-22 review: compute crop in set_pad_format like
      imx219; return 0 after the switch)

On this X9, after loading v2, CROP succeeds (3856×2176 centered in the
native array for the 1928×1088 2×2-binned mode) and the libcamera
rectangle warning is gone. Meet still works on software ISP.

Happy to test a Fedora kernel build or anything else you need.

Thanks,
John Cronin

Comment 14 jonas 2026-08-22 14:09:41 UTC
Hi Kate,

I followed your steps for enabling PipeWire support in Firefox. It was already enabled, yet the IMX471 camera does not show up.
Any Firefox misconfiguration also does not explain why Gnome Snapshot does not pick up the camera. There is some other issue that prevents the camera in PipeWire.

An update to libcamera might be helpful too. F44 still uses v0.7.1. I tried the Bodhi build for v0.7.2 https://bodhi.fedoraproject.org/updates/FEDORA-2026-6766d18fde
It improves the image quality a bit. The image is less green tinted, and auto exposure works better, i.e., the image becomes brighter. Overall the image is still on the darker side.
If I enable and then disable the electronic camera privacy cutoff, the image quality degrades again. A restart of qcam restores the previous state.
Any movement in the picture leads to horizontal streaks appearing.

I'm happy to test stuff, but I'm not deep enough in that topic to run my troubleshooting.

Comment 15 Kate Hsuan 2026-08-24 05:59:08 UTC
@john.cronin


Thank you for your work on this. 
I'll review the latest revision :)

> On this X9, after loading v2, CROP succeeds (3856×2176 centered in the
> native array for the 1928×1088 2×2-binned mode) and the libcamera
> rectangle warning is gone. Meet still works on software ISP.

It works on my X9 too without errors. Awesome.


(In reply to jonas from comment #14)
> Hi Kate,
> 

Thank you for reporting the findings.

> I followed your steps for enabling PipeWire support in Firefox. It was
> already enabled, yet the IMX471 camera does not show up.
> Any Firefox misconfiguration also does not explain why Gnome Snapshot does
> not pick up the camera. There is some other issue that prevents the camera
> in PipeWire.

Ensure the software versions are the latest version. 
This is my configuration
pipewire.x86_64                                      1.6.8-1.fc44
libcamera.x86_64                                     0.7.1-1.fc44
gstreamer1.x86_64                                    1.28.6-1.fc44
snapshot.x86_64                                      50.0-1.fc44

snapshot works.

> 
> An update to libcamera might be helpful too. F44 still uses v0.7.1. I tried
> the Bodhi build for v0.7.2
> https://bodhi.fedoraproject.org/updates/FEDORA-2026-6766d18fde
> It improves the image quality a bit. The image is less green tinted, and
> auto exposure works better, i.e., the image becomes brighter. Overall the
> image is still on the darker side.
> If I enable and then disable the electronic camera privacy cutoff, the image
> quality degrades again. A restart of qcam restores the previous state.

For the green color, I think a color tuning can resolve it. But, the vendor should calibrate the sensor and submit the color tuning file to libcamra to get the better color settings.  

> Any movement in the picture leads to horizontal streaks appearing.
I'm looking for it. It seems caused by vulken. see https://bugzilla.redhat.com/show_bug.cgi?id=2502786

I try to find any issues about the sensor driver.

> 
> I'm happy to test stuff, but I'm not deep enough in that topic to run my
> troubleshooting.

Comment 16 jonas 2026-08-24 19:38:04 UTC
These are my packages. libcamera is from https://bodhi.fedoraproject.org/updates/FEDORA-2026-6766d18fde, but I had the issue before with the default F44 version of 0.7.1-1
With snapshot the laptop camera does not even turn on. The indicator LED remains dark.
The laptop got a fresh F44 install and is always updates. It has rpmfusion packages too. I can test it at some point without them.

gstreamer1.i686                                      1.28.6-1.fc44                        updates
gstreamer1.x86_64                                    1.28.6-1.fc44                        updates
gstreamer1-plugin-dav1d.x86_64                       0.15.0-1.fc44                        19278be6a81040f5b6cbc7bacea5148e
gstreamer1-plugin-gtk4.x86_64                        0.15.2-1.fc44                        updates
gstreamer1-plugin-libav.x86_64                       1.28.6-1.fc44                        updates
gstreamer1-plugin-openh264.x86_64                    1.28.6-1.fc44                        updates
gstreamer1-plugins-bad-free.x86_64                   1.28.6-1.fc44                        updates
gstreamer1-plugins-bad-free-libs.x86_64              1.28.6-1.fc44                        updates
gstreamer1-plugins-bad-freeworld.x86_64              1:1.28.6-1.fc44                      rpmfusion-free-updates
gstreamer1-plugins-base.x86_64                       1.28.6-1.fc44                        updates
gstreamer1-plugins-good.x86_64                       1.28.6-1.fc44                        updates
gstreamer1-plugins-good-gtk.x86_64                   1.28.6-1.fc44                        updates
gstreamer1-plugins-good-qt.x86_64                    1.28.6-1.fc44                        updates
gstreamer1-plugins-good-qt6.x86_64                   1.28.6-1.fc44                        updates
gstreamer1-plugins-ugly.x86_64                       1:1.28.6-1.fc44                      rpmfusion-free-updates
gstreamer1-plugins-ugly-free.x86_64                  1.28.6-1.fc44                        updates
libcamera.x86_64                                     0.7.2-1.fc44                         @commandline
libcamera-ipa.x86_64                                 0.7.2-1.fc44                         @commandline
libcamera-qcam.x86_64                                0.7.2-1.fc44                         @commandline
libcamera-tools.x86_64                               0.7.2-1.fc44                         @commandline
pipewire.i686                                        1.6.8-1.fc44                         updates
pipewire.x86_64                                      1.6.8-1.fc44                         updates
pipewire-alsa.x86_64                                 1.6.8-1.fc44                         updates
pipewire-config-raop.x86_64                          1.6.8-1.fc44                         updates
pipewire-gstreamer.x86_64                            1.6.8-1.fc44                         updates
pipewire-jack-audio-connection-kit.x86_64            1.6.8-1.fc44                         updates
pipewire-jack-audio-connection-kit-libs.x86_64       1.6.8-1.fc44                         updates
pipewire-libs.i686                                   1.6.8-1.fc44                         updates
pipewire-libs.x86_64                                 1.6.8-1.fc44                         updates
pipewire-plugin-libcamera.x86_64                     1.6.8-1.fc44                         updates
pipewire-pulseaudio.x86_64                           1.6.8-1.fc44                         updates
pipewire-utils.x86_64                                1.6.8-1.fc44                         updates
qemu-audio-pipewire.x86_64                           2:10.2.2-1.fc44                      19278be6a81040f5b6cbc7bacea5148e
snapshot.x86_64                                      50.0-1.fc44                          19278be6a81040f5b6cbc7bacea5148e
vlc-plugin-pipewire.x86_64                           3-7.fc44                             fedora


The link to https://bugzilla.redhat.com/show_bug.cgi?id=2502786 is quite useful. The streaks are easier to trigger in bright situations rather than dark ones.

LIBGL_ALWAYS_SOFTWARE=1 qcam
This gets rid of the horizontal streaks.

GDK_DISABLE=vulkan LIBGL_ALWAYS_SOFTWARE=0 qcam
This has no effect as far as I can tell, i.e., the streaks are still visible. Thus, the relevant setting is LIBGL_ALWAYS_SOFTWARE.

Comment 17 jonas 2026-08-24 20:07:08 UTC
The pipewire camera issues were self-imposed. Sorry for the confusion. I had this wireplumber configuration in my profile. Once I removed it the camera shows up with snapshot and Firefox.

https://wiki.archlinux.org/title/Lenovo_Thinkpad_X9#WirePlumber_configuration

    wireplumber.profiles = {
      main = {
        monitor.libcamera = required
      }
    }


Note You need to log in before you can comment on or make changes to this bug.