This issue tracks Linux bring-up and hardware enablement for:
Microsoft Surface Pro for Business 13in 12th Ed Intel
DMI SKU: Surface_Pro_for_Business_13in_12th_Ed_Intel_2103
CPU: Intel Core Ultra 5 335 / Panther Lake
ACPI platform ID: MSHW0743
The issue was originally opened from a CachyOS 6.19 live environment.
I later moved testing to a clean CachyOS 7.1.6 installation and use that as the reference baseline below.
Reference system:
Kernel: 7.1.6-1-cachyos
BIOS: Microsoft 12.15.143 (2026-06-17)
Secure Boot: disabled
No linux-surface patches.
No Surface-specific kernel parameters.
No manual module overrides.
Clean baseline
Working without Surface-specific patches:
- touchscreen
- pen
- Wi-Fi
- Bluetooth
- USB-C data
- USB-C display output
- speakers
- microphone
- normal ACPI lid-close detection
- Intel IPU7 PCI device / firmware initialization
Missing or incomplete:
- main battery / AC status
- Flex Keyboard / Type Cover
- touchpad
- reliable physical power/volume-button binding
- rear camera (OVTID858 / OV13858)
- front camera (SONY0681 / IMX681)
- IR camera (SMO55F0 / VD55G0)
- SSAM tablet-mode/POS client
- SSAM HID sensor endpoint
- suspend/resume validation
- device-specific audio tuning
The Surface Aggregator transport itself already works.
The machine exposes:
SAM controller:
MSHW0084
\_SB_.SSH_
Surface platform hub:
MSHW0743
\_SB_.WSID
MSHW0743 depends on the SAM controller but is missing from the current Surface Aggregator registry.
The camera hardware is very similar to the Surface Pro 11 Intel:
rear: OVTID858 / OV13858
front: SONY0681 / IMX681
IR: SMO55F0 / VD55G0
IPU7 itself already loads successfully. The initial camera problem is sensor enablement / graph integration rather than IPU7 firmware initialization.
Purpose of this issue
I am using this issue as a bring-up and discovery tracker.
The plan is to:
- identify the actual SP12 hardware differences;
- test one narrowly scoped change at a time;
- reuse existing SP11 work where appropriate;
- avoid copying SP11 assumptions that are not valid on SP12;
- keep kernel and userspace problems separate;
- post experimental results and patches here while the hardware behavior is still being characterized.
Once individual fixes are understood and reproducible, I intend to move them into separate PRs rather than turning this issue into one large SP12 patch set.
Relevant previous work:
-
Surface Pro 11 Intel experience:
[Data] Surface Pro 11 (Intel Core Ultra 7 266V, Business Model) - Partial support, mic still missing #1876
-
Surface Pro 11 Intel kernel work by Andre Gilerson:
Patch enabling speakers, mic, camera, suspend and hibernate, and touchpad configuration for surface pro 11 intel. kernel#164
-
Surface Pro 11 userspace/config work:
Patch enabling speakers, mic, camera, suspend and hibernate, and touchpad configuration for surface pro 11 intel. #1990
-
Surface Pro 10 camera work / IMX681 discussion:
patches: Add kernel 7.0 support with Surface Pro 10 camera patches #2156
Expected upstream split
The exact split may change as testing continues, but currently I expect roughly:
-
Surface Aggregator / MSHW0743
Small platform-registration change.
This should be reviewed independently from camera work.
-
MSHW0040 / soc_button_array
Deferred-probe fix for the physical buttons.
This is a generic input-driver/probe-order issue and should remain separate from the SP12 registry patch.
-
Rear camera / OV13858
Small kernel series:
OV13858 SP12 power/runtime-PM support
OVTID858 ipu-bridge configuration
The sensor driver already exists upstream.
-
Front camera / IMX681
Separate kernel series.
The IMX681 driver is based on Andre Gilerson's Surface Pro 11 implementation:
Patch enabling speakers, mic, camera, suspend and hibernate, and touchpad configuration for surface pro 11 intel. kernel#164
The SP12 version is being revalidated against the actual SP12 clock, regulator, reset, D-PHY, timing and gain behavior.
This should stay separate from the rear-camera series because it adds an entire new sensor driver and needs substantially more review.
-
libcamera / IMX681
Any sensor gain interpretation required by libcamera should go to libcamera itself, not into the kernel or a linux-surface kernel patch.
If the only required userspace change remains the IMX681 CameraSensorHelper, I would prefer a small upstream libcamera MR rather than a large linux-surface userspace workaround.
-
IR camera / VD55G0
Separate later work.
I do not want to carry the old experimental VD55G0 patch chain forward until the two visible cameras are stable.
-
Image quality / desktop integration
These will only become patches after the responsible layer is identified.
For example:
libcamera / SoftISP
PipeWire / WirePlumber
portal
GNOME Snapshot / libaperture
I do not want to add Surface-specific userspace workarounds before determining which layer actually owns a problem.
The goal of this issue is therefore first to establish:
what works unchanged
what hardware differs
what needs a kernel change
what needs a userspace change
what is already automatically handled by existing Linux components
Then each independently reviewable fix can move to the appropriate upstream project.
Current status (with patch series from below)
-
SSAM / battery / AC / platform profiles / thermals
-
Power and volume buttons
-
Touchscreen and Surface Pen
-
Flex Keyboard and touchpad, including detach / reattach
-
Wi-Fi and Bluetooth
-
USB-C data and display output
-
Speakers and microphone
-
Suspend and power-button resume
-
Tablet-mode switch and GNOME on-screen keyboard
-
Rear OV13858 camera, including correct orientation and privacy LED
-
Front IMX681 camera, including privacy LED and validated gain handling
-
GStreamer, PipeWire, GNOME Snapshot and browser camera support
-
Automatic display rotation — SAM HID sensor / IIO accelerometer still missing
-
Lid-open / keyboard wake
-
Flex Keyboard automatic Bluetooth provisioning
-
IR camera — intentionally out of current scope
-
Speaker high-volume acoustic tuning
-
Upstream IMX681 libcamera helper
-
Upstream generic libcamera GPU SoftISP artifact
-
Upstream the accepted SP12 kernel patches
Surface Pro 12 Intel — reviewable kernel PRs
The independently reviewable kernel changes resulting from this enablement work have now been split into draft PRs against v6.19-surface-devel.
Platform / input:
Camera:
The IMX681 PR is intentionally an RFC/coordination PR because its driver is substantially based on Andre Gilerson's Surface Pro 11 Intel work in linux-surface/kernel#164. The goal there is to converge on one shared SP11/SP12 driver with correct provenance and cross-device validation.
The rear-camera enablement itself is no longer being proposed as a separate SP12 power patch: the existing linux-surface OV13858 support was independently confirmed to probe and stream the SP12 rear camera on the packaged 6.19.8-surface-3 kernel. The remaining SP12 rear-camera changes are therefore limited to the generic bridge metadata correction in #174 and the mounting-rotation quirk in #175.
These PRs are intentionally split by logical problem/subsystem so they can be reviewed independently. This tracker remains the detailed bring-up/testing record.
This issue tracks Linux bring-up and hardware enablement for:
The issue was originally opened from a CachyOS 6.19 live environment.
I later moved testing to a clean CachyOS 7.1.6 installation and use that as the reference baseline below.
Reference system:
Clean baseline
Working without Surface-specific patches:
Missing or incomplete:
The Surface Aggregator transport itself already works.
The machine exposes:
MSHW0743 depends on the SAM controller but is missing from the current Surface Aggregator registry.
The camera hardware is very similar to the Surface Pro 11 Intel:
IPU7 itself already loads successfully. The initial camera problem is sensor enablement / graph integration rather than IPU7 firmware initialization.
Purpose of this issue
I am using this issue as a bring-up and discovery tracker.
The plan is to:
Once individual fixes are understood and reproducible, I intend to move them into separate PRs rather than turning this issue into one large SP12 patch set.
Relevant previous work:
Surface Pro 11 Intel experience:
[Data] Surface Pro 11 (Intel Core Ultra 7 266V, Business Model) - Partial support, mic still missing #1876
Surface Pro 11 Intel kernel work by Andre Gilerson:
Patch enabling speakers, mic, camera, suspend and hibernate, and touchpad configuration for surface pro 11 intel. kernel#164
Surface Pro 11 userspace/config work:
Patch enabling speakers, mic, camera, suspend and hibernate, and touchpad configuration for surface pro 11 intel. #1990
Surface Pro 10 camera work / IMX681 discussion:
patches: Add kernel 7.0 support with Surface Pro 10 camera patches #2156
Expected upstream split
The exact split may change as testing continues, but currently I expect roughly:
Surface Aggregator / MSHW0743
Small platform-registration change.
This should be reviewed independently from camera work.
MSHW0040 / soc_button_array
Deferred-probe fix for the physical buttons.
This is a generic input-driver/probe-order issue and should remain separate from the SP12 registry patch.
Rear camera / OV13858
Small kernel series:
The sensor driver already exists upstream.
Front camera / IMX681
Separate kernel series.
The IMX681 driver is based on Andre Gilerson's Surface Pro 11 implementation:
Patch enabling speakers, mic, camera, suspend and hibernate, and touchpad configuration for surface pro 11 intel. kernel#164
The SP12 version is being revalidated against the actual SP12 clock, regulator, reset, D-PHY, timing and gain behavior.
This should stay separate from the rear-camera series because it adds an entire new sensor driver and needs substantially more review.
libcamera / IMX681
Any sensor gain interpretation required by libcamera should go to libcamera itself, not into the kernel or a linux-surface kernel patch.
If the only required userspace change remains the IMX681 CameraSensorHelper, I would prefer a small upstream libcamera MR rather than a large linux-surface userspace workaround.
IR camera / VD55G0
Separate later work.
I do not want to carry the old experimental VD55G0 patch chain forward until the two visible cameras are stable.
Image quality / desktop integration
These will only become patches after the responsible layer is identified.
For example:
I do not want to add Surface-specific userspace workarounds before determining which layer actually owns a problem.
The goal of this issue is therefore first to establish:
Then each independently reviewable fix can move to the appropriate upstream project.
Current status (with patch series from below)
SSAM / battery / AC / platform profiles / thermals
Power and volume buttons
Touchscreen and Surface Pen
Flex Keyboard and touchpad, including detach / reattach
Wi-Fi and Bluetooth
USB-C data and display output
Speakers and microphone
Suspend and power-button resume
Tablet-mode switch and GNOME on-screen keyboard
Rear OV13858 camera, including correct orientation and privacy LED
Front IMX681 camera, including privacy LED and validated gain handling
GStreamer, PipeWire, GNOME Snapshot and browser camera support
Automatic display rotation — SAM HID sensor / IIO accelerometer still missing
Lid-open / keyboard wake
Flex Keyboard automatic Bluetooth provisioning
IR camera — intentionally out of current scope
Speaker high-volume acoustic tuning
Upstream IMX681 libcamera helper
Upstream generic libcamera GPU SoftISP artifact
Upstream the accepted SP12 kernel patches
Surface Pro 12 Intel — reviewable kernel PRs
The independently reviewable kernel changes resulting from this enablement work have now been split into draft PRs against v6.19-surface-devel.
Platform / input:
Camera:
The IMX681 PR is intentionally an RFC/coordination PR because its driver is substantially based on Andre Gilerson's Surface Pro 11 Intel work in linux-surface/kernel#164. The goal there is to converge on one shared SP11/SP12 driver with correct provenance and cross-device validation.
The rear-camera enablement itself is no longer being proposed as a separate SP12 power patch: the existing linux-surface OV13858 support was independently confirmed to probe and stream the SP12 rear camera on the packaged 6.19.8-surface-3 kernel. The remaining SP12 rear-camera changes are therefore limited to the generic bridge metadata correction in #174 and the mounting-rotation quirk in #175.
These PRs are intentionally split by logical problem/subsystem so they can be reviewed independently. This tracker remains the detailed bring-up/testing record.