Skip to content

Camera not working on Surface Pro 5 (1807) — sensors stuck on dummy regulators #2186

Description

@kenjitsugi

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

  1. Installed linux-image-surface, linux-headers-surface from the linux-surface apt repo
  2. Confirmed kernel boots correctly on 6.19.8-surface-3
  3. Installed libcamera-tools, libcamera-ipa, cheese
  4. Confirmed IPU3 firmware is present: /lib/firmware/intel/ipu3-fw.bin.zst
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions