nicknamenamenick
m2Giles
porkloin
Common Gaming Issues
Steam Logs¶
If you encounter issues with a game launching on Steam:
-
Open the game's properties and enter this launch option:
PROTON_LOG=1 %command% -
Launch the game
A log file should appear in your Home directory named after the game's application ID number.
Native Linux Port Versus Windows Version¶
Some Linux ports may have missing functionality or worse performance than on the Windows version running through Proton. However, there are scenarios where using the native port exclusively is your only option, and may even be desirable. If a Linux native game does not launch, then force the Legacy Runtime compatibility layer by going into the game's properties and selecting "Compatibility" then checking "Force the use of a specific Steam Play compatibility tool".
Valve & Source Engine Game Problems¶
Note
This only applies to specific games running on the Source engine.
Audio & Custom Content Bugs¶
Attention
Do not attempt to follow this workaround until you run into issues with audio or the specific scenario mentioned below regarding Left 4 Dead 2.
Missing voice lines or custom content not loading in Source games? SELinux is blocking MP3 decoding and other middleware because it executes heap memory.
This has also been confirmed to cause issues joining and hosting custom maps in Left 4 Dead 2.
Warning
Configuring SELinux is intended for advanced users and if used irresponsibly can break other components in your system and weaken the security of your device.
At your own risk
Open a host terminal and enter these 4 commands:
sudo su
cd /tmp
ausearch -c 'hl2_linux' --raw | audit2allow -M my-hl2linux
semodule -X 300 -i my-hl2linux.pp
Reboot your device
If you want to undo this change eventually:¶
Disable or remove the module.
Disable it:¶
semodule -X 300 -d my-hl2linux
Remove and delete it:¶
semodule -X 300 -r my-hl2linux
The .pp file should be in /root if you want to remove that.
Source Games Not Launching¶
If a 32-bit Source 1 engine game is not opening due to tmalloc libraries issues, then open a host terminal and enter:
Add the following as a launch option to the affected game in Steam:
LD_PRELOAD=/usr/lib/libtcmalloc_and_profiler.so.4 %command%
Delete libtcmalloc_minimal.so.x in the game's bin folder if present.
If this fails to fix it, then try forcing Proton Experimental in the game's properties.
Frame Rate Limiting Issues and Inconsistency¶
When using Gamescope, framerate limits can be applied in several ways. Unfortunately not all methods work for every enviroment, game, or hardware configuration.
Many inconsistencies can be observed, especially when applying framerate limits in desktop mode.
The tables below show the behavior of different framerate limiting methods.
Steam Game Mode (Deck OS / Game Mode session)¶
| Method | Setup steps | Requires V-Sync On In-Game? | Change limit without restarting game? | Latency | Preferred | Notes |
|---|---|---|---|---|---|---|
| Gamescope FPS limiter | Use Quick Access Menu > Performance > Framerate Limit | No | Yes | Meh | Preferred | Automatically turns v-sync on at driver-level whenever the framerate cap is enabled. Additional latency will be introduced. |
| MangoAPP (embedded) | N/A - doesn't work at all. | - | - | - | – | Frame limiter settings from mangoapp are ignored in game mode/deck mode. Use the slider or external mangohud instead. |
| MangoHUD (external) | Launch Options: MANGOHUD=1 %command% |
No | Yes | Meh | – | Set fps_limit=0,30,60,120... (0=no cap) in MangoHud.conf. May clash with MangoAPP. |
| DXVK/VKD3D runtime frame limiter | DXVK (D3D8/9/10/11): DXVK_FRAME_RATE={fps} %command%VKD3D-Proton (D3D12): VKD3D_FRAME_RATE={fps} %command% |
No | No | Best | – | Applies only to DXVK/VKD3D titles (no effect on native OpenGL or native Vulkan). |
Desktop Mode (GNOME / KDE)¶
| Method | Setup steps | Requires V-Sync On In-Game? | Change limit without restarting game? | Latency | Preferred | Notes |
|---|---|---|---|---|---|---|
| Gamescope FPS limiter | Launch Options: gamescope -r {fps} -- %command% / --framerate-limit {fps} |
Yes | Yes | Meh | – | Use gamescopectl debug_set_fps_limit {fps} to change the limiter value live without restarting. |
| MangoAPP (embedded) | Launch Options: gamescope --mangoapp -- %command% |
Yes | Yes | Meh | – | Caps are sometimes not effective. Set fps_limit=0,30,60,120... (0=no cap) in MangoHud.conf (or via MANGOHUD_CONFIG=...). Add show_fps_limit to preset to see in game. Change with ShiftL+F1. |
| MangoHUD (external) | Launch Options: MANGOHUD=1 gamescope -- %command% |
No | Yes | Meh | Preferred | Caps are almost always effective. Set fps_limit=0,30,60,120... (0=no cap) in MangoHud.conf (or via MANGOHUD_CONFIG=...). Add show_fps_limit to preset to see in game. Change with ShiftL+F1. |
| DXVK/VKD3D runtime frame limiter | DXVK (D3D8/9/10/11): DXVK_FRAME_RATE={fps} %command%VKD3D-Proton (D3D12): VKD3D_FRAME_RATE={fps} %command% |
No | No | Best | – | In-process/API-level caps; excellent timing, but you must restart to change. |
If your framerate limiter isn't working, the following steps can often help:
- Disable adaptive sync/VRR or remove the
--adaptive-syncflag from your gamescope args. - Set vsync in-game to "on".