Day: January 6, 2025

Crackling Audio on a DualSense Controller

I'm going to cut to the chase in case somebody finds this post searching for a solution to this problem: try a different USB cable.

Okay, so now that I've gotten the actual solution out of the way, a little bit of background on how I got there.

I use Arch Linux on the PC in my living room, which is my primary gaming device. A couple of years back I was having trouble with Bluetooth connectivity and I bought a couple of cheap 15' USB A-to-C cables on Amazon.

(By the way, I have a simple "try this first" recommendation for Bluetooth connectivity issues in Linux, too: rmmod btusb && modprobe btusb)

Up until this point those USB cables worked great. I've used them with an Xbox controller and various 8bitdo controllers and never had any issue.

Last month I picked up a DualSense controller, because I heard it's got some advanced features that certain first-party Sony games like Horizon Forbidden West and Ghost of Tsushima (and a few third-party games like Final Fantasy 7 Remake Intergrade) use.

So I fired up Horizon Forbidden West and instead of haptic feedback I got this godawful crackling audio out of my controller.

And I've never actually used a DualSense controller before, but it pretty clearly wasn't supposed to sound like that.

So, okay, it was the USB cable, and I've already told you it was the USB cable. But I didn't figure that out right away. As a Linux user, I have spent the past twenty years training myself to assume that any given issue I have with my computer is some weird Linux problem.

I did some reading. It seems that DualSense features are supported in Steam Play and work just fine on a Steam Deck.

But just because something works on the Deck doesn't mean it's going to work on my particular desktop Linux setup. As any PC gamer will tell you, there's a world of difference between a single hardware target and the countless variables of a general-purpose PC.

So I set to work, trying to figure out if it was a problem with Pipewire, or Proton, or my udev rules, or what.

It wouldn't be entirely accurate to say I spent weeks on it. It did take me weeks to figure it out, but it's not like I was working on it consistently. I have a job, a one-year-old, and not a whole hell of a lot of free time, and those times I did manage to spend some time troubleshooting the controller, after awhile I'd say "fuck it" and just play the damn game for awhile. (And if the audio crackling got to be too distracting, well, I could always just use a different controller. Or play a different game.)

But finally, scouring DuckDuckGo results for other posts by people who'd had similar problems, I found a Reddit post where somebody suggested trying a different USB cable.

And well, you know that fixed it because I already told you that back in the first sentence of this post.

I looked back at the Amazon listing for the USB cables I'd bought. The brand is iSeekerKit and the first thing I noticed is that it explicitly mentions they work with PS5 controllers. But on closer inspection I note that the listing specifically describes them as "Charger for PS5 Controller". It doesn't say anything about being a data cable for a PS5 controller. Pretty sneaky, iSeekerKit.

Anyway, I've ordered a new pack of 15' USB A-to-C cables, from a brand I've actually heard of (JSAUX). We'll see how they do.

I keep thinking of that new EU regulation requiring devices to standardize on USB-C for their charging connectors, and boy, they're gonna be mad when they find out a standardized connector isn't the same thing as a standardized cable.