Summary
Cameras are detected by the kernel (ipu3-cio2 finds all 3 sensors and creates the media graph), but libcamera (cam --list) reports zero available cameras. Manual linking with media-ctl -l fails with "Invalid argument (22)". dmesg shows all three sensors falling back to dummy regulators for their power supplies (dvdd/dovdd/avdd), suggesting the intel_skl_int3472 power management driver is not correctly mapping the regulators/GPIOs for this device.
Device
- Model: Microsoft Surface Pro (2017) / "Surface Pro 5" — model number 1807 (from hardinfo:
Microsoft Surface Pro v124000000000000000000000D:0B:2EF:5C:09P:38S:01E:0 Surface_Pro_1807; dmidecode -s system-product-name reports generic "Surface Pro")
- OS: Linux Mint 22.3 Cinnamon (64-bit)
- Kernel:
6.19.8-surface-3 (linux-surface repo)
- CPU: Intel Core i5-7300U
- GPU: Intel HD Graphics 620
Steps already taken
- Installed
linux-image-surface, linux-headers-surface from the linux-surface apt repo
- Confirmed kernel boots correctly on
6.19.8-surface-3
- Installed
libcamera-tools, libcamera-ipa, cheese
- Confirmed IPU3 firmware is present:
/lib/firmware/intel/ipu3-fw.bin.zst
- Confirmed
intel_skl_int3472_* modules are loaded:
intel_skl_int3472_tps68470 20480 0
intel_skl_int3472_discrete 24576 2
intel_skl_int3472_common 16384 2
dmesg output (camera-related)
[ 4.090371] ipu3-cio2 0000:00:14.3: Found supported sensor INT33BE:00
[ 4.121289] ipu3-imgu 0000:00:05.0: loaded firmware version irci_irci_ecr-master_20161208_0213_20170112_1500, 17 binaries, 1212984 bytes
[ 4.126785] ipu3-cio2 0000:00:14.3: Found supported sensor INT347A:00
[ 4.128638] ipu3-cio2 0000:00:14.3: Found supported sensor INT347E:00
[ 4.129170] ipu3-cio2 0000:00:14.3: Connected 3 cameras
[ 4.129200] ipu3-cio2 0000:00:14.3: enabling device (0000 -> 0002)
[ 4.129532] ipu3-cio2 0000:00:14.3: device 0x9d32 (rev: 0x1)
ov8865 i2c-INT347A:00: supply dvdd not found, using dummy regulator
ov8865 i2c-INT347A:00: supply dovdd not found, using dummy regulator
ov8865 i2c-INT347A:00: supply avdd not found, using dummy regulator
ov5693 i2c-INT33BE:00: supply avdd not found, using dummy regulator
ov5693 i2c-INT33BE:00: supply dovdd not found, using dummy regulator
ov5693 i2c-INT33BE:00: supply dvdd not found, using dummy regulator
ov7251 i2c-INT347E:00: supply vdddo not found, using dummy regulator
ov7251 i2c-INT347E:00: supply vddd not found, using dummy regulator
ov7251 i2c-INT347E:00: supply vdda not found, using dummy regulator
ov7251 i2c-INT347E:00: OV7251 revision 7 (1F) detected at address 0x60
ov8865 i2c-INT347A:00: Instantiated dw9719 VCM
Note that ov7251 (IR sensor) is detected and identified ("revision 7 detected"), but ov5693 and ov8865 (front/back RGB sensors) show no further initialization beyond the dummy regulator warnings.
media-ctl topology (/dev/media1, driver ipu3-cio2)
All three sensors are present as entities but show 0 links:
- entity 37: ov5693 2-0036 (1 pad, 0 link, 0 routes)
type V4L2 subdev subtype Sensor flags 0
pad0: Source
- entity 39: ov7251 3-0060 (1 pad, 0 link, 0 routes)
type V4L2 subdev subtype Sensor flags 0
pad0: Source
- entity 41: ov8865 3-0010 (1 pad, 0 link, 0 routes)
type V4L2 subdev subtype Sensor flags 0
pad0: Source
The ipu3-csi2 0/1/2/3 receivers are present with their immutable links to ipu3-cio2 video nodes, but nothing links the sensors to the csi2 receivers.
Attempting manual link
$ sudo media-ctl -d /dev/media1 -l '"ov8865 3-0010":0 -> "ipu3-csi2 3":0[1]'
Unable to parse link: Invalid argument (22)
Same result for ov5693. The kernel rejects the link setup itself (not a syntax issue — confirmed entities exist and pad indices are correct per the topology dump).
cam --list output
[IPAManager] No IPA found in '/usr/lib/x86_64-linux-gnu/libcamera' (before installing libcamera-ipa)
Available cameras:
(empty)
Even after installing libcamera-ipa, the IPA warning disappears but the camera list remains empty.
Question
Given the dummy regulator fallback for ov5693/ov8865 (but seemingly normal detection of ov7251), is this consistent with the known GPIO/PMIC power-mapping quirk described on the [Camera Support wiki page](https://github.com/linux-surface/linux-surface/wiki/Camera-Support)? If so, is there a known quirk/patch for this specific Surface Pro hardware revision, or is per-device reverse engineering still required? Happy to provide additional dumps (full media-ctl -p, ACPI tables, etc.) if useful.
Summary
Cameras are detected by the kernel (
ipu3-cio2finds all 3 sensors and creates the media graph), butlibcamera(cam --list) reports zero available cameras. Manual linking withmedia-ctl -lfails with "Invalid argument (22)". dmesg shows all three sensors falling back to dummy regulators for their power supplies (dvdd/dovdd/avdd), suggesting theintel_skl_int3472power management driver is not correctly mapping the regulators/GPIOs for this device.Device
Microsoft Surface Pro v124000000000000000000000D:0B:2EF:5C:09P:38S:01E:0 Surface_Pro_1807;dmidecode -s system-product-namereports generic "Surface Pro")6.19.8-surface-3(linux-surface repo)Steps already taken
linux-image-surface,linux-headers-surfacefrom the linux-surface apt repo6.19.8-surface-3libcamera-tools,libcamera-ipa,cheese/lib/firmware/intel/ipu3-fw.bin.zstintel_skl_int3472_*modules are loaded:dmesg output (camera-related)
Note that
ov7251(IR sensor) is detected and identified ("revision 7 detected"), butov5693andov8865(front/back RGB sensors) show no further initialization beyond the dummy regulator warnings.media-ctl topology (/dev/media1, driver ipu3-cio2)
All three sensors are present as entities but show 0 links:
The
ipu3-csi2 0/1/2/3receivers are present with their immutable links toipu3-cio2video nodes, but nothing links the sensors to the csi2 receivers.Attempting manual link
Same result for
ov5693. The kernel rejects the link setup itself (not a syntax issue — confirmed entities exist and pad indices are correct per the topology dump).cam --list output
Even after installing
libcamera-ipa, the IPA warning disappears but the camera list remains empty.Question
Given the dummy regulator fallback for
ov5693/ov8865(but seemingly normal detection ofov7251), is this consistent with the known GPIO/PMIC power-mapping quirk described on the [Camera Support wiki page](https://github.com/linux-surface/linux-surface/wiki/Camera-Support)? If so, is there a known quirk/patch for this specific Surface Pro hardware revision, or is per-device reverse engineering still required? Happy to provide additional dumps (fullmedia-ctl -p, ACPI tables, etc.) if useful.