Sending Steam Deck output to a Laptop with USB-C Port

I’m genuinely not sure where to put this, I hope this is the right place.
I use a Dell XPS 9700 that has been retro-fit with the motherboard of a XPS 9710, it appears to have “four USB 3.2 Gen 2 Type-C Thunderbolt 3 ports with DisplayPort”. I would like to connect my Steam Deck with my laptop, so that I may send footage of me playing on the Steam Deck to OBS for streaming or recording. The desired end result would simply be to get the video input into OBS via any means possible.
I suppose this would reduce the strain that my laptop is under (as it doesn’t have to run the game), and allow me to use the Deck’s control scheme for games that I prefer to play with controllers. I have tried using Steam Remote Play, and it does work fairly well, but is also dependent on network connection and occasionally fluctuates. It also appears as a fullscreen window, which is acceptable but somewhat annoying when trying to record with extra OBS scenes.
I’m not sure where to even begin with this. I suppose the solution lies somewhere between connecting the Steam Deck to a monitor with a USB-C to USB-C cable and allowing the laptop to take video input. Most things I can find on the web either directly install OBS on the Deck or use a USB-C to DisplayPort output to plug the Deck into a dedicated monitor.
I started by just directly plugging in my Deck with two of the USB-C to USB-C cables I had on hand. Neither seem to have achieved anything beyond charging the Deck. I see these logs in journalctl:

kernel: usb usb2-port1: config error
kernel: ucsi_acpi USBC000:00: UCSI_GET_PDOS failed (-5)
kernel: ucsi_acpi USBC000:00: unknown error 0
kernel: ucsi_acpi USBC000:00: UCSI_GET_PDOS failed (-5)
kernel: ucsi_acpi USBC000:00: unknown error 0
kernel: ucsi_acpi USBC000:00: UCSI_GET_PDOS failed (-5)
kernel: ucsi_acpi USBC000:00: unknown error 0
kernel: usb usb2-port1: Cannot enable. Maybe the USB cable is bad?
kernel: usb usb2-port1: config error
kernel: usb usb2-port1: Cannot enable. Maybe the USB cable is bad?
kernel: usb usb2-port1: config error
kernel: usb usb2-port1: Cannot enable. Maybe the USB cable is bad?
kernel: usb usb2-port1: config error
kernel: usb usb2-port1: config error

I’m going to assume that these cables are not designed to take video output, but beyond that I’m stuck. How would I go about undertaking this task?

inxi -Fazy

It is worth noting in this inxi that the Intel Tiger Lake audio output is entirely nonfunctional. Attempting to play any audio with it will create a loud crackling sound on the top-left corner of the keyboard, then the screen will go black with the only sign of life being keyboard backlights. At this point a force shut-down is necessary. I use the Conextant in an external audio dongle for audio input and output.

System:
  Kernel: 6.6.19-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc avail: acpi_pm
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.6-x86_64
    root=UUID=9f1e15e1-145d-4d25-94c0-790195da9733 rw quiet apparmor=1
    security=apparmor udev.log_priority=3 sysrq_always_enabled=1 ibt=off
    iommu=soft snd_hda_intel.power_save=0 intel_iommu=igfx_off
  Desktop: KDE Plasma v: 5.27.11 tk: Qt v: 5.15.12 info: frameworks
    v: 5.115.0 wm: kwin_x11 vt: 2 dm: SDDM Distro: Manjaro base: Arch Linux
Machine:
  Type: Laptop System: Dell product: XPS 17 9710 v: N/A
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: Dell model: 0TXN0W v: A00 serial: <superuser required> part-nu: 0A5D
    uuid: <superuser required> UEFI: Dell v: 1.22.0 date: 08/11/2023
Battery:
  ID-1: BAT0 charge: 92.2 Wh (100.0%) condition: 92.2/95.1 Wh (97.0%)
    volts: 12.8 min: 11.4 model: SMP DELL 01RR3YM type: Li-poly serial: <filter>
    status: full
CPU:
  Info: model: 11th Gen Intel Core i7-11800H bits: 64 type: MT MCP
    arch: Tiger Lake gen: core 11 level: v4 note: check built: 2020
    process: Intel 10nm family: 6 model-id: 0x8D (141) stepping: 1
    microcode: 0x4E
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 640 KiB desc: d-8x48 KiB; i-8x32 KiB L2: 10 MiB desc: 8x1.2 MiB
    L3: 24 MiB desc: 1x24 MiB
  Speed (MHz): avg: 1519 high: 2094 min/max: 800/4600 scaling:
    driver: intel_pstate governor: powersave cores: 1: 1705 2: 1654 3: 1130
    4: 1514 5: 1541 6: 800 7: 1738 8: 1774 9: 1639 10: 1631 11: 2094 12: 1635
    13: 1292 14: 2057 15: 800 16: 1314 bogomips: 73744
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: gather_data_sampling mitigation: Microcode
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Enhanced / Automatic IBRS, IBPB: conditional,
    RSB filling, PBRSB-eIBRS: SW sequence
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel TigerLake-H GT1 [UHD Graphics] vendor: Dell driver: i915
    v: kernel arch: Gen-12.1 process: Intel 10nm built: 2020-21 ports:
    active: eDP-1 empty: DP-1, DP-2, DP-3, DP-4 bus-ID: 00:02.0
    chip-ID: 8086:9a60 class-ID: 0300
  Device-2: NVIDIA GA106M [GeForce RTX 3060 Mobile / Max-Q] vendor: Dell
    driver: nvidia v: 550.54.14 alternate: nouveau,nvidia_drm non-free: 545.xx+
    status: current (as of 2024-02; EOL~2026-12-xx) arch: Ampere code: GAxxx
    process: TSMC n7 (7nm) built: 2020-2023 pcie: gen: 1 speed: 2.5 GT/s
    lanes: 8 link-max: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 01:00.0
    chip-ID: 10de:2520 class-ID: 0300
  Device-3: Realtek Integrated_Webcam_HD driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 3-11:5 chip-ID: 0bda:5510
    class-ID: fe01 serial: <filter>
  Display: x11 server: X.Org v: 21.1.11 compositor: kwin_x11 driver: X:
    loaded: modesetting,nvidia unloaded: nouveau alternate: fbdev,nv,vesa
    dri: iris gpu: i915 display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x2400 s-dpi: 266 s-size: 366x229mm (14.41x9.02")
    s-diag: 432mm (17")
  Monitor-1: eDP-1 model: Sharp 0x14d6 built: 2020 res: 3840x2400 hz: 60
    dpi: 266 gamma: 1.2 size: 366x229mm (14.41x9.02") diag: 432mm (17")
    ratio: 16:10 modes: 3840x2400
  API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0
    drv: nvidia device: 1 drv: iris device: 3 drv: swrast gbm: drv: kms_swrast
    surfaceless: drv: nvidia x11: drv: iris inactive: wayland,device-2
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: intel mesa v: 24.0.2-manjaro1.1
    glx-v: 1.4 direct-render: yes renderer: Mesa Intel UHD Graphics (TGL GT1)
    device-ID: 8086:9a60 memory: 61.07 GiB unified: yes
  API: Vulkan v: 1.3.279 layers: 5 device: 0 type: discrete-gpu name: NVIDIA
    GeForce RTX 3060 Laptop GPU driver: nvidia v: 550.54.14
    device-ID: 10de:2520 surfaces: xcb,xlib device: 1 type: integrated-gpu
    name: Intel UHD Graphics (TGL GT1) driver: mesa intel v: 24.0.2-manjaro1.1
    device-ID: 8086:9a60 surfaces: xcb,xlib
Audio:
  Device-1: Intel Tiger Lake-H HD Audio vendor: Dell
    driver: sof-audio-pci-intel-tgl
    alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 00:1f.3
    chip-ID: 8086:43c8 class-ID: 0401
  Device-2: NVIDIA GA106 High Definition Audio vendor: Dell
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 8
    link-max: lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:228e class-ID: 0403
  Device-3: Conexant Systems (Rockwell) Hi-Res Audio
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 12 Mb/s
    lanes: 1 mode: 1.1 bus-ID: 3-3:7 chip-ID: 0572:1b08 class-ID: 0300
    serial: <filter>
  API: ALSA v: k6.6.19-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: JACK v: 1.9.22 status: off tools: N/A
  Server-2: PipeWire v: 1.0.3 status: active with: 1: pipewire-pulse
    status: active 2: pipewire-media-session status: active 3: pipewire-alsa
    type: plugin tools: pactl,pw-cat,pw-cli
Network:
  Device-1: Intel Tiger Lake PCH CNVi WiFi vendor: Rivet Networks
    driver: iwlwifi v: kernel bus-ID: 00:14.3 chip-ID: 8086:43f0 class-ID: 0280
  IF: wlp0s20f3 state: up mac: <filter>
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Bluetooth:
  Device-1: Intel AX201 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 3-14:6 chip-ID: 8087:0026
    class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 1 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: see --recommends
Drives:
  Local Storage: total: 1.86 TiB used: 690.2 GiB (36.2%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: KIOXIA model: KXG60PNV2T04 NVMe
    2048GB size: 1.86 TiB block-size: physical: 512 B logical: 512 B
    speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter> fw-rev: 10704103
    temp: 31.9 C scheme: GPT
Partition:
  ID-1: / raw-size: 64 GiB size: 61.94 GiB (96.79%) used: 41.36 GiB (66.8%)
    fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 284 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
  ID-3: /home raw-size: 1.73 TiB size: 1.7 TiB (98.37%)
    used: 648.85 GiB (37.2%) fs: ext4 dev: /dev/nvme0n1p4 maj-min: 259:4
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) zswap: yes
    compressor: zstd max-pool: 20%
  ID-1: swap-1 type: partition size: 68.79 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:3
Sensors:
  System Temperatures: cpu: 53.0 C mobo: 39.0 C
  Fan Speeds (rpm): cpu: 1702
Info:
  Memory: total: 64 GiB note: est. available: 62.53 GiB used: 10.96 GiB (17.5%)
  Processes: 407 Power: uptime: 1d 20h 25m states: freeze,mem,disk
    suspend: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 24.96 GiB services: org_kde_powerdevil,upowerd
    Init: systemd v: 255 default: graphical tool: systemctl
  Packages: 1716 pm: pacman pkgs: 1706 libs: 472 tools: pamac pm: flatpak
    pkgs: 0 pm: snap pkgs: 10 Compilers: clang: 16.0.6 gcc: 13.2.1 alt: 12
    Shell: Zsh v: 5.9 default: Bash v: 5.2.26 running-in: konsole inxi: 3.3.33

AFAIK, DP Alt Mode is output only, no input at all. The reason being it’s connected to GPU output instead of the display.

As mentioned, USB-C’s display Alt Modes are output only. There are two ways I can think of to do this though:

  1. Screen record on the Steam Deck and send that output to the laptop over USB-C based networking.
  2. Invest in a gadget that can capture a display signal, like a Genki Shadowcast or similar (the one I mentioned works by presenting as a webcam-like device, so very compatible with Linux)

It is the system which is not designed for display input - it has only output.

If you can configure your steam deck using rtsp to stream your display into the network then you can capture that stream with vlc using rtsp://ip.x.y.z:port

This is how one can create a surveillance camera using a pi-zero and the corresponding pi camera with raspicam.

How you would do that using a steamdeck - I have no idea.

To answer this question, if someone really wanted to do things entirely on Stream Deck hardware without additional hardware it is doable, although it will require dropping SteamOS for something else so you can install extra packages (SteamOS has an immutable root filesystem, so other than Flatpak apps you cannot install packages).

Basically you’d need some software to do the capture (that’s easy enough) as well as usbip on both machines you want to network through a USB cable. Or, to put it another way, I would very strongly recommend getting some kind of capture card to handle it for you - capture cards are pretty cheap, and probably of less value than the time it would take to set this up, as well as having to give up SteamOS.