Repository navigation
Cameras not detected on SP6 #2087
Copy link
Copy link
Open
Description
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-toolsandgst-plugin-libcamerapackages - searched for
/lib/firmware/intel/ipu3-fw.binwhich was absent, but/lib/firmware/intel/ipu3-fw.bin.zstexisted 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 toipu3-fw.binand symlinked it in/lib/firmware/intel/too - even after a reboot,
cam --list(orLIBCAMERA_LOG_LEVELS=*:0 cam --list) returns no available camera (empty list) v4l2-ctl --list-devicesalso returns nothingsudo dmesg | grep -i ov8865returns 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!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
mfa-nw commentedon May 3, 2026
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.
Apiznel commentedon May 9, 2026
In the mean time, this repo could append the patch to
0013-cameras.patchseeing as there's an influx of ipu3 issues for 6.19+.Here's the aforementioned patch: https://lore.kernel.org/all/[email protected]/
toor11 commentedon May 11, 2026
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_idtable 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 noi2c:dw9719alias 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_idtable, based on the upstream fix from Sakari Ailus: https://lore.kernel.org/all/[email protected]/