SteamOS icon indicating copy to clipboard operation
SteamOS copied to clipboard

Legion Go S Per game profile TDP not automatically applying

Open Kurousagi132 opened this issue 7 months ago • 8 comments

Your system information

  • Steam client version: 1748914100
  • SteamOS version: 3.7.8
  • 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:

Per-game profile does not automatically apply custom TDP,

I have cyberpunk 2077 set to 20w in the per game profile, when it launches it stays at 33w when unplugged and 40w when plugged in.

Same for Cult of the Lambs I have it set to 14w in the per game profile but it stays at 33w when unplugged and 40w when plugged in.

This happens for every game i have on my Legion Go S

Steps for reproducing this issue:

  1. Start a game, set a custom TDP.
  2. Close the game and relaunch the game
  3. TDP stays at maximum despite custom TDP

Kurousagi132 avatar Jun 18 '25 11:06 Kurousagi132

This looks like a steamos-manager/Steam client interaction bug to me. I have a per-game profile set for Elden Ring at 15W on the slider. Steam logs show:

[2025-06-18 10:17:21] Set tdp limit enabled: 1
[2025-06-18 10:17:21] Commit tdp limit update: 1 - 33
[2025-06-18 10:17:21] Set tdp limit: 15
[2025-06-18 10:17:21] Commit tdp limit update: 1 - 15
[2025-06-18 10:17:21] Set manual gpu clock enabled: 0
[2025-06-18 10:17:21] Set manual gpu clock hz: 2200
[2025-06-18 10:17:21] Set platform performance profile: custom
[2025-06-18 10:17:21] YldSetPlatformPerformanceProfile: skipping set as steamos-manager is already in the desired state: custom -> custom

after entering a game, while sysfs reports:

deck@legion-go-s ~> cat /sys/class/firmware-attributes/lenovo-wmi-other-0/attributes/ppt_pl*/current_value
33
33
33
and dbus-monitor shows:
signal time=1750267181.061769 sender=org.freedesktop.DBus -> destination=:1.120 serial=4294967295 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.120"
signal time=1750267182.082396 sender=:1.31 -> destination=(null destination) serial=164 path=/org/ayatana/NotificationItem/steam/Menu; interface=com.canonical.dbusmenu; member=LayoutUpdated
   uint32 2267
   int32 0
method call time=1750267182.757488 sender=:1.31 -> destination=:1.5 serial=165 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=Set
   string "com.steampowered.SteamOSManager1.TdpLimit1"
   string "TdpLimit"
   variant       uint32 33
method call time=1750267182.757533 sender=:1.31 -> destination=:1.5 serial=166 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=Set
   string "com.steampowered.SteamOSManager1.TdpLimit1"
   string "TdpLimit"
   variant       uint32 15
method call time=1750267182.757632 sender=:1.31 -> destination=:1.5 serial=167 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=Set
   string "com.steampowered.SteamOSManager1.GpuPerformanceLevel1"
   string "GpuPerformanceLevel"
   variant       string "auto"
method call time=1750267182.757647 sender=:1.31 -> destination=:1.5 serial=168 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=Set
   string "com.steampowered.SteamOSManager1.GpuPerformanceLevel1"
   string "ManualGpuClock"
   variant       uint32 2200
error time=1750267182.758444 sender=:1.5 -> destination=:1.31 error_name=org.freedesktop.DBus.Error.Failed reply_serial=168
   string "Invalid argument (os error 22)"
signal time=1750267182.758677 sender=:1.5 -> destination=(null destination) serial=541 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "com.steampowered.SteamOSManager1.GpuPerformanceLevel1"
   array [
      dict entry(
         string "GpuPerformanceLevel"
         variant             string "auto"
      )
   ]
   array [
   ]
signal time=1750267182.758957 sender=:1.5 -> destination=(null destination) serial=542 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "com.steampowered.SteamOSManager1.GpuPerformanceLevel1"
   array [
      dict entry(
         string "GpuPerformanceLevel"
         variant             string "auto"
      )
   ]
   array [
   ]
method return time=1750267182.758993 sender=:1.5 -> destination=:1.31 serial=543 reply_serial=167
signal time=1750267182.912241 sender=:1.5 -> destination=(null destination) serial=545 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "com.steampowered.SteamOSManager1.TdpLimit1"
   array [
      dict entry(
         string "TdpLimit"
         variant             uint32 33
      )
   ]
   array [
   ]
method return time=1750267182.912285 sender=:1.5 -> destination=:1.31 serial=546 reply_serial=166
signal time=1750267183.068939 sender=:1.5 -> destination=(null destination) serial=547 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "com.steampowered.SteamOSManager1.TdpLimit1"
   array [
      dict entry(
         string "TdpLimit"
         variant             uint32 33
      )
   ]
   array [
   ]
method return time=1750267183.068979 sender=:1.5 -> destination=:1.31 serial=548 reply_serial=165
signal time=1750267183.069989 sender=:1.5 -> destination=(null destination) serial=549 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "com.steampowered.SteamOSManager1.TdpLimit1"
   array [
      dict entry(
         string "TdpLimit"
         variant             uint32 33
      )
   ]
   array [
   ]
signal time=1750267183.070760 sender=:1.5 -> destination=(null destination) serial=550 path=/com/steampowered/SteamOSManager1; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "com.steampowered.SteamOSManager1.TdpLimit1"
   array [
      dict entry(
         string "TdpLimit"
         variant             uint32 33
      )
   ]
   array [
   ]
signal time=1750267183.787034 sender=:1.31 -> destination=(null destination) serial=169 path=/org/ayatana/NotificationItem/steam/Menu; interface=com.canonical.dbusmenu; member=LayoutUpdated
   uint32 2297
   int32 0

matte-schwartz avatar Jun 18 '25 17:06 matte-schwartz

Is there any updates on this issue ?

I can confirm with Steam/SySFS logs that I got the exact same behaviour. What would the best workaround for now, SimpleDeckyTDP or HandHeld Daemon ?

morepixel-git avatar Jul 21 '25 11:07 morepixel-git

I'm pretty sure it's similar to this issue so no updates unfortunately. Not sure about a workaround either, sorry.

matte-schwartz avatar Jul 21 '25 16:07 matte-schwartz

Hi, do you have any updates on this issue? I thought it had been resolved, but it's no longer working. The per-game profile is saved, the TDP set to 20W is displayed, but it's not applied when launching games. I don't know if the problem applies to all games.

Legion GO S Z2 GO 16GB White

Steam on Main et Steam Client on Beta

Thanks

moi952 avatar Aug 25 '25 17:08 moi952

I have a theory on what's happening after looking into this more this morning, waiting to get a Steam developer's input on it

matte-schwartz avatar Aug 25 '25 18:08 matte-schwartz

Having the same problem on both my steam deck and my legion go S Z1 extreme and it effects all settings not just TDP the frame rate limiter and GPU clocks also default every time I start a game it’s very annoying every time I start a game I have to change tdp, and frame rate

presstart2begn avatar Aug 27 '25 10:08 presstart2begn

Hello, this problem has been going on for months, and there's still no resolution planned? Do you plan to fix it someday? Thanks

moi952 avatar Oct 30 '25 00:10 moi952

I can confirm this issue, it's really annoying

lukas346 avatar Nov 07 '25 12:11 lukas346