Bug 915858 - Sound is not working on my laptop using its FCH Azalia soundcard [1022:780d]
Sound is not working on my laptop using its FCH Azalia soundcard [1022:780d]
Status: RESOLVED FIXED
Classification: openSUSE
Product: openSUSE Distribution
Classification: openSUSE
Component: Sound
13.2
x86-64 openSUSE 13.2
: P5 - None : Major (vote)
: ---
Assigned To: Takashi Iwai
E-mail List
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2015-02-02 21:33 UTC by Graham Freeman
Modified: 2015-04-22 11:51 UTC (History)
1 user (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
The output from alsa-info.sh (34.66 KB, text/plain)
2015-02-02 21:33 UTC, Graham Freeman
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Graham Freeman 2015-02-02 21:33:51 UTC
Created attachment 621641 [details]
The output from alsa-info.sh

No sound comes from the internal speakers or the headphone jack of my laptop. The programs producing the sound (eg. Audacity, Rhythmbox) show a varying sound level, confirming that sound is being produced. Sound is not muted and is at 100%. There are no error messages in dmesg.

The problem is not confined to OpenSUSE. I have tried Fedora which has the same problem. When I have searched the web for solutions, many have been suggested but none have solved my problem. I have successfully forced the analog card to be the first in the list by creating a /etc/modprobe.d/alsa-base.conf file:

alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-hda-intel
options snd-hda-intel id=Generic index=0
options snd-hda-intel id=HDMI index=1

This makes no difference to the sound. I have tried disabling pulseaudio, without improvement.
Comment 1 Takashi Iwai 2015-02-04 16:18:39 UTC
The device likely needs some special treatment such as GPIO pins.
Try to turn on each GPIO pin.  For example, run the below as root:
  hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01
  hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x01
  hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01

This will turn on the pin 1 (bit 0).  If this doesn't change anything, try to pass 0x02 instead of 0x01 in three commands above.  It will turn on pin 2 (bit 1).  You can try 0x04, 0x08 and 0x10, i.e. up to GPIO bit 4.
Comment 2 Graham Freeman 2015-02-05 11:00:45 UTC
I installed hda-verb and tried your suggestions. The commands

 hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x10
 hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x10
 hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x10

made sound work. This is a miracle. I have used Fedora for many years and reported the problem to them 14 months ago when I bought this new machine. It has been unusable for that whole period. I installed OpenSUSE last week and sound is now working. Thank-you so much.

So should I install those commands in a start-up script somewhere, like /etc/profile?
Comment 3 Takashi Iwai 2015-02-05 11:08:04 UTC
Good to hear that my blind shot hits.  It's safe to put the stuff into some init script, but I'm going to cook a fix patch soon, and push to upstream and openSUSE 13.2 kernels.
Comment 4 Takashi Iwai 2015-02-05 11:13:01 UTC
One more item that needs to be clarified: is this GPIO pin setup needed also for the headphone output?  Or only for the speaker output?
Comment 5 Takashi Iwai 2015-02-05 13:11:26 UTC
Just for completeness: as an easy test, you can run like

   hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00

to turn off the pin and

   hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01

to turn on the pin dynamically.  You don't have to change SET_GPIO_MASK and SET_GPIO_DIR again to turn off.

My question was whether the sound from the headphone also disappears if you turn off the GPIO pin (and reappears if you turn on again).  If so, we need to keep GPIO pin always up during operation.  OTOH, if the GPIO pin doesn't affect the headphone output, we need to turn it on only for the speaker.  This would save the power a bit.
Comment 6 Graham Freeman 2015-02-05 20:41:40 UTC
With pin 4 set, I get sound from either sound source, the speakers or the headphone jack. Both are now working fine.

So I need to have the MASK, the DIR and the DATA bits set on pin 4 to get sound from the speakers and from the headphones.
Comment 7 Takashi Iwai 2015-02-05 20:50:36 UTC
So, do I understand correctly that both speaker and headphone are muted when you turn off pin 4?
Comment 8 Graham Freeman 2015-02-05 20:53:49 UTC
Yes. I can only get sound from the headphones when pin 4 is set. Setting pin 4 enables sound from both speakers and headphones.
Comment 9 Takashi Iwai 2015-02-05 21:22:45 UTC
OK, thanks for confirmation.

Now I submitted the fix patch to the upstream and backported it to SUSE openSUSE-13.2 kernel git branch.  This will be included in the next update kernel.

Meanwhile, you can try the fixed kernel from OBS Kernel:openSUSE-13.2 repo.  It'll take some time until the new commit appears in the repo and the package build finishes.  Maybe try some time tomorrow.  With the fixed kernel, the sound should work without extra workarounds.

This bug is closed now.  Feel free to reopen if the problem still persists with the newer kernel.
Comment 10 Swamp Workflow Management 2015-04-13 12:14:59 UTC
openSUSE-SU-2015:0713-1: An update that solves 13 vulnerabilities and has 52 fixes is now available.

Category: security (important)
Bug References: 867199,893428,895797,900811,901925,903589,903640,904899,905681,907039,907818,907988,908582,908588,908589,908592,908593,908594,908596,908598,908603,908604,908605,908606,908608,908610,908612,909077,909078,909477,909634,910150,910322,910440,911311,911325,911326,911356,911438,911578,911835,912061,912202,912429,912705,913059,913466,913695,914175,915425,915454,915456,915577,915858,916608,917830,917839,918954,918970,919463,920581,920604,921313,922542,922944
CVE References: CVE-2014-8134,CVE-2014-8160,CVE-2014-8559,CVE-2014-9419,CVE-2014-9420,CVE-2014-9428,CVE-2014-9529,CVE-2014-9584,CVE-2014-9585,CVE-2015-0777,CVE-2015-1421,CVE-2015-1593,CVE-2015-2150
Sources used:
openSUSE 13.2 (src):    bbswitch-0.8-3.6.6, cloop-2.639-14.6.6, crash-7.0.8-6.6, hdjmod-1.28-18.7.6, ipset-6.23-6.6, kernel-docs-3.16.7-13.2, kernel-obs-build-3.16.7-13.7, kernel-obs-qa-3.16.7-13.1, kernel-obs-qa-xen-3.16.7-13.1, kernel-source-3.16.7-13.1, kernel-syms-3.16.7-13.1, pcfclock-0.44-260.6.2, vhba-kmp-20140629-2.6.2, virtualbox-4.3.20-10.2, xen-4.4.1_08-12.2, xtables-addons-2.6-6.2