Skip to content

[Feature Request] SteamOS Automatic hardware detection #2585

Description

@kahnakha

Hello All,

After using SteamOS for quite some time now on many different systems, including SteamDeck, ROG Ally, and an all AMD HTPC setup similar to the Steam Machine in terms of hardware specs, it came to me that for some reason SteamOS treats all of these systems as Steam Deck(even including the Steam Machine), and that's an issue for some games, where users are oftenly locked behind some limitations, for example not the full advanced graphical settings are available, or not the full screen resolution options are available, because the OS "thinks" it's a Steam Deck, thus limiting some games features to ensure the smoothest gameplay experience on the platform.
I'm pretty sure, you can already see where the issue is.

The workaround:
Game Launch Options: SteamDeck=0 %command%

This is "telling" the game that your system is in fact not a Steam Deck so that you can benefit from all ingame available settings, and features, so you can also utilize the available hardware.

All of this is especially true for the Steam Machine, as it's way more capable then the Steam Deck, and we can only expect that most people simply want to start the system, and play their favorite titles without even thinking about all that, thus we cannot expect those same people to also be aware of these launch options, plus, they also don't always work too.

The solution:
Fully automatic, and hardware-aware process, so SteamDeck=0 is only applied on non-Deck systems, while real Steam Deck hardware keeps its default behavior.
The clean way to do this is to conditionally set the environment variable at login, based on actual hardware detection.

What we know is that a real Steam Deck exposes identifiable system info via:
DMI/BIOS strings (/sys/class/dmi/id/*)
Vendor/model fields like: Valve Jupiter (LCD Deck) or Galileo (OLED Deck)

So we can check those and decide:
Is it a Real Deck? Yes, then keep SteamDeck=1
Anything else, force SteamDeck=0

Example of a detection script:

#!/bin/bash

# Detect if running on actual Steam Deck hardware
if grep -qiE "valve|jupiter|galileo" /sys/class/dmi/id/{sys_vendor,board_vendor,product_name,board_name} 2>/dev/null; then
    export SteamDeck=1
else
    export SteamDeck=0
fi

Example script file name: steamdeck-detect.sh

And then just hook it into the environment nano ~/.profile
source ~/.config/profile.d/steamdeck-detect.sh

All of this can also be introduced as a new feature as a trigger on the Steam UI, or in Gamescope, so that people can decide if they want to use the Deck profile, or the Desktop profile for their games, without the need of manually typing any commands anywhere.

Please let me know what you think, and if this is even a feasible request.
Thank You in advance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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