Sound issues in Team Fortress 2

I’ve been experiencing a sound glitch in TF2 wherein any played sound or music repeats after about a half-second delay in worse quality. I thought that this issue might be related to PulseAudio, but none of the fixes I tried worked, so I decided to uninstall PulseAudio entirely after making a system snapshot. That didn’t fix the problem, so I restored the pre-uninstall snapshot.

This is with the game running natively; running TF2 in Steam Linux Runtime introduces framerate drops without affecting the broken audio, running the game in Proton creates graphical issues on top of framerate ones (also not fixing the sound).

Also of note is the fact that TF2 is the only Source game affected by this. Left 4 Dead 2, Garry’s Mod and Fistful of Frags run without issues.

inxi printout:

#################### inxi -Fxzc0 ########################

System:    Kernel: 5.8.1-3-MANJARO x86_64 bits: 64 compiler: N/A Desktop: KDE Plasma 5.19.4 
           Distro: Manjaro Linux 
Machine:   Type: Portable System: Dell product: Inspiron 3721 v: A05 serial: <filter> 
           Mobo: Dell model: 0N7THG v: A00 serial: <filter> UEFI: Dell v: A05 date: 01/03/2013 
CPU:       Topology: Dual Core model: Intel Core i5-3337U bits: 64 type: MT MCP arch: Ivy Bridge 
           rev: 9 L2 cache: 3072 KiB 
           flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 14373 
           Speed: 2186 MHz min/max: 800/2700 MHz Core speeds (MHz): 1: 2186 2: 2376 3: 2395 
           4: 2394 
Graphics:  Device-1: Intel 3rd Gen Core processor Graphics vendor: Dell driver: i915 v: kernel 
           bus ID: 00:02.0 
           Device-2: AMD Thames [Radeon HD 7500M/7600M Series] vendor: Dell driver: radeon 
           v: kernel bus ID: 01:00.0 
           Device-3: Realtek Integrated Webcam HD type: USB driver: uvcvideo bus ID: 1-1.4:5 
           Display: x11 server: X.Org 1.20.8 driver: intel,radeon FAILED: ati 
           unloaded: modesetting resolution: 1600x900~60Hz 
           OpenGL: renderer: Mesa DRI Intel HD Graphics 4000 (IVB GT2) v: 4.2 Mesa 20.1.5 
           direct render: Yes 
Audio:     Device-1: Intel 7 Series/C216 Family High Definition Audio vendor: Dell 
           driver: snd_hda_intel v: kernel bus ID: 00:1b.0 
           Sound Server: ALSA v: k5.8.1-3-MANJARO 
Network:   Device-1: Realtek RTL810xE PCI Express Fast Ethernet vendor: Dell driver: r8169 
           v: kernel port: 2000 bus ID: 07:00.0 
           IF: enp7s0 state: down mac: <filter> 
           Device-2: Qualcomm Atheros AR9485 Wireless Network Adapter vendor: Dell driver: ath9k 
           v: kernel port: 2000 bus ID: 08:00.0 
           IF: wlp8s0 state: up mac: <filter> 
           Device-3: Qualcomm Atheros type: USB driver: btusb bus ID: 1-1.1:8 
Drives:    Local Storage: total: 931.51 GiB used: 247.31 GiB (26.5%) 
           ID-1: /dev/sda vendor: Seagate model: ST1000LM024 HN-M101MBB size: 931.51 GiB 
Partition: ID-1: / size: 906.94 GiB used: 247.17 GiB (27.3%) fs: ext4 dev: /dev/sda2 
Swap:      ID-1: swap-1 type: partition size: 8.80 GiB used: 145.2 MiB (1.6%) dev: /dev/sda3 
Sensors:   System Temperatures: cpu: 54.0 C mobo: N/A gpu: radeon temp: 47 C 
           Fan Speeds (RPM): cpu: 3200 
Info:      Processes: 231 Uptime: 2d 2h 36m Memory: 7.65 GiB used: 4.50 GiB (58.8%) Init: systemd 
           Compilers: gcc: 10.1.0 Packages: 1350 Client: Unknown Client: krunner inxi: 3.1.05 

journalctl printout:

Aug 27 21:49:34 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:49:59 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2575                                              
Aug 27 21:49:59 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2576 and reason "Playing a game"                                                            
Aug 27 21:49:59 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:50:04 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2576 and reason "Playing a game"                                                             
Aug 27 21:50:04 HOST org_kde_powerdevil[1401]: powerdevil: Added change screen settings                                                        
Aug 27 21:50:04 HOST org_kde_powerdevil[1401]: powerdevil: Added interrupt session                                                             
Aug 27 21:50:04 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:50:14 HOST plasmashell[1290]: file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:285:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
Aug 27 21:50:14 HOST plasmashell[1290]: file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:285:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
Aug 27 21:50:30 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2576                                              
Aug 27 21:50:30 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2577 and reason "Playing a game"                                                            
Aug 27 21:50:30 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:50:30 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2578 and reason "Playing a game"                                                            
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2577 and reason "Playing a game"                                                             
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Added change screen settings                                                        
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Added interrupt session                                                             
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2578 and reason "Playing a game"                                                             
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Added change screen settings                                                        
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Added interrupt session                                                             
Aug 27 21:50:35 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:50:43 HOST kwin_x11[1257]: qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 48988, resource id: 14680672, major code: 3 (GetWindowAttributes), minor code: 0
Aug 27 21:50:43 HOST kwin_x11[1257]: qt.qpa.xcb: QXcbConnection: XCB error: 9 (BadDrawable), sequence: 48989, resource id: 14680672, major code: 14 (GetGeometry), minor code: 0
Aug 27 21:50:43 HOST plasmashell[1290]: file:///usr/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/Task.qml:285:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
Aug 27 21:51:00 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2577                                              
Aug 27 21:51:00 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2579 and reason "Playing a game"                                                            
Aug 27 21:51:00 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:51:04 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2579 and reason "Playing a game"                                                             
Aug 27 21:51:04 HOST org_kde_powerdevil[1401]: powerdevil: Added change screen settings                                                        
Aug 27 21:51:04 HOST org_kde_powerdevil[1401]: powerdevil: Added interrupt session                                                             
Aug 27 21:51:04 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:51:30 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2579                                              
Aug 27 21:51:30 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2580 and reason "Playing a game"                                                            
Aug 27 21:51:30 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:51:33 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2580                                              
Aug 27 21:51:33 HOST org_kde_powerdevil[1401]: powerdevil: It was only scheduled for inhibition but not enforced yet, just discarding it       
Aug 27 21:51:35 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2580 and reason "Playing a game"                                                             
Aug 27 21:51:35 HOST org_kde_powerdevil[1401]: powerdevil: By the time we wanted to enforce the inhibition it was already gone; discarding it  
Aug 27 21:52:23 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2581 and reason "Playing a game"                                                            
Aug 27 21:52:28 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2581 and reason "Playing a game"                                                             
Aug 27 21:52:28 HOST org_kde_powerdevil[1401]: powerdevil: Added change screen settings                                                        
Aug 27 21:52:28 HOST org_kde_powerdevil[1401]: powerdevil: Added interrupt session                                                             
Aug 27 21:52:28 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:52:53 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2581                                              
Aug 27 21:52:53 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2582 and reason "Playing a game"                                                            
Aug 27 21:52:53 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:52:58 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2582 and reason "Playing a game"                                                             
Aug 27 21:52:58 HOST org_kde_powerdevil[1401]: powerdevil: Added change screen settings                                                        
Aug 27 21:52:58 HOST org_kde_powerdevil[1401]: powerdevil: Added interrupt session                                                             
Aug 27 21:52:58 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:53:06 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2582                                              
Aug 27 21:53:06 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:54:03 HOST org_kde_powerdevil[1401]: powerdevil: Scheduling inhibition from ":1.18" "My SDL application" with cookie 2583 and reason "Playing a game"                                                            
Aug 27 21:54:08 HOST org_kde_powerdevil[1401]: powerdevil: Enforcing inhibition from ":1.18" "My SDL application" with cookie 2583 and reason "Playing a game"                                                             
Aug 27 21:54:08 HOST org_kde_powerdevil[1401]: powerdevil: Added change screen settings                                                        
Aug 27 21:54:08 HOST org_kde_powerdevil[1401]: powerdevil: Added interrupt session                                                             
Aug 27 21:54:08 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:54:13 HOST org_kde_powerdevil[1401]: powerdevil: Releasing inhibition with cookie  2578                                              
Aug 27 21:54:13 HOST org_kde_powerdevil[1401]: powerdevil: Can't contact ck                                                                    
Aug 27 21:54:13 HOST kwin_x11[1257]: qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 50277, resource id: 14680673, major code: 3 (GetWindowAttributes), minor code: 0
Aug 27 21:54:13 HOST kwin_x11[1257]: qt.qpa.xcb: QXcbConnection: XCB error: 9 (BadDrawable), sequence: 50278, resource id: 14680673, major code: 14 (GetGeometry), minor code: 0
Aug 27 21:54:13 HOST kwin_x11[1257]: kwin_core: Compositing is not possible

Hi! Linux noob, but I’m also a linux gamer.

I found someone on TF2’s proton page who had the same audio issue, apparently enabling -nojoy should fix it. About the graphical issues though, it might be related to the AMD drivers which I’ve heard cause a lot of problems for a lot of people on linux gaming. My best suggestion would probably be switching it out for something else (?) (really not helpful I know).

Other than those, my final recommendation would be leaving a report on protons TF2 page (which only has a bronze rating at the moment). Hopefully that provides anything you didn’t already know.

Thank you for your advice, but unfortunately enabling -nojoy didn’t seem to do anything for the audio doubling.

Also, I’d like to point out that the game runs fine natively, it’s just the sound that doesn’t work properly. The graphical issues only come up when I enable Proton, and even then they’re mostly limited to the menus and in-game text.

Yeah people who ran it proton said the same thing. Might have something to do with VAC or just TF2 being a really old multiplayer. I think it’s really just on valve’s end.

I’ve played TF2 for probably nearly a decade and whenever there’s a “weird” issue I simply delete my autoexec.cfg file and start anew. This should be in ~/.steam/SteamApps/common/Team Fortress 2/tf/cfg

Have you tinkered with the game’s options at all? I mean popular settings like viewmodel_fov and so on.

If I were you I’d give a fresh install a try. TF2 has a settings folder that you can delete and start a “fresh” install (uninstall - reinstall after deleting the folder). TF2’s AppID on Steam is 440, so you’re looking for that folder, not one called TF2 or similar. You should be able to find this in ~.local/share/Steam/userdata and then your own profile and then TF2’s ID 440. Make sure you remove that subfolder before reinstalling, and also make sure that SteamCloud is disabled at that point.

Strangely enough, the autoexec.cfg file appears to be missing entirely, even after doing a fresh reinstall and validating the files. I did remove the \userdata subfolder before reinstalling and the Steam Cloud syncronization is now turned off for this game. The audio remained the same as before.

As for the tinkering, I’ve done some light modification on my previous Win7 installation of the game, some of which had carried over to the current one (binds, viewmodel_fov), but nothing too major.

The autoexec.cfg file simply saves the client-side commands for a game, but you need to create it (so don’t worry that you don’t have one, that just means you never created or downloaded one).

Just to double check: had you turned Steam Cloud off before deleting ~.local/share/Steam/userdata/your_profile/440 and then reinstalling the game? The point is to avoid config files being carried over installations.

If the above doesn’t work you can check your config folder—if you don’t know where it is you can access it from within Steam, simply right-click on TF2 > Properties > Browse Local Files, or something like that, I’m talking from memory). Any command starting with snd_ is related to sound configurations. I hope one (or more) of them are the cause of your issue :crossed_fingers: