All of lore.kernel.org
 help / color / mirror / Atom feed
* Dell N5110 HDA External Speaker is mute
@ 2012-01-11  0:56 Cefn Hoile
  2012-01-12 10:24 ` Cefn Hoile
  2012-01-12 10:32 ` Takashi Iwai
  0 siblings, 2 replies; 14+ messages in thread
From: Cefn Hoile @ 2012-01-11  0:56 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai

I'd like to report an issue experienced with the latest Oneiric, Dell
N5110, and IDT STAC92HD87 which has been explored through quite a few
steps already, and seems to have bottomed out to a set of
pins/controls/flags which are not being properly managed in order to
toggle speaker activation when a headphone is inserted.

So far, I haven't heard sound from my speakers at all, although within
Alsamixer, the Speaker volume is visibly toggled from 100% to MM
(mute) on headphone insertion.

I've tried every model against snd-hda-intel, many different other
options, and started to explore the HDA Analyzer, which includes
controls named like this...

Node 0x13 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out R/L
  Device: name="STAC92xx Analog", type="Audio", device=0
  Control: name="Speaker Playback Volume", index=0, device=0
    ControlAmp: chs=3, dir=1, idx=0, ofs=63
  Control: name="Speaker Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=1, idx=0, ofs=0
  Amp-Out caps: ofs=0x7f, nsteps=0x7f, stepsize=0x02, mute=1
  Amp-Out vals: [0x7f 0x7f]
  Converter: stream=5, channel=0
  Power: setting=D0, actual=D0
  Delay: 13 samples

...but toggling these checkboxes within the HDA Analyzer gui doesn't
trigger any sound from the speakers either. It could be a rich
combination of the very many checkboxes and sliders which are revealed
by the Analyzer, but I don't really know where to start. The bug
information downstream is here...

https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/914290

I'd really welcome suggestions for what else to try and happy to
invest time exploring options to try and make ALSA better still.

Cefn
http://cefn.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-11  0:56 Dell N5110 HDA External Speaker is mute Cefn Hoile
@ 2012-01-12 10:24 ` Cefn Hoile
  2012-01-12 10:32 ` Takashi Iwai
  1 sibling, 0 replies; 14+ messages in thread
From: Cefn Hoile @ 2012-01-12 10:24 UTC (permalink / raw)
  To: alsa-devel

Tumbleweed...

Does that mean my question is better handled somewhere else?

Cefn
http://cefn.com

On 11 January 2012 00:56, Cefn Hoile <alsa-project.org@cefn.com> wrote:
> I'd like to report an issue experienced with the latest Oneiric, Dell
> N5110, and IDT STAC92HD87 which has been explored through quite a few
> steps already, and seems to have bottomed out to a set of
> pins/controls/flags which are not being properly managed in order to
> toggle speaker activation when a headphone is inserted.
>
> So far, I haven't heard sound from my speakers at all, although within
> Alsamixer, the Speaker volume is visibly toggled from 100% to MM
> (mute) on headphone insertion.
>
> I've tried every model against snd-hda-intel, many different other
> options, and started to explore the HDA Analyzer, which includes
> controls named like this...
>
> Node 0x13 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out R/L
>  Device: name="STAC92xx Analog", type="Audio", device=0
>  Control: name="Speaker Playback Volume", index=0, device=0
>    ControlAmp: chs=3, dir=1, idx=0, ofs=63
>  Control: name="Speaker Playback Switch", index=0, device=0
>    ControlAmp: chs=3, dir=1, idx=0, ofs=0
>  Amp-Out caps: ofs=0x7f, nsteps=0x7f, stepsize=0x02, mute=1
>  Amp-Out vals: [0x7f 0x7f]
>  Converter: stream=5, channel=0
>  Power: setting=D0, actual=D0
>  Delay: 13 samples
>
> ...but toggling these checkboxes within the HDA Analyzer gui doesn't
> trigger any sound from the speakers either. It could be a rich
> combination of the very many checkboxes and sliders which are revealed
> by the Analyzer, but I don't really know where to start. The bug
> information downstream is here...
>
> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/914290
>
> I'd really welcome suggestions for what else to try and happy to
> invest time exploring options to try and make ALSA better still.
>
> Cefn
> http://cefn.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-11  0:56 Dell N5110 HDA External Speaker is mute Cefn Hoile
  2012-01-12 10:24 ` Cefn Hoile
@ 2012-01-12 10:32 ` Takashi Iwai
  2012-01-12 10:52   ` Cefn Hoile
  1 sibling, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2012-01-12 10:32 UTC (permalink / raw)
  To: Cefn Hoile; +Cc: alsa-devel

At Wed, 11 Jan 2012 00:56:18 +0000,
Cefn Hoile wrote:
> 
> I'd like to report an issue experienced with the latest Oneiric, Dell
> N5110, and IDT STAC92HD87 which has been explored through quite a few
> steps already, and seems to have bottomed out to a set of
> pins/controls/flags which are not being properly managed in order to
> toggle speaker activation when a headphone is inserted.
> 
> So far, I haven't heard sound from my speakers at all, although within
> Alsamixer, the Speaker volume is visibly toggled from 100% to MM
> (mute) on headphone insertion.
> 
> I've tried every model against snd-hda-intel, many different other
> options, and started to explore the HDA Analyzer, which includes
> controls named like this...
> 
> Node 0x13 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out R/L
>   Device: name="STAC92xx Analog", type="Audio", device=0
>   Control: name="Speaker Playback Volume", index=0, device=0
>     ControlAmp: chs=3, dir=1, idx=0, ofs=63
>   Control: name="Speaker Playback Switch", index=0, device=0
>     ControlAmp: chs=3, dir=1, idx=0, ofs=0
>   Amp-Out caps: ofs=0x7f, nsteps=0x7f, stepsize=0x02, mute=1
>   Amp-Out vals: [0x7f 0x7f]
>   Converter: stream=5, channel=0
>   Power: setting=D0, actual=D0
>   Delay: 13 samples
> 
> ...but toggling these checkboxes within the HDA Analyzer gui doesn't
> trigger any sound from the speakers either. It could be a rich
> combination of the very many checkboxes and sliders which are revealed
> by the Analyzer, but I don't really know where to start. The bug
> information downstream is here...
> 
> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/914290
> 
> I'd really welcome suggestions for what else to try and happy to
> invest time exploring options to try and make ALSA better still.

Could you give alsa-info.sh output for checking the mixer and register
states?


Takashi

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 10:32 ` Takashi Iwai
@ 2012-01-12 10:52   ` Cefn Hoile
  2012-01-12 10:56     ` Cefn Hoile
  0 siblings, 1 reply; 14+ messages in thread
From: Cefn Hoile @ 2012-01-12 10:52 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

Thanks for your interest, Takashi.

The alsa disgnostic script output was already linked (but a bit hidden
in all the noise) in the downstream bug report...

http://www.alsa-project.org/db/?f=039be3036a03f707edc130bbc63b5063619e5755

Cefn
http://cefn.com

On 12 January 2012 10:32, Takashi Iwai <tiwai@suse.de> wrote:
> At Wed, 11 Jan 2012 00:56:18 +0000,
> Cefn Hoile wrote:
>>
>> I'd like to report an issue experienced with the latest Oneiric, Dell
>> N5110, and IDT STAC92HD87 which has been explored through quite a few
>> steps already, and seems to have bottomed out to a set of
>> pins/controls/flags which are not being properly managed in order to
>> toggle speaker activation when a headphone is inserted.
>>
>> So far, I haven't heard sound from my speakers at all, although within
>> Alsamixer, the Speaker volume is visibly toggled from 100% to MM
>> (mute) on headphone insertion.
>>
>> I've tried every model against snd-hda-intel, many different other
>> options, and started to explore the HDA Analyzer, which includes
>> controls named like this...
>>
>> Node 0x13 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out R/L
>>   Device: name="STAC92xx Analog", type="Audio", device=0
>>   Control: name="Speaker Playback Volume", index=0, device=0
>>     ControlAmp: chs=3, dir=1, idx=0, ofs=63
>>   Control: name="Speaker Playback Switch", index=0, device=0
>>     ControlAmp: chs=3, dir=1, idx=0, ofs=0
>>   Amp-Out caps: ofs=0x7f, nsteps=0x7f, stepsize=0x02, mute=1
>>   Amp-Out vals: [0x7f 0x7f]
>>   Converter: stream=5, channel=0
>>   Power: setting=D0, actual=D0
>>   Delay: 13 samples
>>
>> ...but toggling these checkboxes within the HDA Analyzer gui doesn't
>> trigger any sound from the speakers either. It could be a rich
>> combination of the very many checkboxes and sliders which are revealed
>> by the Analyzer, but I don't really know where to start. The bug
>> information downstream is here...
>>
>> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/914290
>>
>> I'd really welcome suggestions for what else to try and happy to
>> invest time exploring options to try and make ALSA better still.
>
> Could you give alsa-info.sh output for checking the mixer and register
> states?
>
>
> Takashi

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 10:52   ` Cefn Hoile
@ 2012-01-12 10:56     ` Cefn Hoile
  2012-01-12 11:25       ` Takashi Iwai
  0 siblings, 1 reply; 14+ messages in thread
From: Cefn Hoile @ 2012-01-12 10:56 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

In case anything has changed in my config since the original info run,
here is the same script run right now...

http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce

On 12 January 2012 10:52, Cefn Hoile <alsa-project.org@cefn.com> wrote:
> Thanks for your interest, Takashi.
>
> The alsa disgnostic script output was already linked (but a bit hidden
> in all the noise) in the downstream bug report...
>
> http://www.alsa-project.org/db/?f=039be3036a03f707edc130bbc63b5063619e5755
>
> Cefn
> http://cefn.com
>
> On 12 January 2012 10:32, Takashi Iwai <tiwai@suse.de> wrote:
>> At Wed, 11 Jan 2012 00:56:18 +0000,
>> Cefn Hoile wrote:
>>>
>>> I'd like to report an issue experienced with the latest Oneiric, Dell
>>> N5110, and IDT STAC92HD87 which has been explored through quite a few
>>> steps already, and seems to have bottomed out to a set of
>>> pins/controls/flags which are not being properly managed in order to
>>> toggle speaker activation when a headphone is inserted.
>>>
>>> So far, I haven't heard sound from my speakers at all, although within
>>> Alsamixer, the Speaker volume is visibly toggled from 100% to MM
>>> (mute) on headphone insertion.
>>>
>>> I've tried every model against snd-hda-intel, many different other
>>> options, and started to explore the HDA Analyzer, which includes
>>> controls named like this...
>>>
>>> Node 0x13 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out R/L
>>>   Device: name="STAC92xx Analog", type="Audio", device=0
>>>   Control: name="Speaker Playback Volume", index=0, device=0
>>>     ControlAmp: chs=3, dir=1, idx=0, ofs=63
>>>   Control: name="Speaker Playback Switch", index=0, device=0
>>>     ControlAmp: chs=3, dir=1, idx=0, ofs=0
>>>   Amp-Out caps: ofs=0x7f, nsteps=0x7f, stepsize=0x02, mute=1
>>>   Amp-Out vals: [0x7f 0x7f]
>>>   Converter: stream=5, channel=0
>>>   Power: setting=D0, actual=D0
>>>   Delay: 13 samples
>>>
>>> ...but toggling these checkboxes within the HDA Analyzer gui doesn't
>>> trigger any sound from the speakers either. It could be a rich
>>> combination of the very many checkboxes and sliders which are revealed
>>> by the Analyzer, but I don't really know where to start. The bug
>>> information downstream is here...
>>>
>>> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/914290
>>>
>>> I'd really welcome suggestions for what else to try and happy to
>>> invest time exploring options to try and make ALSA better still.
>>
>> Could you give alsa-info.sh output for checking the mixer and register
>> states?
>>
>>
>> Takashi

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 10:56     ` Cefn Hoile
@ 2012-01-12 11:25       ` Takashi Iwai
       [not found]         ` <CA+P0tC_y6QOdgmqSRmMtMvHM+OsMW2mq2325_m8ER4z7Mi6gKQ@mail.gmail.com>
  0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2012-01-12 11:25 UTC (permalink / raw)
  To: Cefn Hoile; +Cc: alsa-devel

At Thu, 12 Jan 2012 10:56:24 +0000,
Cefn Hoile wrote:
> 
> In case anything has changed in my config since the original info run,
> here is the same script run right now...
> 
> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce

Could you rather attach?  Then it'll be archived and searchable.

Anyway, I don't see any obvious problem in the output.
If the pin assignment is correct, the routing and amp setups should be
OK with the current status.

Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
and value bits.


Takashi

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
       [not found]         ` <CA+P0tC_y6QOdgmqSRmMtMvHM+OsMW2mq2325_m8ER4z7Mi6gKQ@mail.gmail.com>
@ 2012-01-12 11:59           ` Takashi Iwai
  2012-01-12 15:11             ` Cefn Hoile
  0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2012-01-12 11:59 UTC (permalink / raw)
  To: Cefn Hoile; +Cc: alsa-devel

At Thu, 12 Jan 2012 11:51:12 +0000,
Cefn Hoile wrote:
> 
> Thanks, Takashi.
> 
> I don't know what tools and invocations to use test out the GPIO
> values you describe. I think you're saying I shouldn't bother toggling
> things through HDA Analyzer as there's nothing obviously wrong in that
> part of the configuration (as reported by alsa-info.sh which is
> attached as requested).
> 
> I noticed in HD-Audio.txt a section which mentions a similar problem
> and IDT codecs specifically (below). Is there an IRC or mailing list
> where people could talk me through the basics of trying different
> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
> how, yet. If I succeed I'll report back.
> 
> Hopefully this will be worth it, as I think the N5110 is a pretty
> popular model with a common card, and probably a bunch of Dell
> hardware could get fixed if it could be figured out.

You can change the GPIO setup via hda-verb on the fly.
For example, to set GPIO bit 0, try
	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
where the output direction is assumed, and only GPIO 0 is set.
For GPIO bit 1,
	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
	hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.

If none of above doesn't any change, try to set DATA 0 instead of 1,
and/or DIR 0 instead of 1.



Takashi

> QUOTING FROM HD-Audio.txt >>>>>>>
> 
> If you are masochistic enough to debug the driver problem, note the
> following:
> 
> - The speaker (and the headphone, too) output often requires the
>   external amplifier. This can be set usually via EAPD verb or a
>   certain GPIO. If the codec pin supports EAPD, you have a better
>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
> - Some Realtek codecs require special vendor-specific coefficients to
>   turn on the amplifier. See patch_realtek.c.
> - IDT codecs may have extra power-enable/disable controls on each
>   analog pin. See patch_sigmatel.c.
> - Very rare but some devices don't accept the pin-detection verb until
>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
>   codec-communication stall. Some examples are found in
>   patch_realtek.c.
> 
> <<<<<<<<
> 
> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
> > At Thu, 12 Jan 2012 10:56:24 +0000,
> > Cefn Hoile wrote:
> >>
> >> In case anything has changed in my config since the original info run,
> >> here is the same script run right now...
> >>
> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
> >
> > Could you rather attach?  Then it'll be archived and searchable.
> >
> > Anyway, I don't see any obvious problem in the output.
> > If the pin assignment is correct, the routing and amp setups should be
> > OK with the current status.
> >
> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
> > and value bits.
> >
> >
> > Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 11:59           ` Takashi Iwai
@ 2012-01-12 15:11             ` Cefn Hoile
  2012-01-12 15:18               ` Takashi Iwai
  0 siblings, 1 reply; 14+ messages in thread
From: Cefn Hoile @ 2012-01-12 15:11 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

[-- Attachment #1: Type: text/plain, Size: 8365 bytes --]

On 12 January 2012 11:59, Takashi Iwai <tiwai@suse.de> wrote:
> At Thu, 12 Jan 2012 11:51:12 +0000,
> Cefn Hoile wrote:
>>
>> Thanks, Takashi.
>>
>> I don't know what tools and invocations to use test out the GPIO
>> values you describe. I think you're saying I shouldn't bother toggling
>> things through HDA Analyzer as there's nothing obviously wrong in that
>> part of the configuration (as reported by alsa-info.sh which is
>> attached as requested).
>>
>> I noticed in HD-Audio.txt a section which mentions a similar problem
>> and IDT codecs specifically (below). Is there an IRC or mailing list
>> where people could talk me through the basics of trying different
>> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
>> how, yet. If I succeed I'll report back.
>>
>> Hopefully this will be worth it, as I think the N5110 is a pretty
>> popular model with a common card, and probably a bunch of Dell
>> hardware could get fixed if it could be figured out.
>
> You can change the GPIO setup via hda-verb on the fly.
> For example, to set GPIO bit 0, try
>        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
> where the output direction is assumed, and only GPIO 0 is set.
> For GPIO bit 1,
>        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
>        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
>        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
> and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.
>
> If none of above doesn't any change, try to set DATA 0 instead of 1,
> and/or DIR 0 instead of 1.
>
>
>
> Takashi
>
>> QUOTING FROM HD-Audio.txt >>>>>>>
>>
>> If you are masochistic enough to debug the driver problem, note the
>> following:
>>
>> - The speaker (and the headphone, too) output often requires the
>>   external amplifier. This can be set usually via EAPD verb or a
>>   certain GPIO. If the codec pin supports EAPD, you have a better
>>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
>>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
>> - Some Realtek codecs require special vendor-specific coefficients to
>>   turn on the amplifier. See patch_realtek.c.
>> - IDT codecs may have extra power-enable/disable controls on each
>>   analog pin. See patch_sigmatel.c.
>> - Very rare but some devices don't accept the pin-detection verb until
>>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
>>   codec-communication stall. Some examples are found in
>>   patch_realtek.c.
>>
>> <<<<<<<<
>>
>> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
>> > At Thu, 12 Jan 2012 10:56:24 +0000,
>> > Cefn Hoile wrote:
>> >>
>> >> In case anything has changed in my config since the original info run,
>> >> here is the same script run right now...
>> >>
>> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
>> >
>> > Could you rather attach?  Then it'll be archived and searchable.
>> >
>> > Anyway, I don't see any obvious problem in the output.
>> > If the pin assignment is correct, the routing and amp setups should be
>> > OK with the current status.
>> >
>> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
>> > and value bits.
>> >
>> >
>> > Takashi

I have tried the attached script, which hopefully corresponds with the
GPIO exploration regime you wanted me to try. Please take a look at
the sequence in case there could be some combination I missed based on
trying to interpret your description, or if there's some kind of
reload step I need to do.

When running this GPIO script as...
sudo ./setgpio.sh
...with headphones on my N5110 it plays the sample every time, and
with speakers it is always silent.

Here's an example log of execution...

cefn@cefn-oneiric-dell:~$ sudo ./setgpio.sh
[sudo] password for cefn:
SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
nid = 0x1, verb = 0x716, param = 0x1
value = 0x0
nid = 0x0, verb = 0x717, param = 0x1
value = 0x0
nid = 0x0, verb = 0x715, param = 0x1
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
nid = 0x1, verb = 0x716, param = 0x2
value = 0x0
nid = 0x0, verb = 0x717, param = 0x2
value = 0x0
nid = 0x0, verb = 0x715, param = 0x2
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
nid = 0x1, verb = 0x716, param = 0x4
value = 0x0
nid = 0x0, verb = 0x717, param = 0x4
value = 0x0
nid = 0x0, verb = 0x715, param = 0x4
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
nid = 0x1, verb = 0x716, param = 0x1
value = 0x0
nid = 0x0, verb = 0x717, param = 0x1
value = 0x0
nid = 0x1, verb = 0x715, param = 0x1
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
nid = 0x1, verb = 0x716, param = 0x2
value = 0x0
nid = 0x0, verb = 0x717, param = 0x2
value = 0x0
nid = 0x1, verb = 0x715, param = 0x2
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
nid = 0x1, verb = 0x716, param = 0x4
value = 0x0
nid = 0x0, verb = 0x717, param = 0x4
value = 0x0
nid = 0x1, verb = 0x715, param = 0x4
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
nid = 0x1, verb = 0x716, param = 0x1
value = 0x0
nid = 0x1, verb = 0x717, param = 0x1
value = 0x0
nid = 0x0, verb = 0x715, param = 0x1
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
nid = 0x1, verb = 0x716, param = 0x2
value = 0x0
nid = 0x1, verb = 0x717, param = 0x2
value = 0x0
nid = 0x0, verb = 0x715, param = 0x2
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
nid = 0x1, verb = 0x716, param = 0x4
value = 0x0
nid = 0x1, verb = 0x717, param = 0x4
value = 0x0
nid = 0x0, verb = 0x715, param = 0x4
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
nid = 0x1, verb = 0x716, param = 0x1
value = 0x0
nid = 0x1, verb = 0x717, param = 0x1
value = 0x0
nid = 0x1, verb = 0x715, param = 0x1
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
nid = 0x1, verb = 0x716, param = 0x2
value = 0x0
nid = 0x1, verb = 0x717, param = 0x2
value = 0x0
nid = 0x1, verb = 0x715, param = 0x2
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
nid = 0x1, verb = 0x716, param = 0x4
value = 0x0
nid = 0x1, verb = 0x717, param = 0x4
value = 0x0
nid = 0x1, verb = 0x715, param = 0x4
value = 0x0
Home directory /home/cefn not ours.
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono


Cefn

[-- Attachment #2: setgpio.sh --]
[-- Type: application/x-sh, Size: 1699 bytes --]

[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 15:11             ` Cefn Hoile
@ 2012-01-12 15:18               ` Takashi Iwai
  2012-01-12 16:00                 ` Cefn Hoile
  0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2012-01-12 15:18 UTC (permalink / raw)
  To: Cefn Hoile; +Cc: alsa-devel

At Thu, 12 Jan 2012 15:11:16 +0000,
Cefn Hoile wrote:
> 
> On 12 January 2012 11:59, Takashi Iwai <tiwai@suse.de> wrote:
> > At Thu, 12 Jan 2012 11:51:12 +0000,
> > Cefn Hoile wrote:
> >>
> >> Thanks, Takashi.
> >>
> >> I don't know what tools and invocations to use test out the GPIO
> >> values you describe. I think you're saying I shouldn't bother toggling
> >> things through HDA Analyzer as there's nothing obviously wrong in that
> >> part of the configuration (as reported by alsa-info.sh which is
> >> attached as requested).
> >>
> >> I noticed in HD-Audio.txt a section which mentions a similar problem
> >> and IDT codecs specifically (below). Is there an IRC or mailing list
> >> where people could talk me through the basics of trying different
> >> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
> >> how, yet. If I succeed I'll report back.
> >>
> >> Hopefully this will be worth it, as I think the N5110 is a pretty
> >> popular model with a common card, and probably a bunch of Dell
> >> hardware could get fixed if it could be figured out.
> >
> > You can change the GPIO setup via hda-verb on the fly.
> > For example, to set GPIO bit 0, try
> >        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
> > where the output direction is assumed, and only GPIO 0 is set.
> > For GPIO bit 1,
> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
> > and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.
> >
> > If none of above doesn't any change, try to set DATA 0 instead of 1,
> > and/or DIR 0 instead of 1.
> >
> >
> >
> > Takashi
> >
> >> QUOTING FROM HD-Audio.txt >>>>>>>
> >>
> >> If you are masochistic enough to debug the driver problem, note the
> >> following:
> >>
> >> - The speaker (and the headphone, too) output often requires the
> >>   external amplifier. This can be set usually via EAPD verb or a
> >>   certain GPIO. If the codec pin supports EAPD, you have a better
> >>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
> >>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
> >> - Some Realtek codecs require special vendor-specific coefficients to
> >>   turn on the amplifier. See patch_realtek.c.
> >> - IDT codecs may have extra power-enable/disable controls on each
> >>   analog pin. See patch_sigmatel.c.
> >> - Very rare but some devices don't accept the pin-detection verb until
> >>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
> >>   codec-communication stall. Some examples are found in
> >>   patch_realtek.c.
> >>
> >> <<<<<<<<
> >>
> >> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
> >> > At Thu, 12 Jan 2012 10:56:24 +0000,
> >> > Cefn Hoile wrote:
> >> >>
> >> >> In case anything has changed in my config since the original info run,
> >> >> here is the same script run right now...
> >> >>
> >> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
> >> >
> >> > Could you rather attach?  Then it'll be archived and searchable.
> >> >
> >> > Anyway, I don't see any obvious problem in the output.
> >> > If the pin assignment is correct, the routing and amp setups should be
> >> > OK with the current status.
> >> >
> >> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
> >> > and value bits.
> >> >
> >> >
> >> > Takashi
> 
> I have tried the attached script, which hopefully corresponds with the
> GPIO exploration regime you wanted me to try. Please take a look at
> the sequence in case there could be some combination I missed based on
> trying to interpret your description, or if there's some kind of
> reload step I need to do.

Yeah, there are some bugs :)
The combination should be (mask/dir/data)
1/1/0 1/1/1 1/0/0 1/0/1
2/2/0 2/2/2 2/0/0 2/0/2
4/4/0 4/4/4 4/0/0 4/0/4

Also, as a test, use aplay with -Dplughw option.
This skips PA and others.


Takashi

> When running this GPIO script as...
> sudo ./setgpio.sh
> ...with headphones on my N5110 it plays the sample every time, and
> with speakers it is always silent.
> 
> Here's an example log of execution...
> 
> cefn@cefn-oneiric-dell:~$ sudo ./setgpio.sh
> [sudo] password for cefn:
> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> nid = 0x1, verb = 0x716, param = 0x1
> value = 0x0
> nid = 0x0, verb = 0x717, param = 0x1
> value = 0x0
> nid = 0x0, verb = 0x715, param = 0x1
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> nid = 0x1, verb = 0x716, param = 0x2
> value = 0x0
> nid = 0x0, verb = 0x717, param = 0x2
> value = 0x0
> nid = 0x0, verb = 0x715, param = 0x2
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> nid = 0x1, verb = 0x716, param = 0x4
> value = 0x0
> nid = 0x0, verb = 0x717, param = 0x4
> value = 0x0
> nid = 0x0, verb = 0x715, param = 0x4
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> nid = 0x1, verb = 0x716, param = 0x1
> value = 0x0
> nid = 0x0, verb = 0x717, param = 0x1
> value = 0x0
> nid = 0x1, verb = 0x715, param = 0x1
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> nid = 0x1, verb = 0x716, param = 0x2
> value = 0x0
> nid = 0x0, verb = 0x717, param = 0x2
> value = 0x0
> nid = 0x1, verb = 0x715, param = 0x2
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> nid = 0x1, verb = 0x716, param = 0x4
> value = 0x0
> nid = 0x0, verb = 0x717, param = 0x4
> value = 0x0
> nid = 0x1, verb = 0x715, param = 0x4
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> nid = 0x1, verb = 0x716, param = 0x1
> value = 0x0
> nid = 0x1, verb = 0x717, param = 0x1
> value = 0x0
> nid = 0x0, verb = 0x715, param = 0x1
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> nid = 0x1, verb = 0x716, param = 0x2
> value = 0x0
> nid = 0x1, verb = 0x717, param = 0x2
> value = 0x0
> nid = 0x0, verb = 0x715, param = 0x2
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> nid = 0x1, verb = 0x716, param = 0x4
> value = 0x0
> nid = 0x1, verb = 0x717, param = 0x4
> value = 0x0
> nid = 0x0, verb = 0x715, param = 0x4
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> nid = 0x1, verb = 0x716, param = 0x1
> value = 0x0
> nid = 0x1, verb = 0x717, param = 0x1
> value = 0x0
> nid = 0x1, verb = 0x715, param = 0x1
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> nid = 0x1, verb = 0x716, param = 0x2
> value = 0x0
> nid = 0x1, verb = 0x717, param = 0x2
> value = 0x0
> nid = 0x1, verb = 0x715, param = 0x2
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> nid = 0x1, verb = 0x716, param = 0x4
> value = 0x0
> nid = 0x1, verb = 0x717, param = 0x4
> value = 0x0
> nid = 0x1, verb = 0x715, param = 0x4
> value = 0x0
> Home directory /home/cefn not ours.
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> Little Endian, Rate 48000 Hz, Mono
> 
> 
> Cefn
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 15:18               ` Takashi Iwai
@ 2012-01-12 16:00                 ` Cefn Hoile
  2012-01-12 16:05                   ` Takashi Iwai
  0 siblings, 1 reply; 14+ messages in thread
From: Cefn Hoile @ 2012-01-12 16:00 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On 12 January 2012 15:18, Takashi Iwai <tiwai@suse.de> wrote:
> At Thu, 12 Jan 2012 15:11:16 +0000,
> Cefn Hoile wrote:
>>
>> On 12 January 2012 11:59, Takashi Iwai <tiwai@suse.de> wrote:
>> > At Thu, 12 Jan 2012 11:51:12 +0000,
>> > Cefn Hoile wrote:
>> >>
>> >> Thanks, Takashi.
>> >>
>> >> I don't know what tools and invocations to use test out the GPIO
>> >> values you describe. I think you're saying I shouldn't bother toggling
>> >> things through HDA Analyzer as there's nothing obviously wrong in that
>> >> part of the configuration (as reported by alsa-info.sh which is
>> >> attached as requested).
>> >>
>> >> I noticed in HD-Audio.txt a section which mentions a similar problem
>> >> and IDT codecs specifically (below). Is there an IRC or mailing list
>> >> where people could talk me through the basics of trying different
>> >> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
>> >> how, yet. If I succeed I'll report back.
>> >>
>> >> Hopefully this will be worth it, as I think the N5110 is a pretty
>> >> popular model with a common card, and probably a bunch of Dell
>> >> hardware could get fixed if it could be figured out.
>> >
>> > You can change the GPIO setup via hda-verb on the fly.
>> > For example, to set GPIO bit 0, try
>> >        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
>> > where the output direction is assumed, and only GPIO 0 is set.
>> > For GPIO bit 1,
>> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
>> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
>> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
>> > and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.
>> >
>> > If none of above doesn't any change, try to set DATA 0 instead of 1,
>> > and/or DIR 0 instead of 1.
>> >
>> >
>> >
>> > Takashi
>> >
>> >> QUOTING FROM HD-Audio.txt >>>>>>>
>> >>
>> >> If you are masochistic enough to debug the driver problem, note the
>> >> following:
>> >>
>> >> - The speaker (and the headphone, too) output often requires the
>> >>   external amplifier. This can be set usually via EAPD verb or a
>> >>   certain GPIO. If the codec pin supports EAPD, you have a better
>> >>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
>> >>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
>> >> - Some Realtek codecs require special vendor-specific coefficients to
>> >>   turn on the amplifier. See patch_realtek.c.
>> >> - IDT codecs may have extra power-enable/disable controls on each
>> >>   analog pin. See patch_sigmatel.c.
>> >> - Very rare but some devices don't accept the pin-detection verb until
>> >>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
>> >>   codec-communication stall. Some examples are found in
>> >>   patch_realtek.c.
>> >>
>> >> <<<<<<<<
>> >>
>> >> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
>> >> > At Thu, 12 Jan 2012 10:56:24 +0000,
>> >> > Cefn Hoile wrote:
>> >> >>
>> >> >> In case anything has changed in my config since the original info run,
>> >> >> here is the same script run right now...
>> >> >>
>> >> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
>> >> >
>> >> > Could you rather attach?  Then it'll be archived and searchable.
>> >> >
>> >> > Anyway, I don't see any obvious problem in the output.
>> >> > If the pin assignment is correct, the routing and amp setups should be
>> >> > OK with the current status.
>> >> >
>> >> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
>> >> > and value bits.
>> >> >
>> >> >
>> >> > Takashi
>>
>> I have tried the attached script, which hopefully corresponds with the
>> GPIO exploration regime you wanted me to try. Please take a look at
>> the sequence in case there could be some combination I missed based on
>> trying to interpret your description, or if there's some kind of
>> reload step I need to do.
>
> Yeah, there are some bugs :)
> The combination should be (mask/dir/data)
> 1/1/0 1/1/1 1/0/0 1/0/1
> 2/2/0 2/2/2 2/0/0 2/0/2
> 4/4/0 4/4/4 4/0/0 4/0/4
>
> Also, as a test, use aplay with -Dplughw option.
> This skips PA and others.
>
>
> Takashi
>
>> When running this GPIO script as...
>> sudo ./setgpio.sh
>> ...with headphones on my N5110 it plays the sample every time, and
>> with speakers it is always silent.
>>
>> Here's an example log of execution...
>>
>> cefn@cefn-oneiric-dell:~$ sudo ./setgpio.sh
>> [sudo] password for cefn:
>> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> nid = 0x1, verb = 0x716, param = 0x1
>> value = 0x0
>> nid = 0x0, verb = 0x717, param = 0x1
>> value = 0x0
>> nid = 0x0, verb = 0x715, param = 0x1
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> nid = 0x1, verb = 0x716, param = 0x2
>> value = 0x0
>> nid = 0x0, verb = 0x717, param = 0x2
>> value = 0x0
>> nid = 0x0, verb = 0x715, param = 0x2
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> nid = 0x1, verb = 0x716, param = 0x4
>> value = 0x0
>> nid = 0x0, verb = 0x717, param = 0x4
>> value = 0x0
>> nid = 0x0, verb = 0x715, param = 0x4
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> nid = 0x1, verb = 0x716, param = 0x1
>> value = 0x0
>> nid = 0x0, verb = 0x717, param = 0x1
>> value = 0x0
>> nid = 0x1, verb = 0x715, param = 0x1
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> nid = 0x1, verb = 0x716, param = 0x2
>> value = 0x0
>> nid = 0x0, verb = 0x717, param = 0x2
>> value = 0x0
>> nid = 0x1, verb = 0x715, param = 0x2
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> nid = 0x1, verb = 0x716, param = 0x4
>> value = 0x0
>> nid = 0x0, verb = 0x717, param = 0x4
>> value = 0x0
>> nid = 0x1, verb = 0x715, param = 0x4
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> nid = 0x1, verb = 0x716, param = 0x1
>> value = 0x0
>> nid = 0x1, verb = 0x717, param = 0x1
>> value = 0x0
>> nid = 0x0, verb = 0x715, param = 0x1
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> nid = 0x1, verb = 0x716, param = 0x2
>> value = 0x0
>> nid = 0x1, verb = 0x717, param = 0x2
>> value = 0x0
>> nid = 0x0, verb = 0x715, param = 0x2
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> nid = 0x1, verb = 0x716, param = 0x4
>> value = 0x0
>> nid = 0x1, verb = 0x717, param = 0x4
>> value = 0x0
>> nid = 0x0, verb = 0x715, param = 0x4
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> nid = 0x1, verb = 0x716, param = 0x1
>> value = 0x0
>> nid = 0x1, verb = 0x717, param = 0x1
>> value = 0x0
>> nid = 0x1, verb = 0x715, param = 0x1
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> nid = 0x1, verb = 0x716, param = 0x2
>> value = 0x0
>> nid = 0x1, verb = 0x717, param = 0x2
>> value = 0x0
>> nid = 0x1, verb = 0x715, param = 0x2
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> nid = 0x1, verb = 0x716, param = 0x4
>> value = 0x0
>> nid = 0x1, verb = 0x717, param = 0x4
>> value = 0x0
>> nid = 0x1, verb = 0x715, param = 0x4
>> value = 0x0
>> Home directory /home/cefn not ours.
>> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> Little Endian, Rate 48000 Hz, Mono
>>
>>
>> Cefn

Thanks again for your patience. It would be really useful if you could
suggest a specific change to the section of my script which details
the alternates, unless my script is more conceptually broken than
that. That way I can't misinterpret which of the flags you're trying
to describe with words. The problem I have looking at your "1/1/0"
list is which arguments of the actual hda-verb command to bind them
to: there are actually 4 values to vary in my mind. Three lines are
executed as a block for every possible combination of values in my
script (in the center of the nested loops)...

hda-verb /dev/snd/hwC0D0 "$GPIOMASK" SET_GPIO_MASK "$TARGETBIT"
hda-verb /dev/snd/hwC0D0 "$GPIODIR" SET_GPIO_DIR "$TARGETBIT"				
hda-verb /dev/snd/hwC0D0 "$GPIODATA" SET_GPIO_DATA "$TARGETBIT"

.... that is, GPIOMASK, GPIODIR, GPIODATA AND TARGETBIT. Your response
details only 3 values, so what do I do with TARGETBIT, or is it
identical to something else?.

The combinations are explored exhaustively by executing the three
hda-verb lines above for every set of values in a nested loop (you can
see how these are bound to hda-verb above). Previously the arrays of
possible values to iterate over read ...

TARGETBITS=( "0x01" "0x02" "0x04" ) # TRY ALL COMBINATIONS OF THREE GPIO BITS
GPIOMASKS=( "0x01" ) # THIS STAYS TRUE THROUGHOUT
GPIODIRS=( "0x00" "0x01" ) # TRY ALL COMBINATIONS OF THIS BOOLEAN
GPIODATAS=( "0x00" "0x01" ) # TRY ALL COMBINATIONS OF THIS BOOLEAN

...but what should they read?

Thanks again. I feel a bit of an idiot as I'm sure I could work this
out if I knew what hda-verb was actually doing to flags in the
soundcard, and what the arguments mapped to, but frankly it's a bit of
a mystery when you run hda-verb --help and your helpful suggestions
seem to assume I understand the mappings already.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 16:00                 ` Cefn Hoile
@ 2012-01-12 16:05                   ` Takashi Iwai
  2012-01-12 20:07                     ` Cefn Hoile
  0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2012-01-12 16:05 UTC (permalink / raw)
  To: Cefn Hoile; +Cc: alsa-devel

At Thu, 12 Jan 2012 16:00:53 +0000,
Cefn Hoile wrote:
> 
> On 12 January 2012 15:18, Takashi Iwai <tiwai@suse.de> wrote:
> > At Thu, 12 Jan 2012 15:11:16 +0000,
> > Cefn Hoile wrote:
> >>
> >> On 12 January 2012 11:59, Takashi Iwai <tiwai@suse.de> wrote:
> >> > At Thu, 12 Jan 2012 11:51:12 +0000,
> >> > Cefn Hoile wrote:
> >> >>
> >> >> Thanks, Takashi.
> >> >>
> >> >> I don't know what tools and invocations to use test out the GPIO
> >> >> values you describe. I think you're saying I shouldn't bother toggling
> >> >> things through HDA Analyzer as there's nothing obviously wrong in that
> >> >> part of the configuration (as reported by alsa-info.sh which is
> >> >> attached as requested).
> >> >>
> >> >> I noticed in HD-Audio.txt a section which mentions a similar problem
> >> >> and IDT codecs specifically (below). Is there an IRC or mailing list
> >> >> where people could talk me through the basics of trying different
> >> >> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
> >> >> how, yet. If I succeed I'll report back.
> >> >>
> >> >> Hopefully this will be worth it, as I think the N5110 is a pretty
> >> >> popular model with a common card, and probably a bunch of Dell
> >> >> hardware could get fixed if it could be figured out.
> >> >
> >> > You can change the GPIO setup via hda-verb on the fly.
> >> > For example, to set GPIO bit 0, try
> >> >        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
> >> > where the output direction is assumed, and only GPIO 0 is set.
> >> > For GPIO bit 1,
> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
> >> > and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.
> >> >
> >> > If none of above doesn't any change, try to set DATA 0 instead of 1,
> >> > and/or DIR 0 instead of 1.
> >> >
> >> >
> >> >
> >> > Takashi
> >> >
> >> >> QUOTING FROM HD-Audio.txt >>>>>>>
> >> >>
> >> >> If you are masochistic enough to debug the driver problem, note the
> >> >> following:
> >> >>
> >> >> - The speaker (and the headphone, too) output often requires the
> >> >>   external amplifier. This can be set usually via EAPD verb or a
> >> >>   certain GPIO. If the codec pin supports EAPD, you have a better
> >> >>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
> >> >>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
> >> >> - Some Realtek codecs require special vendor-specific coefficients to
> >> >>   turn on the amplifier. See patch_realtek.c.
> >> >> - IDT codecs may have extra power-enable/disable controls on each
> >> >>   analog pin. See patch_sigmatel.c.
> >> >> - Very rare but some devices don't accept the pin-detection verb until
> >> >>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
> >> >>   codec-communication stall. Some examples are found in
> >> >>   patch_realtek.c.
> >> >>
> >> >> <<<<<<<<
> >> >>
> >> >> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
> >> >> > At Thu, 12 Jan 2012 10:56:24 +0000,
> >> >> > Cefn Hoile wrote:
> >> >> >>
> >> >> >> In case anything has changed in my config since the original info run,
> >> >> >> here is the same script run right now...
> >> >> >>
> >> >> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
> >> >> >
> >> >> > Could you rather attach?  Then it'll be archived and searchable.
> >> >> >
> >> >> > Anyway, I don't see any obvious problem in the output.
> >> >> > If the pin assignment is correct, the routing and amp setups should be
> >> >> > OK with the current status.
> >> >> >
> >> >> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
> >> >> > and value bits.
> >> >> >
> >> >> >
> >> >> > Takashi
> >>
> >> I have tried the attached script, which hopefully corresponds with the
> >> GPIO exploration regime you wanted me to try. Please take a look at
> >> the sequence in case there could be some combination I missed based on
> >> trying to interpret your description, or if there's some kind of
> >> reload step I need to do.
> >
> > Yeah, there are some bugs :)
> > The combination should be (mask/dir/data)
> > 1/1/0 1/1/1 1/0/0 1/0/1
> > 2/2/0 2/2/2 2/0/0 2/0/2
> > 4/4/0 4/4/4 4/0/0 4/0/4
> >
> > Also, as a test, use aplay with -Dplughw option.
> > This skips PA and others.
> >
> >
> > Takashi
> >
> >> When running this GPIO script as...
> >> sudo ./setgpio.sh
> >> ...with headphones on my N5110 it plays the sample every time, and
> >> with speakers it is always silent.
> >>
> >> Here's an example log of execution...
> >>
> >> cefn@cefn-oneiric-dell:~$ sudo ./setgpio.sh
> >> [sudo] password for cefn:
> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> >> nid = 0x1, verb = 0x716, param = 0x1
> >> value = 0x0
> >> nid = 0x0, verb = 0x717, param = 0x1
> >> value = 0x0
> >> nid = 0x0, verb = 0x715, param = 0x1
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> >> nid = 0x1, verb = 0x716, param = 0x2
> >> value = 0x0
> >> nid = 0x0, verb = 0x717, param = 0x2
> >> value = 0x0
> >> nid = 0x0, verb = 0x715, param = 0x2
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> >> nid = 0x1, verb = 0x716, param = 0x4
> >> value = 0x0
> >> nid = 0x0, verb = 0x717, param = 0x4
> >> value = 0x0
> >> nid = 0x0, verb = 0x715, param = 0x4
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> >> nid = 0x1, verb = 0x716, param = 0x1
> >> value = 0x0
> >> nid = 0x0, verb = 0x717, param = 0x1
> >> value = 0x0
> >> nid = 0x1, verb = 0x715, param = 0x1
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> >> nid = 0x1, verb = 0x716, param = 0x2
> >> value = 0x0
> >> nid = 0x0, verb = 0x717, param = 0x2
> >> value = 0x0
> >> nid = 0x1, verb = 0x715, param = 0x2
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> >> nid = 0x1, verb = 0x716, param = 0x4
> >> value = 0x0
> >> nid = 0x0, verb = 0x717, param = 0x4
> >> value = 0x0
> >> nid = 0x1, verb = 0x715, param = 0x4
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> >> nid = 0x1, verb = 0x716, param = 0x1
> >> value = 0x0
> >> nid = 0x1, verb = 0x717, param = 0x1
> >> value = 0x0
> >> nid = 0x0, verb = 0x715, param = 0x1
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> >> nid = 0x1, verb = 0x716, param = 0x2
> >> value = 0x0
> >> nid = 0x1, verb = 0x717, param = 0x2
> >> value = 0x0
> >> nid = 0x0, verb = 0x715, param = 0x2
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> >> nid = 0x1, verb = 0x716, param = 0x4
> >> value = 0x0
> >> nid = 0x1, verb = 0x717, param = 0x4
> >> value = 0x0
> >> nid = 0x0, verb = 0x715, param = 0x4
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> >> nid = 0x1, verb = 0x716, param = 0x1
> >> value = 0x0
> >> nid = 0x1, verb = 0x717, param = 0x1
> >> value = 0x0
> >> nid = 0x1, verb = 0x715, param = 0x1
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> >> nid = 0x1, verb = 0x716, param = 0x2
> >> value = 0x0
> >> nid = 0x1, verb = 0x717, param = 0x2
> >> value = 0x0
> >> nid = 0x1, verb = 0x715, param = 0x2
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> >> nid = 0x1, verb = 0x716, param = 0x4
> >> value = 0x0
> >> nid = 0x1, verb = 0x717, param = 0x4
> >> value = 0x0
> >> nid = 0x1, verb = 0x715, param = 0x4
> >> value = 0x0
> >> Home directory /home/cefn not ours.
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> Little Endian, Rate 48000 Hz, Mono
> >>
> >>
> >> Cefn
> 
> Thanks again for your patience. It would be really useful if you could
> suggest a specific change to the section of my script which details
> the alternates, unless my script is more conceptually broken than
> that. That way I can't misinterpret which of the flags you're trying
> to describe with words. The problem I have looking at your "1/1/0"
> list is which arguments of the actual hda-verb command to bind them
> to: there are actually 4 values to vary in my mind. Three lines are
> executed as a block for every possible combination of values in my
> script (in the center of the nested loops)...
> 
> hda-verb /dev/snd/hwC0D0 "$GPIOMASK" SET_GPIO_MASK "$TARGETBIT"
> hda-verb /dev/snd/hwC0D0 "$GPIODIR" SET_GPIO_DIR "$TARGETBIT"				
> hda-verb /dev/snd/hwC0D0 "$GPIODATA" SET_GPIO_DATA "$TARGETBIT"
> 
> .... that is, GPIOMASK, GPIODIR, GPIODATA AND TARGETBIT. Your response
> details only 3 values, so what do I do with TARGETBIT, or is it
> identical to something else?.

No, the the first argument after /dev/snd/hwC0D0 is always 0x01.
It's the AFG node id which the GPIO is always bound to.  Only the last
value, i.e. the parameter to the exected verb, is changed.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 16:05                   ` Takashi Iwai
@ 2012-01-12 20:07                     ` Cefn Hoile
  2012-01-13  7:01                       ` Takashi Iwai
  0 siblings, 1 reply; 14+ messages in thread
From: Cefn Hoile @ 2012-01-12 20:07 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

[-- Attachment #1: Type: text/plain, Size: 12282 bytes --]

On 12 January 2012 16:05, Takashi Iwai <tiwai@suse.de> wrote:
> At Thu, 12 Jan 2012 16:00:53 +0000,
> Cefn Hoile wrote:
>>
>> On 12 January 2012 15:18, Takashi Iwai <tiwai@suse.de> wrote:
>> > At Thu, 12 Jan 2012 15:11:16 +0000,
>> > Cefn Hoile wrote:
>> >>
>> >> On 12 January 2012 11:59, Takashi Iwai <tiwai@suse.de> wrote:
>> >> > At Thu, 12 Jan 2012 11:51:12 +0000,
>> >> > Cefn Hoile wrote:
>> >> >>
>> >> >> Thanks, Takashi.
>> >> >>
>> >> >> I don't know what tools and invocations to use test out the GPIO
>> >> >> values you describe. I think you're saying I shouldn't bother toggling
>> >> >> things through HDA Analyzer as there's nothing obviously wrong in that
>> >> >> part of the configuration (as reported by alsa-info.sh which is
>> >> >> attached as requested).
>> >> >>
>> >> >> I noticed in HD-Audio.txt a section which mentions a similar problem
>> >> >> and IDT codecs specifically (below). Is there an IRC or mailing list
>> >> >> where people could talk me through the basics of trying different
>> >> >> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
>> >> >> how, yet. If I succeed I'll report back.
>> >> >>
>> >> >> Hopefully this will be worth it, as I think the N5110 is a pretty
>> >> >> popular model with a common card, and probably a bunch of Dell
>> >> >> hardware could get fixed if it could be figured out.
>> >> >
>> >> > You can change the GPIO setup via hda-verb on the fly.
>> >> > For example, to set GPIO bit 0, try
>> >> >        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
>> >> > where the output direction is assumed, and only GPIO 0 is set.
>> >> > For GPIO bit 1,
>> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
>> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
>> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
>> >> > and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.
>> >> >
>> >> > If none of above doesn't any change, try to set DATA 0 instead of 1,
>> >> > and/or DIR 0 instead of 1.
>> >> >
>> >> >
>> >> >
>> >> > Takashi
>> >> >
>> >> >> QUOTING FROM HD-Audio.txt >>>>>>>
>> >> >>
>> >> >> If you are masochistic enough to debug the driver problem, note the
>> >> >> following:
>> >> >>
>> >> >> - The speaker (and the headphone, too) output often requires the
>> >> >>   external amplifier. This can be set usually via EAPD verb or a
>> >> >>   certain GPIO. If the codec pin supports EAPD, you have a better
>> >> >>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
>> >> >>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
>> >> >> - Some Realtek codecs require special vendor-specific coefficients to
>> >> >>   turn on the amplifier. See patch_realtek.c.
>> >> >> - IDT codecs may have extra power-enable/disable controls on each
>> >> >>   analog pin. See patch_sigmatel.c.
>> >> >> - Very rare but some devices don't accept the pin-detection verb until
>> >> >>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
>> >> >>   codec-communication stall. Some examples are found in
>> >> >>   patch_realtek.c.
>> >> >>
>> >> >> <<<<<<<<
>> >> >>
>> >> >> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
>> >> >> > At Thu, 12 Jan 2012 10:56:24 +0000,
>> >> >> > Cefn Hoile wrote:
>> >> >> >>
>> >> >> >> In case anything has changed in my config since the original info run,
>> >> >> >> here is the same script run right now...
>> >> >> >>
>> >> >> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
>> >> >> >
>> >> >> > Could you rather attach?  Then it'll be archived and searchable.
>> >> >> >
>> >> >> > Anyway, I don't see any obvious problem in the output.
>> >> >> > If the pin assignment is correct, the routing and amp setups should be
>> >> >> > OK with the current status.
>> >> >> >
>> >> >> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
>> >> >> > and value bits.
>> >> >> >
>> >> >> >
>> >> >> > Takashi
>> >>
>> >> I have tried the attached script, which hopefully corresponds with the
>> >> GPIO exploration regime you wanted me to try. Please take a look at
>> >> the sequence in case there could be some combination I missed based on
>> >> trying to interpret your description, or if there's some kind of
>> >> reload step I need to do.
>> >
>> > Yeah, there are some bugs :)
>> > The combination should be (mask/dir/data)
>> > 1/1/0 1/1/1 1/0/0 1/0/1
>> > 2/2/0 2/2/2 2/0/0 2/0/2
>> > 4/4/0 4/4/4 4/0/0 4/0/4
>> >
>> > Also, as a test, use aplay with -Dplughw option.
>> > This skips PA and others.
>> >
>> >
>> > Takashi
>> >
>> >> When running this GPIO script as...
>> >> sudo ./setgpio.sh
>> >> ...with headphones on my N5110 it plays the sample every time, and
>> >> with speakers it is always silent.
>> >>
>> >> Here's an example log of execution...
>> >>
>> >> cefn@cefn-oneiric-dell:~$ sudo ./setgpio.sh
>> >> [sudo] password for cefn:
>> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x717, param = 0x1
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x715, param = 0x1
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x717, param = 0x2
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x715, param = 0x2
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x717, param = 0x4
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x715, param = 0x4
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x717, param = 0x1
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x715, param = 0x1
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x717, param = 0x2
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x715, param = 0x2
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x717, param = 0x4
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x715, param = 0x4
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x717, param = 0x1
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x715, param = 0x1
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x717, param = 0x2
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x715, param = 0x2
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x717, param = 0x4
>> >> value = 0x0
>> >> nid = 0x0, verb = 0x715, param = 0x4
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x717, param = 0x1
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x715, param = 0x1
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x717, param = 0x2
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x715, param = 0x2
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x717, param = 0x4
>> >> value = 0x0
>> >> nid = 0x1, verb = 0x715, param = 0x4
>> >> value = 0x0
>> >> Home directory /home/cefn not ours.
>> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> Little Endian, Rate 48000 Hz, Mono
>> >>
>> >>
>> >> Cefn
>>
>> Thanks again for your patience. It would be really useful if you could
>> suggest a specific change to the section of my script which details
>> the alternates, unless my script is more conceptually broken than
>> that. That way I can't misinterpret which of the flags you're trying
>> to describe with words. The problem I have looking at your "1/1/0"
>> list is which arguments of the actual hda-verb command to bind them
>> to: there are actually 4 values to vary in my mind. Three lines are
>> executed as a block for every possible combination of values in my
>> script (in the center of the nested loops)...
>>
>> hda-verb /dev/snd/hwC0D0 "$GPIOMASK" SET_GPIO_MASK "$TARGETBIT"
>> hda-verb /dev/snd/hwC0D0 "$GPIODIR" SET_GPIO_DIR "$TARGETBIT"
>> hda-verb /dev/snd/hwC0D0 "$GPIODATA" SET_GPIO_DATA "$TARGETBIT"
>>
>> .... that is, GPIOMASK, GPIODIR, GPIODATA AND TARGETBIT. Your response
>> details only 3 values, so what do I do with TARGETBIT, or is it
>> identical to something else?.
>
> No, the the first argument after /dev/snd/hwC0D0 is always 0x01.
> It's the AFG node id which the GPIO is always bound to.  Only the last
> value, i.e. the parameter to the exected verb, is changed.
>
>
> Takashi

OK. I'm now running the attached script which I think is exploring the
correct configuration space. Worth taking a look at the steps in there
to be sure I'm not doing something stupid, though.

I still have no speaker sound for any of the combinations of GPIO
flags. I'm not rebooting to try each combination, as I'm assuming
these are flags which can change at runtime and Alsa will pick them
up.

If I've properly explored all the GPIO combinations, what's next to
try? The HDA documentation suggests something to do with powering
pins, and something else to do with pin sensing. I'm not 100% on how I
could control these, although the HDA Analyzer exposes some checkboxes
and sliders which so far have achieved no sound as I wiggled them
randomly.

Cefn
http://cefn.com

[-- Attachment #2: setgpio.sh --]
[-- Type: application/x-sh, Size: 1794 bytes --]

[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-12 20:07                     ` Cefn Hoile
@ 2012-01-13  7:01                       ` Takashi Iwai
  2012-01-13 12:25                         ` Cefn Hoile
  0 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2012-01-13  7:01 UTC (permalink / raw)
  To: Cefn Hoile; +Cc: alsa-devel

At Thu, 12 Jan 2012 20:07:42 +0000,
Cefn Hoile wrote:
> 
> On 12 January 2012 16:05, Takashi Iwai <tiwai@suse.de> wrote:
> > At Thu, 12 Jan 2012 16:00:53 +0000,
> > Cefn Hoile wrote:
> >>
> >> On 12 January 2012 15:18, Takashi Iwai <tiwai@suse.de> wrote:
> >> > At Thu, 12 Jan 2012 15:11:16 +0000,
> >> > Cefn Hoile wrote:
> >> >>
> >> >> On 12 January 2012 11:59, Takashi Iwai <tiwai@suse.de> wrote:
> >> >> > At Thu, 12 Jan 2012 11:51:12 +0000,
> >> >> > Cefn Hoile wrote:
> >> >> >>
> >> >> >> Thanks, Takashi.
> >> >> >>
> >> >> >> I don't know what tools and invocations to use test out the GPIO
> >> >> >> values you describe. I think you're saying I shouldn't bother toggling
> >> >> >> things through HDA Analyzer as there's nothing obviously wrong in that
> >> >> >> part of the configuration (as reported by alsa-info.sh which is
> >> >> >> attached as requested).
> >> >> >>
> >> >> >> I noticed in HD-Audio.txt a section which mentions a similar problem
> >> >> >> and IDT codecs specifically (below). Is there an IRC or mailing list
> >> >> >> where people could talk me through the basics of trying different
> >> >> >> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
> >> >> >> how, yet. If I succeed I'll report back.
> >> >> >>
> >> >> >> Hopefully this will be worth it, as I think the N5110 is a pretty
> >> >> >> popular model with a common card, and probably a bunch of Dell
> >> >> >> hardware could get fixed if it could be figured out.
> >> >> >
> >> >> > You can change the GPIO setup via hda-verb on the fly.
> >> >> > For example, to set GPIO bit 0, try
> >> >> >        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
> >> >> > where the output direction is assumed, and only GPIO 0 is set.
> >> >> > For GPIO bit 1,
> >> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
> >> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
> >> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
> >> >> > and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.
> >> >> >
> >> >> > If none of above doesn't any change, try to set DATA 0 instead of 1,
> >> >> > and/or DIR 0 instead of 1.
> >> >> >
> >> >> >
> >> >> >
> >> >> > Takashi
> >> >> >
> >> >> >> QUOTING FROM HD-Audio.txt >>>>>>>
> >> >> >>
> >> >> >> If you are masochistic enough to debug the driver problem, note the
> >> >> >> following:
> >> >> >>
> >> >> >> - The speaker (and the headphone, too) output often requires the
> >> >> >>   external amplifier. This can be set usually via EAPD verb or a
> >> >> >>   certain GPIO. If the codec pin supports EAPD, you have a better
> >> >> >>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
> >> >> >>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
> >> >> >> - Some Realtek codecs require special vendor-specific coefficients to
> >> >> >>   turn on the amplifier. See patch_realtek.c.
> >> >> >> - IDT codecs may have extra power-enable/disable controls on each
> >> >> >>   analog pin. See patch_sigmatel.c.
> >> >> >> - Very rare but some devices don't accept the pin-detection verb until
> >> >> >>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
> >> >> >>   codec-communication stall. Some examples are found in
> >> >> >>   patch_realtek.c.
> >> >> >>
> >> >> >> <<<<<<<<
> >> >> >>
> >> >> >> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
> >> >> >> > At Thu, 12 Jan 2012 10:56:24 +0000,
> >> >> >> > Cefn Hoile wrote:
> >> >> >> >>
> >> >> >> >> In case anything has changed in my config since the original info run,
> >> >> >> >> here is the same script run right now...
> >> >> >> >>
> >> >> >> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
> >> >> >> >
> >> >> >> > Could you rather attach?  Then it'll be archived and searchable.
> >> >> >> >
> >> >> >> > Anyway, I don't see any obvious problem in the output.
> >> >> >> > If the pin assignment is correct, the routing and amp setups should be
> >> >> >> > OK with the current status.
> >> >> >> >
> >> >> >> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
> >> >> >> > and value bits.
> >> >> >> >
> >> >> >> >
> >> >> >> > Takashi
> >> >>
> >> >> I have tried the attached script, which hopefully corresponds with the
> >> >> GPIO exploration regime you wanted me to try. Please take a look at
> >> >> the sequence in case there could be some combination I missed based on
> >> >> trying to interpret your description, or if there's some kind of
> >> >> reload step I need to do.
> >> >
> >> > Yeah, there are some bugs :)
> >> > The combination should be (mask/dir/data)
> >> > 1/1/0 1/1/1 1/0/0 1/0/1
> >> > 2/2/0 2/2/2 2/0/0 2/0/2
> >> > 4/4/0 4/4/4 4/0/0 4/0/4
> >> >
> >> > Also, as a test, use aplay with -Dplughw option.
> >> > This skips PA and others.
> >> >
> >> >
> >> > Takashi
> >> >
> >> >> When running this GPIO script as...
> >> >> sudo ./setgpio.sh
> >> >> ...with headphones on my N5110 it plays the sample every time, and
> >> >> with speakers it is always silent.
> >> >>
> >> >> Here's an example log of execution...
> >> >>
> >> >> cefn@cefn-oneiric-dell:~$ sudo ./setgpio.sh
> >> >> [sudo] password for cefn:
> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> >> >> nid = 0x1, verb = 0x716, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x717, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x715, param = 0x1
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> >> >> nid = 0x1, verb = 0x716, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x717, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x715, param = 0x2
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
> >> >> nid = 0x1, verb = 0x716, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x717, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x715, param = 0x4
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> >> >> nid = 0x1, verb = 0x716, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x717, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x715, param = 0x1
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> >> >> nid = 0x1, verb = 0x716, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x717, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x715, param = 0x2
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
> >> >> nid = 0x1, verb = 0x716, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x717, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x715, param = 0x4
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> >> >> nid = 0x1, verb = 0x716, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x717, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x715, param = 0x1
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> >> >> nid = 0x1, verb = 0x716, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x717, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x715, param = 0x2
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
> >> >> nid = 0x1, verb = 0x716, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x717, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x0, verb = 0x715, param = 0x4
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> >> >> nid = 0x1, verb = 0x716, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x717, param = 0x1
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x715, param = 0x1
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> >> >> nid = 0x1, verb = 0x716, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x717, param = 0x2
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x715, param = 0x2
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
> >> >> nid = 0x1, verb = 0x716, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x717, param = 0x4
> >> >> value = 0x0
> >> >> nid = 0x1, verb = 0x715, param = 0x4
> >> >> value = 0x0
> >> >> Home directory /home/cefn not ours.
> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
> >> >> Little Endian, Rate 48000 Hz, Mono
> >> >>
> >> >>
> >> >> Cefn
> >>
> >> Thanks again for your patience. It would be really useful if you could
> >> suggest a specific change to the section of my script which details
> >> the alternates, unless my script is more conceptually broken than
> >> that. That way I can't misinterpret which of the flags you're trying
> >> to describe with words. The problem I have looking at your "1/1/0"
> >> list is which arguments of the actual hda-verb command to bind them
> >> to: there are actually 4 values to vary in my mind. Three lines are
> >> executed as a block for every possible combination of values in my
> >> script (in the center of the nested loops)...
> >>
> >> hda-verb /dev/snd/hwC0D0 "$GPIOMASK" SET_GPIO_MASK "$TARGETBIT"
> >> hda-verb /dev/snd/hwC0D0 "$GPIODIR" SET_GPIO_DIR "$TARGETBIT"
> >> hda-verb /dev/snd/hwC0D0 "$GPIODATA" SET_GPIO_DATA "$TARGETBIT"
> >>
> >> .... that is, GPIOMASK, GPIODIR, GPIODATA AND TARGETBIT. Your response
> >> details only 3 values, so what do I do with TARGETBIT, or is it
> >> identical to something else?.
> >
> > No, the the first argument after /dev/snd/hwC0D0 is always 0x01.
> > It's the AFG node id which the GPIO is always bound to.  Only the last
> > value, i.e. the parameter to the exected verb, is changed.
> >
> >
> > Takashi
> 
> OK. I'm now running the attached script which I think is exploring the
> correct configuration space. Worth taking a look at the steps in there
> to be sure I'm not doing something stupid, though.
> 
> I still have no speaker sound for any of the combinations of GPIO
> flags. I'm not rebooting to try each combination, as I'm assuming
> these are flags which can change at runtime and Alsa will pick them
> up.
> 
> If I've properly explored all the GPIO combinations, what's next to
> try? The HDA documentation suggests something to do with powering
> pins, and something else to do with pin sensing. I'm not 100% on how I
> could control these, although the HDA Analyzer exposes some checkboxes
> and sliders which so far have achieved no sound as I wiggled them
> randomly.

Well, I'm not sure whether it helps.
Has the speaker on your machine ever worked, e.g. with other OS?

I wonder because I haven't heard other bug reports regarding Dell
laptop with this codec.  There were some reports with Dell but they
were years ago with older Sigmatel codecs, not recent IDT ones.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Dell N5110 HDA External Speaker is mute
  2012-01-13  7:01                       ` Takashi Iwai
@ 2012-01-13 12:25                         ` Cefn Hoile
  0 siblings, 0 replies; 14+ messages in thread
From: Cefn Hoile @ 2012-01-13 12:25 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On 13 January 2012 07:01, Takashi Iwai <tiwai@suse.de> wrote:
> At Thu, 12 Jan 2012 20:07:42 +0000,
> Cefn Hoile wrote:
>>
>> On 12 January 2012 16:05, Takashi Iwai <tiwai@suse.de> wrote:
>> > At Thu, 12 Jan 2012 16:00:53 +0000,
>> > Cefn Hoile wrote:
>> >>
>> >> On 12 January 2012 15:18, Takashi Iwai <tiwai@suse.de> wrote:
>> >> > At Thu, 12 Jan 2012 15:11:16 +0000,
>> >> > Cefn Hoile wrote:
>> >> >>
>> >> >> On 12 January 2012 11:59, Takashi Iwai <tiwai@suse.de> wrote:
>> >> >> > At Thu, 12 Jan 2012 11:51:12 +0000,
>> >> >> > Cefn Hoile wrote:
>> >> >> >>
>> >> >> >> Thanks, Takashi.
>> >> >> >>
>> >> >> >> I don't know what tools and invocations to use test out the GPIO
>> >> >> >> values you describe. I think you're saying I shouldn't bother toggling
>> >> >> >> things through HDA Analyzer as there's nothing obviously wrong in that
>> >> >> >> part of the configuration (as reported by alsa-info.sh which is
>> >> >> >> attached as requested).
>> >> >> >>
>> >> >> >> I noticed in HD-Audio.txt a section which mentions a similar problem
>> >> >> >> and IDT codecs specifically (below). Is there an IRC or mailing list
>> >> >> >> where people could talk me through the basics of trying different
>> >> >> >> GPIO/EAPD, Power Enable or Pin Sense manipulations. I wouldn't know
>> >> >> >> how, yet. If I succeed I'll report back.
>> >> >> >>
>> >> >> >> Hopefully this will be worth it, as I think the N5110 is a pretty
>> >> >> >> popular model with a common card, and probably a bunch of Dell
>> >> >> >> hardware could get fixed if it could be figured out.
>> >> >> >
>> >> >> > You can change the GPIO setup via hda-verb on the fly.
>> >> >> > For example, to set GPIO bit 0, try
>> >> >> >        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
>> >> >> > where the output direction is assumed, and only GPIO 0 is set.
>> >> >> > For GPIO bit 1,
>> >> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x02
>> >> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x02
>> >> >> >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x02
>> >> >> > and 0x04 for GPIO bit 2.  Your device have up to three GPIO bits.
>> >> >> >
>> >> >> > If none of above doesn't any change, try to set DATA 0 instead of 1,
>> >> >> > and/or DIR 0 instead of 1.
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > Takashi
>> >> >> >
>> >> >> >> QUOTING FROM HD-Audio.txt >>>>>>>
>> >> >> >>
>> >> >> >> If you are masochistic enough to debug the driver problem, note the
>> >> >> >> following:
>> >> >> >>
>> >> >> >> - The speaker (and the headphone, too) output often requires the
>> >> >> >>   external amplifier. This can be set usually via EAPD verb or a
>> >> >> >>   certain GPIO. If the codec pin supports EAPD, you have a better
>> >> >> >>   chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly
>> >> >> >>   it's either GPIO0 or GPIO1) may turn on/off EAPD.
>> >> >> >> - Some Realtek codecs require special vendor-specific coefficients to
>> >> >> >>   turn on the amplifier. See patch_realtek.c.
>> >> >> >> - IDT codecs may have extra power-enable/disable controls on each
>> >> >> >>   analog pin. See patch_sigmatel.c.
>> >> >> >> - Very rare but some devices don't accept the pin-detection verb until
>> >> >> >>   triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the
>> >> >> >>   codec-communication stall. Some examples are found in
>> >> >> >>   patch_realtek.c.
>> >> >> >>
>> >> >> >> <<<<<<<<
>> >> >> >>
>> >> >> >> On 12 January 2012 11:25, Takashi Iwai <tiwai@suse.de> wrote:
>> >> >> >> > At Thu, 12 Jan 2012 10:56:24 +0000,
>> >> >> >> > Cefn Hoile wrote:
>> >> >> >> >>
>> >> >> >> >> In case anything has changed in my config since the original info run,
>> >> >> >> >> here is the same script run right now...
>> >> >> >> >>
>> >> >> >> >> http://www.alsa-project.org/db/?f=d0a1fd23339878916b611c88e64e4868b45445ce
>> >> >> >> >
>> >> >> >> > Could you rather attach?  Then it'll be archived and searchable.
>> >> >> >> >
>> >> >> >> > Anyway, I don't see any obvious problem in the output.
>> >> >> >> > If the pin assignment is correct, the routing and amp setups should be
>> >> >> >> > OK with the current status.
>> >> >> >> >
>> >> >> >> > Maybe it's a missing GPIO setup.  Try to adjust GPIO mask, direction
>> >> >> >> > and value bits.
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > Takashi
>> >> >>
>> >> >> I have tried the attached script, which hopefully corresponds with the
>> >> >> GPIO exploration regime you wanted me to try. Please take a look at
>> >> >> the sequence in case there could be some combination I missed based on
>> >> >> trying to interpret your description, or if there's some kind of
>> >> >> reload step I need to do.
>> >> >
>> >> > Yeah, there are some bugs :)
>> >> > The combination should be (mask/dir/data)
>> >> > 1/1/0 1/1/1 1/0/0 1/0/1
>> >> > 2/2/0 2/2/2 2/0/0 2/0/2
>> >> > 4/4/0 4/4/4 4/0/0 4/0/4
>> >> >
>> >> > Also, as a test, use aplay with -Dplughw option.
>> >> > This skips PA and others.
>> >> >
>> >> >
>> >> > Takashi
>> >> >
>> >> >> When running this GPIO script as...
>> >> >> sudo ./setgpio.sh
>> >> >> ...with headphones on my N5110 it plays the sample every time, and
>> >> >> with speakers it is always silent.
>> >> >>
>> >> >> Here's an example log of execution...
>> >> >>
>> >> >> cefn@cefn-oneiric-dell:~$ sudo ./setgpio.sh
>> >> >> [sudo] password for cefn:
>> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> >> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x717, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x715, param = 0x1
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> >> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x717, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x715, param = 0x2
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x00]
>> >> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x717, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x715, param = 0x4
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> >> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x717, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x715, param = 0x1
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> >> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x717, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x715, param = 0x2
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x00 0x01]
>> >> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x717, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x715, param = 0x4
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> >> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x717, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x715, param = 0x1
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> >> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x717, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x715, param = 0x2
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x00]
>> >> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x717, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x0, verb = 0x715, param = 0x4
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x01 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> >> >> nid = 0x1, verb = 0x716, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x717, param = 0x1
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x715, param = 0x1
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x02 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> >> >> nid = 0x1, verb = 0x716, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x717, param = 0x2
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x715, param = 0x2
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >> SETTING GPIO 0x04 MASK, DIRECTION AND DATA TO [0x01 0x01 0x01]
>> >> >> nid = 0x1, verb = 0x716, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x717, param = 0x4
>> >> >> value = 0x0
>> >> >> nid = 0x1, verb = 0x715, param = 0x4
>> >> >> value = 0x0
>> >> >> Home directory /home/cefn not ours.
>> >> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
>> >> >> Little Endian, Rate 48000 Hz, Mono
>> >> >>
>> >> >>
>> >> >> Cefn
>> >>
>> >> Thanks again for your patience. It would be really useful if you could
>> >> suggest a specific change to the section of my script which details
>> >> the alternates, unless my script is more conceptually broken than
>> >> that. That way I can't misinterpret which of the flags you're trying
>> >> to describe with words. The problem I have looking at your "1/1/0"
>> >> list is which arguments of the actual hda-verb command to bind them
>> >> to: there are actually 4 values to vary in my mind. Three lines are
>> >> executed as a block for every possible combination of values in my
>> >> script (in the center of the nested loops)...
>> >>
>> >> hda-verb /dev/snd/hwC0D0 "$GPIOMASK" SET_GPIO_MASK "$TARGETBIT"
>> >> hda-verb /dev/snd/hwC0D0 "$GPIODIR" SET_GPIO_DIR "$TARGETBIT"
>> >> hda-verb /dev/snd/hwC0D0 "$GPIODATA" SET_GPIO_DATA "$TARGETBIT"
>> >>
>> >> .... that is, GPIOMASK, GPIODIR, GPIODATA AND TARGETBIT. Your response
>> >> details only 3 values, so what do I do with TARGETBIT, or is it
>> >> identical to something else?.
>> >
>> > No, the the first argument after /dev/snd/hwC0D0 is always 0x01.
>> > It's the AFG node id which the GPIO is always bound to.  Only the last
>> > value, i.e. the parameter to the exected verb, is changed.
>> >
>> >
>> > Takashi
>>
>> OK. I'm now running the attached script which I think is exploring the
>> correct configuration space. Worth taking a look at the steps in there
>> to be sure I'm not doing something stupid, though.
>>
>> I still have no speaker sound for any of the combinations of GPIO
>> flags. I'm not rebooting to try each combination, as I'm assuming
>> these are flags which can change at runtime and Alsa will pick them
>> up.
>>
>> If I've properly explored all the GPIO combinations, what's next to
>> try? The HDA documentation suggests something to do with powering
>> pins, and something else to do with pin sensing. I'm not 100% on how I
>> could control these, although the HDA Analyzer exposes some checkboxes
>> and sliders which so far have achieved no sound as I wiggled them
>> randomly.
>
> Well, I'm not sure whether it helps.
> Has the speaker on your machine ever worked, e.g. with other OS?
>
> I wonder because I haven't heard other bug reports regarding Dell
> laptop with this codec.  There were some reports with Dell but they
> were years ago with older Sigmatel codecs, not recent IDT ones.
>
>
> Takashi

I was testing by configuring Windows 7 natively (until now it was only
configured to run from its partition in Ubuntu-hosted Virtualbox) and
I went for a reboot after refreshing the sound drivers. Initially the
default drivers gave silent speakers, but working headphones,
consistent with behaviour under Ubuntu, and after installing the
drivers (but before a reboot) there seemed to be no difference.

However, we may now never know if the problem was the speakers or not.
During the reboot, the hard-drive experienced a total failure (as
reported by BIOS diagnostic tools). The whole unit is now going back
to Dell with both the hard-drive failure and the silent speakers on
the docket, and I'm upgrading to a 24month on-site warranty while I
still can :) Will let you know if there's any change after the
hardware pixies at Dell have done their magic and once I've had
another go at an Oneiric install.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-01-13 12:25 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-11  0:56 Dell N5110 HDA External Speaker is mute Cefn Hoile
2012-01-12 10:24 ` Cefn Hoile
2012-01-12 10:32 ` Takashi Iwai
2012-01-12 10:52   ` Cefn Hoile
2012-01-12 10:56     ` Cefn Hoile
2012-01-12 11:25       ` Takashi Iwai
     [not found]         ` <CA+P0tC_y6QOdgmqSRmMtMvHM+OsMW2mq2325_m8ER4z7Mi6gKQ@mail.gmail.com>
2012-01-12 11:59           ` Takashi Iwai
2012-01-12 15:11             ` Cefn Hoile
2012-01-12 15:18               ` Takashi Iwai
2012-01-12 16:00                 ` Cefn Hoile
2012-01-12 16:05                   ` Takashi Iwai
2012-01-12 20:07                     ` Cefn Hoile
2012-01-13  7:01                       ` Takashi Iwai
2012-01-13 12:25                         ` Cefn Hoile

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.