Skip to content

Steam Controller conflicting with Steam Deck #13243

@tzainten

Description

@tzainten

Your system information

  • Steam client version: 1778281814
  • SteamOS version: 3.7.25
  • Opted into Steam client beta?: No
  • Opted into SteamOS beta?: No
  • Have you checked for updates in Settings > System?: Yes

Please describe your issue in as much detail as possible:

I expected to have smooth input on Remote Play with my external controller. This does not happen.

Despite 0% Packet Loss and 0% Frame Loss over Wired Ethernet, Joystick Input is extremely prone to input loss.

NOTE: Using this modified script to disable the internal Steam Deck Controller completely solves the issue.

Original: https://github.com/farmstrong8/steamdeck-controller-switcher

#!/bin/bash

# Steam Deck Controller Toggle Script
# Disables/enables the internal Steam Deck controller via USB authorization
# Works on any Steam Deck by dynamically finding the controller

LOG_FILE="$HOME/.deck-controller-toggle.log"

log_message() {
    echo "$(date): $1" >> "$LOG_FILE"
}

find_deck_usb_path() {
    for device in /sys/bus/usb/devices/*; do
        if [ -f "$device/product" ] && [ -f "$device/removable" ]; then
            product_name=$(cat "$device/product" 2>/dev/null)
            # The internal Steam Deck controller is named "Steam Controller" so also check if it's "not removable"
            removable_status=$(cat "$device/removable" 2>/dev/null)
            if [[ "$product_name" == *"Steam Controller"* ]] && [[ "$removable_status" == *"fixed"* ]]; then
                echo "$device"
                return 0
            fi
        fi
    done
    return 1
}

disable_controller() {
    DECK_PATH=$(find_deck_usb_path)
    
    if [ -z "$DECK_PATH" ]; then
        log_message "ERROR: Could not find Steam Deck controller"
        echo "✗ Error: Steam Deck controller not found"
        exit 1
    fi
    
    if [ ! -f "$DECK_PATH/authorized" ]; then
        log_message "ERROR: Could not find authorized file at $DECK_PATH"
        echo "✗ Error: USB authorization not available"
        exit 1
    fi
    
    # Deauthorize the USB device (0 = disabled)
    echo 0 | sudo tee "$DECK_PATH/authorized" > /dev/null
    
    log_message "Deck controller DISABLED (path: $DECK_PATH)"
    echo "✓ Steam Deck controller disabled"
}

enable_controller() {
    DECK_PATH=$(find_deck_usb_path)
    
    if [ -z "$DECK_PATH" ]; then
        log_message "ERROR: Could not find Steam Deck controller"
        echo "✗ Error: Steam Deck controller not found"
        exit 1
    fi
    
    if [ ! -f "$DECK_PATH/authorized" ]; then
        log_message "ERROR: Could not find authorized file at $DECK_PATH"
        echo "✗ Error: USB authorization not available"
        exit 1
    fi
    
    # Authorize the USB device (1 = enabled)
    echo 1 | sudo tee "$DECK_PATH/authorized" > /dev/null
    
    log_message "Deck controller ENABLED (path: $DECK_PATH)"
    echo "✓ Steam Deck controller enabled"
}

case "$1" in
    disable)
        disable_controller
    ;;
    enable)
        enable_controller
    ;;
    *)
        echo "Usage: $0 {disable|enable}"
        exit 1
    ;;
esac

Steps for reproducing this issue:

  1. Plug Steam Controller into the Steam Deck
  2. Remote Play a game using a separate PC as the Host
  3. Hold joystick in one direction to rotate 3D Camera (or any other visual way to show constant joystick movement)
  4. --> Notice skipping and loss of input despite 0% Packet Loss and 0% Frame Loss

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions