Skip to content

Cameras not detected on SP6 #2087

Open

Description

@FelixDz

Hi everyone,

I have a Surface Pro 6 running Archlinux with the linux-surface kernel (uname -r gives 6.19.8-arch1-1-surface), and I can't get the front and rear cameras to work.

Did I miss something? Given the camera support table, my front and rear cameras should work out-of-the-box with libcamera, at least in qcam.

What I've tested so far:

  • read through the camera guide
  • installed the libcamera, libcamera-tools and gst-plugin-libcamera packages
  • searched for /lib/firmware/intel/ipu3-fw.bin which was absent, but /lib/firmware/intel/ipu3-fw.bin.zst existed and was symlinked to /usr/lib/firmware/intel/ipu/irci_irci_ecr-master_20161208_0213_20170112_1500.bin.zst, so I zstd'd this last one to ipu3-fw.bin and symlinked it in /lib/firmware/intel/ too
  • even after a reboot, cam --list (or LIBCAMERA_LOG_LEVELS=*:0 cam --list) returns no available camera (empty list)
  • v4l2-ctl --list-devices also returns nothing
  • sudo dmesg | grep -i ov8865 returns nothing

Only sudo dmesg | grep -i ov5693 returns something:

[   29.192648]  processor_thermal_device_pci_legacy snd_soc_core processor_thermal_device mwifiex_pcie irqbypass processor_thermal_wt_hint mwifiex snd_compress rapl platform_temperature_control ac97_bus processor_thermal_soc_slider snd_pcm_dmaengine intel_cstate platform_profile processor_thermal_rfim cfg80211 snd_pcm intel_uncore processor_thermal_rapl snd_timer intel_rapl_common pcspkr snd processor_thermal_wt_req 8250_dw soundcore rfkill processor_thermal_power_floor intel_ish_ipc mei_me processor_thermal_mbox intel_xhci_usb_role_switch mei intel_pch_thermal intel_ishtp roles intel_soc_dts_iosf intel_oc_wdt intel_skl_int3472_tps68470 ov5693 intel_pmc_core v4l2_cci tps68470_regulator v4l2_fwnode pmt_telemetry v4l2_async pmt_discovery surface_aggregator_registry pmt_class surface_acpi_notify videodev clk_tps68470 intel_pmc_ssram_telemetry intel_skl_int3472_discrete int3400_thermal int3403_thermal surfacepro3_button mc intel_skl_int3472_common surface_aggregator intel_vsec soc_button_array acpi_thermal_rel

A small ping to you @djrscally since you seem to be very aware of the camera issues and have worked a lot on this!

Activity

  1. mfa-nw commented on May 3, 2026

    @mfa-nw

    I am not sure if this is related but I reported a regression to the upstream kernel as some code was removed from the kernel in version 6.19 that libcamera needs in order to bind to the surface ipu3 cameras. There is a patch under review to add back the i2c device table for dw9719 but I don't know if or when this will happen. I am using fedora on a surface go but suspect this is the same issue that you are experiencing.

  2. Apiznel commented on May 9, 2026

    @Apiznel
    Contributor

    In the mean time, this repo could append the patch to 0013-cameras.patch seeing as there's an influx of ipu3 issues for 6.19+.
    Here's the aforementioned patch: https://lore.kernel.org/all/[email protected]/

  3. toor11 commented on May 11, 2026

    @toor11

    This has been fixed in PR #2123.

    Root cause: The upstream patch "media: i2c: dw9719: Remove unused i2c device id table" (kernel 6.19) incorrectly removed the i2c_device_id table from the dw9719 VCM driver. On Surface devices, the dw9719 VCM is instantiated by the IPU bridge via I2C, so it depends on I2C device matching — without the table, the driver has no i2c:dw9719 alias and never binds.

    Without the VCM bound, cio2_notifier_complete() doesn't fire, so the camera sensor entities never get V4L2 subdevice nodes, and libcamera reports no cameras.

    The fix adds back the i2c_device_id table, based on the upstream fix from Sakari Ailus: https://lore.kernel.org/all/[email protected]/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions