Fix Crackling Sound and Low FPS in Games on Pop!_OS

-
fix crackling sound low FPS Pop!_OS

Gaming on Linux has come a long way, with Pop!_OS standing out as a polished, performance-focused distribution. Proton enables thousands of Windows titles to run seamlessly, but occasional hiccups still appear. Two of the most common frustrations are crackling audio in Proton games and unexpectedly low frame rates in demanding titles like Counter-Strike 2. This guide walks you through targeted fixes for both problems, helping you get back to smooth, clear gameplay.

Fixing Crackling Sound in Proton Games on Pop!_OS

Crackling, popping, or static noises during gameplay can ruin immersion. These audio artifacts are usually caused by buffer underruns where the sound server doesn’t receive data fast enough. Pop!_OS relies on PipeWire for audio, which generally offers low-latency performance, but certain Proton configurations can expose mismatches. Below are proven troubleshooting steps to resolve the issue.

Check Your Audio Server Configuration

First, verify whether your system is running PipeWire or PulseAudio. Open a terminal and run pactl info. Look for the ‘Server Name’ line. If it says ‘PulseAudio (on PipeWire X.X.X)’ you are using PipeWire’s PulseAudio compatibility layer, which is the default on Pop!_OS 22.04 and newer.

In rare cases, a full PulseAudio installation might be necessary for stubborn games. You can switch by installing pulseaudio and its Volume Control (pavucontrol), then disabling PipeWire's Pulse service. However, this is a last resort because PipeWire handles Bluetooth audio and desktop integration better. Most users will find success tuning PipeWire instead.

Adjust Audio Latency and Sampling Rate

Buffer underruns often result from latency settings that are too low for Proton's translation overhead. Tweaking the PulseAudio environment variable PULSE_LATENCY_MSEC can help. In Steam, right-click the problematic game, choose Properties, and under Launch Options add:

PULSE_LATENCY_MSEC=60 %command%

This forces a 60 ms latency buffer, giving the audio pipeline more headroom. Some games may require higher values like 100 ms. If you still hear crackling, test different settings.

Sampling rate mismatches also trigger audio stutter. Edit PipeWire's configuration file at /usr/share/pipewire/pipewire.conf (or copy to ~/.config/pipewire/) and ensure the default clock rate matches your hardware. For example:

context.properties = {
    default.clock.rate = 48000
    default.clock.allowed-rates = [ 44100 48000 ]
}

Restart PipeWire with systemctl --user restart pipewire pipewire-pulse and test the game.

Switch Audio Output Modules

Proton sometimes struggles with pulseaudio's module-stream-restore. Temporarily set the sink to use module-null-sink can bypass routing issues, though it's a diagnostic step. Install pavucontrol and while the game is running, confirm the correct output device is selected and that no other applications are hogging audio. Unmute all channels and set volume to a reasonable level.

Use Proton-GE and Environment Variables

Custom Proton builds like GloriousEggroll's Proton-GE often include audio patches pulled from newer Wine versions. Install ProtonUp-Qt to add Proton-GE to Steam, then force the game to use it. Additionally, launch options like WINEDLLOVERRIDES="xaudio2_7=n,b" %command% force native audio libraries over Proton's built-in ones. Combined with PULSE_LATENCY_MSEC=60, this resolves many obscure crackling cases.

Boosting CS2 FPS on Pop!_OS

Counter-Strike 2 is a competitive shooter where every frame counts. On Linux, performance can trail Windows due to driver maturity and translation layers, but Pop!_OS offers ample tuning opportunities. Follow these steps to maximize FPS.

Install the Latest Graphics Drivers

Pop!_OS makes driver management straightforward. For NVIDIA GPUs, open the Pop!_Shop or run sudo apt install system76-cuda-latest to get the most recent proprietary driver. For AMD users, ensure you're on the latest Mesa stack; Pop!_OS includes up-to-date mesa packages. After any driver update, reboot and confirm installation with glxinfo | grep "OpenGL version" or vulkaninfo.

Enable GameMode

GameMode optimises CPU governors, I/O priority, and process niceness automatically during gameplay. Install it with sudo apt install gamemode. Then in Steam, set CS2's launch options to gamemoderun %command%. Some users prefer to toggle the performance CPU governor manually: sudo cpupower frequency-set -g performance (install linux-tools-common first). GameMode handles this dynamically and is safer for laptops.

Optimise Launch Options for CS2

The right Steam launch options can significantly affect CS2's performance. Start with:

-vulkan -high -nojoy gamemoderun %command%

-vulkan bypasses OpenGL translation and uses the native Vulkan renderer, which generally yields higher fps on Linux. -high sets the process priority to high, though GameMode already manages this. -nojoy disables joystick support, freeing a tiny amount of resources. Avoid -dxlevel flags as they are irrelevant to Vulkan.

Tweak In-Game Settings

Not all settings impact frame rate equally. In CS2's Video settings, set Shadow Quality to Low or Medium, Shader Detail to Low, and turn off Effects Detail and Texture Streaming. Disable V-Sync. Use 4:3 aspect ratio with a lower resolution if you need every extra frame. Keeping Multisampling Anti-Aliasing Mode at 2x or off helps on mid-range hardware. Test each change in a Deathmatch server to gauge impact.

Disable Compositing and Background Services

Desktop compositors like GNOME's Mutter can add frame judder. Pop!_OS uses GNOME, and while it does not have a simple toggle to disable compositing globally, you can switch to a window manager that bypasses it for full-screen games. Install gamemode as it disables compositing through a GNOME Shell extension. Also close resource-heavy background applications such as browsers, Discord, and file indexers before launching CS2.

Advanced Kernel and System Tweaks

For users comfortable with low-level adjustments, the Liquorix kernel prioritises responsiveness and throughput for desktop and gaming. Add the Liquorix PPA and install it. Additionally, modifying kernel parameters can reduce input lag: edit /etc/default/grub and append mitigations=off to disable CPU vulnerability mitigations at a slight security cost for better performance. Remember to run sudo update-grub afterwards. Use sudo cpupower frequency-set -g performance to lock the CPU at maximum clock speed during sessions.

By combining these audio and performance fixes, you can transform Pop!_OS into a robust gaming platform. Tweak systematically, test each change, and enjoy the open-source advantage without compromise.

Frequently Asked Questions

Why do I hear crackling sound only in Proton games?

Crackling audio is usually caused by audio buffer underruns, where the system cannot feed audio data fast enough. Proton adds a translation layer for Windows audio APIs, which can increase latency. Adjusting PULSE_LATENCY_MSEC or switching to Proton-GE often resolves it.

Can I use PulseAudio instead of PipeWire on Pop!_OS?

Yes, you can install PulseAudio and disable PipeWire's Pulse modules if a game absolutely refuses to cooperate. However, this removes PipeWire's benefits for Bluetooth and screen sharing. First try latency tweaks and Proton-GE, as most games work fine with PipeWire.

What are the best launch options for CS2 on Linux?

Start with -vulkan -high -nojoy gamemoderun %command%. Some users also add DXVK_ASYNC=1 to reduce shader compilation stutter, but this is less necessary on modern hardware. Avoid DirectX-specific flags.

Will disabling Spectre/Meltdown mitigations improve FPS?

Adding mitigations=off to the kernel command line can yield a small performance boost, especially on older CPUs. However, it reduces security. The gain is usually marginal in CS2, so only consider it if you are chasing every last frame.

Does GameMode automatically adjust CPU governor?

Yes, GameMode temporarily sets the CPU governor to performance when a game runs and restores it afterward. It also disables screen saver and, with the GNOME extension, disables compositing. It is the safest way to apply performance profiles without manual commands.

Leave A Reply