Repository navigation
Surface Go 4 IPU6 camera status: rear OV8865 detected/partially streams, front OV5693 LED only #2154
Description
Description
I would like to report the current camera detection / partial streaming status for the Microsoft Surface Go 4.
Surface Go 4 appears to use Intel IPU6 with OmniVision camera sensors. This is different from older Surface Go models that use IPU3.
On my Surface Go 4, the rear camera OV8865 can be detected and can partially stream through libcamera's simple pipeline in my test environment.
The front camera OV5693 is not working properly. The LED turns on, but no usable video stream is produced.
This is not a complete camera support solution. It is only a status report and an experimental setup attempt.
I also maintain an experimental repository here:
https://github.com/Fugu0141/Surface-Go4-IPU6-camera-linux/tree/test/26.04LTS
This branch contains shell scripts for Ubuntu 25.10 and Ubuntu 26.04 LTS test environments.
The scripts are intended for testing camera detection / libcamera integration on Surface Go 4 only.
They are not guaranteed to work on other systems, future kernels, or future libcamera versions.
Environment
- Hardware model: Microsoft Surface Go 4
- CPU: Intel N200
- IPU: Intel IPU6
- Rear camera sensor: OV8865
- Front camera sensor: OV5693
- VCM: dw9714
- Distribution: Ubuntu 25.10 / Ubuntu 26.04 LTS test environment
- Kernel version: please see uname -r output
- Camera stack: libcamera simple pipeline + PipeWire
Current behavior
- IPU6-related devices are detected.
- Rear camera OV8865 can be detected and can partially stream through libcamera simple pipeline in my environment.
- PipeWire camera integration can expose the camera to some applications.
- Front camera OV5693 LED turns on, but no usable video stream is produced.
- GNOME Camera / Cheese and VLC are not reliable as direct test applications in this setup.
Expected behavior
Both the rear OV8865 camera and the front OV5693 camera should ideally be usable through the Linux camera stack, preferably through libcamera/PipeWire-compatible applications.
Important note about the scripts
The scripts in my repository are experimental.
They are provided under the MIT License, but I cannot guarantee that they will work correctly in every environment.
They may fail depending on kernel version, libcamera version, firmware state, PipeWire/WirePlumber configuration, distribution packages, or future Ubuntu changes.
Please review the scripts before running them.
Steps to reproduce / test
On a fresh Ubuntu 25.10 or Ubuntu 26.04 LTS test installation on Surface Go 4:
-
Install the linux-surface kernel if required.
-
Install/build the required libcamera and camera-related userspace components.
-
Run the experimental Surface Go 4 IPU6 setup script from:
https://github.com/Fugu0141/Surface-Go4-IPU6-camera-linux/tree/test/26.04LTS
-
Restart PipeWire/WirePlumber.
-
Check camera detection with the following commands:
- cam --list
- v4l2-ctl --list-devices
- pw-cli ls Node | grep -Ei "camera|libcamera|ov5693|ov8865"
-
Test camera usage with PipeWire/libcamera-compatible applications.
Logs / diagnostic commands
I can provide full logs.
These are the commands I am using for diagnostics:
uname -r
cat /sys/devices/virtual/dmi/id/product_name
lspci -nn | grep -Ei "ipu|image|camera"
dmesg | grep -Ei "ipu|ov5693|ov8865|dw9714|int3472|v4l2|camera"
lsmod | grep -Ei "ipu|ov5693|ov8865|dw9714|v4l2"
v4l2-ctl --list-devices
cam --list
pw-cli ls Node | grep -Ei "camera|libcamera|ov5693|ov8865"
systemctl --user status pipewire wireplumber
Additional information
I could not find a dedicated issue for Surface Go 4 IPU6 camera status.
There is an existing IPU6 camera discussion, but I am opening this separately because Surface Go 4 has a device-specific status:
- Rear OV8865 camera: detected and partially streaming in my environment.
- Front OV5693 camera: LED turns on, but no usable video output.
- Experimental Ubuntu 25.10 and Ubuntu 26.04 LTS setup scripts are available for testing.
- Surface Go 4 uses IPU6, unlike older Surface Go models that use IPU3.
Related repository:
https://github.com/Fugu0141/Surface-Go4-IPU6-camera-linux/tree/test/26.04LTS
Questions
- Is Surface Go 4 IPU6 camera support expected to work with the current linux-surface kernel?
- Are additional kernel-side patches required for OV5693 / OV8865 / dw9714 on Surface Go 4?
- Is the front camera issue likely related to sensor initialization, ACPI/software-node configuration, VCM/lens initialization, or libcamera pipeline handling?
- Would Surface Go 4-specific camera notes be useful for the linux-surface camera documentation?
Activity
Fugu0141 commentedon Jul 26, 2026
Update: front camera streaming and GNOME Camera now working
I completed a more detailed end-to-end validation on my Surface Go 4.
Environment
7.0.0-28-generic0.7.01.6.20.5.13I built and MOK-signed a local
ov5693module containing the experimentalMIPI_CTRL00 (0x4800) = 0x2dchange from linux-surface PR #2171.OV5693 kernel-streaming results
After a full shutdown and cold boot, with
camas the first camera access:0;000299;I also captured 10 real 640×480 PPM images at approximately 57.35 fps.
The images were valid Netpbm files and were visually confirmed to contain a real image from the front camera.
This confirms that the result is not only device detection or buffer activity:
the OV5693 is producing valid image data with the experimental
0x2dchange.Separate WirePlumber / PipeWire issue
GNOME Camera initially did not detect either physical camera after login.
The WirePlumber journal showed:
Restarting only WirePlumber:
caused libcamera to enumerate both cameras:
PipeWire then exposed:
After that, both the front OV5693 and rear OV8865 displayed live video in GNOME Camera.
This appears to be a separate userspace discovery or permission-timing problem,
not a regression of the OV5693 kernel stream.
Remaining problems
The following issues are still unresolved:
dw9714lens/VCM initialization and autofocus;ov5693.yamlandov8865.yamlsensor tuning;I wrote a detailed technical report containing the build, Secure Boot signing,
installation, rollback, validation, logs, and troubleshooting steps:
https://github.com/Fugu0141/Surface-Go4-IPU6-camera-linux/blob/main/docs/surface-go4-ipu6-camera-root-cause-and-validation.md
Thank you to everyone working on PR #2171 and the IPU6 camera support.