Sony USB Wireless Adapter causing audio to disappear [Solved]
PirateYarr last edited by
I just registered to make this post in an effort to help others in the same situation. Hopefully this post will be visible when googling something like "Retropie no sound".
My RetroPie setup was working nicely as I was using it with wired XBOX controllers. One day, I thought I should get wireless controllers, so I got the PS4 controllers. I paired them with bluetooth to the Raspberry Pi 3's built-in bluetooth and found out the latency was not good enough - the input commands all had a delay which made them unusable for games that required quick reaction such as fighting games.
I then hooked the controllers up via USB to the Raspberry Pi, but still had a little bit of latency. It turns out the PS4 controllers have the lowest latency when being used in wireless mode so I got Sony's USB adapters which you pair the controllers to wirelessly, but the Raspberry sees them as USB controllers. Perfect - it worked nicely with low latency but then... the problem started.
System sound in both EmulationStation and game sound within games (NES, SNES, PSX etc.) is suddenly gone. No sound at all anywhere.
Sony's USB Wireless adapters for the PS4 controllers. These have built-in audio chips which the Raspberry Pi registers as audio devices. This causes Retropie to choose the USB audio device as its main audio device instead of using the built-in audio device which is used when you send audio out through the Raspberry Pi's ports (HDMI, 3.5 mm jack). Since the Sony Wireless USB Adapter isn't connected to any speaker (it doesn't work with the PS4's built-in speakers in Retropie), the sound has nowhere to go and thus the silence.
Change the audio device priority in Raspbian. I followed this guide: https://sudomod.com/forum/viewtopic.php?t=144
I just did it in "reverse", since the guide shows how to use a USB device as the default audio device which is the opposite of what I wanted to do.
Basically, use the "lsusb" command to see which USB devices the Raspberry Pi detects.
Then use the "cat /proc/asound/modules" command to check which priority the system has for audio devices. If the USB adapter is before the built-in audio device, then there's the problem.
To fix that problem, use "sudo nano /etc/modprobe.d/alsa-base.conf" to create a new config file.
Finally, make sure the config file contains something similar to:
options snd_usb_audio index=0
options snd_bcm2835 index=1
options snd slots=snd-bcm2835,snd-usb-audio
The snd-bcm2835 being infront of snd-usb-audio corrects the priority and the sound works again.
There are numerous places one can fiddle with audio settings in EmulationStation, RetroPie's different config sections and in actual config files on the Raspberry Pi containing RetroPie. I followed several tips where one was supposed to be able to force audio through HDMI and etc. which is futile since the system uses an audio device which is not physically connected to any of those ports.
This solution was the first one that worked for me, after about 3 hours of frustration. I hope this helps someone.