2008-06-09 19:59:17

by Daniel J Blueman

[permalink] [raw]
Subject: ALC883 recording troubles...

Hi Takashi-san,

I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
LTS x86-64). I can see on Audacity that the DC offset that varies with
the recording capture level. Plus, the mixer playback->mic-boost
muting enables/disables mic-boost in recording.

It feels like the ALC883 pins aren't configured quite right. The mobo
is an Asus P5E-VM with current BIOS [1]

What's the routine to debug this? Would it help to install windows,
dump the register space and compare?

Thanks in advance,
Daniel

--- [1]

$ sudo lspci -vvvxxxs 0:1b.0
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio
Controller (rev 02)
Subsystem: ASUSTeK Computer Inc. Unknown device 829f
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR-
Latency: 0, Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 22
Region 0: Memory at fe9f8000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [70] Express Unknown type IRQ 0
Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
Device: Latency L0s <64ns, L1 <1us
Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
Link: Supported Speed unknown, Width x0, ASPM unknown, Port 0
Link: Latency L0s <64ns, L1 <1us
Link: ASPM Disabled CommClk- ExtSynch-
Link: Speed unknown, Width x0
00: 86 80 3e 29 06 00 10 00 02 00 03 04 08 00 00 00
10: 04 80 9f fe 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 9f 82
30: 00 00 00 00 50 00 00 00 00 00 00 00 0f 01 00 00
40: 01 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00
50: 01 60 42 c8 00 00 00 00 00 00 00 00 00 00 00 00
60: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 10 00 91 00 00 00 00 10 00 08 10 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 04 00 01 00 00 00 00 31 00 a3 02 00 00 00 00
d0: 61 00 a3 02 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC883 Digital [ALC883 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: ATI HDMI [ATI HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
daniel@veyron:~$ aplay -L
default:CARD=Intel
HDA Intel, ALC883 Analog
Default Audio Device
front:CARD=Intel,DEV=0
HDA Intel, ALC883 Analog
Front speakers
surround40:CARD=Intel,DEV=0
HDA Intel, ALC883 Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Intel,DEV=0
HDA Intel, ALC883 Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Intel,DEV=0
HDA Intel, ALC883 Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Intel,DEV=0
HDA Intel, ALC883 Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Intel,DEV=0
HDA Intel, ALC883 Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=U0x46d0x990
USB Device 0x46d:0x990, USB Audio
Default Audio Device
front:CARD=U0x46d0x990,DEV=0
USB Device 0x46d:0x990, USB Audio
Front speakers
surround40:CARD=U0x46d0x990,DEV=0
USB Device 0x46d:0x990, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=U0x46d0x990,DEV=0
USB Device 0x46d:0x990, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=U0x46d0x990,DEV=0
USB Device 0x46d:0x990, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=U0x46d0x990,DEV=0
USB Device 0x46d:0x990, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=U0x46d0x990,DEV=0
USB Device 0x46d:0x990, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=U0x46d0x990,DEV=0
USB Device 0x46d:0x990, USB Audio
IEC958 (S/PDIF) Digital Audio Output
front:CARD=HDMI
HDA ATI HDMI
Front speakers
surround40:CARD=HDMI
HDA ATI HDMI
4.0 Surround output to Front and Rear speakers
surround41:CARD=HDMI
HDA ATI HDMI
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=HDMI
HDA ATI HDMI
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=HDMI
HDA ATI HDMI
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=HDMI
HDA ATI HDMI
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
--
Daniel J Blueman


2008-06-10 05:59:46

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Mon, 9 Jun 2008 20:59:00 +0100,
Daniel J Blueman wrote:
>
> Hi Takashi-san,
>
> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
> LTS x86-64). I can see on Audacity that the DC offset that varies with
> the recording capture level.

Could you elaborate? The mic bias level could be changed via the pin
control value. Usually, it's set as VREF 80%.

> Plus, the mixer playback->mic-boost
> muting enables/disables mic-boost in recording.

This is a known bug in alsa-lib mixer abstraction. No kernel issue.

> It feels like the ALC883 pins aren't configured quite right. The mobo
> is an Asus P5E-VM with current BIOS [1]
>
> What's the routine to debug this? Would it help to install windows,
> dump the register space and compare?

You can find *.INI file that contains the default pin configuration
in Windows. This might be useful in the case BIOS is broken but
Windows does a black magic.

Anyway, please run alsa-info.sh with --no-upload option and show the
generated file here. It contains the codec information and mixer
setup.
http://hg.alsa-project.org/alsa/raw-file/tip/alsa-info.sh

Also, you can adjust the pin setting on the fly via hda-verb utility
below:
http://ftp.suse.com/pub/people/tiwai/misc/hda-verb-0.2.tar.bz2

Don't forget to build snd-hda-intel module with
CONFIG_SND_HDA_HWDEP=y to use this command.


Takashi

>
> Thanks in advance,
> Daniel
>
> --- [1]
>
> $ sudo lspci -vvvxxxs 0:1b.0
> 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio
> Controller (rev 02)
> Subsystem: ASUSTeK Computer Inc. Unknown device 829f
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR-
> Latency: 0, Cache Line Size: 32 bytes
> Interrupt: pin A routed to IRQ 22
> Region 0: Memory at fe9f8000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
> Address: 0000000000000000 Data: 0000
> Capabilities: [70] Express Unknown type IRQ 0
> Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
> Device: Latency L0s <64ns, L1 <1us
> Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
> Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
> Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
> Link: Supported Speed unknown, Width x0, ASPM unknown, Port 0
> Link: Latency L0s <64ns, L1 <1us
> Link: ASPM Disabled CommClk- ExtSynch-
> Link: Speed unknown, Width x0
> 00: 86 80 3e 29 06 00 10 00 02 00 03 04 08 00 00 00
> 10: 04 80 9f fe 00 00 00 00 00 00 00 00 00 00 00 00
> 20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 9f 82
> 30: 00 00 00 00 50 00 00 00 00 00 00 00 0f 01 00 00
> 40: 01 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00
> 50: 01 60 42 c8 00 00 00 00 00 00 00 00 00 00 00 00
> 60: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00
> 70: 10 00 91 00 00 00 00 10 00 08 10 00 00 00 00 00
> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> c0: 00 04 00 01 00 00 00 00 31 00 a3 02 00 00 00 00
> d0: 61 00 a3 02 00 00 00 00 00 00 00 00 00 00 00 00
> e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
>
> $ aplay -l
> **** List of PLAYBACK Hardware Devices ****
> card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 0: Intel [HDA Intel], device 1: ALC883 Digital [ALC883 Digital]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 0: Intel [HDA Intel], device 3: ATI HDMI [ATI HDMI]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 2: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> daniel@veyron:~$ aplay -L
> default:CARD=Intel
> HDA Intel, ALC883 Analog
> Default Audio Device
> front:CARD=Intel,DEV=0
> HDA Intel, ALC883 Analog
> Front speakers
> surround40:CARD=Intel,DEV=0
> HDA Intel, ALC883 Analog
> 4.0 Surround output to Front and Rear speakers
> surround41:CARD=Intel,DEV=0
> HDA Intel, ALC883 Analog
> 4.1 Surround output to Front, Rear and Subwoofer speakers
> surround50:CARD=Intel,DEV=0
> HDA Intel, ALC883 Analog
> 5.0 Surround output to Front, Center and Rear speakers
> surround51:CARD=Intel,DEV=0
> HDA Intel, ALC883 Analog
> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
> surround71:CARD=Intel,DEV=0
> HDA Intel, ALC883 Analog
> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
> null
> Discard all samples (playback) or generate zero samples (capture)
> default:CARD=U0x46d0x990
> USB Device 0x46d:0x990, USB Audio
> Default Audio Device
> front:CARD=U0x46d0x990,DEV=0
> USB Device 0x46d:0x990, USB Audio
> Front speakers
> surround40:CARD=U0x46d0x990,DEV=0
> USB Device 0x46d:0x990, USB Audio
> 4.0 Surround output to Front and Rear speakers
> surround41:CARD=U0x46d0x990,DEV=0
> USB Device 0x46d:0x990, USB Audio
> 4.1 Surround output to Front, Rear and Subwoofer speakers
> surround50:CARD=U0x46d0x990,DEV=0
> USB Device 0x46d:0x990, USB Audio
> 5.0 Surround output to Front, Center and Rear speakers
> surround51:CARD=U0x46d0x990,DEV=0
> USB Device 0x46d:0x990, USB Audio
> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
> surround71:CARD=U0x46d0x990,DEV=0
> USB Device 0x46d:0x990, USB Audio
> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
> iec958:CARD=U0x46d0x990,DEV=0
> USB Device 0x46d:0x990, USB Audio
> IEC958 (S/PDIF) Digital Audio Output
> front:CARD=HDMI
> HDA ATI HDMI
> Front speakers
> surround40:CARD=HDMI
> HDA ATI HDMI
> 4.0 Surround output to Front and Rear speakers
> surround41:CARD=HDMI
> HDA ATI HDMI
> 4.1 Surround output to Front, Rear and Subwoofer speakers
> surround50:CARD=HDMI
> HDA ATI HDMI
> 5.0 Surround output to Front, Center and Rear speakers
> surround51:CARD=HDMI
> HDA ATI HDMI
> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
> surround71:CARD=HDMI
> HDA ATI HDMI
> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
> --
> Daniel J Blueman
>

2008-06-10 12:22:56

by Romano Giannetti

[permalink] [raw]
Subject: Re: ALC883 recording troubles...


On Mon, 2008-06-09 at 20:59 +0100, Daniel J Blueman wrote:
>
> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
> LTS x86-64). I can see on Audacity that the DC offset that varies with
> the recording capture level.

Probably the same as
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3824

I thought I was the only one seeing that, given the answers I got...

> What's the routine to debug this? Would it help to install windows,
> dump the register space and compare?

I am available to help, too. My card works quite well, modulo the mic
problem and a lower output than in Vista, and I'd love to see it solved.

Romano

--
Sorry for the disclaimer --- ?I cannot stop it!



--
La presente comunicaci?n tiene car?cter confidencial y es para el exclusivo uso del destinatario indicado en la misma. Si Ud. no es el destinatario indicado, le informamos que cualquier forma de distribuci?n, reproducci?n o uso de esta comunicaci?n y/o de la informaci?n contenida en la misma est?n estrictamente prohibidos por la ley. Si Ud. ha recibido esta comunicaci?n por error, por favor, notif?quelo inmediatamente al remitente contestando a este mensaje y proceda a continuaci?n a destruirlo. Gracias por su colaboraci?n.

This communication contains confidential information. It is for the exclusive use of the intended addressee. If you are not the intended addressee, please note that any form of distribution, copying or use of this communication or the information in it is strictly prohibited by law. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this message. Thank you for your cooperation.

2008-06-10 12:53:40

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Tue, Jun 10, 2008 at 2:22 PM, Romano Giannetti <[email protected]> wrote:
>
> On Mon, 2008-06-09 at 20:59 +0100, Daniel J Blueman wrote:
>>
>> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
>> LTS x86-64). I can see on Audacity that the DC offset that varies with
>> the recording capture level.
>
> Probably the same as
> https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3824
>
> I thought I was the only one seeing that, given the answers I got...
>
>> What's the routine to debug this? Would it help to install windows,
>> dump the register space and compare?
>
> I am available to help, too. My card works quite well, modulo the mic
> problem and a lower output than in Vista, and I'd love to see it solved.

FWIW, I'm seeing this problem as well (ALC268 too) on my Acer Aspire
5720Z laptop.

Dupes of this bug report are NOT hard to find:

https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3609
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3637
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3897 (reported by me)
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3930
...probably more

Please, if there's anything I can do to fix this, I will. I can apply
and test patches, no problem.

I'm attaching my own alsa-info.txt in case it helps.

Thanks.


Vegard

--
!!################################
!!ALSA Information Script v 0.4.48
!!################################

!!Script ran on: Tue Jun 10 14:45:23 CEST 2008


!!Linux Distribution
!!------------------

Fedora release 8 (Werewolf) Fedora release 8 (Werewolf) Fedora release
8 (Werewolf) Fedora release 8 (Werewolf)


!!Kernel Information
!!------------------

Kernel release: 2.6.24.5-85.fc8
Operating System: GNU/Linux
Architecture: i686
Processor: i686
SMP Enabled: Yes


!!ALSA Version
!!------------

Driver version: 1.0.16
Library version: 1.0.15
Utilities version: 1.0.15


!!Loaded ALSA modules
!!-------------------

snd_hda_intel


!!Soundcards recognised by ALSA
!!-----------------------------

0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0x9b300000 irq 22


!!PCI Soundcards installed in the system
!!--------------------------------------

00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio
Controller (rev 03)


!!Advanced information - PCI Vendor/Device/Susbsystem ID's
!!--------------------------------------------------------

00:1b.0 0403: 8086:284b (rev 03)
Subsystem: 1025:011e


!!Modprobe options (Sound related)
!!--------------------------------

snd-card-0: index=0
snd-hda-intel: index=0


!!Loaded sound module options
!!--------------------------

!!Module: snd_hda_intel
enable : Y,Y,Y,Y,Y,Y,Y,Y
enable_msi : 0
id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
index : 0,-1,-1,-1,-1,-1,-1,-1
model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
position_fix : 0,0,0,0,0,0,0,0
power_save : 0
power_save_controller : Y
probe_mask : -1,-1,-1,-1,-1,-1,-1,-1
single_cmd : N


!!HDA-Intel Codec information
!!---------------------------
--startcollapse--

Codec: Realtek ALC268
Address: 0
Vendor Id: 0x10ec0268
Subsystem Id: 0x1025011e
Revision Id: 0x100003
No Modem Function Group found
Default PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=4, o=0, i=0, unsolicited=1, wake=0
IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0
IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0
IO[2]: enable=0, dir=0, wake=0, sticky=0, data=0
IO[3]: enable=0, dir=0, wake=0, sticky=0, data=0
Node 0x02 [Audio Output] wcaps 0x1d: Stereo Amp-Out
Amp-Out caps: ofs=0x40, nsteps=0x40, stepsize=0x03, mute=0
Amp-Out vals: [0x28 0x28]
Converter: stream=5, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x03 [Audio Output] wcaps 0x1d: Stereo Amp-Out
Amp-Out caps: ofs=0x40, nsteps=0x40, stepsize=0x03, mute=0
Amp-Out vals: [0x28 0x28]
Converter: stream=5, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x04 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x05 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x06 [Audio Output] wcaps 0x211: Stereo Digital
Converter: stream=0, channel=0
Digital:
Digital category: 0x0
PCM:
rates [0x5e0]: 44100 48000 88200 96000 192000
bits [0x1e]: 16 20 24 32
formats [0x1]: PCM
Node 0x07 [Audio Input] wcaps 0x100111: Stereo
Converter: stream=0, channel=0
SDI-Select: 0
PCM:
rates [0x160]: 44100 48000 96000
bits [0x6]: 16 20
formats [0x1]: PCM
Connection: 1
0x24
Node 0x08 [Audio Input] wcaps 0x100111: Stereo
Converter: stream=0, channel=0
SDI-Select: 0
PCM:
rates [0x160]: 44100 48000 96000
bits [0x6]: 16 20
formats [0x1]: PCM
Connection: 1
0x23
Node 0x09 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0a [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0b [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0c [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0d [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0e [Audio Mixer] wcaps 0x20010a: Mono Amp-In
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00]
Connection: 1
0x02
Node 0x0f [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00 0x00] [0x80 0x80]
Connection: 2
0x02 0x1d
Node 0x10 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00 0x00] [0x80 0x80] [0x80 0x80]
Connection: 3
0x03 0x1d 0x02
Node 0x11 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x12 [Pin Complex] wcaps 0x400001: Stereo
Pincap 0x0820: IN
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x20: IN
Node 0x13 [Pin Complex] wcaps 0x400001: Stereo
Pincap 0x0820: IN
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x20: IN
Node 0x14 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x081003c: IN OUT HP EAPD Detect
EAPD 0x2: EAPD
Pin Default 0x0221101f: [Jack] HP Out at Ext Front
Conn = 1/8, Color = Black
DefAssociation = 0x1, Sequence = 0xf
Pin-ctls: 0xc0: OUT HP
Unsolicited: tag=04, enabled=1
Connection: 1
0x0f
Node 0x15 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x081003c: IN OUT HP EAPD Detect
EAPD 0x2: EAPD
Pin Default 0x99130110: [Fixed] Speaker at Int ATAPI
Conn = ATAPI, Color = Unknown
DefAssociation = 0x1, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 1
0x10
Node 0x16 [Pin Complex] wcaps 0x40010c: Mono Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80]
Pincap 0x0810: OUT
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Connection: 1
0x0e
Node 0x17 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
Amp-In vals: [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x083734: IN OUT Detect
Vref caps: HIZ 50 GRD 80 100
Pin Default 0x02a19840: [Jack] Mic at Ext Front
Conn = 1/8, Color = Pink
DefAssociation = 0x4, Sequence = 0x0
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Connection: 1
0x02
Node 0x19 [Pin Complex] wcaps 0x40008b: Stereo Amp-In
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
Amp-In vals: [0x00 0x00]
Pincap 0x083724: IN Detect
Vref caps: HIZ 50 GRD 80 100
Pin Default 0x99a30941: [Fixed] Mic at Int ATAPI
Conn = ATAPI, Color = Unknown
DefAssociation = 0x4, Sequence = 0x1
Misc = NO_PRESENCE
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
Amp-In vals: [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x083734: IN OUT Detect
Vref caps: HIZ 50 GRD 80 100
Pin Default 0x0281304e: [Jack] Line In at Ext Front
Conn = 1/8, Color = Blue
DefAssociation = 0x4, Sequence = 0xe
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Connection: 1
0x02
Node 0x1b [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x1c [Pin Complex] wcaps 0x400001: Stereo
Pincap 0x0820: IN
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x20: IN
Node 0x1d [Pin Complex] wcaps 0x400000: Mono
Pincap 0x0820: IN
Pin Default 0x4017952d: [N/A] Speaker at Ext N/A
Conn = Analog, Color = Pink
DefAssociation = 0x2, Sequence = 0xd
Misc = NO_PRESENCE
Pin-ctls: 0x20: IN
Node 0x1e [Pin Complex] wcaps 0x400380: Mono Digital
Pincap 0x0810: OUT
Pin Default 0x02451130: [Jack] SPDIF Out at Ext Front
Conn = Optical, Color = Black
DefAssociation = 0x3, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 1
0x06
Node 0x1f [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono
Processing caps: benign=0, ncoeff=10
Node 0x21 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x22 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x23 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
Amp-Out caps: ofs=0x0b, nsteps=0x1f, stepsize=0x05, mute=1
Amp-Out vals: [0x00 0x00]
Connection: 7
0x18* 0x19 0x1a 0x1c 0x14 0x15 0x12
Node 0x24 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
Amp-Out caps: ofs=0x0b, nsteps=0x1f, stepsize=0x05, mute=1
Amp-Out vals: [0x00 0x00]
Connection: 7
0x18* 0x19 0x1a 0x1c 0x14 0x15 0x13
Codec: Conexant ID 2c06
Address: 1
Vendor Id: 0x14f12c06
Subsystem Id: 0x1025011e
Revision Id: 0x100000
Modem Function Group: 0x2
--endcollapse--


!!ALSA Device nodes
!!-----------------

crw-rw----+ 1 root root 116, 0 2008-06-10 13:01 /dev/snd/controlC0
crw-rw----+ 1 root root 116, 4 2008-06-10 13:01 /dev/snd/hwC0D0
crw-rw----+ 1 root root 116, 5 2008-06-10 13:01 /dev/snd/hwC0D1
crw-rw----+ 1 root root 116, 24 2008-06-10 13:02 /dev/snd/pcmC0D0c
crw-rw----+ 1 root root 116, 16 2008-06-10 14:23 /dev/snd/pcmC0D0p
crw-rw----+ 1 root root 116, 1 2008-06-10 13:01 /dev/snd/seq
crw-rw----+ 1 root root 116, 33 2008-06-10 13:01 /dev/snd/timer


!!ALSA configuration files
!!------------------------

!!System wide config file (/etc/asound.conf)

#Generated by system-config-soundcard
#If you edit this file, don't run system-config-soundcard,
#all your changes here could be lost.
#SWCONF
#DEV 0
defaults.pcm.card 0
defaults.pcm.device 0
defaults.ctl.card 0


!!Aplay/Arecord output
!!------------

APLAY

**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC268 Analog [ALC268 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0

ARECORD

**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC268 Analog [ALC268 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0

!!Amixer output
!!-------------

!!-------Mixer controls for card 0 [Intel]

Simple mixer control 'Master',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 64
Mono:
Front Left: Playback 40 [62%] [-24.00dB] [on]
Front Right: Playback 40 [62%] [-24.00dB] [on]
Simple mixer control 'PCM',0
Capabilities: pvolume
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 250 [98%] [-1.00dB]
Front Right: Playback 250 [98%] [-1.00dB]
Simple mixer control 'Line In Boost',0
Capabilities: volume
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 2
Front Left: 0 [0%]
Front Right: 0 [0%]
Simple mixer control 'Mic Boost',0
Capabilities: volume
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 2
Front Left: 0 [0%]
Front Right: 0 [0%]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch
Capture channels: Front Left - Front Right
Limits: Capture 0 - 31
Front Left: Capture 0 [0%] [-16.50dB] [on]
Front Right: Capture 0 [0%] [-16.50dB] [on]
Simple mixer control 'Beep',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 12
Mono:
Front Left: Playback 0 [0%] [-24.00dB] [off]
Front Right: Playback 0 [0%] [-24.00dB] [off]
Simple mixer control 'Digital',0
Capabilities: cvolume
Capture channels: Front Left - Front Right
Limits: Capture 0 - 120
Front Left: Capture 0 [0%] [-30.00dB]
Front Right: Capture 0 [0%] [-30.00dB]
Simple mixer control 'Input Source',0
Capabilities: cenum
Items: 'Mic' 'Internal Mic' 'Line'
Item0: 'Mic'
Simple mixer control 'Internal Mic Boost',0
Capabilities: volume
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 2
Front Left: 0 [0%]
Front Right: 0 [0%]


!!Alsactl output
!!-------------

--startcollapse--
state.Intel {
control.1 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 64'
iface MIXER
name 'Master Playback Volume'
value.0 40
value.1 40
}
control.2 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Master Playback Switch'
value.0 true
value.1 true
}
control.3 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 2'
iface MIXER
name 'Mic Boost'
value.0 0
value.1 0
}
control.4 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 2'
iface MIXER
name 'Internal Mic Boost'
value.0 0
value.1 0
}
control.5 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 2'
iface MIXER
name 'Line In Boost'
value.0 0
value.1 0
}
control.6 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Capture Volume'
value.0 0
value.1 0
}
control.7 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Capture Switch'
value.0 true
value.1 true
}
control.8 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mic
comment.item.1 'Internal Mic'
comment.item.2 Line
iface MIXER
name 'Input Source'
value Mic
}
control.9 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 12'
iface MIXER
name 'Beep Playback Volume'
value.0 0
value.1 0
}
control.10 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Beep Playback Switch'
value.0 false
value.1 false
}
control.11 {
comment.access 'read write user'
comment.type INTEGER
comment.count 2
comment.range '0 - 255'
comment.tlv '0000000100000008ffffec1400000014'
iface MIXER
name 'PCM Playback Volume'
value.0 250
value.1 250
}
control.12 {
comment.access 'read write user'
comment.type INTEGER
comment.count 2
comment.range '0 - 120'
comment.tlv '0000000100000008fffff44800000032'
iface MIXER
name 'Digital Capture Volume'
value.0 0
value.1 0
}
}
--endcollapse--


!!All Loaded Modules
!!------------------

Module
rfkill_input
coretemp
hwmon
fuse
cpufreq_ondemand
acpi_cpufreq
loop
dm_multipath
ipv6
snd_hda_intel
snd_seq_oss
snd_seq_midi_event
snd_seq
snd_seq_device
nvidia
snd_pcm_oss
snd_mixer_oss
arc4
ecb
blkcipher
snd_pcm
sr_mod
cdrom
b43
snd_timer
snd_page_alloc
rfkill
snd_hwdep
mac80211
snd
cfg80211
uvcvideo
compat_ioctl32
input_polldev
firewire_ohci
firewire_core
sdhci
video
button
ac
battery
tg3
output
crc_itu_t
mmc_core
ricoh_mmc
videodev
ata_piix
i2c_i801
soundcore
v4l1_compat
pcspkr
iTCO_wdt
pata_acpi
v4l2_common
iTCO_vendor_support
ssb
joydev
ata_generic
i2c_core
sg
dm_snapshot
dm_zero
dm_mirror
dm_mod
ahci
libata
sd_mod
scsi_mod
ext3
jbd
mbcache
uhci_hcd
ohci_hcd
ehci_hcd

2008-06-11 19:00:35

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
> At Mon, 9 Jun 2008 20:59:00 +0100,
> Daniel J Blueman wrote:
>>
>> Hi Takashi-san,
>>
>> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
>> LTS x86-64). I can see on Audacity that the DC offset that varies with
>> the recording capture level.
>
> Could you elaborate? The mic bias level could be changed via the pin
> control value. Usually, it's set as VREF 80%.

When the recording->capture level is set to 0, the mic has no DC
offset as expected. Maxing the recording->capture level, the mic input
is saturated, in between, we see a linear connection.

>> Plus, the mixer playback->mic-boost
>> muting enables/disables mic-boost in recording.
>
> This is a known bug in alsa-lib mixer abstraction. No kernel issue.

>> It feels like the ALC883 pins aren't configured quite right. The mobo
>> is an Asus P5E-VM with current BIOS [1]
>>
>> What's the routine to debug this? Would it help to install windows,
>> dump the register space and compare?
>
> You can find *.INI file that contains the default pin configuration
> in Windows. This might be useful in the case BIOS is broken but
> Windows does a black magic.

That'll be these defaults stashed in the INF file [2]. Let me know if
it's not what you expected and I'll publish the complete INF file.

> Anyway, please run alsa-info.sh with --no-upload option and show the
> generated file here. It contains the codec information and mixer
> setup.
> http://hg.alsa-project.org/alsa/raw-file/tip/alsa-info.sh

See [3].

> Also, you can adjust the pin setting on the fly via hda-verb utility
> below:
> http://ftp.suse.com/pub/people/tiwai/misc/hda-verb-0.2.tar.bz2
>
> Don't forget to build snd-hda-intel module with
> CONFIG_SND_HDA_HWDEP=y to use this command.

I'll give this a shot if I get time.

Thanks for your time!
Daniel

> Takashi
>
>>
>> Thanks in advance,
>> Daniel
>>
>> --- [1]
>>
>> $ sudo lspci -vvvxxxs 0:1b.0
>> 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio
>> Controller (rev 02)
>> Subsystem: ASUSTeK Computer Inc. Unknown device 829f
>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B-
>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>> <TAbort- <MAbort- >SERR- <PERR-
>> Latency: 0, Cache Line Size: 32 bytes
>> Interrupt: pin A routed to IRQ 22
>> Region 0: Memory at fe9f8000 (64-bit, non-prefetchable) [size=16K]
>> Capabilities: [50] Power Management version 2
>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>> Status: D0 PME-Enable- DSel=0 DScale=0 PME-
>> Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
>> Address: 0000000000000000 Data: 0000
>> Capabilities: [70] Express Unknown type IRQ 0
>> Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
>> Device: Latency L0s <64ns, L1 <1us
>> Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
>> Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
>> Link: Supported Speed unknown, Width x0, ASPM unknown, Port 0
>> Link: Latency L0s <64ns, L1 <1us
>> Link: ASPM Disabled CommClk- ExtSynch-
>> Link: Speed unknown, Width x0
>> 00: 86 80 3e 29 06 00 10 00 02 00 03 04 08 00 00 00
>> 10: 04 80 9f fe 00 00 00 00 00 00 00 00 00 00 00 00
>> 20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 9f 82
>> 30: 00 00 00 00 50 00 00 00 00 00 00 00 0f 01 00 00
>> 40: 01 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00
>> 50: 01 60 42 c8 00 00 00 00 00 00 00 00 00 00 00 00
>> 60: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00
>> 70: 10 00 91 00 00 00 00 10 00 08 10 00 00 00 00 00
>> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>> b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>> c0: 00 04 00 01 00 00 00 00 31 00 a3 02 00 00 00 00
>> d0: 61 00 a3 02 00 00 00 00 00 00 00 00 00 00 00 00
>> e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>> f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
>>
>> $ aplay -l
>> **** List of PLAYBACK Hardware Devices ****
>> card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
>> Subdevices: 1/1
>> Subdevice #0: subdevice #0
>> card 0: Intel [HDA Intel], device 1: ALC883 Digital [ALC883 Digital]
>> Subdevices: 1/1
>> Subdevice #0: subdevice #0
>> card 0: Intel [HDA Intel], device 3: ATI HDMI [ATI HDMI]
>> Subdevices: 1/1
>> Subdevice #0: subdevice #0
>> card 2: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
>> Subdevices: 1/1
>> Subdevice #0: subdevice #0
>> daniel@veyron:~$ aplay -L
>> default:CARD=Intel
>> HDA Intel, ALC883 Analog
>> Default Audio Device
>> front:CARD=Intel,DEV=0
>> HDA Intel, ALC883 Analog
>> Front speakers
>> surround40:CARD=Intel,DEV=0
>> HDA Intel, ALC883 Analog
>> 4.0 Surround output to Front and Rear speakers
>> surround41:CARD=Intel,DEV=0
>> HDA Intel, ALC883 Analog
>> 4.1 Surround output to Front, Rear and Subwoofer speakers
>> surround50:CARD=Intel,DEV=0
>> HDA Intel, ALC883 Analog
>> 5.0 Surround output to Front, Center and Rear speakers
>> surround51:CARD=Intel,DEV=0
>> HDA Intel, ALC883 Analog
>> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
>> surround71:CARD=Intel,DEV=0
>> HDA Intel, ALC883 Analog
>> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
>> null
>> Discard all samples (playback) or generate zero samples (capture)
>> default:CARD=U0x46d0x990
>> USB Device 0x46d:0x990, USB Audio
>> Default Audio Device
>> front:CARD=U0x46d0x990,DEV=0
>> USB Device 0x46d:0x990, USB Audio
>> Front speakers
>> surround40:CARD=U0x46d0x990,DEV=0
>> USB Device 0x46d:0x990, USB Audio
>> 4.0 Surround output to Front and Rear speakers
>> surround41:CARD=U0x46d0x990,DEV=0
>> USB Device 0x46d:0x990, USB Audio
>> 4.1 Surround output to Front, Rear and Subwoofer speakers
>> surround50:CARD=U0x46d0x990,DEV=0
>> USB Device 0x46d:0x990, USB Audio
>> 5.0 Surround output to Front, Center and Rear speakers
>> surround51:CARD=U0x46d0x990,DEV=0
>> USB Device 0x46d:0x990, USB Audio
>> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
>> surround71:CARD=U0x46d0x990,DEV=0
>> USB Device 0x46d:0x990, USB Audio
>> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
>> iec958:CARD=U0x46d0x990,DEV=0
>> USB Device 0x46d:0x990, USB Audio
>> IEC958 (S/PDIF) Digital Audio Output
>> front:CARD=HDMI
>> HDA ATI HDMI
>> Front speakers
>> surround40:CARD=HDMI
>> HDA ATI HDMI
>> 4.0 Surround output to Front and Rear speakers
>> surround41:CARD=HDMI
>> HDA ATI HDMI
>> 4.1 Surround output to Front, Rear and Subwoofer speakers
>> surround50:CARD=HDMI
>> HDA ATI HDMI
>> 5.0 Surround output to Front, Center and Rear speakers
>> surround51:CARD=HDMI
>> HDA ATI HDMI
>> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
>> surround71:CARD=HDMI
>> HDA ATI HDMI
>> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers

--- [2]

[OEMSettingsOverride.AddReg]
HKR,"EP\\0", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
;48k16bit HKR,"EP\\0", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04
,00,10,00,16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
HKR,"EP\\0", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,DC,05,00,08,00,20,00,
16,00,18,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
;;HKR,"EP\\0", %PKEY_AudioEndpoint_Ext_UiClsid%,,%AUDIOENDPOINT_EXT_UI_CLSID%

[OEMSPDIFSettingsOverride.AddReg]
HKR,"EP\\0", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_HDMI_INTERFACE%
HKR,"EP\\0", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04,00,10,00,
16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
HKR,"EP\\0", %PKEY_SupportFormat_OEMFormat%, %REG_BINARY%,
41,00,75,00,0c,00,00,00,10,00,00,00,02,00,00,00,00,00,00,00

HKR,"EP\\1", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,"EP\\1", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04,00,10,00,
16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71

--- [3]

name=daniel&type=33&description=/tmp/alsa-info.txt&expiry=&s=Submit+Post&content=
!!################################
!!ALSA Information Script v 0.4.48
!!################################

!!Script ran on: Wed Jun 11 19:13:55 BST 2008


!!Linux Distribution
!!------------------

Ubuntu 8.04 \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu 8.04"


!!Kernel Information
!!------------------

Kernel release: 2.6.24-18-generic
Operating System: GNU/Linux
Architecture: x86_64
Processor: unknown
SMP Enabled: Yes


!!ALSA Version
!!------------

Driver version: 1.0.16
Library version: 1.0.15
Utilities version: 1.0.15


!!Loaded ALSA modules
!!-------------------

snd_hda_intel
snd_usb_audio
snd_hda_intel


!!Soundcards recognised by ALSA
!!-----------------------------

0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xfe9f8000 irq 22
1 [U0x46d0x990 ]: USB-Audio - USB Device 0x46d:0x990
USB Device 0x46d:0x990 at usb-0000:00:1a.7-1, high speed
2 [HDMI ]: HDA-Intel - HDA ATI HDMI
HDA ATI HDMI at 0xfeafc000 irq 17


!!PCI Soundcards installed in the system
!!--------------------------------------

00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio
Controller (rev 02)
01:00.1 Audio device: ATI Technologies Inc Radeon HD 3870 Audio device


!!Advanced information - PCI Vendor/Device/Susbsystem ID's
!!--------------------------------------------------------

00:1b.0 0403: 8086:293e (rev 02)
Subsystem: 1043:829f
--
01:00.1 0403: 1002:aa18
Subsystem: 174b:aa18


!!Modprobe options (Sound related)
!!--------------------------------

snd-atiixp-modem: index=-2
snd-intel8x0m: index=-2
snd-via82xx-modem: index=-2
snd-usb-audio: index=-2
snd-usb-usx2y: index=-2
snd-usb-caiaq: index=-2
snd-cmipci: mpu_port=0x330 fm_port=0x388


!!Loaded sound module options
!!--------------------------

!!Module: snd_hda_intel
enable : Y,Y,Y,Y,Y,Y,Y,Y
enable_msi : 0
id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
index : -1,-1,-1,-1,-1,-1,-1,-1
model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
position_fix : 0,0,0,0,0,0,0,0
power_save : 0
power_save_controller : Y
probe_mask : -1,-1,-1,-1,-1,-1,-1,-1
single_cmd : N

!!Module: snd_usb_audio
async_unlink : Y
device_setup : 0,0,0,0,0,0,0,0
enable : Y,Y,Y,Y,Y,Y,Y,Y
id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
index : -2,-1,-1,-1,-1,-1,-1,-1
nrpacks : 8
pid : -1,-1,-1,-1,-1,-1,-1,-1
vid : -1,-1,-1,-1,-1,-1,-1,-1

!!Module: snd_hda_intel
enable : Y,Y,Y,Y,Y,Y,Y,Y
enable_msi : 0
id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
index : -1,-1,-1,-1,-1,-1,-1,-1
model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
position_fix : 0,0,0,0,0,0,0,0
power_save : 0
power_save_controller : Y
probe_mask : -1,-1,-1,-1,-1,-1,-1,-1
single_cmd : N


!!HDA-Intel Codec information
!!---------------------------
--startcollapse--

Codec: Realtek ALC883
Address: 0
Vendor Id: 0x10ec0883
Subsystem Id: 0x1043829f
Revision Id: 0x100002
No Modem Function Group found
Default PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=2, o=0, i=0, unsolicited=1, wake=0
IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0
IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0
Node 0x02 [Audio Output] wcaps 0x11: Stereo
Converter: stream=0, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x03 [Audio Output] wcaps 0x11: Stereo
Converter: stream=0, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x04 [Audio Output] wcaps 0x11: Stereo
Converter: stream=0, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x05 [Audio Output] wcaps 0x11: Stereo
Converter: stream=0, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x06 [Audio Output] wcaps 0x211: Stereo Digital
Converter: stream=0, channel=0
Digital: Enabled GenLevel
Digital category: 0x1
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0x1e]: 16 20 24 32
formats [0x1]: PCM
Node 0x07 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x08 [Audio Input] wcaps 0x10011b: Stereo Amp-In
Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
Amp-In vals: [0x00 0x00]
Converter: stream=0, channel=0
SDI-Select: 0
PCM:
rates [0x160]: 44100 48000 96000
bits [0x6]: 16 20
formats [0x1]: PCM
Connection: 1
0x23
Node 0x09 [Audio Input] wcaps 0x10011b: Stereo Amp-In
Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
Amp-In vals: [0x80 0x80]
Converter: stream=0, channel=0
SDI-Select: 0
PCM:
rates [0x160]: 44100 48000 96000
bits [0x6]: 16 20
formats [0x1]: PCM
Connection: 1
0x22
Node 0x0a [Audio Input] wcaps 0x100391: Stereo Digital
Converter: stream=0, channel=0
SDI-Select: 0
Digital:
Digital category: 0x0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0x1e]: 16 20 24 32
formats [0x1]: PCM
Unsolicited: tag=00, enabled=0
Connection: 1
0x1f
Node 0x0b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1
Amp-In vals: [0x0c 0x0c] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80
0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
Connection: 10
0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17
Node 0x0c [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
Amp-Out vals: [0x1f 0x1f]
Connection: 2
0x02 0x0b
Node 0x0d [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x80 0x80] [0x80 0x80]
Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
Amp-Out vals: [0x00 0x00]
Connection: 2
0x03 0x0b
Node 0x0e [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x80 0x80] [0x80 0x80]
Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
Amp-Out vals: [0x00 0x00]
Connection: 2
0x04 0x0b
Node 0x0f [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x80 0x80] [0x80 0x80]
Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
Amp-Out vals: [0x00 0x00]
Connection: 2
0x05 0x0b
Node 0x10 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x11 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x12 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x13 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x083e: IN OUT HP Detect Trigger
Pin Default 0x01014010: [Jack] Line Out at Ext Rear
Conn = 1/8, Color = Green
DefAssociation = 0x1, Sequence = 0x0
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 5
0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x15 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x083e: IN OUT HP Detect Trigger
Pin Default 0x01011012: [Jack] Line Out at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0x1, Sequence = 0x2
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 5
0x0c 0x0d* 0x0e 0x0f 0x26
Node 0x16 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x083e: IN OUT HP Detect Trigger
Pin Default 0x01016011: [Jack] Line Out at Ext Rear
Conn = 1/8, Color = Orange
DefAssociation = 0x1, Sequence = 0x1
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 5
0x0c 0x0d 0x0e* 0x0f 0x26
Node 0x17 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x083e: IN OUT HP Detect Trigger
Pin Default 0x01012014: [Jack] Line Out at Ext Rear
Conn = 1/8, Color = Grey
DefAssociation = 0x1, Sequence = 0x4
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 5
0x0c 0x0d 0x0e 0x0f* 0x26
Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x03 0x03] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x08173e: IN OUT HP Detect Trigger
Vref caps: HIZ 50 GRD 80
Pin Default 0x01a19840: [Jack] Mic at Ext Rear
Conn = 1/8, Color = Pink
DefAssociation = 0x4, Sequence = 0x0
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Connection: 5
0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x19 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x08173e: IN OUT HP Detect Trigger
Vref caps: HIZ 50 GRD 80
Pin Default 0x02a19c50: [Jack] Mic at Ext Front
Conn = 1/8, Color = Pink
DefAssociation = 0x5, Sequence = 0x0
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Connection: 5
0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x08173e: IN OUT HP Detect Trigger
Vref caps: HIZ 50 GRD 80
Pin Default 0x0181304f: [Jack] Line In at Ext Rear
Conn = 1/8, Color = Blue
DefAssociation = 0x4, Sequence = 0xf
Pin-ctls: 0x20: IN VREF_HIZ
Unsolicited: tag=00, enabled=0
Connection: 5
0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x1b [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x08173e: IN OUT HP Detect Trigger
Vref caps: HIZ 50 GRD 80
Pin Default 0x02214c20: [Jack] HP Out at Ext Front
Conn = 1/8, Color = Green
DefAssociation = 0x2, Sequence = 0x0
Pin-ctls: 0xc0: OUT HP VREF_HIZ
Unsolicited: tag=04, enabled=1
Connection: 5
0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x1c [Pin Complex] wcaps 0x400001: Stereo
Pincap 0x0820: IN
Pin Default 0x593301f0: [N/A] CD at Int ATAPI
Conn = ATAPI, Color = Unknown
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Node 0x1d [Pin Complex] wcaps 0x400000: Mono
Pincap 0x0820: IN
Pin Default 0x4005e601: [N/A] Line Out at Ext N/A
Conn = Optical, Color = White
DefAssociation = 0x0, Sequence = 0x1
Pin-ctls: 0x00:
Node 0x1e [Pin Complex] wcaps 0x400300: Mono Digital
Pincap 0x0810: OUT
Pin Default 0x01441130: [Jack] SPDIF Out at Ext Rear
Conn = RCA, Color = Black
DefAssociation = 0x3, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Connection: 1
0x06
Node 0x1f [Pin Complex] wcaps 0x400200: Mono Digital
Pincap 0x0820: IN
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono
Processing caps: benign=0, ncoeff=17
Node 0x21 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x22 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x80 0x80] [0x00
0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
[0x80 0x80]
Amp-Out caps: N/A
Amp-Out vals: [0x00 0x00]
Connection: 11
0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b
Node 0x23 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x80 0x80] [0x00
0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
[0x80 0x80]
Amp-Out caps: N/A
Amp-Out vals: [0x00 0x00]
Connection: 11
0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b
Node 0x24 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x25 [Audio Output] wcaps 0x11: Stereo
Converter: stream=0, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x26 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
Amp-Out vals: [0x00 0x00]
Connection: 2
0x25 0x0b
Codec: Generic 1095 SI HDMI
Address: 1
Vendor Id: 0x10951392
Subsystem Id: 0xffffffff
Revision Id: 0x100000
No Modem Function Group found
Default PCM:
rates [0x0]:
bits [0x0]:
formats [0x0]:
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
Node 0x02 [Audio Output] wcaps 0x6211: Stereo Digital
Converter: stream=0, channel=0
Digital:
Digital category: 0x0
PCM:
rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
bits [0x1e]: 16 20 24 32
formats [0x5]: PCM AC3
Node 0x03 [Pin Complex] wcaps 0x40738d: Stereo Digital Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x0894: OUT Detect R/L
Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
Conn = Digital, Color = Unknown
DefAssociation = 0x1, Sequence = 0x0
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 1
0x02
Codec: Generic 1002 ATI R6xx HDMI
Address: 0
Vendor Id: 0x1002aa01
Subsystem Id: 0xaa0100
Revision Id: 0x100000
No Modem Function Group found
Default PCM:
rates [0x40]: 48000
bits [0x2]: 16
formats [0x1]: PCM
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
Node 0x02 [Audio Output] wcaps 0x201: Stereo Digital
Converter: stream=0, channel=0
Digital:
Digital category: 0x0
Node 0x03 [Pin Complex] wcaps 0x400381: Stereo Digital
Pincap 0x0894: OUT Detect R/L
Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
Conn = Digital, Color = Unknown
DefAssociation = 0x1, Sequence = 0x0
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Connection: 1
0x02
--endcollapse--


!!ALSA Device nodes
!!-----------------

crw-rw----+ 1 root audio 116, 0 2008-06-11 17:36 /dev/snd/controlC0
crw-rw----+ 1 root audio 116, 32 2008-06-11 17:36 /dev/snd/controlC1
crw-rw----+ 1 root audio 116, 64 2008-06-11 17:36 /dev/snd/controlC2
crw-rw----+ 1 root audio 116, 4 2008-06-11 17:36 /dev/snd/hwC0D0
crw-rw----+ 1 root audio 116, 5 2008-06-11 17:36 /dev/snd/hwC0D1
crw-rw----+ 1 root audio 116, 68 2008-06-11 17:36 /dev/snd/hwC2D0
crw-rw----+ 1 root audio 116, 24 2008-06-11 17:55 /dev/snd/pcmC0D0c
crw-rw----+ 1 root audio 116, 16 2008-06-11 18:02 /dev/snd/pcmC0D0p
crw-rw----+ 1 root audio 116, 17 2008-06-11 17:36 /dev/snd/pcmC0D1p
crw-rw----+ 1 root audio 116, 26 2008-06-11 17:36 /dev/snd/pcmC0D2c
crw-rw----+ 1 root audio 116, 19 2008-06-11 17:36 /dev/snd/pcmC0D3p
crw-rw----+ 1 root audio 116, 56 2008-06-11 17:55 /dev/snd/pcmC1D0c
crw-rw----+ 1 root audio 116, 83 2008-06-11 17:36 /dev/snd/pcmC2D3p
crw-rw----+ 1 root audio 116, 1 2008-06-11 17:36 /dev/snd/seq
crw-rw----+ 1 root audio 116, 33 2008-06-11 17:36 /dev/snd/timer


!!Aplay/Arecord output
!!------------

APLAY

**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC883 Digital [ALC883 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: ATI HDMI [ATI HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0

ARECORD

**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 2: ALC883 Analog [ALC883 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: U0x46d0x990 [USB Device 0x46d:0x990], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0

!!Amixer output
!!-------------

!!-------Mixer controls for card 0 [Intel]

Simple mixer control 'Master',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback 0 - 31
Mono: Playback 31 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',0
Capabilities: pswitch
Playback channels: Front Left - Front Right
Mono:
Front Left: Playback [on]
Front Right: Playback [on]
Simple mixer control 'PCM',0
Capabilities: pvolume
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 255 [100%] [0.00dB]
Front Right: Playback 255 [100%] [0.00dB]
Simple mixer control 'Front',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 31 [100%] [0.00dB] [on]
Front Right: Playback 31 [100%] [0.00dB] [on]
Simple mixer control 'Front Mic',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'Front Mic Boost',0
Capabilities: volume
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 3
Front Left: 0 [0%]
Front Right: 0 [0%]
Simple mixer control 'Surround',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-46.50dB] [off]
Front Right: Playback 0 [0%] [-46.50dB] [off]
Simple mixer control 'Center',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback 0 - 31
Mono: Playback 0 [0%] [-46.50dB] [off]
Simple mixer control 'LFE',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback 0 - 31
Mono: Playback 0 [0%] [-46.50dB] [off]
Simple mixer control 'Side',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-46.50dB] [off]
Front Right: Playback 0 [0%] [-46.50dB] [off]
Simple mixer control 'Line',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 0 [0%] [-34.50dB] [off]
Front Right: Playback 0 [0%] [-34.50dB] [off]
Simple mixer control 'Mic',0
Capabilities: pvolume pswitch
Playback channels: Front Left - Front Right
Limits: Playback 0 - 31
Mono:
Front Left: Playback 12 [39%] [-16.50dB] [on]
Front Right: Playback 12 [39%] [-16.50dB] [on]
Simple mixer control 'Mic Boost',0
Capabilities: volume
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 3
Front Left: 3 [100%]
Front Right: 3 [100%]
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'IEC958',1
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch
Capture channels: Front Left - Front Right
Limits: Capture 0 - 31
Front Left: Capture 0 [0%] [-12.00dB] [on]
Front Right: Capture 0 [0%] [-12.00dB] [on]
Simple mixer control 'Capture',1
Capabilities: cvolume cswitch
Capture channels: Front Left - Front Right
Limits: Capture 0 - 31
Front Left: Capture 0 [0%] [-12.00dB] [off]
Front Right: Capture 0 [0%] [-12.00dB] [off]
Simple mixer control 'Digital',0
Capabilities: cvolume
Capture channels: Front Left - Front Right
Limits: Capture 0 - 120
Front Left: Capture 0 [0%] [-30.00dB]
Front Right: Capture 0 [0%] [-30.00dB]
Simple mixer control 'Input Source',0
Capabilities: cenum
Items: 'Mic' 'Front Mic' 'Line'
Item0: 'Mic'
Simple mixer control 'Input Source',1
Capabilities: cenum
Items: 'Mic' 'Front Mic' 'Line'
Item0: 'Mic'

!!-------Mixer controls for card 1 [U0x46d0x990]

Simple mixer control 'Mic',0
Capabilities: cvolume cswitch cswitch-joined
Capture channels: Mono
Limits: Capture 0 - 3072
Mono: Capture 0 [0%] [18.00dB] [off]

!!-------Mixer controls for card 2 [HDMI]

Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [off]


!!Alsactl output
!!-------------

--startcollapse--
state.Intel {
control.1 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Front Playback Volume'
value.0 31
value.1 31
}
control.2 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Front Playback Switch'
value.0 true
value.1 true
}
control.3 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Surround Playback Volume'
value.0 0
value.1 0
}
control.4 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Surround Playback Switch'
value.0 false
value.1 false
}
control.5 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'Center Playback Volume'
value 0
}
control.6 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'LFE Playback Volume'
value 0
}
control.7 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Center Playback Switch'
value false
}
control.8 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'LFE Playback Switch'
value false
}
control.9 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Side Playback Volume'
value.0 0
value.1 0
}
control.10 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Side Playback Switch'
value.0 false
value.1 false
}
control.11 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Headphone Playback Switch'
value.0 true
value.1 true
}
control.12 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Mic Playback Volume'
value.0 12
value.1 12
}
control.13 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Mic Playback Switch'
value.0 true
value.1 true
}
control.14 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Front Mic Playback Volume'
value.0 0
value.1 0
}
control.15 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Front Mic Playback Switch'
value.0 false
value.1 false
}
control.16 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Line Playback Volume'
value.0 0
value.1 0
}
control.17 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Line Playback Switch'
value.0 false
value.1 false
}
control.18 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 3'
iface MIXER
name 'Mic Boost'
value.0 3
value.1 3
}
control.19 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 3'
iface MIXER
name 'Front Mic Boost'
value.0 0
value.1 0
}
control.20 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Capture Volume'
value.0 0
value.1 0
}
control.21 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Capture Switch'
value.0 true
value.1 true
}
control.22 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Capture Volume'
index 1
value.0 0
value.1 0
}
control.23 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 2
iface MIXER
name 'Capture Switch'
index 1
value.0 false
value.1 false
}
control.24 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mic
comment.item.1 'Front Mic'
comment.item.2 Line
iface MIXER
name 'Input Source'
value Mic
}
control.25 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mic
comment.item.1 'Front Mic'
comment.item.2 Line
iface MIXER
name 'Input Source'
index 1
value Mic
}
control.26 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.27 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Pro Mask'
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.28 {
comment.access 'read write'
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Default'
value '0482000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.29 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'IEC958 Playback Switch'
value true
}
control.30 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'Master Playback Volume'
value 31
}
control.31 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Master Playback Switch'
value true
}
control.32 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Con Mask'
index 1
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.33 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Pro Mask'
index 1
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.34 {
comment.access 'read write'
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Default'
index 1
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.35 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'IEC958 Playback Switch'
index 1
value false
}
control.36 {
comment.access 'read write user'
comment.type INTEGER
comment.count 2
comment.range '0 - 255'
comment.tlv '0000000100000008ffffec1400000014'
iface MIXER
name 'PCM Playback Volume'
value.0 255
value.1 255
}
control.37 {
comment.access 'read write user'
comment.type INTEGER
comment.count 2
comment.range '0 - 120'
comment.tlv '0000000100000008fffff44800000032'
iface MIXER
name 'Digital Capture Volume'
value.0 0
value.1 0
}
}
state.U0x46d0x990 {
control.1 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Mic Capture Switch'
value false
}
control.2 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 3072'
iface MIXER
name 'Mic Capture Volume'
value 0
}
}
state.HDMI {
control.1 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.2 {
comment.access read
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Pro Mask'
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.3 {
comment.access 'read write'
comment.type IEC958
comment.count 1
iface MIXER
name 'IEC958 Playback Default'
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.4 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'IEC958 Playback Switch'
value false
}
}
--endcollapse--


!!All Loaded Modules
!!------------------

Module
ppdev
ipv6
acpi_cpufreq
cpufreq_userspace
cpufreq_stats
cpufreq_powersave
cpufreq_ondemand
freq_table
cpufreq_conservative
video
output
sbs
sbshc
container
dock
battery
microcode
nfs
lockd
nfs_acl
sunrpc
iptable_filter
ip_tables
x_tables
ext3
jbd
mbcache
af_packet
ac
parport_pc
lp
parport
snd_usb_audio
snd_usb_lib
uvcvideo
snd_hda_intel
compat_ioctl32
psmouse
snd_seq_dummy
videodev
v4l1_compat
v4l2_common
snd_seq_oss
snd_seq_midi
serio_raw
snd_rawmidi
snd_pcm_oss
snd_mixer_oss
fglrx
atl1
mii
snd_seq_midi_event
snd_pcm
snd_seq
snd_seq_device
snd_timer
snd_page_alloc
snd_hwdep
intel_agp
iTCO_wdt
iTCO_vendor_support
snd
button
evdev
soundcore
shpchp
pci_hotplug
usbhid
hid
xfs
sg
sr_mod
cdrom
sd_mod
ahci
libata
scsi_mod
ehci_hcd
uhci_hcd
usbcore
thermal
processor
fan
fbcon
tileblit
font
bitblit
softcursor
fuse
--
Daniel J Blueman

2008-06-11 21:38:06

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Wed, Jun 11, 2008 at 8:00 PM, Daniel J Blueman
<[email protected]> wrote:
> On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
>> At Mon, 9 Jun 2008 20:59:00 +0100,
>> Daniel J Blueman wrote:
>>>
>>> Hi Takashi-san,
>>>
>>> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
>>> LTS x86-64). I can see on Audacity that the DC offset that varies with
>>> the recording capture level.
>>
>> Could you elaborate? The mic bias level could be changed via the pin
>> control value. Usually, it's set as VREF 80%.
>
> When the recording->capture level is set to 0, the mic has no DC
> offset as expected. Maxing the recording->capture level, the mic input
> is saturated, in between, we see a linear connection.
>
>>> Plus, the mixer playback->mic-boost
>>> muting enables/disables mic-boost in recording.
>>
>> This is a known bug in alsa-lib mixer abstraction. No kernel issue.
>
>>> It feels like the ALC883 pins aren't configured quite right. The mobo
>>> is an Asus P5E-VM with current BIOS [1]
>>>
>>> What's the routine to debug this? Would it help to install windows,
>>> dump the register space and compare?
>>
>> You can find *.INI file that contains the default pin configuration
>> in Windows. This might be useful in the case BIOS is broken but
>> Windows does a black magic.
>
> That'll be these defaults stashed in the INF file [2]. Let me know if
> it's not what you expected and I'll publish the complete INF file.
>
>> Anyway, please run alsa-info.sh with --no-upload option and show the
>> generated file here. It contains the codec information and mixer
>> setup.
>> http://hg.alsa-project.org/alsa/raw-file/tip/alsa-info.sh
>
> See [3].

>> Also, you can adjust the pin setting on the fly via hda-verb utility
>> below:
>> http://ftp.suse.com/pub/people/tiwai/misc/hda-verb-0.2.tar.bz2
>>
>> Don't forget to build snd-hda-intel module with
>> CONFIG_SND_HDA_HWDEP=y to use this command.
>
> I'll give this a shot if I get time.

Looking at the datasheet and ALSA report, changing the front mic node
id also affects capturing from the (rear) mic input.

ftp://66.104.77.130/pc/audio/ALC883_DataSheet_1.3.pdf

We get the "hda_codec: Unknown model for ALC883, trying auto-probe
from BIOS..." kernel message, so we may need to tweak
pci/hda/patch_realtek.c. Also, I can reproduce the problem the with HD
and legacy front-panel audio settings in the BIOS. Do you know a way
to dump eg the pin configuration in windows or other useful state, so
I can compare with all the possible node ID configuration values?

> Thanks for your time!
> Daniel
>
>> Takashi
>>
>>>
>>> Thanks in advance,
>>> Daniel
>>>
>>> --- [1]
>>>
>>> $ sudo lspci -vvvxxxs 0:1b.0
>>> 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio
>>> Controller (rev 02)
>>> Subsystem: ASUSTeK Computer Inc. Unknown device 829f
>>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>>> Stepping- SERR- FastB2B-
>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
>>> <TAbort- <MAbort- >SERR- <PERR-
>>> Latency: 0, Cache Line Size: 32 bytes
>>> Interrupt: pin A routed to IRQ 22
>>> Region 0: Memory at fe9f8000 (64-bit, non-prefetchable) [size=16K]
>>> Capabilities: [50] Power Management version 2
>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>>> Status: D0 PME-Enable- DSel=0 DScale=0 PME-
>>> Capabilities: [60] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
>>> Address: 0000000000000000 Data: 0000
>>> Capabilities: [70] Express Unknown type IRQ 0
>>> Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
>>> Device: Latency L0s <64ns, L1 <1us
>>> Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
>>> Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
>>> Device: MaxPayload 128 bytes, MaxReadReq 128 bytes
>>> Link: Supported Speed unknown, Width x0, ASPM unknown, Port 0
>>> Link: Latency L0s <64ns, L1 <1us
>>> Link: ASPM Disabled CommClk- ExtSynch-
>>> Link: Speed unknown, Width x0
>>> 00: 86 80 3e 29 06 00 10 00 02 00 03 04 08 00 00 00
>>> 10: 04 80 9f fe 00 00 00 00 00 00 00 00 00 00 00 00
>>> 20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 9f 82
>>> 30: 00 00 00 00 50 00 00 00 00 00 00 00 0f 01 00 00
>>> 40: 01 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00
>>> 50: 01 60 42 c8 00 00 00 00 00 00 00 00 00 00 00 00
>>> 60: 05 70 80 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 70: 10 00 91 00 00 00 00 10 00 08 10 00 00 00 00 00
>>> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> c0: 00 04 00 01 00 00 00 00 31 00 a3 02 00 00 00 00
>>> d0: 61 00 a3 02 00 00 00 00 00 00 00 00 00 00 00 00
>>> e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> f0: 00 00 00 00 00 00 00 00 86 0f 02 00 00 00 00 00
>>>
>>> $ aplay -l
>>> **** List of PLAYBACK Hardware Devices ****
>>> card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
>>> Subdevices: 1/1
>>> Subdevice #0: subdevice #0
>>> card 0: Intel [HDA Intel], device 1: ALC883 Digital [ALC883 Digital]
>>> Subdevices: 1/1
>>> Subdevice #0: subdevice #0
>>> card 0: Intel [HDA Intel], device 3: ATI HDMI [ATI HDMI]
>>> Subdevices: 1/1
>>> Subdevice #0: subdevice #0
>>> card 2: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
>>> Subdevices: 1/1
>>> Subdevice #0: subdevice #0
>>> daniel@veyron:~$ aplay -L
>>> default:CARD=Intel
>>> HDA Intel, ALC883 Analog
>>> Default Audio Device
>>> front:CARD=Intel,DEV=0
>>> HDA Intel, ALC883 Analog
>>> Front speakers
>>> surround40:CARD=Intel,DEV=0
>>> HDA Intel, ALC883 Analog
>>> 4.0 Surround output to Front and Rear speakers
>>> surround41:CARD=Intel,DEV=0
>>> HDA Intel, ALC883 Analog
>>> 4.1 Surround output to Front, Rear and Subwoofer speakers
>>> surround50:CARD=Intel,DEV=0
>>> HDA Intel, ALC883 Analog
>>> 5.0 Surround output to Front, Center and Rear speakers
>>> surround51:CARD=Intel,DEV=0
>>> HDA Intel, ALC883 Analog
>>> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
>>> surround71:CARD=Intel,DEV=0
>>> HDA Intel, ALC883 Analog
>>> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
>>> null
>>> Discard all samples (playback) or generate zero samples (capture)
>>> default:CARD=U0x46d0x990
>>> USB Device 0x46d:0x990, USB Audio
>>> Default Audio Device
>>> front:CARD=U0x46d0x990,DEV=0
>>> USB Device 0x46d:0x990, USB Audio
>>> Front speakers
>>> surround40:CARD=U0x46d0x990,DEV=0
>>> USB Device 0x46d:0x990, USB Audio
>>> 4.0 Surround output to Front and Rear speakers
>>> surround41:CARD=U0x46d0x990,DEV=0
>>> USB Device 0x46d:0x990, USB Audio
>>> 4.1 Surround output to Front, Rear and Subwoofer speakers
>>> surround50:CARD=U0x46d0x990,DEV=0
>>> USB Device 0x46d:0x990, USB Audio
>>> 5.0 Surround output to Front, Center and Rear speakers
>>> surround51:CARD=U0x46d0x990,DEV=0
>>> USB Device 0x46d:0x990, USB Audio
>>> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
>>> surround71:CARD=U0x46d0x990,DEV=0
>>> USB Device 0x46d:0x990, USB Audio
>>> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
>>> iec958:CARD=U0x46d0x990,DEV=0
>>> USB Device 0x46d:0x990, USB Audio
>>> IEC958 (S/PDIF) Digital Audio Output
>>> front:CARD=HDMI
>>> HDA ATI HDMI
>>> Front speakers
>>> surround40:CARD=HDMI
>>> HDA ATI HDMI
>>> 4.0 Surround output to Front and Rear speakers
>>> surround41:CARD=HDMI
>>> HDA ATI HDMI
>>> 4.1 Surround output to Front, Rear and Subwoofer speakers
>>> surround50:CARD=HDMI
>>> HDA ATI HDMI
>>> 5.0 Surround output to Front, Center and Rear speakers
>>> surround51:CARD=HDMI
>>> HDA ATI HDMI
>>> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
>>> surround71:CARD=HDMI
>>> HDA ATI HDMI
>>> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
>
> --- [2]
>
> [OEMSettingsOverride.AddReg]
> HKR,"EP\\0", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
> ;48k16bit HKR,"EP\\0", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
> 41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04
> ,00,10,00,16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
> HKR,"EP\\0", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
> 41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,DC,05,00,08,00,20,00,
> 16,00,18,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
> ;;HKR,"EP\\0", %PKEY_AudioEndpoint_Ext_UiClsid%,,%AUDIOENDPOINT_EXT_UI_CLSID%
>
> [OEMSPDIFSettingsOverride.AddReg]
> HKR,"EP\\0", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_HDMI_INTERFACE%
> HKR,"EP\\0", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
> 41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04,00,10,00,
> 16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
> HKR,"EP\\0", %PKEY_SupportFormat_OEMFormat%, %REG_BINARY%,
> 41,00,75,00,0c,00,00,00,10,00,00,00,02,00,00,00,00,00,00,00
>
> HKR,"EP\\1", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
> HKR,"EP\\1", %PKEY_AudioEngine_OEMFormat%, %REG_BINARY%,
> 41,00,C8,70,28,00,00,00,FE,FF,02,00,80,BB,00,00,00,EE,02,00,04,00,10,00,
> 16,00,10,00,03,00,00,00,01,00,00,00,00,00,10,00,80,00,00,AA,00,38,9B,71
>
> --- [3]
>
> name=daniel&type=33&description=/tmp/alsa-info.txt&expiry=&s=Submit+Post&content=
> !!################################
> !!ALSA Information Script v 0.4.48
> !!################################
>
> !!Script ran on: Wed Jun 11 19:13:55 BST 2008
>
>
> !!Linux Distribution
> !!------------------
>
> Ubuntu 8.04 \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu 8.04"
>
>
> !!Kernel Information
> !!------------------
>
> Kernel release: 2.6.24-18-generic
> Operating System: GNU/Linux
> Architecture: x86_64
> Processor: unknown
> SMP Enabled: Yes
>
>
> !!ALSA Version
> !!------------
>
> Driver version: 1.0.16
> Library version: 1.0.15
> Utilities version: 1.0.15
>
>
> !!Loaded ALSA modules
> !!-------------------
>
> snd_hda_intel
> snd_usb_audio
> snd_hda_intel
>
>
> !!Soundcards recognised by ALSA
> !!-----------------------------
>
> 0 [Intel ]: HDA-Intel - HDA Intel
> HDA Intel at 0xfe9f8000 irq 22
> 1 [U0x46d0x990 ]: USB-Audio - USB Device 0x46d:0x990
> USB Device 0x46d:0x990 at usb-0000:00:1a.7-1, high speed
> 2 [HDMI ]: HDA-Intel - HDA ATI HDMI
> HDA ATI HDMI at 0xfeafc000 irq 17
>
>
> !!PCI Soundcards installed in the system
> !!--------------------------------------
>
> 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio
> Controller (rev 02)
> 01:00.1 Audio device: ATI Technologies Inc Radeon HD 3870 Audio device
>
>
> !!Advanced information - PCI Vendor/Device/Susbsystem ID's
> !!--------------------------------------------------------
>
> 00:1b.0 0403: 8086:293e (rev 02)
> Subsystem: 1043:829f
> --
> 01:00.1 0403: 1002:aa18
> Subsystem: 174b:aa18
>
>
> !!Modprobe options (Sound related)
> !!--------------------------------
>
> snd-atiixp-modem: index=-2
> snd-intel8x0m: index=-2
> snd-via82xx-modem: index=-2
> snd-usb-audio: index=-2
> snd-usb-usx2y: index=-2
> snd-usb-caiaq: index=-2
> snd-cmipci: mpu_port=0x330 fm_port=0x388
>
>
> !!Loaded sound module options
> !!--------------------------
>
> !!Module: snd_hda_intel
> enable : Y,Y,Y,Y,Y,Y,Y,Y
> enable_msi : 0
> id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
> index : -1,-1,-1,-1,-1,-1,-1,-1
> model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
> position_fix : 0,0,0,0,0,0,0,0
> power_save : 0
> power_save_controller : Y
> probe_mask : -1,-1,-1,-1,-1,-1,-1,-1
> single_cmd : N
>
> !!Module: snd_usb_audio
> async_unlink : Y
> device_setup : 0,0,0,0,0,0,0,0
> enable : Y,Y,Y,Y,Y,Y,Y,Y
> id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
> index : -2,-1,-1,-1,-1,-1,-1,-1
> nrpacks : 8
> pid : -1,-1,-1,-1,-1,-1,-1,-1
> vid : -1,-1,-1,-1,-1,-1,-1,-1
>
> !!Module: snd_hda_intel
> enable : Y,Y,Y,Y,Y,Y,Y,Y
> enable_msi : 0
> id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
> index : -1,-1,-1,-1,-1,-1,-1,-1
> model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>
> position_fix : 0,0,0,0,0,0,0,0
> power_save : 0
> power_save_controller : Y
> probe_mask : -1,-1,-1,-1,-1,-1,-1,-1
> single_cmd : N
>
>
> !!HDA-Intel Codec information
> !!---------------------------
> --startcollapse--
>
> Codec: Realtek ALC883
> Address: 0
> Vendor Id: 0x10ec0883
> Subsystem Id: 0x1043829f
> Revision Id: 0x100002
> No Modem Function Group found
> Default PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0xe]: 16 20 24
> formats [0x1]: PCM
> Default Amp-In caps: N/A
> Default Amp-Out caps: N/A
> GPIO: io=2, o=0, i=0, unsolicited=1, wake=0
> IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0
> IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0
> Node 0x02 [Audio Output] wcaps 0x11: Stereo
> Converter: stream=0, channel=0
> PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0xe]: 16 20 24
> formats [0x1]: PCM
> Node 0x03 [Audio Output] wcaps 0x11: Stereo
> Converter: stream=0, channel=0
> PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0xe]: 16 20 24
> formats [0x1]: PCM
> Node 0x04 [Audio Output] wcaps 0x11: Stereo
> Converter: stream=0, channel=0
> PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0xe]: 16 20 24
> formats [0x1]: PCM
> Node 0x05 [Audio Output] wcaps 0x11: Stereo
> Converter: stream=0, channel=0
> PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0xe]: 16 20 24
> formats [0x1]: PCM
> Node 0x06 [Audio Output] wcaps 0x211: Stereo Digital
> Converter: stream=0, channel=0
> Digital: Enabled GenLevel
> Digital category: 0x1
> PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0x1e]: 16 20 24 32
> formats [0x1]: PCM
> Node 0x07 [Vendor Defined Widget] wcaps 0xf00000: Mono
> Node 0x08 [Audio Input] wcaps 0x10011b: Stereo Amp-In
> Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
> Amp-In vals: [0x00 0x00]
> Converter: stream=0, channel=0
> SDI-Select: 0
> PCM:
> rates [0x160]: 44100 48000 96000
> bits [0x6]: 16 20
> formats [0x1]: PCM
> Connection: 1
> 0x23
> Node 0x09 [Audio Input] wcaps 0x10011b: Stereo Amp-In
> Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
> Amp-In vals: [0x80 0x80]
> Converter: stream=0, channel=0
> SDI-Select: 0
> PCM:
> rates [0x160]: 44100 48000 96000
> bits [0x6]: 16 20
> formats [0x1]: PCM
> Connection: 1
> 0x22
> Node 0x0a [Audio Input] wcaps 0x100391: Stereo Digital
> Converter: stream=0, channel=0
> SDI-Select: 0
> Digital:
> Digital category: 0x0
> PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0x1e]: 16 20 24 32
> formats [0x1]: PCM
> Unsolicited: tag=00, enabled=0
> Connection: 1
> 0x1f
> Node 0x0b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
> Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1
> Amp-In vals: [0x0c 0x0c] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80
> 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
> Connection: 10
> 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17
> Node 0x0c [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-In vals: [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
> Amp-Out vals: [0x1f 0x1f]
> Connection: 2
> 0x02 0x0b
> Node 0x0d [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-In vals: [0x80 0x80] [0x80 0x80]
> Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
> Amp-Out vals: [0x00 0x00]
> Connection: 2
> 0x03 0x0b
> Node 0x0e [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-In vals: [0x80 0x80] [0x80 0x80]
> Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
> Amp-Out vals: [0x00 0x00]
> Connection: 2
> 0x04 0x0b
> Node 0x0f [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-In vals: [0x80 0x80] [0x80 0x80]
> Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
> Amp-Out vals: [0x00 0x00]
> Connection: 2
> 0x05 0x0b
> Node 0x10 [Vendor Defined Widget] wcaps 0xf00000: Mono
> Node 0x11 [Vendor Defined Widget] wcaps 0xf00000: Mono
> Node 0x12 [Vendor Defined Widget] wcaps 0xf00000: Mono
> Node 0x13 [Vendor Defined Widget] wcaps 0xf00000: Mono
> Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x00 0x00]
> Pincap 0x083e: IN OUT HP Detect Trigger
> Pin Default 0x01014010: [Jack] Line Out at Ext Rear
> Conn = 1/8, Color = Green
> DefAssociation = 0x1, Sequence = 0x0
> Pin-ctls: 0x40: OUT
> Unsolicited: tag=00, enabled=0
> Connection: 5
> 0x0c* 0x0d 0x0e 0x0f 0x26
> Node 0x15 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x00 0x00]
> Pincap 0x083e: IN OUT HP Detect Trigger
> Pin Default 0x01011012: [Jack] Line Out at Ext Rear
> Conn = 1/8, Color = Black
> DefAssociation = 0x1, Sequence = 0x2
> Pin-ctls: 0x40: OUT
> Unsolicited: tag=00, enabled=0
> Connection: 5
> 0x0c 0x0d* 0x0e 0x0f 0x26
> Node 0x16 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x00 0x00]
> Pincap 0x083e: IN OUT HP Detect Trigger
> Pin Default 0x01016011: [Jack] Line Out at Ext Rear
> Conn = 1/8, Color = Orange
> DefAssociation = 0x1, Sequence = 0x1
> Pin-ctls: 0x40: OUT
> Unsolicited: tag=00, enabled=0
> Connection: 5
> 0x0c 0x0d 0x0e* 0x0f 0x26
> Node 0x17 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x00 0x00]
> Pincap 0x083e: IN OUT HP Detect Trigger
> Pin Default 0x01012014: [Jack] Line Out at Ext Rear
> Conn = 1/8, Color = Grey
> DefAssociation = 0x1, Sequence = 0x4
> Pin-ctls: 0x40: OUT
> Unsolicited: tag=00, enabled=0
> Connection: 5
> 0x0c 0x0d 0x0e 0x0f* 0x26
> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x03 0x03] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x80 0x80]
> Pincap 0x08173e: IN OUT HP Detect Trigger
> Vref caps: HIZ 50 GRD 80
> Pin Default 0x01a19840: [Jack] Mic at Ext Rear
> Conn = 1/8, Color = Pink
> DefAssociation = 0x4, Sequence = 0x0
> Pin-ctls: 0x24: IN VREF_80
> Unsolicited: tag=00, enabled=0
> Connection: 5
> 0x0c* 0x0d 0x0e 0x0f 0x26
> Node 0x19 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x80 0x80]
> Pincap 0x08173e: IN OUT HP Detect Trigger
> Vref caps: HIZ 50 GRD 80
> Pin Default 0x02a19c50: [Jack] Mic at Ext Front
> Conn = 1/8, Color = Pink
> DefAssociation = 0x5, Sequence = 0x0
> Pin-ctls: 0x24: IN VREF_80
> Unsolicited: tag=00, enabled=0
> Connection: 5
> 0x0c* 0x0d 0x0e 0x0f 0x26
> Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x80 0x80]
> Pincap 0x08173e: IN OUT HP Detect Trigger
> Vref caps: HIZ 50 GRD 80
> Pin Default 0x0181304f: [Jack] Line In at Ext Rear
> Conn = 1/8, Color = Blue
> DefAssociation = 0x4, Sequence = 0xf
> Pin-ctls: 0x20: IN VREF_HIZ
> Unsolicited: tag=00, enabled=0
> Connection: 5
> 0x0c* 0x0d 0x0e 0x0f 0x26
> Node 0x1b [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x00 0x00]
> Pincap 0x08173e: IN OUT HP Detect Trigger
> Vref caps: HIZ 50 GRD 80
> Pin Default 0x02214c20: [Jack] HP Out at Ext Front
> Conn = 1/8, Color = Green
> DefAssociation = 0x2, Sequence = 0x0
> Pin-ctls: 0xc0: OUT HP VREF_HIZ
> Unsolicited: tag=04, enabled=1
> Connection: 5
> 0x0c* 0x0d 0x0e 0x0f 0x26
> Node 0x1c [Pin Complex] wcaps 0x400001: Stereo
> Pincap 0x0820: IN
> Pin Default 0x593301f0: [N/A] CD at Int ATAPI
> Conn = ATAPI, Color = Unknown
> DefAssociation = 0xf, Sequence = 0x0
> Misc = NO_PRESENCE
> Pin-ctls: 0x00:
> Node 0x1d [Pin Complex] wcaps 0x400000: Mono
> Pincap 0x0820: IN
> Pin Default 0x4005e601: [N/A] Line Out at Ext N/A
> Conn = Optical, Color = White
> DefAssociation = 0x0, Sequence = 0x1
> Pin-ctls: 0x00:
> Node 0x1e [Pin Complex] wcaps 0x400300: Mono Digital
> Pincap 0x0810: OUT
> Pin Default 0x01441130: [Jack] SPDIF Out at Ext Rear
> Conn = RCA, Color = Black
> DefAssociation = 0x3, Sequence = 0x0
> Misc = NO_PRESENCE
> Pin-ctls: 0x00:
> Connection: 1
> 0x06
> Node 0x1f [Pin Complex] wcaps 0x400200: Mono Digital
> Pincap 0x0820: IN
> Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
> Conn = 1/8, Color = Black
> DefAssociation = 0xf, Sequence = 0x0
> Misc = NO_PRESENCE
> Pin-ctls: 0x00:
> Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono
> Processing caps: benign=0, ncoeff=17
> Node 0x21 [Vendor Defined Widget] wcaps 0xf00000: Mono
> Node 0x22 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x80 0x80] [0x00
> 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
> [0x80 0x80]
> Amp-Out caps: N/A
> Amp-Out vals: [0x00 0x00]
> Connection: 11
> 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b
> Node 0x23 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x80 0x80] [0x00
> 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
> [0x80 0x80]
> Amp-Out caps: N/A
> Amp-Out vals: [0x00 0x00]
> Connection: 11
> 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b
> Node 0x24 [Vendor Defined Widget] wcaps 0xf00000: Mono
> Node 0x25 [Audio Output] wcaps 0x11: Stereo
> Converter: stream=0, channel=0
> PCM:
> rates [0x560]: 44100 48000 96000 192000
> bits [0xe]: 16 20 24
> formats [0x1]: PCM
> Node 0x26 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-In vals: [0x00 0x00] [0x00 0x00]
> Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
> Amp-Out vals: [0x00 0x00]
> Connection: 2
> 0x25 0x0b
> Codec: Generic 1095 SI HDMI
> Address: 1
> Vendor Id: 0x10951392
> Subsystem Id: 0xffffffff
> Revision Id: 0x100000
> No Modem Function Group found
> Default PCM:
> rates [0x0]:
> bits [0x0]:
> formats [0x0]:
> Default Amp-In caps: N/A
> Default Amp-Out caps: N/A
> GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
> Node 0x02 [Audio Output] wcaps 0x6211: Stereo Digital
> Converter: stream=0, channel=0
> Digital:
> Digital category: 0x0
> PCM:
> rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
> bits [0x1e]: 16 20 24 32
> formats [0x5]: PCM AC3
> Node 0x03 [Pin Complex] wcaps 0x40738d: Stereo Digital Amp-Out
> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
> Amp-Out vals: [0x00 0x00]
> Pincap 0x0894: OUT Detect R/L
> Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
> Conn = Digital, Color = Unknown
> DefAssociation = 0x1, Sequence = 0x0
> Pin-ctls: 0x40: OUT
> Unsolicited: tag=00, enabled=0
> Connection: 1
> 0x02
> Codec: Generic 1002 ATI R6xx HDMI
> Address: 0
> Vendor Id: 0x1002aa01
> Subsystem Id: 0xaa0100
> Revision Id: 0x100000
> No Modem Function Group found
> Default PCM:
> rates [0x40]: 48000
> bits [0x2]: 16
> formats [0x1]: PCM
> Default Amp-In caps: N/A
> Default Amp-Out caps: N/A
> GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
> Node 0x02 [Audio Output] wcaps 0x201: Stereo Digital
> Converter: stream=0, channel=0
> Digital:
> Digital category: 0x0
> Node 0x03 [Pin Complex] wcaps 0x400381: Stereo Digital
> Pincap 0x0894: OUT Detect R/L
> Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
> Conn = Digital, Color = Unknown
> DefAssociation = 0x1, Sequence = 0x0
> Pin-ctls: 0x40: OUT
> Unsolicited: tag=00, enabled=0
> Connection: 1
> 0x02
> --endcollapse--
>
>
> !!ALSA Device nodes
> !!-----------------
>
> crw-rw----+ 1 root audio 116, 0 2008-06-11 17:36 /dev/snd/controlC0
> crw-rw----+ 1 root audio 116, 32 2008-06-11 17:36 /dev/snd/controlC1
> crw-rw----+ 1 root audio 116, 64 2008-06-11 17:36 /dev/snd/controlC2
> crw-rw----+ 1 root audio 116, 4 2008-06-11 17:36 /dev/snd/hwC0D0
> crw-rw----+ 1 root audio 116, 5 2008-06-11 17:36 /dev/snd/hwC0D1
> crw-rw----+ 1 root audio 116, 68 2008-06-11 17:36 /dev/snd/hwC2D0
> crw-rw----+ 1 root audio 116, 24 2008-06-11 17:55 /dev/snd/pcmC0D0c
> crw-rw----+ 1 root audio 116, 16 2008-06-11 18:02 /dev/snd/pcmC0D0p
> crw-rw----+ 1 root audio 116, 17 2008-06-11 17:36 /dev/snd/pcmC0D1p
> crw-rw----+ 1 root audio 116, 26 2008-06-11 17:36 /dev/snd/pcmC0D2c
> crw-rw----+ 1 root audio 116, 19 2008-06-11 17:36 /dev/snd/pcmC0D3p
> crw-rw----+ 1 root audio 116, 56 2008-06-11 17:55 /dev/snd/pcmC1D0c
> crw-rw----+ 1 root audio 116, 83 2008-06-11 17:36 /dev/snd/pcmC2D3p
> crw-rw----+ 1 root audio 116, 1 2008-06-11 17:36 /dev/snd/seq
> crw-rw----+ 1 root audio 116, 33 2008-06-11 17:36 /dev/snd/timer
>
>
> !!Aplay/Arecord output
> !!------------
>
> APLAY
>
> **** List of PLAYBACK Hardware Devices ****
> card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 0: Intel [HDA Intel], device 1: ALC883 Digital [ALC883 Digital]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 0: Intel [HDA Intel], device 3: ATI HDMI [ATI HDMI]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 2: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
>
> ARECORD
>
> **** List of CAPTURE Hardware Devices ****
> card 0: Intel [HDA Intel], device 0: ALC883 Analog [ALC883 Analog]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 0: Intel [HDA Intel], device 2: ALC883 Analog [ALC883 Analog]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 1: U0x46d0x990 [USB Device 0x46d:0x990], device 0: USB Audio [USB Audio]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
>
> !!Amixer output
> !!-------------
>
> !!-------Mixer controls for card 0 [Intel]
>
> Simple mixer control 'Master',0
> Capabilities: pvolume pvolume-joined pswitch pswitch-joined
> Playback channels: Mono
> Limits: Playback 0 - 31
> Mono: Playback 31 [100%] [0.00dB] [on]
> Simple mixer control 'Headphone',0
> Capabilities: pswitch
> Playback channels: Front Left - Front Right
> Mono:
> Front Left: Playback [on]
> Front Right: Playback [on]
> Simple mixer control 'PCM',0
> Capabilities: pvolume
> Playback channels: Front Left - Front Right
> Limits: Playback 0 - 255
> Mono:
> Front Left: Playback 255 [100%] [0.00dB]
> Front Right: Playback 255 [100%] [0.00dB]
> Simple mixer control 'Front',0
> Capabilities: pvolume pswitch
> Playback channels: Front Left - Front Right
> Limits: Playback 0 - 31
> Mono:
> Front Left: Playback 31 [100%] [0.00dB] [on]
> Front Right: Playback 31 [100%] [0.00dB] [on]
> Simple mixer control 'Front Mic',0
> Capabilities: pvolume pswitch
> Playback channels: Front Left - Front Right
> Limits: Playback 0 - 31
> Mono:
> Front Left: Playback 0 [0%] [-34.50dB] [off]
> Front Right: Playback 0 [0%] [-34.50dB] [off]
> Simple mixer control 'Front Mic Boost',0
> Capabilities: volume
> Playback channels: Front Left - Front Right
> Capture channels: Front Left - Front Right
> Limits: 0 - 3
> Front Left: 0 [0%]
> Front Right: 0 [0%]
> Simple mixer control 'Surround',0
> Capabilities: pvolume pswitch
> Playback channels: Front Left - Front Right
> Limits: Playback 0 - 31
> Mono:
> Front Left: Playback 0 [0%] [-46.50dB] [off]
> Front Right: Playback 0 [0%] [-46.50dB] [off]
> Simple mixer control 'Center',0
> Capabilities: pvolume pvolume-joined pswitch pswitch-joined
> Playback channels: Mono
> Limits: Playback 0 - 31
> Mono: Playback 0 [0%] [-46.50dB] [off]
> Simple mixer control 'LFE',0
> Capabilities: pvolume pvolume-joined pswitch pswitch-joined
> Playback channels: Mono
> Limits: Playback 0 - 31
> Mono: Playback 0 [0%] [-46.50dB] [off]
> Simple mixer control 'Side',0
> Capabilities: pvolume pswitch
> Playback channels: Front Left - Front Right
> Limits: Playback 0 - 31
> Mono:
> Front Left: Playback 0 [0%] [-46.50dB] [off]
> Front Right: Playback 0 [0%] [-46.50dB] [off]
> Simple mixer control 'Line',0
> Capabilities: pvolume pswitch
> Playback channels: Front Left - Front Right
> Limits: Playback 0 - 31
> Mono:
> Front Left: Playback 0 [0%] [-34.50dB] [off]
> Front Right: Playback 0 [0%] [-34.50dB] [off]
> Simple mixer control 'Mic',0
> Capabilities: pvolume pswitch
> Playback channels: Front Left - Front Right
> Limits: Playback 0 - 31
> Mono:
> Front Left: Playback 12 [39%] [-16.50dB] [on]
> Front Right: Playback 12 [39%] [-16.50dB] [on]
> Simple mixer control 'Mic Boost',0
> Capabilities: volume
> Playback channels: Front Left - Front Right
> Capture channels: Front Left - Front Right
> Limits: 0 - 3
> Front Left: 3 [100%]
> Front Right: 3 [100%]
> Simple mixer control 'IEC958',0
> Capabilities: pswitch pswitch-joined
> Playback channels: Mono
> Mono: Playback [on]
> Simple mixer control 'IEC958',1
> Capabilities: pswitch pswitch-joined
> Playback channels: Mono
> Mono: Playback [off]
> Simple mixer control 'Capture',0
> Capabilities: cvolume cswitch
> Capture channels: Front Left - Front Right
> Limits: Capture 0 - 31
> Front Left: Capture 0 [0%] [-12.00dB] [on]
> Front Right: Capture 0 [0%] [-12.00dB] [on]
> Simple mixer control 'Capture',1
> Capabilities: cvolume cswitch
> Capture channels: Front Left - Front Right
> Limits: Capture 0 - 31
> Front Left: Capture 0 [0%] [-12.00dB] [off]
> Front Right: Capture 0 [0%] [-12.00dB] [off]
> Simple mixer control 'Digital',0
> Capabilities: cvolume
> Capture channels: Front Left - Front Right
> Limits: Capture 0 - 120
> Front Left: Capture 0 [0%] [-30.00dB]
> Front Right: Capture 0 [0%] [-30.00dB]
> Simple mixer control 'Input Source',0
> Capabilities: cenum
> Items: 'Mic' 'Front Mic' 'Line'
> Item0: 'Mic'
> Simple mixer control 'Input Source',1
> Capabilities: cenum
> Items: 'Mic' 'Front Mic' 'Line'
> Item0: 'Mic'
>
> !!-------Mixer controls for card 1 [U0x46d0x990]
>
> Simple mixer control 'Mic',0
> Capabilities: cvolume cswitch cswitch-joined
> Capture channels: Mono
> Limits: Capture 0 - 3072
> Mono: Capture 0 [0%] [18.00dB] [off]
>
> !!-------Mixer controls for card 2 [HDMI]
>
> Simple mixer control 'IEC958',0
> Capabilities: pswitch pswitch-joined
> Playback channels: Mono
> Mono: Playback [off]
>
>
> !!Alsactl output
> !!-------------
>
> --startcollapse--
> state.Intel {
> control.1 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Front Playback Volume'
> value.0 31
> value.1 31
> }
> control.2 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Front Playback Switch'
> value.0 true
> value.1 true
> }
> control.3 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Surround Playback Volume'
> value.0 0
> value.1 0
> }
> control.4 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Surround Playback Switch'
> value.0 false
> value.1 false
> }
> control.5 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 1
> comment.range '0 - 31'
> iface MIXER
> name 'Center Playback Volume'
> value 0
> }
> control.6 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 1
> comment.range '0 - 31'
> iface MIXER
> name 'LFE Playback Volume'
> value 0
> }
> control.7 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 1
> iface MIXER
> name 'Center Playback Switch'
> value false
> }
> control.8 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 1
> iface MIXER
> name 'LFE Playback Switch'
> value false
> }
> control.9 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Side Playback Volume'
> value.0 0
> value.1 0
> }
> control.10 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Side Playback Switch'
> value.0 false
> value.1 false
> }
> control.11 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Headphone Playback Switch'
> value.0 true
> value.1 true
> }
> control.12 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Mic Playback Volume'
> value.0 12
> value.1 12
> }
> control.13 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Mic Playback Switch'
> value.0 true
> value.1 true
> }
> control.14 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Front Mic Playback Volume'
> value.0 0
> value.1 0
> }
> control.15 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Front Mic Playback Switch'
> value.0 false
> value.1 false
> }
> control.16 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Line Playback Volume'
> value.0 0
> value.1 0
> }
> control.17 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Line Playback Switch'
> value.0 false
> value.1 false
> }
> control.18 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 3'
> iface MIXER
> name 'Mic Boost'
> value.0 3
> value.1 3
> }
> control.19 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 3'
> iface MIXER
> name 'Front Mic Boost'
> value.0 0
> value.1 0
> }
> control.20 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Capture Volume'
> value.0 0
> value.1 0
> }
> control.21 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Capture Switch'
> value.0 true
> value.1 true
> }
> control.22 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 31'
> iface MIXER
> name 'Capture Volume'
> index 1
> value.0 0
> value.1 0
> }
> control.23 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 2
> iface MIXER
> name 'Capture Switch'
> index 1
> value.0 false
> value.1 false
> }
> control.24 {
> comment.access 'read write'
> comment.type ENUMERATED
> comment.count 1
> comment.item.0 Mic
> comment.item.1 'Front Mic'
> comment.item.2 Line
> iface MIXER
> name 'Input Source'
> value Mic
> }
> control.25 {
> comment.access 'read write'
> comment.type ENUMERATED
> comment.count 1
> comment.item.0 Mic
> comment.item.1 'Front Mic'
> comment.item.2 Line
> iface MIXER
> name 'Input Source'
> index 1
> value Mic
> }
> control.26 {
> comment.access read
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Con Mask'
> value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.27 {
> comment.access read
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Pro Mask'
> value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.28 {
> comment.access 'read write'
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Default'
> value '0482000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.29 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Switch'
> value true
> }
> control.30 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 1
> comment.range '0 - 31'
> iface MIXER
> name 'Master Playback Volume'
> value 31
> }
> control.31 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 1
> iface MIXER
> name 'Master Playback Switch'
> value true
> }
> control.32 {
> comment.access read
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Con Mask'
> index 1
> value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.33 {
> comment.access read
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Pro Mask'
> index 1
> value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.34 {
> comment.access 'read write'
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Default'
> index 1
> value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.35 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Switch'
> index 1
> value false
> }
> control.36 {
> comment.access 'read write user'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 255'
> comment.tlv '0000000100000008ffffec1400000014'
> iface MIXER
> name 'PCM Playback Volume'
> value.0 255
> value.1 255
> }
> control.37 {
> comment.access 'read write user'
> comment.type INTEGER
> comment.count 2
> comment.range '0 - 120'
> comment.tlv '0000000100000008fffff44800000032'
> iface MIXER
> name 'Digital Capture Volume'
> value.0 0
> value.1 0
> }
> }
> state.U0x46d0x990 {
> control.1 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 1
> iface MIXER
> name 'Mic Capture Switch'
> value false
> }
> control.2 {
> comment.access 'read write'
> comment.type INTEGER
> comment.count 1
> comment.range '0 - 3072'
> iface MIXER
> name 'Mic Capture Volume'
> value 0
> }
> }
> state.HDMI {
> control.1 {
> comment.access read
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Con Mask'
> value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.2 {
> comment.access read
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Pro Mask'
> value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.3 {
> comment.access 'read write'
> comment.type IEC958
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Default'
> value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> }
> control.4 {
> comment.access 'read write'
> comment.type BOOLEAN
> comment.count 1
> iface MIXER
> name 'IEC958 Playback Switch'
> value false
> }
> }
> --endcollapse--
>
>
> !!All Loaded Modules
> !!------------------
>
> Module
> ppdev
> ipv6
> acpi_cpufreq
> cpufreq_userspace
> cpufreq_stats
> cpufreq_powersave
> cpufreq_ondemand
> freq_table
> cpufreq_conservative
> video
> output
> sbs
> sbshc
> container
> dock
> battery
> microcode
> nfs
> lockd
> nfs_acl
> sunrpc
> iptable_filter
> ip_tables
> x_tables
> ext3
> jbd
> mbcache
> af_packet
> ac
> parport_pc
> lp
> parport
> snd_usb_audio
> snd_usb_lib
> uvcvideo
> snd_hda_intel
> compat_ioctl32
> psmouse
> snd_seq_dummy
> videodev
> v4l1_compat
> v4l2_common
> snd_seq_oss
> snd_seq_midi
> serio_raw
> snd_rawmidi
> snd_pcm_oss
> snd_mixer_oss
> fglrx
> atl1
> mii
> snd_seq_midi_event
> snd_pcm
> snd_seq
> snd_seq_device
> snd_timer
> snd_page_alloc
> snd_hwdep
> intel_agp
> iTCO_wdt
> iTCO_vendor_support
> snd
> button
> evdev
> soundcore
> shpchp
> pci_hotplug
> usbhid
> hid
> xfs
> sg
> sr_mod
> cdrom
> sd_mod
> ahci
> libata
> scsi_mod
> ehci_hcd
> uhci_hcd
> usbcore
> thermal
> processor
> fan
> fbcon
> tileblit
> font
> bitblit
> softcursor
> fuse
> --
> Daniel J Blueman
>



--
Daniel J Blueman

2008-06-12 10:45:28

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Wed, 11 Jun 2008 22:37:49 +0100,
Daniel J Blueman wrote:
>
> On Wed, Jun 11, 2008 at 8:00 PM, Daniel J Blueman
> <[email protected]> wrote:
> > On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
> >> At Mon, 9 Jun 2008 20:59:00 +0100,
> >> Daniel J Blueman wrote:
> >>>
> >>> Hi Takashi-san,
> >>>
> >>> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
> >>> LTS x86-64). I can see on Audacity that the DC offset that varies with
> >>> the recording capture level.
> >>
> >> Could you elaborate? The mic bias level could be changed via the pin
> >> control value. Usually, it's set as VREF 80%.
> >
> > When the recording->capture level is set to 0, the mic has no DC
> > offset as expected. Maxing the recording->capture level, the mic input
> > is saturated, in between, we see a linear connection.
> >
> >>> Plus, the mixer playback->mic-boost
> >>> muting enables/disables mic-boost in recording.
> >>
> >> This is a known bug in alsa-lib mixer abstraction. No kernel issue.
> >
> >>> It feels like the ALC883 pins aren't configured quite right. The mobo
> >>> is an Asus P5E-VM with current BIOS [1]
> >>>
> >>> What's the routine to debug this? Would it help to install windows,
> >>> dump the register space and compare?
> >>
> >> You can find *.INI file that contains the default pin configuration
> >> in Windows. This might be useful in the case BIOS is broken but
> >> Windows does a black magic.
> >
> > That'll be these defaults stashed in the INF file [2]. Let me know if
> > it's not what you expected and I'll publish the complete INF file.
> >
> >> Anyway, please run alsa-info.sh with --no-upload option and show the
> >> generated file here. It contains the codec information and mixer
> >> setup.
> >> http://hg.alsa-project.org/alsa/raw-file/tip/alsa-info.sh
> >
> > See [3].
>
> >> Also, you can adjust the pin setting on the fly via hda-verb utility
> >> below:
> >> http://ftp.suse.com/pub/people/tiwai/misc/hda-verb-0.2.tar.bz2
> >>
> >> Don't forget to build snd-hda-intel module with
> >> CONFIG_SND_HDA_HWDEP=y to use this command.
> >
> > I'll give this a shot if I get time.
>
> Looking at the datasheet and ALSA report, changing the front mic node
> id also affects capturing from the (rear) mic input.

Depends on the hardware implementation. But, usually, no, different
pin widgets are assigned for front and mic jacks.

> ftp://66.104.77.130/pc/audio/ALC883_DataSheet_1.3.pdf
>
> We get the "hda_codec: Unknown model for ALC883, trying auto-probe
> from BIOS..." kernel message, so we may need to tweak
> pci/hda/patch_realtek.c.

Note that this is no error but information. The driver has preset
models for known devices and use the static configuration table for
such devices. For other devices, the driver just relies on BIOS
setup.

> Also, I can reproduce the problem the with HD
> and legacy front-panel audio settings in the BIOS. Do you know a way
> to dump eg the pin configuration in windows or other useful state, so
> I can compare with all the possible node ID configuration values?

Sorry, no, I've not booted Windows over years :)


Takashi

2008-06-12 10:49:26

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Wed, 11 Jun 2008 20:00:17 +0100,
Daniel J Blueman wrote:
>
> On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
> > At Mon, 9 Jun 2008 20:59:00 +0100,
> > Daniel J Blueman wrote:
> >>
> >> Hi Takashi-san,
> >>
> >> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
> >> LTS x86-64). I can see on Audacity that the DC offset that varies with
> >> the recording capture level.
> >
> > Could you elaborate? The mic bias level could be changed via the pin
> > control value. Usually, it's set as VREF 80%.
>
> When the recording->capture level is set to 0, the mic has no DC
> offset as expected. Maxing the recording->capture level, the mic input
> is saturated, in between, we see a linear connection.
>
> >> Plus, the mixer playback->mic-boost
> >> muting enables/disables mic-boost in recording.
> >
> > This is a known bug in alsa-lib mixer abstraction. No kernel issue.
>
> >> It feels like the ALC883 pins aren't configured quite right. The mobo
> >> is an Asus P5E-VM with current BIOS [1]
> >>
> >> What's the routine to debug this? Would it help to install windows,
> >> dump the register space and compare?
> >
> > You can find *.INI file that contains the default pin configuration
> > in Windows. This might be useful in the case BIOS is broken but
> > Windows does a black magic.
>
> That'll be these defaults stashed in the INF file [2]. Let me know if
> it's not what you expected and I'll publish the complete INF file.
>
> > Anyway, please run alsa-info.sh with --no-upload option and show the
> > generated file here. It contains the codec information and mixer
> > setup.
> > http://hg.alsa-project.org/alsa/raw-file/tip/alsa-info.sh
>
> See [3].
>
> > Also, you can adjust the pin setting on the fly via hda-verb utility
> > below:
> > http://ftp.suse.com/pub/people/tiwai/misc/hda-verb-0.2.tar.bz2
> >
> > Don't forget to build snd-hda-intel module with
> > CONFIG_SND_HDA_HWDEP=y to use this command.
>
> I'll give this a shot if I get time.

You can try to adjust VREF value of mic pins.
For example, the node 0x18 and 0x19 correspond to the rear and front
mics, respectively. Then run the following as root:

# ./hda-verb /dev/snd/hwC0D0 0x18 SET_PIN_WID 0x21

which will change the widget 0x18 (rear mic) to input-VREF 50%
(0x21). The original value is input-VREF 80% (0x24).


Takashi

2008-06-12 13:03:32

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

Hi,

On Thu, Jun 12, 2008 at 12:49 PM, Takashi Iwai <[email protected]> wrote:
> At Wed, 11 Jun 2008 20:00:17 +0100,
> Daniel J Blueman wrote:
>>
>> On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
>> > At Mon, 9 Jun 2008 20:59:00 +0100,
>> > Daniel J Blueman wrote:
>> >>
>> >> Hi Takashi-san,
>> >>
>> >> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
>> >> LTS x86-64). I can see on Audacity that the DC offset that varies with
>> >> the recording capture level.
>> >
>> > Could you elaborate? The mic bias level could be changed via the pin
>> > control value. Usually, it's set as VREF 80%.
>>
>> When the recording->capture level is set to 0, the mic has no DC
>> offset as expected. Maxing the recording->capture level, the mic input
>> is saturated, in between, we see a linear connection.

I find that a good way to examine the captured PCM is the following command:

$ arecord | od -t x1z -v

With the "Capture" and "Digital" controls both at 0 in alsamixer, this
outputs just a constant 0x80 byte. This seems natural.

With "Digital" at 0, changing "Capture" has no effect. However, with
"Capture" at 0 and these values for "Digital":

db gain -30 byte read 0x80
db gain -28 byte read 0x81
db gain -26 byte read 0x82
db gain -22 byte read 0x83
db gain -19 byte read 0x84
db gain -17 byte read 0x85
db gain -15 byte read 0x86
db gain -13 byte read 0x87
db gain -12 byte read 0x88
db gain -11 byte read 0x89
db gain -10 byte read 0x8a
db gain -9 byte read 0x8b
db gain -8 byte read 0x8d <-- up two here
db gain -7 byte read 0x8e
db gain -6 byte read 0x90
db gain -5 byte read 0x92
db gain -4 byte read 0x94
db gain -3 byte read 0x97
...
db gain 12 byte read 0xff
db gain 13 (and up) byte read 0x00 <-- seems to flip over or get capped

If I now change "Capture" to have dB gain 0 (35% in alsamixer), I get
this instead (for different values of "Digital"):

db gain -30 byte read 0x80
db gain -29 byte read 0x85
...
db gain -18 byte read 0x90
...
db gain -12 byte read 0xa0
...
db gain -6 byte read 0xc0
...
db gain -1 byte read 0xf2

So in fact, if both controls are at dB gain 0 (or one of them is
higher), the only byte I can read is 0x00.

> You can try to adjust VREF value of mic pins.
> For example, the node 0x18 and 0x19 correspond to the rear and front
> mics, respectively. Then run the following as root:
>
> # ./hda-verb /dev/snd/hwC0D0 0x18 SET_PIN_WID 0x21
>
> which will change the widget 0x18 (rear mic) to input-VREF 50%
> (0x21). The original value is input-VREF 80% (0x24).

I tried to do this for my card. For me, I need the 0x19 widget, which
is the internal mic:

Node 0x19 [Pin Complex] wcaps 0x40008b: Stereo Amp-In
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
Amp-In vals: [0x00 0x00]
Pincap 0x083724: IN Detect
Vref caps: HIZ 50 GRD 80 100
Pin Default 0x99a30941: [Fixed] Mic at Int ATAPI
Conn = ATAPI, Color = Unknown
DefAssociation = 0x4, Sequence = 0x1
Misc = NO_PRESENCE
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0

And I tried various values for the PinCtl. 0x20, 0x21, and 0x22, (0x24
was the default), but with no change in the input byte stream AT ALL!
And I double-checked, my input source is set to "Internal Mic". (Just
to be 100% sure, I tried all three input sources, but it was the same
for all. So no change in the input at all.)

Do you have any more tips that I can try out?

Also, I am just curious, is it possible to break the microphone (or
other physical components) by changing the voltage levels to
unsupported values, or is it safe to experiment freely? I read this in
the HDA specification:

"The VRefEn field encoding selects one of the possible states for the
VRef signal(s). If the value written to this control does not
correspond to a supported value as defined in the Pin Capabilities
parameter, the control must either retain the previous value or take
the value of 000, which will put the control in a Hi-Z state and
prevent damage to any attached components."

Thanks!


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 13:13:19

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 12 Jun 2008 15:03:16 +0200,
Vegard Nossum wrote:
>
> Hi,
>
> On Thu, Jun 12, 2008 at 12:49 PM, Takashi Iwai <[email protected]> wrote:
> > At Wed, 11 Jun 2008 20:00:17 +0100,
> > Daniel J Blueman wrote:
> >>
> >> On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
> >> > At Mon, 9 Jun 2008 20:59:00 +0100,
> >> > Daniel J Blueman wrote:
> >> >>
> >> >> Hi Takashi-san,
> >> >>
> >> >> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
> >> >> LTS x86-64). I can see on Audacity that the DC offset that varies with
> >> >> the recording capture level.
> >> >
> >> > Could you elaborate? The mic bias level could be changed via the pin
> >> > control value. Usually, it's set as VREF 80%.
> >>
> >> When the recording->capture level is set to 0, the mic has no DC
> >> offset as expected. Maxing the recording->capture level, the mic input
> >> is saturated, in between, we see a linear connection.
>
> I find that a good way to examine the captured PCM is the following command:
>
> $ arecord | od -t x1z -v
>
> With the "Capture" and "Digital" controls both at 0 in alsamixer, this
> outputs just a constant 0x80 byte. This seems natural.

The "Digital Capture Volume" is the software attenuation/gain in
alsa-lib. Keep it in the middle corresponding to 0dB. Otherwise you
change the data digitally by the software. This control exists for
some devices that have only digital mics and no hardware analog
volume controls.

"Capture Volume" is the hardware recording level.


> > You can try to adjust VREF value of mic pins.
> > For example, the node 0x18 and 0x19 correspond to the rear and front
> > mics, respectively. Then run the following as root:
> >
> > # ./hda-verb /dev/snd/hwC0D0 0x18 SET_PIN_WID 0x21
> >
> > which will change the widget 0x18 (rear mic) to input-VREF 50%
> > (0x21). The original value is input-VREF 80% (0x24).
>
> I tried to do this for my card. For me, I need the 0x19 widget, which
> is the internal mic:

Did you try the external mic, too?

> Node 0x19 [Pin Complex] wcaps 0x40008b: Stereo Amp-In
> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> Amp-In vals: [0x00 0x00]
> Pincap 0x083724: IN Detect
> Vref caps: HIZ 50 GRD 80 100
> Pin Default 0x99a30941: [Fixed] Mic at Int ATAPI
> Conn = ATAPI, Color = Unknown
> DefAssociation = 0x4, Sequence = 0x1
> Misc = NO_PRESENCE
> Pin-ctls: 0x24: IN VREF_80
> Unsolicited: tag=00, enabled=0
>
> And I tried various values for the PinCtl. 0x20, 0x21, and 0x22, (0x24
> was the default), but with no change in the input byte stream AT ALL!
> And I double-checked, my input source is set to "Internal Mic". (Just
> to be 100% sure, I tried all three input sources, but it was the same
> for all. So no change in the input at all.)
>
> Do you have any more tips that I can try out?

Did you get ANY input from the internal mic? If no, the pin mapping
might be wrong. That is, 0x19 isn't the internal mic.

> Also, I am just curious, is it possible to break the microphone (or
> other physical components) by changing the voltage levels to
> unsupported values, or is it safe to experiment freely? I read this in
> the HDA specification:
>
> "The VRefEn field encoding selects one of the possible states for the
> VRef signal(s). If the value written to this control does not
> correspond to a supported value as defined in the Pin Capabilities
> parameter, the control must either retain the previous value or take
> the value of 000, which will put the control in a Hi-Z state and
> prevent damage to any attached components."

There is no safe thing as long as you work as root :)

But, I've not heard any report that the wrong pin (at least VREF)
broke the whole circuit, though.


Takashi

2008-06-12 13:48:49

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 3:12 PM, Takashi Iwai <[email protected]> wrote:
> At Thu, 12 Jun 2008 15:03:16 +0200, Vegard Nossum wrote:
>> With the "Capture" and "Digital" controls both at 0 in alsamixer, this
>> outputs just a constant 0x80 byte. This seems natural.
>
> The "Digital Capture Volume" is the software attenuation/gain in
> alsa-lib. Keep it in the middle corresponding to 0dB. Otherwise you
> change the data digitally by the software. This control exists for
> some devices that have only digital mics and no hardware analog
> volume controls.
>
> "Capture Volume" is the hardware recording level.
>

Thanks. I have Digital set to 0 dB now, and I am using only the Capture control.

>
>> > You can try to adjust VREF value of mic pins.
>> > For example, the node 0x18 and 0x19 correspond to the rear and front
>> > mics, respectively. Then run the following as root:
>> >
>> > # ./hda-verb /dev/snd/hwC0D0 0x18 SET_PIN_WID 0x21
>> >
>> > which will change the widget 0x18 (rear mic) to input-VREF 50%
>> > (0x21). The original value is input-VREF 80% (0x24).
>>
>> I tried to do this for my card. For me, I need the 0x19 widget, which
>> is the internal mic:
>
> Did you try the external mic, too?
>

Now I've tried the external mic, with only VERY limited success (see below).

> Did you get ANY input from the internal mic? If no, the pin mapping
> might be wrong. That is, 0x19 isn't the internal mic.

The external mic:

Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
Amp-In vals: [0x00 0x00]
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x083734: IN OUT Detect
Vref caps: HIZ 50 GRD 80 100
Pin Default 0x02a19840: [Jack] Mic at Ext Front
Conn = 1/8, Color = Pink
DefAssociation = 0x4, Sequence = 0x0
Pin-ctls: 0x24: IN VREF_80

So what I have done is this:

In alsamixer, Capture is set to 21 dB gain (Digital at 0 dB). This
will read mostly 0xa9 with alsarecord. If I try to sing a tone, this
value can change briefly between 0xa9 and 0xaa for as long as I sing,
such as this:

0631340 a9 a9 a9 a9 a9 a9 a9 a9 a9 aa a9 aa aa aa aa aa >................<
0631360 aa aa aa aa aa aa aa aa aa a9 a9 a9 a9 a9 a9 a9 >................<

...otherwise, it is at a constant 0xa9.

However, something interesting here happens when I change the voltage
level while recording. It seems that there is a short fluctuation (it
lasts only a fraction of a second) where the values change...:

If I change the PinCtl from 0x24 to 0x21, it seems that the data
values will change in this order (with many repetitions of each
value):
... 0xa9 0xb2 0xb1 0xb0 0xaf 0xae 0xad 0xac 0xab 0xaa 0xa9 ...

and then it is back at the constant 0xa9 value. If I change the PinCtl
from 0x21 to 0x24, the values will change in this order
... 0xa9 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 ...

So this seems to be the only difference between the internal and
external mic. I am no expert in this, but I guess the voltage change
will simply raise/lower the membrane of the microphone and the change
will be reflected in the values read back...?

But this at least assures me that the external mic pin configuration is correct.


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 13:52:17

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 12 Jun 2008 15:48:32 +0200,
Vegard Nossum wrote:
>
> The external mic:
>
> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> Amp-In vals: [0x00 0x00]

The input volume is zero. Try to raise "Mic Boost" (if present)?


Takashi

2008-06-12 13:55:57

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
> At Thu, 12 Jun 2008 15:48:32 +0200,
> Vegard Nossum wrote:
>>
>> The external mic:
>>
>> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
>> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
>> Amp-In vals: [0x00 0x00]
>
> The input volume is zero. Try to raise "Mic Boost" (if present)?

They're already all up.

Line In Boost = 100
Mic Boost = 100
Internal Mic Boost = 100

Right after changing all these to max, I've read the value from
card0/codec#0 again:

Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
Amp-In vals: [0x00 0x00]

There doesn't seem to be any difference. Even when changing them all
to 0 in alsamixer, this output stays the same.


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 14:01:17

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 3:55 PM, Vegard Nossum <[email protected]> wrote:
> On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
>> At Thu, 12 Jun 2008 15:48:32 +0200,
>> Vegard Nossum wrote:
>>>
>>> The external mic:
>>>
>>> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
>>> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
>>> Amp-In vals: [0x00 0x00]
>>
>> The input volume is zero. Try to raise "Mic Boost" (if present)?
>
> They're already all up.
>
> Line In Boost = 100
> Mic Boost = 100
> Internal Mic Boost = 100
>
> Right after changing all these to max, I've read the value from
> card0/codec#0 again:
>
> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> Amp-In vals: [0x00 0x00]
>
> There doesn't seem to be any difference. Even when changing them all
> to 0 in alsamixer, this output stays the same.

Sorry, I just discovered yet another "Mic Boost" control in the
playback section in alsamixer (the others were in the capture
section). Changing this now gives me:

Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
Amp-In vals: [0x02 0x02]

Strange.


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 14:03:09

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 12 Jun 2008 15:55:45 +0200,
Vegard Nossum wrote:
>
> On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
> > At Thu, 12 Jun 2008 15:48:32 +0200,
> > Vegard Nossum wrote:
> >>
> >> The external mic:
> >>
> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> >> Amp-In vals: [0x00 0x00]
> >
> > The input volume is zero. Try to raise "Mic Boost" (if present)?
>
> They're already all up.
>
> Line In Boost = 100
> Mic Boost = 100
> Internal Mic Boost = 100
>
> Right after changing all these to max, I've read the value from
> card0/codec#0 again:
>
> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> Amp-In vals: [0x00 0x00]
>
> There doesn't seem to be any difference. Even when changing them all
> to 0 in alsamixer, this output stays the same.

Weird. What happens if you execute the verb directly via hda-verb
program like below?
hda-verb /dev/snd/hwC0D0 0x18 SET_AMP 0x7002


Takashi

2008-06-12 14:14:00

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 12 Jun 2008 16:01:05 +0200,
Vegard Nossum wrote:
>
> On Thu, Jun 12, 2008 at 3:55 PM, Vegard Nossum <[email protected]> wrote:
> > On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
> >> At Thu, 12 Jun 2008 15:48:32 +0200,
> >> Vegard Nossum wrote:
> >>>
> >>> The external mic:
> >>>
> >>> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> >>> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> >>> Amp-In vals: [0x00 0x00]
> >>
> >> The input volume is zero. Try to raise "Mic Boost" (if present)?
> >
> > They're already all up.
> >
> > Line In Boost = 100
> > Mic Boost = 100
> > Internal Mic Boost = 100
> >
> > Right after changing all these to max, I've read the value from
> > card0/codec#0 again:
> >
> > Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> > Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> > Amp-In vals: [0x00 0x00]
> >
> > There doesn't seem to be any difference. Even when changing them all
> > to 0 in alsamixer, this output stays the same.
>
> Sorry, I just discovered yet another "Mic Boost" control in the
> playback section in alsamixer (the others were in the capture
> section). Changing this now gives me:
>
> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> Amp-In vals: [0x02 0x02]
>
> Strange.

It's a known bug of alsa-lib mixer abstraction layer.
Some controls appear on both playback and capture views although only
the value is changed only on playback mode.

So, don't worry, it's not your fault ;)


Takashi

2008-06-12 14:18:24

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 4:02 PM, Takashi Iwai <[email protected]> wrote:
> At Thu, 12 Jun 2008 15:55:45 +0200,
> Vegard Nossum wrote:
>>
>> On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
>> > At Thu, 12 Jun 2008 15:48:32 +0200,
>> > Vegard Nossum wrote:
>> >>
>> >> The external mic:
>> >>
>> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
>> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
>> >> Amp-In vals: [0x00 0x00]
>> >
>> > The input volume is zero. Try to raise "Mic Boost" (if present)?
>>
>> They're already all up.
>>
>> Line In Boost = 100
>> Mic Boost = 100
>> Internal Mic Boost = 100
>>
>> Right after changing all these to max, I've read the value from
>> card0/codec#0 again:
>>
>> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
>> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
>> Amp-In vals: [0x00 0x00]
>>
>> There doesn't seem to be any difference. Even when changing them all
>> to 0 in alsamixer, this output stays the same.
>
> Weird. What happens if you execute the verb directly via hda-verb
> program like below?
> hda-verb /dev/snd/hwC0D0 0x18 SET_AMP 0x7002
>

Yep, this has the same effect has changing the "Mic Boost" control in
the Playback section of alsamixer.

What I discovered now, though, is that I get a much wider range of
values from the external mic (so playback of the captured data
actually sounds correct). It actually works, but there is still a very
strong DC offset that seems dependent on the level of the "Capture"
control. This offset still makes it unusable for recording, since even
slightly louder noises will clip the samples.

It also seems that this control is reset each time I start Audacity
(even though the "Mic boost" level in alsamixer doesn't change). But I
guess this unrelated to the DC offset issue.

Changing the voltage level now (0x21, 0x22, 0x24, with Mic Boost at
0x02) doesn't change the DC offset, but has the same effect as before
(the values fluctuate, but eventually stabilize at the same level).

Thanks for the help.


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 14:23:29

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 12 Jun 2008 16:18:14 +0200,
Vegard Nossum wrote:
>
> On Thu, Jun 12, 2008 at 4:02 PM, Takashi Iwai <[email protected]> wrote:
> > At Thu, 12 Jun 2008 15:55:45 +0200,
> > Vegard Nossum wrote:
> >>
> >> On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
> >> > At Thu, 12 Jun 2008 15:48:32 +0200,
> >> > Vegard Nossum wrote:
> >> >>
> >> >> The external mic:
> >> >>
> >> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> >> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> >> >> Amp-In vals: [0x00 0x00]
> >> >
> >> > The input volume is zero. Try to raise "Mic Boost" (if present)?
> >>
> >> They're already all up.
> >>
> >> Line In Boost = 100
> >> Mic Boost = 100
> >> Internal Mic Boost = 100
> >>
> >> Right after changing all these to max, I've read the value from
> >> card0/codec#0 again:
> >>
> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> >> Amp-In vals: [0x00 0x00]
> >>
> >> There doesn't seem to be any difference. Even when changing them all
> >> to 0 in alsamixer, this output stays the same.
> >
> > Weird. What happens if you execute the verb directly via hda-verb
> > program like below?
> > hda-verb /dev/snd/hwC0D0 0x18 SET_AMP 0x7002
> >
>
> Yep, this has the same effect has changing the "Mic Boost" control in
> the Playback section of alsamixer.
>
> What I discovered now, though, is that I get a much wider range of
> values from the external mic (so playback of the captured data
> actually sounds correct). It actually works, but there is still a very
> strong DC offset that seems dependent on the level of the "Capture"
> control. This offset still makes it unusable for recording, since even
> slightly louder noises will clip the samples.
>
> It also seems that this control is reset each time I start Audacity
> (even though the "Mic boost" level in alsamixer doesn't change). But I
> guess this unrelated to the DC offset issue.
>
> Changing the voltage level now (0x21, 0x22, 0x24, with Mic Boost at
> 0x02) doesn't change the DC offset, but has the same effect as before
> (the values fluctuate, but eventually stabilize at the same level).

Hmm, then it's all what I can guess right now.
There might be some vendor-specific settings I don't know of.

To be sure, try the following git tree (master branch), pull on
2.6.26:

git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git

This contains the patches for the next kernel, and some of them are
related with Realtek codecs.


Takashi

2008-06-12 14:58:44

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 3:23 PM, Takashi Iwai <[email protected]> wrote:
> At Thu, 12 Jun 2008 16:18:14 +0200,
> Vegard Nossum wrote:
>>
>> On Thu, Jun 12, 2008 at 4:02 PM, Takashi Iwai <[email protected]> wrote:
>> > At Thu, 12 Jun 2008 15:55:45 +0200,
>> > Vegard Nossum wrote:
>> >>
>> >> On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
>> >> > At Thu, 12 Jun 2008 15:48:32 +0200,
>> >> > Vegard Nossum wrote:
>> >> >>
>> >> >> The external mic:
>> >> >>
>> >> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
>> >> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
>> >> >> Amp-In vals: [0x00 0x00]
>> >> >
>> >> > The input volume is zero. Try to raise "Mic Boost" (if present)?
>> >>
>> >> They're already all up.
>> >>
>> >> Line In Boost = 100
>> >> Mic Boost = 100
>> >> Internal Mic Boost = 100
>> >>
>> >> Right after changing all these to max, I've read the value from
>> >> card0/codec#0 again:
>> >>
>> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
>> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
>> >> Amp-In vals: [0x00 0x00]
>> >>
>> >> There doesn't seem to be any difference. Even when changing them all
>> >> to 0 in alsamixer, this output stays the same.
>> >
>> > Weird. What happens if you execute the verb directly via hda-verb
>> > program like below?
>> > hda-verb /dev/snd/hwC0D0 0x18 SET_AMP 0x7002
>> >
>>
>> Yep, this has the same effect has changing the "Mic Boost" control in
>> the Playback section of alsamixer.
>>
>> What I discovered now, though, is that I get a much wider range of
>> values from the external mic (so playback of the captured data
>> actually sounds correct). It actually works, but there is still a very
>> strong DC offset that seems dependent on the level of the "Capture"
>> control. This offset still makes it unusable for recording, since even
>> slightly louder noises will clip the samples.
>>
>> It also seems that this control is reset each time I start Audacity
>> (even though the "Mic boost" level in alsamixer doesn't change). But I
>> guess this unrelated to the DC offset issue.
>>
>> Changing the voltage level now (0x21, 0x22, 0x24, with Mic Boost at
>> 0x02) doesn't change the DC offset, but has the same effect as before
>> (the values fluctuate, but eventually stabilize at the same level).
>
> Hmm, then it's all what I can guess right now.
> There might be some vendor-specific settings I don't know of.

Maybe. I can readily dump the PCI config space of the Intel HD-audio
controller in Windows and list differences; the datasheet from Intel
allows us to decode the registers. Will this help us any? Of course,
we really need to dump the target behind the HD-bus, but that's
another matter...

> To be sure, try the following git tree (master branch), pull on
> 2.6.26:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
>
> This contains the patches for the next kernel, and some of them are
> related with Realtek codecs.
>
>
> Takashi
>



--
Daniel J Blueman

2008-06-12 15:19:16

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 12 Jun 2008 15:58:30 +0100,
Daniel J Blueman wrote:
>
> On Thu, Jun 12, 2008 at 3:23 PM, Takashi Iwai <[email protected]> wrote:
> > At Thu, 12 Jun 2008 16:18:14 +0200,
> > Vegard Nossum wrote:
> >>
> >> On Thu, Jun 12, 2008 at 4:02 PM, Takashi Iwai <[email protected]> wrote:
> >> > At Thu, 12 Jun 2008 15:55:45 +0200,
> >> > Vegard Nossum wrote:
> >> >>
> >> >> On Thu, Jun 12, 2008 at 3:52 PM, Takashi Iwai <[email protected]> wrote:
> >> >> > At Thu, 12 Jun 2008 15:48:32 +0200,
> >> >> > Vegard Nossum wrote:
> >> >> >>
> >> >> >> The external mic:
> >> >> >>
> >> >> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> >> >> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> >> >> >> Amp-In vals: [0x00 0x00]
> >> >> >
> >> >> > The input volume is zero. Try to raise "Mic Boost" (if present)?
> >> >>
> >> >> They're already all up.
> >> >>
> >> >> Line In Boost = 100
> >> >> Mic Boost = 100
> >> >> Internal Mic Boost = 100
> >> >>
> >> >> Right after changing all these to max, I've read the value from
> >> >> card0/codec#0 again:
> >> >>
> >> >> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> >> >> Amp-In caps: ofs=0x00, nsteps=0x02, stepsize=0x4f, mute=0
> >> >> Amp-In vals: [0x00 0x00]
> >> >>
> >> >> There doesn't seem to be any difference. Even when changing them all
> >> >> to 0 in alsamixer, this output stays the same.
> >> >
> >> > Weird. What happens if you execute the verb directly via hda-verb
> >> > program like below?
> >> > hda-verb /dev/snd/hwC0D0 0x18 SET_AMP 0x7002
> >> >
> >>
> >> Yep, this has the same effect has changing the "Mic Boost" control in
> >> the Playback section of alsamixer.
> >>
> >> What I discovered now, though, is that I get a much wider range of
> >> values from the external mic (so playback of the captured data
> >> actually sounds correct). It actually works, but there is still a very
> >> strong DC offset that seems dependent on the level of the "Capture"
> >> control. This offset still makes it unusable for recording, since even
> >> slightly louder noises will clip the samples.
> >>
> >> It also seems that this control is reset each time I start Audacity
> >> (even though the "Mic boost" level in alsamixer doesn't change). But I
> >> guess this unrelated to the DC offset issue.
> >>
> >> Changing the voltage level now (0x21, 0x22, 0x24, with Mic Boost at
> >> 0x02) doesn't change the DC offset, but has the same effect as before
> >> (the values fluctuate, but eventually stabilize at the same level).
> >
> > Hmm, then it's all what I can guess right now.
> > There might be some vendor-specific settings I don't know of.
>
> Maybe. I can readily dump the PCI config space of the Intel HD-audio
> controller in Windows and list differences; the datasheet from Intel
> allows us to decode the registers. Will this help us any? Of course,
> we really need to dump the target behind the HD-bus, but that's
> another matter...

I don't think it's an issue of PCI register but rather codec setups.
PCI registers cannot influence on an analog thing like DC offset.
So, we need to peek the HD-audio codec registers if really doing so.


Takashi

2008-06-12 16:55:49

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 4:23 PM, Takashi Iwai <[email protected]> wrote:
> Hmm, then it's all what I can guess right now.
> There might be some vendor-specific settings I don't know of.
>
> To be sure, try the following git tree (master branch), pull on
> 2.6.26:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
>
> This contains the patches for the next kernel, and some of them are
> related with Realtek codecs.

Thanks, I've now tried it, but still it doesn't work.

At least the right model is detected, because this is my laptop:

hda_codec.c:2352: hda_codec: model 'acer' is selected for config
1025:11e (Acer Aspire 5720z)

I also applied this patch for some extra debug output (and teach me a
bit about how registers change in response to alsamixer changes):

diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index d2e1093..588b69c 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -129,6 +129,7 @@ unsigned int snd_hda_codec_read(struct hda_codec *codec, hda
_nid_t nid,
res = (unsigned int)-1;
mutex_unlock(&codec->bus->cmd_mutex);
snd_hda_power_down(codec);
+ snd_printdd("read verb %08x parm %08x = %d\n", verb, parm, res);
return res;
}

@@ -153,6 +154,7 @@ int snd_hda_codec_write(struct hda_codec *codec, hda_nid_t n
id, int direct,
err = codec->bus->ops.command(codec, nid, direct, verb, parm);
mutex_unlock(&codec->bus->cmd_mutex);
snd_hda_power_down(codec);
+ snd_printdd("write verb %08x parm %08x = %d\n", verb, parm, err);
return err;
}

..and in the log, I have this when modifying the "Capture" control:

hda_codec.c:157: write verb 00000300 parm 0000a01a = 0
hda_codec.c:157: write verb 00000300 parm 0000901a = 0

Now I consulted the HDA specification, and I find this surprising:

Verb 3h (set Amplifier Gain/Mute) has the following payload bits:

15 Set Output Amp
14 Set Input Amp

...but the payloads that I logged (a01a and 901a) would correspond to
bit 15 being set, which is the Output Amp!

Does that seem immediately obvious to you?

I will dig some more. Thanks for the help so far.


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 17:30:12

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 6:55 PM, Vegard Nossum <[email protected]> wrote:
> Now I consulted the HDA specification, and I find this surprising:
>
> Verb 3h (set Amplifier Gain/Mute) has the following payload bits:
>
> 15 Set Output Amp
> 14 Set Input Amp
>
> ...but the payloads that I logged (a01a and 901a) would correspond to
> bit 15 being set, which is the Output Amp!

I applied this as well, just to make sure, and I tested again:

@@ -906,6 +908,9 @@ int snd_hda_codec_amp_update(struct hda_codec
*codec, hda_nid_t nid, int ch,
{
struct hda_amp_info *info;

+ printk(KERN_ERR "snd_hda_codec_amp_update(): direction = %s\n",
+ direction == HDA_OUTPUT ? "output" : "input");
+
info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, direction, idx));
if (!info)
return 0;

..and yes, changing the "Capture" level does indeed set the Output bit
when modifying this control. Maybe there's something wrong with the
set-up of mixer or pin controls that makes ALSA think this is an
output stream?

Is there something strange here:

Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Pin Default 0x02a19840: [Jack] Mic at Ext Front

Node 0x19 [Pin Complex] wcaps 0x40008b: Stereo Amp-In
Pin Default 0x99a30941: [Fixed] Mic at Int ATAPI

Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
Pin Default 0x0281304e: [Jack] Line In at Ext Front

..or it certainly seems that all the inputs claim to have output
capability too. Maybe this is what is confusing ALSA?

I will try to change the Gain/Mute levels manually using hda-verb
using the Input bit instead of Output and see how it goes.


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 17:53:53

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 12 Jun 2008 19:29:57 +0200,
Vegard Nossum wrote:
>
> On Thu, Jun 12, 2008 at 6:55 PM, Vegard Nossum <[email protected]> wrote:
> > Now I consulted the HDA specification, and I find this surprising:
> >
> > Verb 3h (set Amplifier Gain/Mute) has the following payload bits:
> >
> > 15 Set Output Amp
> > 14 Set Input Amp
> >
> > ...but the payloads that I logged (a01a and 901a) would correspond to
> > bit 15 being set, which is the Output Amp!
>
> I applied this as well, just to make sure, and I tested again:
>
> @@ -906,6 +908,9 @@ int snd_hda_codec_amp_update(struct hda_codec
> *codec, hda_nid_t nid, int ch,
> {
> struct hda_amp_info *info;
>
> + printk(KERN_ERR "snd_hda_codec_amp_update(): direction = %s\n",
> + direction == HDA_OUTPUT ? "output" : "input");
> +
> info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, direction, idx));
> if (!info)
> return 0;
>
> ..and yes, changing the "Capture" level does indeed set the Output bit
> when modifying this control. Maybe there's something wrong with the
> set-up of mixer or pin controls that makes ALSA think this is an
> output stream?
>
> Is there something strange here:
>
> Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Pin Default 0x02a19840: [Jack] Mic at Ext Front
>
> Node 0x19 [Pin Complex] wcaps 0x40008b: Stereo Amp-In
> Pin Default 0x99a30941: [Fixed] Mic at Int ATAPI
>
> Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
> Pin Default 0x0281304e: [Jack] Line In at Ext Front
>
> ..or it certainly seems that all the inputs claim to have output
> capability too. Maybe this is what is confusing ALSA?

No.

Basically, the input/output amps mean the amp input to the widget
and the amp output from the widget, respectively. They don't mean
that the playback or capture stream direction. So, it's perfectly OK
if the amp is output for a capture stream.

One exception is the pin widget. In this case, the input amp means
the amp applied for the input signal from this pin, and the output amp
means the amp applied before sending to this pin. So, the
input/output actually corresponds to the stream direction. But, for
other widgets, the amp I/O is just a difference between before or
after.


Takashi

2008-06-12 18:31:23

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 7:53 PM, Takashi Iwai <[email protected]> wrote:
>> ..or it certainly seems that all the inputs claim to have output
>> capability too. Maybe this is what is confusing ALSA?
>
> No.
>
> Basically, the input/output amps mean the amp input to the widget
> and the amp output from the widget, respectively. They don't mean
> that the playback or capture stream direction. So, it's perfectly OK
> if the amp is output for a capture stream.
>
> One exception is the pin widget. In this case, the input amp means
> the amp applied for the input signal from this pin, and the output amp
> means the amp applied before sending to this pin. So, the
> input/output actually corresponds to the stream direction. But, for
> other widgets, the amp I/O is just a difference between before or
> after.

Okay, yes. I now output the nid that is changing too, and you are
correct, it is not the pin widget, but this one:

Node 0x23 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
Amp-Out caps: ofs=0x0b, nsteps=0x1f, stepsize=0x05, mute=1
Amp-Out vals: [0x03 0x03]
Connection: 7
0x18 0x19 0x1a 0x1c 0x14 0x15 0x12*

I guess I will need to read up on what exactly an audio selector is
before attempting any more debugging.

Thank you for keeping up so far. I'll try to shut up now until I have
something more tangible to report :-)


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-12 21:50:44

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 11:49 AM, Takashi Iwai <[email protected]> wrote:
> At Wed, 11 Jun 2008 20:00:17 +0100,
> Daniel J Blueman wrote:
>>
>> On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
>> > At Mon, 9 Jun 2008 20:59:00 +0100,
>> > Daniel J Blueman wrote:
>> >>
>> >> Hi Takashi-san,
>> >>
>> >> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
>> >> LTS x86-64). I can see on Audacity that the DC offset that varies with
>> >> the recording capture level.
>> >
>> > Could you elaborate? The mic bias level could be changed via the pin
>> > control value. Usually, it's set as VREF 80%.
>>
>> When the recording->capture level is set to 0, the mic has no DC
>> offset as expected. Maxing the recording->capture level, the mic input
>> is saturated, in between, we see a linear connection.
>>
>> >> Plus, the mixer playback->mic-boost
>> >> muting enables/disables mic-boost in recording.
>> >
>> > This is a known bug in alsa-lib mixer abstraction. No kernel issue.
>>
>> >> It feels like the ALC883 pins aren't configured quite right. The mobo
>> >> is an Asus P5E-VM with current BIOS [1]
>> >>
>> >> What's the routine to debug this? Would it help to install windows,
>> >> dump the register space and compare?
>> >
>> > You can find *.INI file that contains the default pin configuration
>> > in Windows. This might be useful in the case BIOS is broken but
>> > Windows does a black magic.
>>
>> That'll be these defaults stashed in the INF file [2]. Let me know if
>> it's not what you expected and I'll publish the complete INF file.
>>
>> > Anyway, please run alsa-info.sh with --no-upload option and show the
>> > generated file here. It contains the codec information and mixer
>> > setup.
>> > http://hg.alsa-project.org/alsa/raw-file/tip/alsa-info.sh
>>
>> See [3].
>>
>> > Also, you can adjust the pin setting on the fly via hda-verb utility
>> > below:
>> > http://ftp.suse.com/pub/people/tiwai/misc/hda-verb-0.2.tar.bz2
>> >
>> > Don't forget to build snd-hda-intel module with
>> > CONFIG_SND_HDA_HWDEP=y to use this command.
>>
>> I'll give this a shot if I get time.
>
> You can try to adjust VREF value of mic pins.
> For example, the node 0x18 and 0x19 correspond to the rear and front
> mics, respectively. Then run the following as root:
>
> # ./hda-verb /dev/snd/hwC0D0 0x18 SET_PIN_WID 0x21
>
> which will change the widget 0x18 (rear mic) to input-VREF 50%
> (0x21). The original value is input-VREF 80% (0x24).

Yes, I had tried this and it does not help, perhaps only changing the
magnitude of the sampled mic input.

Another smoking gun, is when changing certain mixer settings (both on
gnome-mixer and alsamixer), eg playback->front mic amplitude, moving
the slider up and down, the L/R linking seems to be almost randomly
unlinked and the other L/R channel jumps to a different value. When
re-linking the L/R channels, often, it'll unlink again and change both
value after reading back the change; mute can be erratic too.
Confirmed with 2.6.26-r5.

Is there a good way to debug this also?

> Takashi
--
Daniel J Blueman

2008-06-13 10:38:39

by Romano Giannetti

[permalink] [raw]
Subject: Re: ALC883 recording troubles...


On Thu, 2008-06-12 at 22:50 +0100, Daniel J Blueman wrote:
> Another smoking gun, is when changing certain mixer settings (both on
> gnome-mixer and alsamixer), eg playback->front mic amplitude, moving
> the slider up and down, the L/R linking seems to be almost randomly
> unlinked and the other L/R channel jumps to a different value. When
> re-linking the L/R channels, often, it'll unlink again and change both
> value after reading back the change; mute can be erratic too.
> Confirmed with 2.6.26-r5.

This seems: http://bugzilla.kernel.org/show_bug.cgi?id=10300

I do not think it's related, I had the mic problem *before* seeing this.
It's not fixed as 2.6.26-rc5, btw.

Romano
--

Romano Giannetti Dep. de Electr?nica y Autom?tica
http://www.dea.icai.upcomillas.es/romano Univ. Pontificia Comillas (MADRID)


--
La presente comunicaci?n tiene car?cter confidencial y es para el exclusivo uso del destinatario indicado en la misma. Si Ud. no es el destinatario indicado, le informamos que cualquier forma de distribuci?n, reproducci?n o uso de esta comunicaci?n y/o de la informaci?n contenida en la misma est?n estrictamente prohibidos por la ley. Si Ud. ha recibido esta comunicaci?n por error, por favor, notif?quelo inmediatamente al remitente contestando a este mensaje y proceda a continuaci?n a destruirlo. Gracias por su colaboraci?n.

This communication contains confidential information. It is for the exclusive use of the intended addressee. If you are not the intended addressee, please note that any form of distribution, copying or use of this communication or the information in it is strictly prohibited by law. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this message. Thank you for your cooperation.

2008-06-28 00:05:37

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Thu, Jun 12, 2008 at 11:49 AM, Takashi Iwai <[email protected]> wrote:
> At Wed, 11 Jun 2008 20:00:17 +0100,
> Daniel J Blueman wrote:
>>
>> On Tue, Jun 10, 2008 at 6:59 AM, Takashi Iwai <[email protected]> wrote:
>> > At Mon, 9 Jun 2008 20:59:00 +0100,
>> > Daniel J Blueman wrote:
>> >>
>> >> Hi Takashi-san,
>> >>
>> >> I'm experiencing DC offset with the microphone on 2.6.24 (Ubuntu 8.04
>> >> LTS x86-64). I can see on Audacity that the DC offset that varies with
>> >> the recording capture level.
>> >
>> > Could you elaborate? The mic bias level could be changed via the pin
>> > control value. Usually, it's set as VREF 80%.
>>
>> When the recording->capture level is set to 0, the mic has no DC
>> offset as expected. Maxing the recording->capture level, the mic input
>> is saturated, in between, we see a linear connection.
>>
>> >> Plus, the mixer playback->mic-boost
>> >> muting enables/disables mic-boost in recording.
>> >
>> > This is a known bug in alsa-lib mixer abstraction. No kernel issue.
>>
>> >> It feels like the ALC883 pins aren't configured quite right. The mobo
>> >> is an Asus P5E-VM with current BIOS [1]
>> >>
>> >> What's the routine to debug this? Would it help to install windows,
>> >> dump the register space and compare?
>> >
>> > You can find *.INI file that contains the default pin configuration
>> > in Windows. This might be useful in the case BIOS is broken but
>> > Windows does a black magic.
>>
>> That'll be these defaults stashed in the INF file [2]. Let me know if
>> it's not what you expected and I'll publish the complete INF file.
>>
>> > Anyway, please run alsa-info.sh with --no-upload option and show the
>> > generated file here. It contains the codec information and mixer
>> > setup.
>> > http://hg.alsa-project.org/alsa/raw-file/tip/alsa-info.sh
>>
>> See [3].
>>
>> > Also, you can adjust the pin setting on the fly via hda-verb utility
>> > below:
>> > http://ftp.suse.com/pub/people/tiwai/misc/hda-verb-0.2.tar.bz2
>> >
>> > Don't forget to build snd-hda-intel module with
>> > CONFIG_SND_HDA_HWDEP=y to use this command.
>>
>> I'll give this a shot if I get time.
>
> You can try to adjust VREF value of mic pins.
> For example, the node 0x18 and 0x19 correspond to the rear and front
> mics, respectively. Then run the following as root:
>
> # ./hda-verb /dev/snd/hwC0D0 0x18 SET_PIN_WID 0x21
>
> which will change the widget 0x18 (rear mic) to input-VREF 50%
> (0x21). The original value is input-VREF 80% (0x24).

As the mic is working fine, but with this variable DC offset, it felt
like something needed tweaking in the mixer (summation) node. I
understand more about the node connectivity now, and found muting the
front mic mixer input and setting LR gain to 0 at mixer node 23h
addresses the issue:

(from page 42 at ftp://66.104.77.130/pc/audio/ALC883_DataSheet_1.3.pdf)

# ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180

Vegard - your HD bus enumeration looks similar and I'd bet the vendor
followed the same Realtek application note, so can you give this a
shot too? If not, try mixer node 20h.

My motherboard (Asus P5E-VM HDMI) has front-panel HD-audio (selectable
as legacy in the BIOS) connectors, but I've never been able to get
them working, so left the cables disconnected...surely not a board
design issue, as default pin configuration wouldn't explain the
offset?

Thanks,
Daniel
--
Daniel J Blueman

2008-06-28 12:29:45

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Sat, Jun 28, 2008 at 11:29 AM, Daniel J Blueman
<[email protected]> wrote:
> On Sat, Jun 28, 2008 at 11:11 AM, Vegard Nossum <[email protected]> wrote:
>> (removed linux-kernel from Cc)
>>
>> On Sat, Jun 28, 2008 at 2:05 AM, Daniel J Blueman
>> <[email protected]> wrote:
>>> As the mic is working fine, but with this variable DC offset, it felt
>>> like something needed tweaking in the mixer (summation) node. I
>>> understand more about the node connectivity now, and found muting the
>>> front mic mixer input and setting LR gain to 0 at mixer node 23h
>>> addresses the issue:
>>>
>>> (from page 42 at ftp://66.104.77.130/pc/audio/ALC883_DataSheet_1.3.pdf)
>>>
>>> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180
>>
>> Are you saying that this fixes the problem completely for you?
>
> Yes, this addresses the problem squarely. The front mix mixer input is
> adding this offset, looks like they have a capacitor between a
> reference voltage and the pin or something, so it floats up.
>
>>> Vegard - your HD bus enumeration looks similar and I'd bet the vendor
>>> followed the same Realtek application note, so can you give this a
>>> shot too? If not, try mixer node 20h.
>>
>> I agree. Thanks for the link, I found ALC268 now as well, and I am
>> experimenting...
>>
>> I think 23h is [in]correct -- this is the one with caps f00040h for me too.
>>
>> But neither of them had any effect at all.
>
> OK, I'll take another look at the debug output you posted; I forgot
> you aren't using the ALC883.

Using your dumped config and
ftp://202.65.194.211/pc/audio/ALC268_DataSheet_1.3.pdf page 42, your
front mic pin complex is at node 19h; the mixers connecting to it are
at nodes 0Bh, 22h and 23h, all at the second input index, so one of
these should work:

# ./hda-verb /dev/snd/hwC0D0 0x0b SET_AMP_GAIN_MUTE 0x7280
# ./hda-verb /dev/snd/hwC0D0 0x22 SET_AMP_GAIN_MUTE 0x7280
# ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7280

On my ALC883, we need to mute the first input instead, thus 0x7180.
Can you see if the above helps you out?

Thanks,
Daniel
--
Daniel J Blueman

2008-06-28 12:39:42

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Sat, Jun 28, 2008 at 2:29 PM, Daniel J Blueman
<[email protected]> wrote:
> Using your dumped config and
> ftp://202.65.194.211/pc/audio/ALC268_DataSheet_1.3.pdf page 42, your
> front mic pin complex is at node 19h; the mixers connecting to it are
> at nodes 0Bh, 22h and 23h, all at the second input index, so one of
> these should work:
>
> # ./hda-verb /dev/snd/hwC0D0 0x0b SET_AMP_GAIN_MUTE 0x7280
> # ./hda-verb /dev/snd/hwC0D0 0x22 SET_AMP_GAIN_MUTE 0x7280
> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7280
>
> On my ALC883, we need to mute the first input instead, thus 0x7180.
> Can you see if the above helps you out?

Thanks for helping out!

Unfortunately, none of these commands (with either 0x7180 or 0x7280)
seems to make any difference at all. (I tried various combinations,
with reloading the driver in-between to undo the trial attempts.)


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-28 13:24:42

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Sat, Jun 28, 2008 at 1:39 PM, Vegard Nossum <[email protected]> wrote:
> On Sat, Jun 28, 2008 at 2:29 PM, Daniel J Blueman
> <[email protected]> wrote:
>> Using your dumped config and
>> ftp://202.65.194.211/pc/audio/ALC268_DataSheet_1.3.pdf page 42, your
>> front mic pin complex is at node 19h; the mixers connecting to it are
>> at nodes 0Bh, 22h and 23h, all at the second input index, so one of
>> these should work:
>>
>> # ./hda-verb /dev/snd/hwC0D0 0x0b SET_AMP_GAIN_MUTE 0x7280
>> # ./hda-verb /dev/snd/hwC0D0 0x22 SET_AMP_GAIN_MUTE 0x7280
>> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7280
>>
>> On my ALC883, we need to mute the first input instead, thus 0x7180.
>> Can you see if the above helps you out?
>
> Thanks for helping out!
>
> Unfortunately, none of these commands (with either 0x7180 or 0x7280)
> seems to make any difference at all. (I tried various combinations,
> with reloading the driver in-between to undo the trial attempts.)

I made a mistake - the second input is selected by 0x7180, as the
first is 0x7080...perhaps retry this with nodes 0Bh, 22h and 23h?

Failing that, these are the steps I'd try:
1. setup audio so as to reproduce input DC offset
2. start recording in audacity and observe DC offset
3. for each input of each mixer:
3.1 mute until you see the DC offset disappear

ie for ALC268, mixer input amps at nodes (# inputs): 0Eh(1) 0Fh(2)
10h(3) 18h(1) 19h(1) 1Ah(1)
ie:

# ./hda-verb /dev/snd/hwC0D0 0x0e SET_AMP_GAIN_MUTE 0x7080
# ./hda-verb /dev/snd/hwC0D0 0x0f SET_AMP_GAIN_MUTE 0x7080
# ./hda-verb /dev/snd/hwC0D0 0x0f SET_AMP_GAIN_MUTE 0x7180
# ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7080
# ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7180
# ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7280
# ./hda-verb /dev/snd/hwC0D0 0x18 SET_AMP_GAIN_MUTE 0x7080
# ./hda-verb /dev/snd/hwC0D0 0x19 SET_AMP_GAIN_MUTE 0x7080
# ./hda-verb /dev/snd/hwC0D0 0x1a SET_AMP_GAIN_MUTE 0x7080

Changes are real-time, so no need to restart anything. Once you've
found which mixer input amp and input index stops the DC offset, reset
the HD codec (eg reboot) and try just that one! I'm interested in
hearing if this finds the issue...

Dan
--
Daniel J Blueman

2008-06-28 13:47:22

by Vegard Nossum

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Sat, Jun 28, 2008 at 3:24 PM, Daniel J Blueman
<[email protected]> wrote:
> On Sat, Jun 28, 2008 at 1:39 PM, Vegard Nossum <[email protected]> wrote:
>> On Sat, Jun 28, 2008 at 2:29 PM, Daniel J Blueman
>> <[email protected]> wrote:
>>> Using your dumped config and
>>> ftp://202.65.194.211/pc/audio/ALC268_DataSheet_1.3.pdf page 42, your
>>> front mic pin complex is at node 19h; the mixers connecting to it are
>>> at nodes 0Bh, 22h and 23h, all at the second input index, so one of
>>> these should work:
>>>
>>> # ./hda-verb /dev/snd/hwC0D0 0x0b SET_AMP_GAIN_MUTE 0x7280
>>> # ./hda-verb /dev/snd/hwC0D0 0x22 SET_AMP_GAIN_MUTE 0x7280
>>> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7280
>>>
>>> On my ALC883, we need to mute the first input instead, thus 0x7180.
>>> Can you see if the above helps you out?
>>
>> Thanks for helping out!
>>
>> Unfortunately, none of these commands (with either 0x7180 or 0x7280)
>> seems to make any difference at all. (I tried various combinations,
>> with reloading the driver in-between to undo the trial attempts.)
>
> I made a mistake - the second input is selected by 0x7180, as the
> first is 0x7080...perhaps retry this with nodes 0Bh, 22h and 23h?
>

I did -- no difference.

> Failing that, these are the steps I'd try:
> 1. setup audio so as to reproduce input DC offset
> 2. start recording in audacity and observe DC offset
> 3. for each input of each mixer:
> 3.1 mute until you see the DC offset disappear
>
> ie for ALC268, mixer input amps at nodes (# inputs): 0Eh(1) 0Fh(2)
> 10h(3) 18h(1) 19h(1) 1Ah(1)
> ie:
>

Also no difference :-(

> Changes are real-time, so no need to restart anything. Once you've
> found which mixer input amp and input index stops the DC offset, reset
> the HD codec (eg reboot) and try just that one! I'm interested in
> hearing if this finds the issue...
>

The only result was the muting of playback.

But thanks for the hints, I'll try to look for other combinations that
might help too. If you have other ideas too, I'll be happy to try them
out!


Vegard

--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036

2008-06-29 17:29:55

by Romano Giannetti

[permalink] [raw]
Subject: Re: ALC883 recording troubles...


On Sat, 2008-06-28 at 14:24 +0100, Daniel J Blueman wrote:
> # ./hda-verb /dev/snd/hwC0D0 0x0e SET_AMP_GAIN_MUTE 0x7080
> # ./hda-verb /dev/snd/hwC0D0 0x0f SET_AMP_GAIN_MUTE 0x7080
> # ./hda-verb /dev/snd/hwC0D0 0x0f SET_AMP_GAIN_MUTE 0x7180
> # ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7080
> # ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7180
> # ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7280
> # ./hda-verb /dev/snd/hwC0D0 0x18 SET_AMP_GAIN_MUTE 0x7080
> # ./hda-verb /dev/snd/hwC0D0 0x19 SET_AMP_GAIN_MUTE 0x7080
> # ./hda-verb /dev/snd/hwC0D0 0x1a SET_AMP_GAIN_MUTE 0x7080

I tried all this, to no avail. At some point input stopped recording
sound, it has just offset, but I can't say which one was... if it's a
useful data, I can retry it.

And... I have almost never booted it, but I have a Vista installed in
this laptop. If you explain me how to do (in windows I am a dumb user) I
can try to search thing. What I know is that the sound in windows is
quite louder, and that recording works better. There is a button with
"offset correction" default on, if I remember correctly.

Romano

--
Romano Giannetti Dep. de Electr?nica y Autom?tica
http://www.dea.icai.upcomillas.es/romano Univ. Pontificia Comillas (MADRID)


--
La presente comunicaci?n tiene car?cter confidencial y es para el exclusivo uso del destinatario indicado en la misma. Si Ud. no es el destinatario indicado, le informamos que cualquier forma de distribuci?n, reproducci?n o uso de esta comunicaci?n y/o de la informaci?n contenida en la misma est?n estrictamente prohibidos por la ley. Si Ud. ha recibido esta comunicaci?n por error, por favor, notif?quelo inmediatamente al remitente contestando a este mensaje y proceda a continuaci?n a destruirlo. Gracias por su colaboraci?n.

This communication contains confidential information. It is for the exclusive use of the intended addressee. If you are not the intended addressee, please note that any form of distribution, copying or use of this communication or the information in it is strictly prohibited by law. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this message. Thank you for your cooperation.

2008-06-29 21:33:58

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

On Sun, Jun 29, 2008 at 6:29 PM, Romano Giannetti
<[email protected]> wrote:
>
> On Sat, 2008-06-28 at 14:24 +0100, Daniel J Blueman wrote:
>> # ./hda-verb /dev/snd/hwC0D0 0x0e SET_AMP_GAIN_MUTE 0x7080
>> # ./hda-verb /dev/snd/hwC0D0 0x0f SET_AMP_GAIN_MUTE 0x7080
>> # ./hda-verb /dev/snd/hwC0D0 0x0f SET_AMP_GAIN_MUTE 0x7180
>> # ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7080
>> # ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7180
>> # ./hda-verb /dev/snd/hwC0D0 0x10 SET_AMP_GAIN_MUTE 0x7280
>> # ./hda-verb /dev/snd/hwC0D0 0x18 SET_AMP_GAIN_MUTE 0x7080
>> # ./hda-verb /dev/snd/hwC0D0 0x19 SET_AMP_GAIN_MUTE 0x7080
>> # ./hda-verb /dev/snd/hwC0D0 0x1a SET_AMP_GAIN_MUTE 0x7080
>
> I tried all this, to no avail. At some point input stopped recording
> sound, it has just offset, but I can't say which one was... if it's a
> useful data, I can retry it.
>
> And... I have almost never booted it, but I have a Vista installed in
> this laptop. If you explain me how to do (in windows I am a dumb user) I
> can try to search thing. What I know is that the sound in windows is
> quite louder, and that recording works better. There is a button with
> "offset correction" default on, if I remember correctly.

That'll be the software 'fix' the Realtek guys mentioned to Takashi.

It's clear the issue with the ALC268 is different than the ALC883
offset issue that I'm seeing, which seems to be a bug as ALSA isn't
muting the mixer inputs which aren't intended.

Daniel
--
Daniel J Blueman

2008-08-14 19:10:21

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

Hi Takashi,

I am still finding this recording +ve saturation on my ALC883 Intel
HDA sound device with 2.6.27-rc3 (ie ALSA 1.0.17 drivers) and ALSA
1.0.16-1 libraries on Ubuntu Intrepid.

The previous workaround still 'gets us out of jail':

# ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180
nid = 0x23, verb = 0x300, param = 0x7180
value = 0x0

Note, we see this message "hda_codec: Unknown model for ALC883, trying
auto-probe from BIOS..." as before on this Asus P5E-VM HDMI
motherboard with current BIOS.

How can we improve the situation, as out the box, the front/rear mic
inputs are (still) useless?

Many thanks,
Daniel

On Sat, Jun 28, 2008 at 11:29 AM, Daniel J Blueman
<[email protected]> wrote:
> On Sat, Jun 28, 2008 at 11:11 AM, Vegard Nossum <[email protected]> wrote:
>> On Sat, Jun 28, 2008 at 2:05 AM, Daniel J Blueman
>> <[email protected]> wrote:
>>> As the mic is working fine, but with this variable DC offset, it felt
>>> like something needed tweaking in the mixer (summation) node. I
>>> understand more about the node connectivity now, and found muting the
>>> front mic mixer input and setting LR gain to 0 at mixer node 23h
>>> addresses the issue:
>>>
>>> (from page 42 at ftp://66.104.77.130/pc/audio/ALC883_DataSheet_1.3.pdf)
>>>
>>> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180
>>>
>>
>> Are you saying that this fixes the problem completely for you?
>
> Yes, this addresses the problem squarely. The front mix mixer input is
> adding this offset, looks like they have a capacitor between a
> reference voltage and the pin or something, so it floats up.
>
>>> Vegard - your HD bus enumeration looks similar and I'd bet the vendor
>>> followed the same Realtek application note, so can you give this a
>>> shot too? If not, try mixer node 20h.
>>>
>>
>> I agree. Thanks for the link, I found ALC268 now as well, and I am
>> experimenting...
>>
>> I think 23h is [in]correct -- this is the one with caps f00040h for me too.
>>
>> But neither of them had any effect at all.
>
> OK, I'll take another look at the debug output you posted; I forgot
> you aren't using the ALC883.
--
Daniel J Blueman

2008-08-15 14:42:20

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Thu, 14 Aug 2008 20:10:03 +0100,
Daniel J Blueman wrote:
>
> Hi Takashi,
>
> I am still finding this recording +ve saturation on my ALC883 Intel
> HDA sound device with 2.6.27-rc3 (ie ALSA 1.0.17 drivers) and ALSA
> 1.0.16-1 libraries on Ubuntu Intrepid.
>
> The previous workaround still 'gets us out of jail':
>
> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180
> nid = 0x23, verb = 0x300, param = 0x7180
> value = 0x0

Could you try the patch below? With this patch, unused connections
will be disabled. Let me know if it really works so that I can merge
it to git tree.


Takashi

---
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 9473abb..6f0485a 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6442,6 +6442,40 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
}
}

+static void alc882_auto_init_input_src(struct hda_codec *codec)
+{
+ struct alc_spec *spec = codec->spec;
+ const struct hda_input_mux *imux = spec->input_mux;
+ int c;
+
+ for (c = 0; c < spec->num_adc_nids; c++) {
+ hda_nid_t conn_list[10];
+ hda_nid_t nid = spec->capsrc_nids[c];
+ int conns, mute, idx, item;
+
+ conns = snd_hda_get_connections(codec, nid, conn_list,
+ ARRAY_SIZE(conn_list));
+ if (conns < 0)
+ continue;
+ mute = HDA_AMP_MUTE;
+ for (idx = 0; idx < conns; idx++) {
+ /* if the current connection is the selected one,
+ * unmute it as default - otherwise mute it
+ */
+ for (item = 0; item < imux->num_items; item++) {
+ if (imux->items[item].index == idx) {
+ if (spec->cur_mux[c] == item)
+ mute = 0;
+ break;
+ }
+ }
+ snd_hda_codec_amp_stereo(codec, nid, HDA_INPUT,
+ idx, HDA_AMP_MUTE, mute);
+ }
+
+ }
+}
+
/* add mic boosts if needed */
static int alc_auto_add_mic_boost(struct hda_codec *codec)
{
@@ -6496,6 +6530,7 @@ static void alc882_auto_init(struct hda_codec *codec)
alc882_auto_init_multi_out(codec);
alc882_auto_init_hp_out(codec);
alc882_auto_init_analog_input(codec);
+ alc882_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -8290,6 +8325,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc883_auto_init_input_src alc882_auto_init_input_src
+
/* almost identical with ALC880 parser... */
static int alc883_parse_auto_config(struct hda_codec *codec)
{
@@ -8320,6 +8357,7 @@ static void alc883_auto_init(struct hda_codec *codec)
alc883_auto_init_multi_out(codec);
alc883_auto_init_hp_out(codec);
alc883_auto_init_analog_input(codec);
+ alc883_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -9703,6 +9741,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
#define alc262_auto_init_multi_out alc882_auto_init_multi_out
#define alc262_auto_init_hp_out alc882_auto_init_hp_out
#define alc262_auto_init_analog_input alc882_auto_init_analog_input
+#define alc262_auto_init_input_src alc882_auto_init_input_src


/* init callback for auto-configuration model -- overriding the default init */
@@ -9712,6 +9751,7 @@ static void alc262_auto_init(struct hda_codec *codec)
alc262_auto_init_multi_out(codec);
alc262_auto_init_hp_out(codec);
alc262_auto_init_analog_input(codec);
+ alc262_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -13382,6 +13422,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc861vd_auto_init_input_src alc882_auto_init_input_src
+
#define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)

@@ -13564,6 +13606,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
alc861vd_auto_init_multi_out(codec);
alc861vd_auto_init_hp_out(codec);
alc861vd_auto_init_analog_input(codec);
+ alc861vd_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -14729,6 +14772,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc662_auto_init_input_src alc882_auto_init_input_src
+
static int alc662_parse_auto_config(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
@@ -14785,6 +14830,7 @@ static void alc662_auto_init(struct hda_codec *codec)
alc662_auto_init_multi_out(codec);
alc662_auto_init_hp_out(codec);
alc662_auto_init_analog_input(codec);
+ alc662_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}

2008-08-15 22:01:58

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

Hi Takashi,

On Fri, Aug 15, 2008 at 3:42 PM, Takashi Iwai <[email protected]> wrote:
> At Thu, 14 Aug 2008 20:10:03 +0100,
> Daniel J Blueman wrote:
>>
>> Hi Takashi,
>>
>> I am still finding this recording +ve saturation on my ALC883 Intel
>> HDA sound device with 2.6.27-rc3 (ie ALSA 1.0.17 drivers) and ALSA
>> 1.0.16-1 libraries on Ubuntu Intrepid.
>>
>> The previous workaround still 'gets us out of jail':
>>
>> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180
>> nid = 0x23, verb = 0x300, param = 0x7180
>> value = 0x0
>
> Could you try the patch below? With this patch, unused connections
> will be disabled. Let me know if it really works so that I can merge
> it to git tree.
>
> Takashi
>
> ---
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 9473abb..6f0485a 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -6442,6 +6442,40 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +static void alc882_auto_init_input_src(struct hda_codec *codec)
> +{
> + struct alc_spec *spec = codec->spec;
> + const struct hda_input_mux *imux = spec->input_mux;
> + int c;
> +
> + for (c = 0; c < spec->num_adc_nids; c++) {
> + hda_nid_t conn_list[10];
> + hda_nid_t nid = spec->capsrc_nids[c];
> + int conns, mute, idx, item;
> +
> + conns = snd_hda_get_connections(codec, nid, conn_list,
> + ARRAY_SIZE(conn_list));
> + if (conns < 0)
> + continue;
> + mute = HDA_AMP_MUTE;
> + for (idx = 0; idx < conns; idx++) {
> + /* if the current connection is the selected one,
> + * unmute it as default - otherwise mute it
> + */
> + for (item = 0; item < imux->num_items; item++) {
> + if (imux->items[item].index == idx) {
> + if (spec->cur_mux[c] == item)
> + mute = 0;
> + break;
> + }
> + }
> + snd_hda_codec_amp_stereo(codec, nid, HDA_INPUT,
> + idx, HDA_AMP_MUTE, mute);
> + }
> +
> + }
> +}
> +
> /* add mic boosts if needed */
> static int alc_auto_add_mic_boost(struct hda_codec *codec)
> {
> @@ -6496,6 +6530,7 @@ static void alc882_auto_init(struct hda_codec *codec)
> alc882_auto_init_multi_out(codec);
> alc882_auto_init_hp_out(codec);
> alc882_auto_init_analog_input(codec);
> + alc882_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -8290,6 +8325,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc883_auto_init_input_src alc882_auto_init_input_src
> +
> /* almost identical with ALC880 parser... */
> static int alc883_parse_auto_config(struct hda_codec *codec)
> {
> @@ -8320,6 +8357,7 @@ static void alc883_auto_init(struct hda_codec *codec)
> alc883_auto_init_multi_out(codec);
> alc883_auto_init_hp_out(codec);
> alc883_auto_init_analog_input(codec);
> + alc883_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -9703,6 +9741,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
> #define alc262_auto_init_multi_out alc882_auto_init_multi_out
> #define alc262_auto_init_hp_out alc882_auto_init_hp_out
> #define alc262_auto_init_analog_input alc882_auto_init_analog_input
> +#define alc262_auto_init_input_src alc882_auto_init_input_src
>
>
> /* init callback for auto-configuration model -- overriding the default init */
> @@ -9712,6 +9751,7 @@ static void alc262_auto_init(struct hda_codec *codec)
> alc262_auto_init_multi_out(codec);
> alc262_auto_init_hp_out(codec);
> alc262_auto_init_analog_input(codec);
> + alc262_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -13382,6 +13422,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc861vd_auto_init_input_src alc882_auto_init_input_src
> +
> #define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
> #define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
>
> @@ -13564,6 +13606,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
> alc861vd_auto_init_multi_out(codec);
> alc861vd_auto_init_hp_out(codec);
> alc861vd_auto_init_analog_input(codec);
> + alc861vd_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -14729,6 +14772,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc662_auto_init_input_src alc882_auto_init_input_src
> +
> static int alc662_parse_auto_config(struct hda_codec *codec)
> {
> struct alc_spec *spec = codec->spec;
> @@ -14785,6 +14830,7 @@ static void alc662_auto_init(struct hda_codec *codec)
> alc662_auto_init_multi_out(codec);
> alc662_auto_init_hp_out(codec);
> alc662_auto_init_analog_input(codec);
> + alc662_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }

There were a couple of issues: getting the mute logic right from
moving the assignment and increasing the number of inputs beyond the
11 required here to avoid the 'Too many connections' message and
fixing the last input being skipped.

With the updated patch, the problem is fully addressed; no resulting
DC offset, so recording quality is great. This seems logically safe
and a hopeful for 2.6.27-rc4...

The updated patch is against 2.6.27-rc3.

Thanks once again,
Daniel

Signed-off-by: Daniel J Blueman <[email protected]>
--
Daniel J Blueman


Attachments:
(No filename) (6.06 kB)
alc-input-muting.patch (3.86 kB)
Download all attachments

2008-08-16 08:38:39

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Fri, 15 Aug 2008 23:01:42 +0100,
Daniel J Blueman wrote:
>
> Hi Takashi,
>
> On Fri, Aug 15, 2008 at 3:42 PM, Takashi Iwai <[email protected]> wrote:
> > At Thu, 14 Aug 2008 20:10:03 +0100,
> > Daniel J Blueman wrote:
> >>
> >> Hi Takashi,
> >>
> >> I am still finding this recording +ve saturation on my ALC883 Intel
> >> HDA sound device with 2.6.27-rc3 (ie ALSA 1.0.17 drivers) and ALSA
> >> 1.0.16-1 libraries on Ubuntu Intrepid.
> >>
> >> The previous workaround still 'gets us out of jail':
> >>
> >> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180
> >> nid = 0x23, verb = 0x300, param = 0x7180
> >> value = 0x0
> >
> > Could you try the patch below? With this patch, unused connections
> > will be disabled. Let me know if it really works so that I can merge
> > it to git tree.
> >
> > Takashi
> >
> > ---
> > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> > index 9473abb..6f0485a 100644
> > --- a/sound/pci/hda/patch_realtek.c
> > +++ b/sound/pci/hda/patch_realtek.c
> > @@ -6442,6 +6442,40 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
> > }
> > }
> >
> > +static void alc882_auto_init_input_src(struct hda_codec *codec)
> > +{
> > + struct alc_spec *spec = codec->spec;
> > + const struct hda_input_mux *imux = spec->input_mux;
> > + int c;
> > +
> > + for (c = 0; c < spec->num_adc_nids; c++) {
> > + hda_nid_t conn_list[10];
> > + hda_nid_t nid = spec->capsrc_nids[c];
> > + int conns, mute, idx, item;
> > +
> > + conns = snd_hda_get_connections(codec, nid, conn_list,
> > + ARRAY_SIZE(conn_list));
> > + if (conns < 0)
> > + continue;
> > + mute = HDA_AMP_MUTE;
> > + for (idx = 0; idx < conns; idx++) {
> > + /* if the current connection is the selected one,
> > + * unmute it as default - otherwise mute it
> > + */
> > + for (item = 0; item < imux->num_items; item++) {
> > + if (imux->items[item].index == idx) {
> > + if (spec->cur_mux[c] == item)
> > + mute = 0;
> > + break;
> > + }
> > + }
> > + snd_hda_codec_amp_stereo(codec, nid, HDA_INPUT,
> > + idx, HDA_AMP_MUTE, mute);
> > + }
> > +
> > + }
> > +}
> > +
> > /* add mic boosts if needed */
> > static int alc_auto_add_mic_boost(struct hda_codec *codec)
> > {
> > @@ -6496,6 +6530,7 @@ static void alc882_auto_init(struct hda_codec *codec)
> > alc882_auto_init_multi_out(codec);
> > alc882_auto_init_hp_out(codec);
> > alc882_auto_init_analog_input(codec);
> > + alc882_auto_init_input_src(codec);
> > if (spec->unsol_event)
> > alc_sku_automute(codec);
> > }
> > @@ -8290,6 +8325,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
> > }
> > }
> >
> > +#define alc883_auto_init_input_src alc882_auto_init_input_src
> > +
> > /* almost identical with ALC880 parser... */
> > static int alc883_parse_auto_config(struct hda_codec *codec)
> > {
> > @@ -8320,6 +8357,7 @@ static void alc883_auto_init(struct hda_codec *codec)
> > alc883_auto_init_multi_out(codec);
> > alc883_auto_init_hp_out(codec);
> > alc883_auto_init_analog_input(codec);
> > + alc883_auto_init_input_src(codec);
> > if (spec->unsol_event)
> > alc_sku_automute(codec);
> > }
> > @@ -9703,6 +9741,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
> > #define alc262_auto_init_multi_out alc882_auto_init_multi_out
> > #define alc262_auto_init_hp_out alc882_auto_init_hp_out
> > #define alc262_auto_init_analog_input alc882_auto_init_analog_input
> > +#define alc262_auto_init_input_src alc882_auto_init_input_src
> >
> >
> > /* init callback for auto-configuration model -- overriding the default init */
> > @@ -9712,6 +9751,7 @@ static void alc262_auto_init(struct hda_codec *codec)
> > alc262_auto_init_multi_out(codec);
> > alc262_auto_init_hp_out(codec);
> > alc262_auto_init_analog_input(codec);
> > + alc262_auto_init_input_src(codec);
> > if (spec->unsol_event)
> > alc_sku_automute(codec);
> > }
> > @@ -13382,6 +13422,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
> > }
> > }
> >
> > +#define alc861vd_auto_init_input_src alc882_auto_init_input_src
> > +
> > #define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
> > #define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
> >
> > @@ -13564,6 +13606,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
> > alc861vd_auto_init_multi_out(codec);
> > alc861vd_auto_init_hp_out(codec);
> > alc861vd_auto_init_analog_input(codec);
> > + alc861vd_auto_init_input_src(codec);
> > if (spec->unsol_event)
> > alc_sku_automute(codec);
> > }
> > @@ -14729,6 +14772,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
> > }
> > }
> >
> > +#define alc662_auto_init_input_src alc882_auto_init_input_src
> > +
> > static int alc662_parse_auto_config(struct hda_codec *codec)
> > {
> > struct alc_spec *spec = codec->spec;
> > @@ -14785,6 +14830,7 @@ static void alc662_auto_init(struct hda_codec *codec)
> > alc662_auto_init_multi_out(codec);
> > alc662_auto_init_hp_out(codec);
> > alc662_auto_init_analog_input(codec);
> > + alc662_auto_init_input_src(codec);
> > if (spec->unsol_event)
> > alc_sku_automute(codec);
> > }
>
> There were a couple of issues: getting the mute logic right from
> moving the assignment and increasing the number of inputs beyond the
> 11 required here to avoid the 'Too many connections' message and
> fixing the last input being skipped.

Oh I should have more carefully checked.

> With the updated patch, the problem is fully addressed; no resulting
> DC offset, so recording quality is great. This seems logically safe
> and a hopeful for 2.6.27-rc4...
>
> The updated patch is against 2.6.27-rc3.

Thanks. There is another problem in the current patch.
It should use snd_hda_codec_write() without caching. Otherwise
it breaks the suspend/resume.

The revised patch is below. Please test and report back if it works
so that I can push it to the upstream.


thanks,

Takashi

===
commit 340c6e7d8bc26354313fe8bacc636ca18f71995e
Author: Takashi Iwai <[email protected]>
Date: Fri Aug 15 16:46:42 2008 +0200

ALSA: hda - Fix capture source widgets on ALC codecs

On some Realtek codecs like ALC882 or ALC883, the capture source is
no mux but sum widget. We have to initialize all channels properly
for this type, otherwise noises may come in from the unused route.

The patch assures to mute unused routes, and unmute the currently
selected route.

Signed-off-by: Takashi Iwai <[email protected]>

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index add4e87..56d899f 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6437,6 +6437,40 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
}
}

+static void alc882_auto_init_input_src(struct hda_codec *codec)
+{
+ struct alc_spec *spec = codec->spec;
+ const struct hda_input_mux *imux = spec->input_mux;
+ int c;
+
+ for (c = 0; c < spec->num_adc_nids; c++) {
+ hda_nid_t conn_list[10];
+ hda_nid_t nid = spec->capsrc_nids[c];
+ int conns, mute, idx, item;
+
+ conns = snd_hda_get_connections(codec, nid, conn_list,
+ ARRAY_SIZE(conn_list));
+ if (conns < 0)
+ continue;
+ mute = HDA_AMP_MUTE;
+ for (idx = 0; idx < conns; idx++) {
+ /* if the current connection is the selected one,
+ * unmute it as default - otherwise mute it
+ */
+ for (item = 0; item < imux->num_items; item++) {
+ if (imux->items[item].index == idx) {
+ if (spec->cur_mux[c] == item)
+ mute = 0;
+ break;
+ }
+ }
+ snd_hda_codec_amp_stereo(codec, nid, HDA_INPUT,
+ idx, HDA_AMP_MUTE, mute);
+ }
+
+ }
+}
+
/* add mic boosts if needed */
static int alc_auto_add_mic_boost(struct hda_codec *codec)
{
@@ -6491,6 +6525,7 @@ static void alc882_auto_init(struct hda_codec *codec)
alc882_auto_init_multi_out(codec);
alc882_auto_init_hp_out(codec);
alc882_auto_init_analog_input(codec);
+ alc882_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -8285,6 +8320,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc883_auto_init_input_src alc882_auto_init_input_src
+
/* almost identical with ALC880 parser... */
static int alc883_parse_auto_config(struct hda_codec *codec)
{
@@ -8315,6 +8352,7 @@ static void alc883_auto_init(struct hda_codec *codec)
alc883_auto_init_multi_out(codec);
alc883_auto_init_hp_out(codec);
alc883_auto_init_analog_input(codec);
+ alc883_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -9663,6 +9701,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
#define alc262_auto_init_multi_out alc882_auto_init_multi_out
#define alc262_auto_init_hp_out alc882_auto_init_hp_out
#define alc262_auto_init_analog_input alc882_auto_init_analog_input
+#define alc262_auto_init_input_src alc882_auto_init_input_src


/* init callback for auto-configuration model -- overriding the default init */
@@ -9672,6 +9711,7 @@ static void alc262_auto_init(struct hda_codec *codec)
alc262_auto_init_multi_out(codec);
alc262_auto_init_hp_out(codec);
alc262_auto_init_analog_input(codec);
+ alc262_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -13330,6 +13370,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc861vd_auto_init_input_src alc882_auto_init_input_src
+
#define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)

@@ -13512,6 +13554,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
alc861vd_auto_init_multi_out(codec);
alc861vd_auto_init_hp_out(codec);
alc861vd_auto_init_analog_input(codec);
+ alc861vd_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -14677,6 +14720,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc662_auto_init_input_src alc882_auto_init_input_src
+
static int alc662_parse_auto_config(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
@@ -14733,6 +14778,7 @@ static void alc662_auto_init(struct hda_codec *codec)
alc662_auto_init_multi_out(codec);
alc662_auto_init_hp_out(codec);
alc662_auto_init_analog_input(codec);
+ alc662_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}

2008-08-16 13:37:51

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

Hi Takashi and thanks,

On Sat, Aug 16, 2008 at 9:38 AM, Takashi Iwai <[email protected]> wrote:
> At Fri, 15 Aug 2008 23:01:42 +0100,
> Daniel J Blueman wrote:
>>
>> Hi Takashi,
>>
>> On Fri, Aug 15, 2008 at 3:42 PM, Takashi Iwai <[email protected]> wrote:
>> > At Thu, 14 Aug 2008 20:10:03 +0100,
>> > Daniel J Blueman wrote:
>> >>
>> >> Hi Takashi,
>> >>
>> >> I am still finding this recording +ve saturation on my ALC883 Intel
>> >> HDA sound device with 2.6.27-rc3 (ie ALSA 1.0.17 drivers) and ALSA
>> >> 1.0.16-1 libraries on Ubuntu Intrepid.
>> >>
>> >> The previous workaround still 'gets us out of jail':
>> >>
>> >> # ./hda-verb /dev/snd/hwC0D0 0x23 SET_AMP_GAIN_MUTE 0x7180
>> >> nid = 0x23, verb = 0x300, param = 0x7180
>> >> value = 0x0
>> >
>> > Could you try the patch below? With this patch, unused connections
>> > will be disabled. Let me know if it really works so that I can merge
>> > it to git tree.
>> >
>> > Takashi
>> >
>> > ---
>> > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
>> > index 9473abb..6f0485a 100644
>> > --- a/sound/pci/hda/patch_realtek.c
>> > +++ b/sound/pci/hda/patch_realtek.c
>> > @@ -6442,6 +6442,40 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
>> > }
>> > }
>> >
>> > +static void alc882_auto_init_input_src(struct hda_codec *codec)
>> > +{
>> > + struct alc_spec *spec = codec->spec;
>> > + const struct hda_input_mux *imux = spec->input_mux;
>> > + int c;
>> > +
>> > + for (c = 0; c < spec->num_adc_nids; c++) {
>> > + hda_nid_t conn_list[10];
>> > + hda_nid_t nid = spec->capsrc_nids[c];
>> > + int conns, mute, idx, item;
>> > +
>> > + conns = snd_hda_get_connections(codec, nid, conn_list,
>> > + ARRAY_SIZE(conn_list));
>> > + if (conns < 0)
>> > + continue;
>> > + mute = HDA_AMP_MUTE;
>> > + for (idx = 0; idx < conns; idx++) {
>> > + /* if the current connection is the selected one,
>> > + * unmute it as default - otherwise mute it
>> > + */
>> > + for (item = 0; item < imux->num_items; item++) {
>> > + if (imux->items[item].index == idx) {
>> > + if (spec->cur_mux[c] == item)
>> > + mute = 0;
>> > + break;
>> > + }
>> > + }
>> > + snd_hda_codec_amp_stereo(codec, nid, HDA_INPUT,
>> > + idx, HDA_AMP_MUTE, mute);
>> > + }
>> > +
>> > + }
>> > +}
>> > +
>> > /* add mic boosts if needed */
>> > static int alc_auto_add_mic_boost(struct hda_codec *codec)
>> > {
>> > @@ -6496,6 +6530,7 @@ static void alc882_auto_init(struct hda_codec *codec)
>> > alc882_auto_init_multi_out(codec);
>> > alc882_auto_init_hp_out(codec);
>> > alc882_auto_init_analog_input(codec);
>> > + alc882_auto_init_input_src(codec);
>> > if (spec->unsol_event)
>> > alc_sku_automute(codec);
>> > }
>> > @@ -8290,6 +8325,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
>> > }
>> > }
>> >
>> > +#define alc883_auto_init_input_src alc882_auto_init_input_src
>> > +
>> > /* almost identical with ALC880 parser... */
>> > static int alc883_parse_auto_config(struct hda_codec *codec)
>> > {
>> > @@ -8320,6 +8357,7 @@ static void alc883_auto_init(struct hda_codec *codec)
>> > alc883_auto_init_multi_out(codec);
>> > alc883_auto_init_hp_out(codec);
>> > alc883_auto_init_analog_input(codec);
>> > + alc883_auto_init_input_src(codec);
>> > if (spec->unsol_event)
>> > alc_sku_automute(codec);
>> > }
>> > @@ -9703,6 +9741,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
>> > #define alc262_auto_init_multi_out alc882_auto_init_multi_out
>> > #define alc262_auto_init_hp_out alc882_auto_init_hp_out
>> > #define alc262_auto_init_analog_input alc882_auto_init_analog_input
>> > +#define alc262_auto_init_input_src alc882_auto_init_input_src
>> >
>> >
>> > /* init callback for auto-configuration model -- overriding the default init */
>> > @@ -9712,6 +9751,7 @@ static void alc262_auto_init(struct hda_codec *codec)
>> > alc262_auto_init_multi_out(codec);
>> > alc262_auto_init_hp_out(codec);
>> > alc262_auto_init_analog_input(codec);
>> > + alc262_auto_init_input_src(codec);
>> > if (spec->unsol_event)
>> > alc_sku_automute(codec);
>> > }
>> > @@ -13382,6 +13422,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
>> > }
>> > }
>> >
>> > +#define alc861vd_auto_init_input_src alc882_auto_init_input_src
>> > +
>> > #define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
>> > #define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
>> >
>> > @@ -13564,6 +13606,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
>> > alc861vd_auto_init_multi_out(codec);
>> > alc861vd_auto_init_hp_out(codec);
>> > alc861vd_auto_init_analog_input(codec);
>> > + alc861vd_auto_init_input_src(codec);
>> > if (spec->unsol_event)
>> > alc_sku_automute(codec);
>> > }
>> > @@ -14729,6 +14772,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
>> > }
>> > }
>> >
>> > +#define alc662_auto_init_input_src alc882_auto_init_input_src
>> > +
>> > static int alc662_parse_auto_config(struct hda_codec *codec)
>> > {
>> > struct alc_spec *spec = codec->spec;
>> > @@ -14785,6 +14830,7 @@ static void alc662_auto_init(struct hda_codec *codec)
>> > alc662_auto_init_multi_out(codec);
>> > alc662_auto_init_hp_out(codec);
>> > alc662_auto_init_analog_input(codec);
>> > + alc662_auto_init_input_src(codec);
>> > if (spec->unsol_event)
>> > alc_sku_automute(codec);
>> > }
>>
>> There were a couple of issues: getting the mute logic right from
>> moving the assignment and increasing the number of inputs beyond the
>> 11 required here to avoid the 'Too many connections' message and
>> fixing the last input being skipped.
>
> Oh I should have more carefully checked.
>
>> With the updated patch, the problem is fully addressed; no resulting
>> DC offset, so recording quality is great. This seems logically safe
>> and a hopeful for 2.6.27-rc4...
>>
>> The updated patch is against 2.6.27-rc3.
>
> Thanks. There is another problem in the current patch.
> It should use snd_hda_codec_write() without caching. Otherwise
> it breaks the suspend/resume.
>
> The revised patch is below. Please test and report back if it works
> so that I can push it to the upstream.
>
>
> thanks,
>
> Takashi
>
> ===
> commit 340c6e7d8bc26354313fe8bacc636ca18f71995e
> Author: Takashi Iwai <[email protected]>
> Date: Fri Aug 15 16:46:42 2008 +0200
>
> ALSA: hda - Fix capture source widgets on ALC codecs
>
> On some Realtek codecs like ALC882 or ALC883, the capture source is
> no mux but sum widget. We have to initialize all channels properly
> for this type, otherwise noises may come in from the unused route.
>
> The patch assures to mute unused routes, and unmute the currently
> selected route.
>
> Signed-off-by: Takashi Iwai <[email protected]>
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index add4e87..56d899f 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -6437,6 +6437,40 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +static void alc882_auto_init_input_src(struct hda_codec *codec)
> +{
> + struct alc_spec *spec = codec->spec;
> + const struct hda_input_mux *imux = spec->input_mux;
> + int c;
> +
> + for (c = 0; c < spec->num_adc_nids; c++) {
> + hda_nid_t conn_list[10];
> + hda_nid_t nid = spec->capsrc_nids[c];
> + int conns, mute, idx, item;
> +
> + conns = snd_hda_get_connections(codec, nid, conn_list,
> + ARRAY_SIZE(conn_list));
> + if (conns < 0)
> + continue;
> + mute = HDA_AMP_MUTE;
> + for (idx = 0; idx < conns; idx++) {
> + /* if the current connection is the selected one,
> + * unmute it as default - otherwise mute it
> + */
> + for (item = 0; item < imux->num_items; item++) {
> + if (imux->items[item].index == idx) {
> + if (spec->cur_mux[c] == item)
> + mute = 0;
> + break;
> + }
> + }
> + snd_hda_codec_amp_stereo(codec, nid, HDA_INPUT,
> + idx, HDA_AMP_MUTE, mute);
> + }
> +
> + }
> +}
> +
> /* add mic boosts if needed */
> static int alc_auto_add_mic_boost(struct hda_codec *codec)
> {
> @@ -6491,6 +6525,7 @@ static void alc882_auto_init(struct hda_codec *codec)
> alc882_auto_init_multi_out(codec);
> alc882_auto_init_hp_out(codec);
> alc882_auto_init_analog_input(codec);
> + alc882_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -8285,6 +8320,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc883_auto_init_input_src alc882_auto_init_input_src
> +
> /* almost identical with ALC880 parser... */
> static int alc883_parse_auto_config(struct hda_codec *codec)
> {
> @@ -8315,6 +8352,7 @@ static void alc883_auto_init(struct hda_codec *codec)
> alc883_auto_init_multi_out(codec);
> alc883_auto_init_hp_out(codec);
> alc883_auto_init_analog_input(codec);
> + alc883_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -9663,6 +9701,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
> #define alc262_auto_init_multi_out alc882_auto_init_multi_out
> #define alc262_auto_init_hp_out alc882_auto_init_hp_out
> #define alc262_auto_init_analog_input alc882_auto_init_analog_input
> +#define alc262_auto_init_input_src alc882_auto_init_input_src
>
>
> /* init callback for auto-configuration model -- overriding the default init */
> @@ -9672,6 +9711,7 @@ static void alc262_auto_init(struct hda_codec *codec)
> alc262_auto_init_multi_out(codec);
> alc262_auto_init_hp_out(codec);
> alc262_auto_init_analog_input(codec);
> + alc262_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -13330,6 +13370,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc861vd_auto_init_input_src alc882_auto_init_input_src
> +
> #define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
> #define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
>
> @@ -13512,6 +13554,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
> alc861vd_auto_init_multi_out(codec);
> alc861vd_auto_init_hp_out(codec);
> alc861vd_auto_init_analog_input(codec);
> + alc861vd_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -14677,6 +14720,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc662_auto_init_input_src alc882_auto_init_input_src
> +
> static int alc662_parse_auto_config(struct hda_codec *codec)
> {
> struct alc_spec *spec = codec->spec;
> @@ -14733,6 +14778,7 @@ static void alc662_auto_init(struct hda_codec *codec)
> alc662_auto_init_multi_out(codec);
> alc662_auto_init_hp_out(codec);
> alc662_auto_init_analog_input(codec);
> + alc662_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }

This patch is first one you sent, except differing line numbers
(rediffed against 2.6.27-rc3?).

You could try attaching the patch to the mail too, to avoid the line
wrapping, silent whitespace conversion and any gmail/mailer 'hide
quoted text' mangling...

Thanks,
Daniel
--
Daniel J Blueman

2008-08-16 17:00:58

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Sat, 16 Aug 2008 14:37:37 +0100,
Daniel J Blueman wrote:
>
> This patch is first one you sent, except differing line numbers
> (rediffed against 2.6.27-rc3?).

Oops, I forgot to refresh it. Below is the right one.

> You could try attaching the patch to the mail too, to avoid the line
> wrapping, silent whitespace conversion and any gmail/mailer 'hide
> quoted text' mangling...

On LKML, the patches should be inlined.
And, you can save a raw file even via gmail, too...


Takashi


[PATCH] ALSA: hda - Fix capture source widgets on ALC codecs

On some Realtek codecs like ALC882 or ALC883, the capture source is
no mux but sum widget. We have to initialize all channels properly
for this type, otherwise noises may come in from the unused route.

The patch assures to mute unused routes, and unmute the currently
selected route.

Signed-off-by: Takashi Iwai <[email protected]>

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index add4e87..b80e725 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6437,6 +6437,39 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
}
}

+static void alc882_auto_init_input_src(struct hda_codec *codec)
+{
+ struct alc_spec *spec = codec->spec;
+ const struct hda_input_mux *imux = spec->input_mux;
+ int c;
+
+ for (c = 0; c < spec->num_adc_nids; c++) {
+ hda_nid_t conn_list[HDA_MAX_NUM_INPUTS];
+ hda_nid_t nid = spec->capsrc_nids[c];
+ int conns, mute, idx, item;
+
+ conns = snd_hda_get_connections(codec, nid, conn_list,
+ ARRAY_SIZE(conn_list));
+ if (conns < 0)
+ continue;
+ for (idx = 0; idx < conns; idx++) {
+ /* if the current connection is the selected one,
+ * unmute it as default - otherwise mute it
+ */
+ mute = AMP_IN_MUTE(idx);
+ for (item = 0; item < imux->num_items; item++) {
+ if (imux->items[item].index == idx) {
+ if (spec->cur_mux[c] == item)
+ mute = AMP_IN_UNMUTE(idx);
+ break;
+ }
+ }
+ snd_hda_codec_write(codec, nid, 0,
+ AC_VERB_SET_AMP_GAIN_MUTE, mute);
+ }
+ }
+}
+
/* add mic boosts if needed */
static int alc_auto_add_mic_boost(struct hda_codec *codec)
{
@@ -6491,6 +6524,7 @@ static void alc882_auto_init(struct hda_codec *codec)
alc882_auto_init_multi_out(codec);
alc882_auto_init_hp_out(codec);
alc882_auto_init_analog_input(codec);
+ alc882_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -8285,6 +8319,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc883_auto_init_input_src alc882_auto_init_input_src
+
/* almost identical with ALC880 parser... */
static int alc883_parse_auto_config(struct hda_codec *codec)
{
@@ -8315,6 +8351,7 @@ static void alc883_auto_init(struct hda_codec *codec)
alc883_auto_init_multi_out(codec);
alc883_auto_init_hp_out(codec);
alc883_auto_init_analog_input(codec);
+ alc883_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -9663,6 +9700,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
#define alc262_auto_init_multi_out alc882_auto_init_multi_out
#define alc262_auto_init_hp_out alc882_auto_init_hp_out
#define alc262_auto_init_analog_input alc882_auto_init_analog_input
+#define alc262_auto_init_input_src alc882_auto_init_input_src


/* init callback for auto-configuration model -- overriding the default init */
@@ -9672,6 +9710,7 @@ static void alc262_auto_init(struct hda_codec *codec)
alc262_auto_init_multi_out(codec);
alc262_auto_init_hp_out(codec);
alc262_auto_init_analog_input(codec);
+ alc262_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -13330,6 +13369,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc861vd_auto_init_input_src alc882_auto_init_input_src
+
#define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)

@@ -13512,6 +13553,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
alc861vd_auto_init_multi_out(codec);
alc861vd_auto_init_hp_out(codec);
alc861vd_auto_init_analog_input(codec);
+ alc861vd_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}
@@ -14677,6 +14719,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
}
}

+#define alc662_auto_init_input_src alc882_auto_init_input_src
+
static int alc662_parse_auto_config(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
@@ -14733,6 +14777,7 @@ static void alc662_auto_init(struct hda_codec *codec)
alc662_auto_init_multi_out(codec);
alc662_auto_init_hp_out(codec);
alc662_auto_init_analog_input(codec);
+ alc662_auto_init_input_src(codec);
if (spec->unsol_event)
alc_sku_automute(codec);
}

2008-08-16 17:33:43

by Daniel J Blueman

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

Hi Takashi,

On Sat, Aug 16, 2008 at 6:00 PM, Takashi Iwai <[email protected]> wrote:
> At Sat, 16 Aug 2008 14:37:37 +0100,
> Daniel J Blueman wrote:
>>
>> This patch is first one you sent, except differing line numbers
>> (rediffed against 2.6.27-rc3?).
>
> Oops, I forgot to refresh it. Below is the right one.
>
>> You could try attaching the patch to the mail too, to avoid the line
>> wrapping, silent whitespace conversion and any gmail/mailer 'hide
>> quoted text' mangling...
>
> On LKML, the patches should be inlined.
> And, you can save a raw file even via gmail, too...
>
> Takashi
>
>
> [PATCH] ALSA: hda - Fix capture source widgets on ALC codecs
>
> On some Realtek codecs like ALC882 or ALC883, the capture source is
> no mux but sum widget. We have to initialize all channels properly
> for this type, otherwise noises may come in from the unused route.
>
> The patch assures to mute unused routes, and unmute the currently
> selected route.
>
> Signed-off-by: Takashi Iwai <[email protected]>
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index add4e87..b80e725 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -6437,6 +6437,39 @@ static void alc882_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +static void alc882_auto_init_input_src(struct hda_codec *codec)
> +{
> + struct alc_spec *spec = codec->spec;
> + const struct hda_input_mux *imux = spec->input_mux;
> + int c;
> +
> + for (c = 0; c < spec->num_adc_nids; c++) {
> + hda_nid_t conn_list[HDA_MAX_NUM_INPUTS];
> + hda_nid_t nid = spec->capsrc_nids[c];
> + int conns, mute, idx, item;
> +
> + conns = snd_hda_get_connections(codec, nid, conn_list,
> + ARRAY_SIZE(conn_list));
> + if (conns < 0)
> + continue;
> + for (idx = 0; idx < conns; idx++) {
> + /* if the current connection is the selected one,
> + * unmute it as default - otherwise mute it
> + */
> + mute = AMP_IN_MUTE(idx);
> + for (item = 0; item < imux->num_items; item++) {
> + if (imux->items[item].index == idx) {
> + if (spec->cur_mux[c] == item)
> + mute = AMP_IN_UNMUTE(idx);
> + break;
> + }
> + }
> + snd_hda_codec_write(codec, nid, 0,
> + AC_VERB_SET_AMP_GAIN_MUTE, mute);
> + }
> + }
> +}
> +
> /* add mic boosts if needed */
> static int alc_auto_add_mic_boost(struct hda_codec *codec)
> {
> @@ -6491,6 +6524,7 @@ static void alc882_auto_init(struct hda_codec *codec)
> alc882_auto_init_multi_out(codec);
> alc882_auto_init_hp_out(codec);
> alc882_auto_init_analog_input(codec);
> + alc882_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -8285,6 +8319,8 @@ static void alc883_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc883_auto_init_input_src alc882_auto_init_input_src
> +
> /* almost identical with ALC880 parser... */
> static int alc883_parse_auto_config(struct hda_codec *codec)
> {
> @@ -8315,6 +8351,7 @@ static void alc883_auto_init(struct hda_codec *codec)
> alc883_auto_init_multi_out(codec);
> alc883_auto_init_hp_out(codec);
> alc883_auto_init_analog_input(codec);
> + alc883_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -9663,6 +9700,7 @@ static int alc262_parse_auto_config(struct hda_codec *codec)
> #define alc262_auto_init_multi_out alc882_auto_init_multi_out
> #define alc262_auto_init_hp_out alc882_auto_init_hp_out
> #define alc262_auto_init_analog_input alc882_auto_init_analog_input
> +#define alc262_auto_init_input_src alc882_auto_init_input_src
>
>
> /* init callback for auto-configuration model -- overriding the default init */
> @@ -9672,6 +9710,7 @@ static void alc262_auto_init(struct hda_codec *codec)
> alc262_auto_init_multi_out(codec);
> alc262_auto_init_hp_out(codec);
> alc262_auto_init_analog_input(codec);
> + alc262_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -13330,6 +13369,8 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc861vd_auto_init_input_src alc882_auto_init_input_src
> +
> #define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
> #define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
>
> @@ -13512,6 +13553,7 @@ static void alc861vd_auto_init(struct hda_codec *codec)
> alc861vd_auto_init_multi_out(codec);
> alc861vd_auto_init_hp_out(codec);
> alc861vd_auto_init_analog_input(codec);
> + alc861vd_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }
> @@ -14677,6 +14719,8 @@ static void alc662_auto_init_analog_input(struct hda_codec *codec)
> }
> }
>
> +#define alc662_auto_init_input_src alc882_auto_init_input_src
> +
> static int alc662_parse_auto_config(struct hda_codec *codec)
> {
> struct alc_spec *spec = codec->spec;
> @@ -14733,6 +14777,7 @@ static void alc662_auto_init(struct hda_codec *codec)
> alc662_auto_init_multi_out(codec);
> alc662_auto_init_hp_out(codec);
> alc662_auto_init_analog_input(codec);
> + alc662_auto_init_input_src(codec);
> if (spec->unsol_event)
> alc_sku_automute(codec);
> }

The updated patch validates fully also. Checking everything with
codecgraph and varying both capture inputs looks as expected, so
thanks again!

Tested-by: Daniel J Blueman <[email protected]>

Daniel
--
Daniel J Blueman

2008-08-17 08:04:30

by Takashi Iwai

[permalink] [raw]
Subject: Re: ALC883 recording troubles...

At Sat, 16 Aug 2008 18:33:33 +0100,
Daniel J Blueman wrote:
>
> The updated patch validates fully also. Checking everything with
> codecgraph and varying both capture inputs looks as expected, so
> thanks again!
>
> Tested-by: Daniel J Blueman <[email protected]>

Great, thanks for your quick tests!
I merged it to my tree and will send a pull request.


Takashi