I investigated Linux support for the Microsoft Surface series. The [1] is a nice website to check the specifications of the Surface series. According to the [2][3][4], I have the impression that users need to install the Surface-specific kernel to enable the camera and volume up/down buttons while the Surface Linux kernel project[2] is trying to push their patches into the upstream kernel project.
And if you care about repairability, iFixit’s page [5] may be helpful.
Edited: Added the reference of supporting status for each device and feature. [3]
[1] A list of Surface series: Devices Archives - SurfaceTip
[2] Linux kernel for Surface Devices: GitHub - linux-surface/linux-surface: Linux Kernel for Surface Devices
[3] Supported Devices and Features · linux-surface/linux-surface Wiki · GitHub
[4] Reddit - r/SurfaceLinux
[5] iFixit Microsoft Tablet devices