Skip to content

Surface Pro 8 camera support #1893

Open

Description

@pythonpoet

@toorajtaraz got the surface pro 9 camera working with pull request #1867.

I build the system using @petm5 SP9 kernel, followed toorajtaraz instructions and got the front camera working on my SP8.
However, the camera began to flicker and now stopped working entirely. Now under /sys/bus/i2c/devices I have weirdly the SP9 device Vi2c-OVTID858:00 instead of OVTI5693:00.

I tried to remove everything related to the OVTID858 patch and applied those changes in isolation (https://github.com/pythonpoet/linux-surface). Saidly, this resulted in the same.

Somebody had more success?

Edit:
Next day, the front camera just started to work. Camera is still flickering though:

Image

Activity

  1. lukirudaka commented on Nov 3, 2025

    @lukirudaka

    That patch is for the Surface Pro 9, not aimed for the SP8. Just happens to make the SP8 cameras somewhat work. You're welcome to look into it yourself but I think you're pretty much on your own. I'm running an SP7, so as much as I'd like to help, I can't.
    think we drilled the remaining surface tablets anyway. caused us so many issues trying to image them. except for the ones they gave us on grant but those don't matter here since they all run qualcomm ARM chips, not intel x86.

  2. krokosik commented on Nov 20, 2025

    @krokosik

    Is there a simple way to try it on my machine without compiling the kernel?

  3. TheSmilingTurtle commented on Jan 8, 2026

    @TheSmilingTurtle

    6.18.3-arch1-2-surface makes the back camera work on my SP8, but front camera would still need some work. You managed to get the front camera working?

  4. gattolfo98 commented on Mar 19, 2026

    @gattolfo98

    On my surface pro 8 the camera just doesn't work, (i'm on fedora).
    Linux 6.18.8-1.surface.fc43.x86_64

    (when i open the gnome camera app the front camera led lights up, but the app show just a black screen)

  5. dxdxffgg99 commented on Jul 25, 2026

    @dxdxffgg99

    On my SP8(Linux 6.19.8-arch1-3-surface) doesn't work too

  6. krokosik commented on Jul 25, 2026

    @krokosik

    I installed the kernel module from #2171 and it works even better than the back camera. However, it does not work in pipewire apps (pipewire enabled Firefox) and the bridge proposed in the gist does not work in Firefox (but works in Chromium)

  7. jakep82 commented on Jul 26, 2026

    @jakep82

    I installed the kernel module from #2171 and it works even better than the back camera. However, it does not work in pipewire apps (pipewire enabled Firefox) and the bridge proposed in the gist does not work in Firefox (but works in Chromium)

    I had the same issue, but I found a solution. Some programs seem to be hard coded to only look at the first 64 devices (0-63) which are the raw IPU6 devices. I simply changed video_nr=64 to video_nr=0 and video64 to video0. After a reboot my v4l2loopback device initialized as /dev/video0 and the raw devices were pushed back to 1-64. It now works in Firefox, Zoom, and OBS.

  8. krokosik commented on Jul 27, 2026

    @krokosik

    Ah very cool, it works! I also checked the logs in pipewire modes and it seems that the browser is unable to negotiate a non-native video resolution. The kernel log spams:

    intel_ipu6_isys.isys intel_ipu6.isys.40: csi2-4 error: Frame sync error
    

    while wireplumber shows:

    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.295640224] [1511]  INFO Camera camera.cpp:1216 configuring streams: (0) 1280x720-ABGR8888/sRGB
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.296563277] [1615]  INFO SimplePipeline simple.cpp:1570 Input buffer stride ignored by the driver. Requested 2816, got 2624 # <- here
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.298494657] [1615]  INFO IPASoft soft_simple.cpp:258 IPASoft: Exposure 1-1030, gain 0.0625-7.9375 (0.07875)
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.298563922] [1615]  INFO SoftwareIsp software_isp.cpp:299 Input 1296x972-BGGR-10 stride 2624
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.324205672] [10719]  INFO eGL egl.cpp:412 EGL: EGL_VERSION: 1.5
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.324229845] [10719]  INFO eGL egl.cpp:413 EGL: EGL_VENDOR: Mesa Project
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.324233144] [10719]  INFO eGL egl.cpp:414 EGL: EGL_CLIENT_APIS: OpenGL OpenGL_ES
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.324236093] [10719]  INFO eGL egl.cpp:415 EGL: EGL_EXTENSIONS: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_config_select_group EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_protected_content EGL_EXT_query_reset_notification_strategy EGL_EXT_surface_compression EGL_IMG_context_priority EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image_base EGL_KHR_no_config_context EGL_KHR_partial_update EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_gl_interop EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_MESA_x11_native_visual_id
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.326502030] [10719]  INFO eGL egl.cpp:456 EGL: GL_RENDERER: Mesa Intel(R) Iris(R) Xe Graphics (TGL GT2)
    Jul 27 17:27:51 surfacewk wireplumber[1511]: [0:33:20.326521085] [10719]  INFO eGL egl.cpp:457 EGL: GL_VERSION: OpenGL ES 3.2 Mesa 26.1.5-arch1.1
    

    Will continue using v4l2 for now

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