First, some basics: I am using Gentoo Linux with a 2.6.31 kernel and ALSA 1.0.20 (cat /proc/asound/version). After moving my AV-710 over to a newly built box, I discovered that the asound.state I had used on my previous box no longer worked. I would get the following error whenever alsactl attempted to restore the mixer settings from asound.state:
Unknown hardware: "ICE1724" "ICEnsemble VT1616i" "AC97a:49434552" "0x1412" "0x1724" Hardware is initialized using a guess method
state.AV710 {
control.1 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Front Playback Switch'
value false
}
control.2 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Front Playback Volume'
value.0 0
value.1 0
}
control.3 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Center Playback Switch'
value false
}
control.4 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'Center Playback Volume'
value 0
}
control.5 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'LFE Playback Switch'
value false
}
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 2
iface MIXER
name 'Surround Playback Switch'
value.0 false
value.1 false
}
control.8 {
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.9 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Headphone Playback Switch'
value false
}
control.10 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Headphone Playback Volume'
value.0 0
value.1 0
}
control.11 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Master Mono Playback Switch'
value false
}
control.12 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'Master Mono Playback Volume'
value 0
}
control.13 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'PC Speaker Playback Switch'
value false
}
control.14 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
iface MIXER
name 'PC Speaker Playback Volume'
value 0
}
control.15 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Phone Playback Switch'
value false
}
control.16 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'Phone Playback Volume'
value 0
}
control.17 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Mic Playback Switch'
value false
}
control.18 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'Mic Playback Volume'
value 0
}
control.19 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Mic Boost (+20dB)'
value false
}
control.20 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Line Playback Switch'
value false
}
control.21 {
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.22 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'CD Playback Switch'
value false
}
control.23 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'CD Playback Volume'
value.0 0
value.1 0
}
control.24 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Video Playback Switch'
value false
}
control.25 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Video Playback Volume'
value.0 0
value.1 0
}
control.26 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Aux Playback Switch'
value false
}
control.27 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'Aux Playback Volume'
value.0 0
value.1 0
}
control.28 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'PCM Playback Switch'
value true
}
control.29 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 31'
iface MIXER
name 'PCM Playback Volume'
value.0 15
value.1 15
}
control.30 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 2
comment.item.0 Mic
comment.item.1 CD
comment.item.2 Video
comment.item.3 Aux
comment.item.4 Line
comment.item.5 Mix
comment.item.6 'Mix Mono'
comment.item.7 Phone
iface MIXER
name 'Capture Source'
value.0 Mix
value.1 Mix
}
control.31 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Capture Switch'
value true
}
control.32 {
comment.access 'read write'
comment.type INTEGER
comment.count 2
comment.range '0 - 15'
iface MIXER
name 'Capture Volume'
value.0 0
value.1 0
}
control.33 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name '3D Control - Switch'
value false
}
control.34 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mix
comment.item.1 Mic
iface MIXER
name 'Mono Output Select'
value Mix
}
control.35 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 Mic1
comment.item.1 Mic2
iface MIXER
name 'Mic Select'
value Mic1
}
control.36 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
iface MIXER
name '3D Control - Center'
value 0
}
control.37 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 15'
iface MIXER
name '3D Control - Depth'
value 0
}
control.38 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Alternate Level to Surround Out'
value false
}
control.39 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Downmix LFE and Center to Front'
value false
}
control.40 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Downmix Surround to Front'
value false
}
control.41 {
comment.access 'read write'
comment.type INTEGER
comment.count 1
comment.range '0 - 31'
iface MIXER
name 'Master Playback Volume'
value 0
}
control.42 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Master Playback Switch'
value false
}
control.43 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'External Amplifier'
value false
}
control.44 {
comment.access read
comment.type BYTES
comment.count 52
iface CARD
name 'ICE1724 EEPROM'
value '172414121c01020210c1ff0000ff0000ff0000000101010001000000000000000000000000000000ff000000ff000000ff000000'
}
control.45 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 '8000'
comment.item.1 '9600'
comment.item.2 '11025'
comment.item.3 '12000'
comment.item.4 '16000'
comment.item.5 '22050'
comment.item.6 '24000'
comment.item.7 '32000'
comment.item.8 '44100'
comment.item.9 '48000'
comment.item.10 '64000'
comment.item.11 '88200'
comment.item.12 '96000'
comment.item.13 '176400'
comment.item.14 '192000'
comment.item.15 'IEC958 Input'
iface MIXER
name 'Multi Track Internal Clock'
value '48000'
}
control.46 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Multi Track Rate Locking'
value false
}
control.47 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'Multi Track Rate Reset'
value true
}
control.48 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 'PCM Out'
comment.item.1 'H/W In 0'
comment.item.2 'H/W In 1'
comment.item.3 'IEC958 In L'
comment.item.4 'IEC958 In R'
iface MIXER
name 'H/W Playback Route'
value 'PCM Out'
}
control.49 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 'PCM Out'
comment.item.1 'H/W In 0'
comment.item.2 'H/W In 1'
comment.item.3 'IEC958 In L'
comment.item.4 'IEC958 In R'
iface MIXER
name 'H/W Playback Route'
index 1
value 'PCM Out'
}
control.50 {
comment.access read
comment.type INTEGER
comment.count 22
comment.range '0 - 255'
iface MIXER
name 'Multi Track Peak'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
value.8 0
value.9 0
value.10 0
value.11 0
value.12 0
value.13 0
value.14 0
value.15 0
value.16 0
value.17 0
value.18 0
value.19 0
value.20 0
value.21 0
}
control.51 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 'PCM Out'
comment.item.1 'H/W In 0'
comment.item.2 'H/W In 1'
comment.item.3 'IEC958 In L'
comment.item.4 'IEC958 In R'
iface MIXER
name 'IEC958 Playback Route'
value 'H/W In 0'
}
control.52 {
comment.access 'read write'
comment.type ENUMERATED
comment.count 1
comment.item.0 'PCM Out'
comment.item.1 'H/W In 0'
comment.item.2 'H/W In 1'
comment.item.3 'IEC958 In L'
comment.item.4 'IEC958 In R'
iface MIXER
name 'IEC958 Playback Route'
index 1
value 'H/W In 1'
}
control.53 {
comment.access 'read write'
comment.type BOOLEAN
comment.count 1
iface MIXER
name 'IEC958 Output Switch'
value false
}
control.54 {
comment.access 'read write'
comment.type IEC958
comment.count 1
iface PCM
device 1
name 'IEC958 Playback Default'
value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.55 {
comment.access read
comment.type IEC958
comment.count 1
iface PCM
device 1
name 'IEC958 Playback Con Mask'
value '3fff000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
control.56 {
comment.access read
comment.type IEC958
comment.count 1
iface PCM
device 1
name 'IEC958 Playback Pro Mask'
value 'df00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
}
}
- Front
- Center
- LFE
- Surround
- Headphone
- PC Speaker
- Master Mono
- Phone
- Mic
- Line
- CD
- Video
- Aux
- Master
Also, Mic Boost and 3D Control are disabled, and 3D Control - Center and 3D Control - Depth have their volumes set to 0. I don't believe any of these channels/features have any impact on sound through the Wolfson DAC, so I disabled them to avoid confusion.
Capture Source must be set to Mix because it is the only source which includes the PCM channel. Capture Switch must also be true. Capture Volume can be 0 -- it still works. You will be using the PCM channel's volume control, and not this, but for an extra boost I suppose you could set this to its maximum value of 7, though I believe it was set to 0 in the bug report's asound.state because anything else might result in some sort of distortion (NOTE: I did not confirm this).
PCM must be true and it's volume must be >0. This is the volume control that you will be using.
I did not observe Mono Output Select to have any impact, but maybe it is important in some scenarios so I set it to Mix.
I don't believe Mic Select matters either -- I just left it at Mic1.
I did not observe Alternate Level to Surround Out, Downmix LFE and Center to Front, Downmix Surround to Front, or External Amplifier to have any impact, so I just set them all to false to avoid confusion.
Based on the bug report's asound.state, I added 64000, 88200, 96000, 176400, and 192000 to Multi Track Internal Clock in between 48000 and IEC958 Input. Despite this, I noticed that alsamixer still did not show these options, and that an 'alsactl -f /var/lib/alsa/asound.state store' would just remove them again. Maybe they are not needed and in fact do not work, or maybe they need to be set manually in order to work. I just left them. The option itself I set to 48000.
Multi Track Rate Locking is true in the bug report's asound.state, but I set it to false because I believe setting it to true will prevent an application from playing sound at a rate other than the internal clock setting. Multi Track Rate Reset is true in order to reset the rate back to the internal clock setting after the application closes the audio device.
H/W Playback Route and H/W Playback Route 1 must both be set to PCM Out, and IEC958 Playback Route and IEC958 Playback Route 1 must be set to H/W In 0 and H/W In 1 respectively, otherwise no Wolfson DAC! IEC958 Playback Switch appears to control the optical S/PDIF output. Plug a cable in there and observe the disconnected end -- with this set to true, the light will turn on. Since the configuration I've been describing won't work with this port anyway, might as well set this to false to save some power.
Apparently Multi Track Peak is a read-only option, which I take to mean that it isn't really an option and setting it to anything is meaningless. This may or may not be true. All I know is that I set all the values to 0 and didn't notice any change.
References:
[1] Original working asound.state: http://www.vandemar.org/asound.state
[2] ALSA bug report with an almost working asound.state attached (use Guest login link): 0002348: Chaintech AV-710 - High quality output doesn't work since alsa-driver 1.0.11
[3] Descriptions of some of the channels and options: Ice1724 - ALSA wiki which references Re: [Alsa-devel] ice1724 controls meaning






