I have personally resolved the problem. You can substitute the model=generic with your mode, see alsa documentation in HD-Audio-models.txt.
You can try some, I think model=6stack-dig will give all the options of your card and maybe more...
For me, I tried a pile of models. Nothing was working. In desperation, I tried model=auto (which the docs say is the default), and it worked!
You can install also hda_analyzer for a more complete summary of your card driver.
That's an interesting tool--I hadn't known of it before.
A) In /etc/modprobe.d/alsa.conf (this fix the missing sound from speakers; position_fix is for very noisy mic):
position_fix for noisy mic! My savior! This has been bothering my friends for ages.
So here is what worked for me for the ALC887-VD. I made a /etc/modprobe.d/snd_hda_intel.conf file:
options snd_hda_intel model=auto position_fix=3
(To be honest, I haven't tried rebooting yet, but loading the sound module with those parameters was working, so I figure it's golden.)
Thanks!
]]>You can install also hda_analyzer for a more complete summary of your card driver.
My solution was this:
A) In /etc/modprobe.d/alsa.conf (this fix the missing sound from speakers; position_fix is for very noisy mic):
alias snd-card-0 snd-hda-intel
alias sound-slot-0 snd-hda-intel
options snd-hda-intel model=intel-alc889a position_fix=1
B) I have added a script to pre-kde startup with the following inside
This fix the fact that Front mic IN was not selected (incredible!!!) and that the default mic was external mic:
#!/bin/bash
# Set Internal Mic to IN!
# 0x12 is internal microphone and 0x00000020 is "IN"
sudo /usr/bin/hda-verb /dev/snd/hwC0D0 0x12 SET_PIN_WIDGET_CONTROL 0x00000020
# Select IntMic
# 0x24 is AUD_SEL and 11 is Pin Complex [0x12]
sudo /usr/bin/hda-verb /dev/snd/hwC0D0 0x24 SET_CONNECT_SEL 11
The only very partial solution was to add this to /etc/modprobe.d:
alias snd-card-0 snd-hda-intel
alias sound-slot-0 snd-hda-intel
options snd-hda-intel model=intel-alc889a position_fix=2
However the mixer is a little messed up, internal microphone is not working now but at least I have sound from headphone and internal speakers and line mic is fine.
However the volume of line microphone is controlled by the slider of front mic!
And without the position_fix=2 the sound from microphone was VERY noisy.
It is a pity, since the last 3.X kernels were working very fine with my configuration.
]]>Here's what alsa thinks I have, and I think it's correct:
Found hardware: "HDA-Intel" "Realtek ALC887-VD" "HDA:10ec0887,1458a002,00100302" "0x1458" "0xa002"
First clue was no audio playback, so I went to run the mixer, and it failed with "Invalid argument".
$ alsamixer -c 0
cannot load mixer controls: Invalid argument
$ alsamixer
cannot load mixer controls: Invalid argument
$ alsamixer -c 1 # works, fwiw
$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=SB
HDA ATI SB, ALC887-VD Analog
Default Audio Device
front:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
Front speakers
surround40:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=SB,DEV=0
HDA ATI SB, ALC887-VD Digital
IEC958 (S/PDIF) Digital Audio Output
hdmi:CARD=Generic,DEV=0
HD-Audio Generic, HDMI 0
HDMI Audio Output
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC887-VD Analog [ALC887-VD Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: SB [HDA ATI SB], device 1: ALC887-VD Digital [ALC887-VD Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
$ lsmod | grep snd
snd_hda_codec_hdmi 24121 1
snd_hda_codec_realtek 194997 1
snd_hda_intel 23311 0
snd_hda_codec 89032 3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep 6389 1 snd_hda_codec
snd_pcm 74780 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_timer 19544 1 snd_pcm
snd 59214 7 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 6210 1 snd
snd_page_alloc 7153 2 snd_hda_intel,snd_pcm
No errors from aplay in use:
$ aplay wilhelm.wav
Playing WAVE 'wilhelm.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
alsactl init has a few complaints:
$ alsactl init 0
Found hardware: "HDA-Intel" "Realtek ALC887-VD" "HDA:10ec0887,1458a002,00100302" "0x1458" "0xa002"
Hardware is initialized using a generic method
/usr/share/alsa/init/default:26: control element not found
/usr/share/alsa/init/default:26: control element not found
/usr/share/alsa/init/default:48: control element not found
Line 26 has this (my fu is weak, here):
CTL{name}="Master Playback Volume",CTL{do_search}=="1", \
ENV{has_pmaster_vol}:="true", \
CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"
Line 48 has this:
ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""
I'm not running pulseaudio, if that makes a difference.
Finally, I can get alsamixer to kinda-work, if I put this in /etc/modprobe.d/alsa.conf:
options snd-hda-intel model=generic
but I prefer not to do that, since it nerfs my mixer down to two controls.
I don't have anything else in modprobe.d, and nothing in ~/.asoundrc.
Any advice on additional avenues to pursue would be appreciated.
Edit: a quick way to get the nerfed controls working after you've booted:
# rmmod snd-hda-intel
# modprobe snd-hda-intel model=generic
That makes basic recording and playback work for me, at least. I haven't found any more useful info, however.
]]>