Usually everything else works out of the box on linux but the audio. I think analog audio would work just fine but I always use digital audio over SPDIF or HDMI so that could be the reason why I have always some audio problems.
So I list here some common tips that I will not have to google those again in next time. As KDE is mine default desktop environment so there will be some specific tips for just KDE.
TIP 1 - Check that you have all ALSA related packages installed
I have installed these:
dpkg --get-selections | grep 'alsa'
alsa-base install
alsa-oss install
alsa-tools install
alsa-tools-gui install
alsa-utils install
alsamixergui install
alsaplayer-alsa install
alsaplayer-common install
alsaplayer-gtk install
cairo-dock-alsamixer-plug-in install
gstreamer0.10-alsa:amd64 install
gstreamer1.0-alsa:amd64 install
libalsaplayer0 install
libsox-fmt-alsa:amd64 install
TIP 2 - Check your GUI settings
Try to unmute channels and try to different audio devices. In KDE try to modify mixer and KDE audio settings.
TIP 3 - Disable PulseAudio server
Usually mine problems are solved when I disable pulseaudio or at least I have to do it to get it audio first working with Alsa.
So you don't have to totally remove pulseaudio you can disable it first.
If you need to remove it totally then purge the installation. Sometimes it may uninstall some dependencies that are needed, so be careful when purging it.
Disabling automatic spawning of PulseAudio server
Some users may prefer to manually start the PulseAudio server before running certain programs and then stop the PulseAudio server when they are finished. A simple way to accomplish this is to add or edit following file:
/home/<username>/.config/pulse/client.conf
and add or uncomment following attribute:
autospawn = no
If you want later undo this just comment that line:
#autospawn = no
or remove the file:
rm /home/<username>/.config/pulse/client.conf
autospawn = no
Now you can manually start the pulseaudio server with
$ pulseaudio --start
and stop it with
$ pulseaudio -k
If you have problems to kill pulseaudio then you can try following commands:
$ pkill -f pulseaudio
$ ps aux | grep pulse
You should now find that KDE audio settings are different for ALSA and PULSEAUDIO. When you stop/kill PULSEAUDIO then KDE's mixer and audio settings should view ALSA settings.
ALSA active (pulseaudio stopped)
PULSEAUDIO active
TIP 4 - Found your working sound cards and devices (ALSA)
Following command can be used to list your cards and devices:
$ aplay -l (list all soundcards and digital audio devices)
$ aplay -L (list device names)
And test audio files can be found in folder:
/usr/share/sounds/alsa/
Aplay can be used to test,
if your pcm outputs are working. Be sure to unmute and set volume for
master and pcm channels with mixer first. It might be a good idea
to set a moderate volume level for not damaging your boxes. For hw:0,0 means hw:<card>,<device>. List of available numbers can be found using the "$ aplay -l" -command. Then let it play the test file. Try all the combinations of cards and devices.
$ aplay -D hw:0,0 Noise.wav
If
you receive a cryptic error message about "
Channels count non
available" then the wav file uses a sample rate different to the
hardware. You can add a resampling layer with the 'plug' plugin, e.g.
$ aplay -D plughw:0,0 Noise.wav
Many don't know that you can play files using the devices names too. Using the command "$ aplay -L" it lists devices by names, example:
iec958:CARD=PCH,DEV=0
HDA Intel PCH, ALC892 Digital
IEC958 (S/PDIF) Digital Audio Output
To play that device you can use following command:
$ aplay -D iec958:CARD=PCH,DEV=0 Noise.wav
If
you receive a cryptic error message about "Channels count non
available" then the wav file uses a sample rate different to the
hardware. You can add resampling layer with the 'plug' plugin.
$ aplay -D plughw:CARD=PCH,DEV=0 Noise.wav
The "Channels count non available"can be fixed by defining your "ctl" (short for "control") entry in /etc/asound.conf -file. Example:
defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
TIP 5 - Audio works in KDE but not in the Firefox etc...
Then you should define default audio card and device. Check tip 6.
TIP 6 - Modify ALSA configs
There could be two config files for ALSA.
The system-wide file /etc/asound.conf or the user-specific file ~/.asoundrc.
First you should try to comment out all the lines that you have in those files and try again if you have some audio problems.
If that didn't fixed then I try explain different configuration options shortly.
To set digital out as default
On most soundcards the digital output
emits the same sound signal as the analog output. If this is not the
case for you then you can set the default playback device by using
.asoundrc or /etc/asound.conf. If you want your digital output to be the
default you might need to add this:
pcm.!default {
type hw
card <the card number you worked out above>
device <the device number you worked out above>
}
This is the most simple configuration that I try usually first. Just edit the card and device values that worked for you in the aplay sound testing (TIP4).
defaults.ctl.card 1
defaults.pcm.card 1
defaults.pcm.device 7
This way I fixed mine audio problems in one machine:
pcm.!default {
type plug
slave {
pcm "iec958"
}
}
Here is other config that I have used:
pcm.!default {
type plug
slave {
pcm "hw:1,7"
}
}
ctl.!default {
type hw
card 1
}
Or that can be define also this way:
pcm.!default {
type hw
card 1
device 7
}
ctl.!default {
type hw
card 1
device 7
}
On the pulseaudio side you can always define default audio device as well by editing following config file: /etc/pulse/default.pa (define/edit those in bold text with your device numbers)
#load-module module-alsa-sink
device=hw:1,1
#load-module module-alsa-source
device=hw:1,1
Usually I have been able to fix my audio problems following these tips. I will define this article again when I next time have some audio problems. At the moment I have 4 Debian or Ubuntu installations and audio worked out of the box only one of those installations. Now I have two systems without pulseaudio. I think I'm not expert in these audio issues but I have always been able to solve those. I think this is the area that needs some attention in linux development. It just shouldn't be this difficult to solve always these issues.
When the audio works then I usually set the on-the-fly AC3 encoding:
http://shellscreen.blogspot.fi/2014/11/6-channel-aac-to-ac3-on-fly-encoding-on.html