2007-11-16 22:08:46

by Jim Faulkner

[permalink] [raw]
Subject: sb live (emu10k1) stops working between 2.6.23.1 and 2.6.23.7


Hello,

I have an SB Live Value card which uses the emu10k1 driver. I use digital
output to an external amplifier. This has worked fine for many years, up
to and including kernel 2.6.23.1. Under 2.6.23.7, I have been unable
to get any audio output. I get the following errors when loading my
asound.state under 2.6.23.7 using `alsactl restore`:
alsactl: set_control:991: warning: name mismatch (IEC958 Playback
Mask/IEC958 Playback Default) for control #222
alsactl: set_control:993: warning: index mismatch (3/0) for control #222
alsactl: set_control:993: warning: index mismatch (0/1) for control #223
alsactl: set_control:993: warning: index mismatch (1/2) for control #224
alsactl: set_control:985: warning: iface mismatch (3/2) for control #225
alsactl: set_control:987: warning: device mismatch (2/0) for control #225
alsactl: set_control:989: warning: subdevice mismatch (0/0) for control
#225
alsactl: set_control:991: warning: name mismatch (IEC958 Playback
Default/SB Live Analog/Digital Output Jack) for control #225
alsactl: set_control:993: warning: index mismatch (2/0) for control #225
alsactl: set_control:995: failed to obtain info for control #225
(Operation not permitted)

I receive no errors when I load my asound.state under 2.6.23.1.

Under 2.6.23.7, I get the message "No digital data" on my external
amplifier, which normally I only see when the computer is powered down or
rebooting. I do not get that message under 2.6.23.1, even when no audio
is being played.

I've tried copying down my alsamixer settings under 2.6.23.1, and
re-entering them under 2.6.23.7, however I have still been unable to get
any audio output.

Here is the relevant part of my `lspci -v`:
05:0d.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev
08)
Subsystem: Creative Labs CT4780 SBLive! Value
Flags: bus master, medium devsel, latency 64, IRQ 23
I/O ports at dce0 [size=32]
Capabilities: [dc] Power Management version 2

Please let me know if you need any more information, and please CC my
e-mail address on any correspondence, since I am not subscribed to this
list.

thanks,
Jim Faulkner


2007-11-17 17:18:47

by Jim Faulkner

[permalink] [raw]
Subject: Re: sb live (emu10k1) stops working between 2.6.23.1 and 2.6.23.7


I've done some more testing this morning, and it appears that the "ALSA:
emu10k1 - Fix memory corruption" patch from 2.6.23.6 has broken digital
output on my SB Live Value card. Simply replacing the 2.6.23.7 emumixer.c
with the version included in 2.6.23.1 I was able to get digital output
working again under 2.6.23.7.

This does not appear to be a simple matter of adjusting the alsa mixer to
compsensate for how the mixer controls are exposed to userspace. I have
duplicated all alsamixer settings between 2.6.23.1 and stock 2.6.23.7 in
the "F5" view all controls mode, but still received no audio output. I
also tried adjusting other volume controls which normally do not need
adjusting, but got nowhere. It appears that the 2.6.23.6 emu10k1 patch
broke digital output entirely on this card.

Just to add to the information in my first message, the SB Live card is
connected from the yellow jack on the card to the "Digital Coax Input"
connector on my external amplifier.

thanks,
Jim Faulkner


On Fri, 16 Nov 2007, Jim Faulkner wrote:

>
> Hello,
>
> I have an SB Live Value card which uses the emu10k1 driver. I use digital
> output to an external amplifier. This has worked fine for many years, up
> to and including kernel 2.6.23.1. Under 2.6.23.7, I have been unable
> to get any audio output. I get the following errors when loading my
> asound.state under 2.6.23.7 using `alsactl restore`:
> alsactl: set_control:991: warning: name mismatch (IEC958 Playback
> Mask/IEC958 Playback Default) for control #222
> alsactl: set_control:993: warning: index mismatch (3/0) for control #222
> alsactl: set_control:993: warning: index mismatch (0/1) for control #223
> alsactl: set_control:993: warning: index mismatch (1/2) for control #224
> alsactl: set_control:985: warning: iface mismatch (3/2) for control #225
> alsactl: set_control:987: warning: device mismatch (2/0) for control #225
> alsactl: set_control:989: warning: subdevice mismatch (0/0) for control
> #225
> alsactl: set_control:991: warning: name mismatch (IEC958 Playback
> Default/SB Live Analog/Digital Output Jack) for control #225
> alsactl: set_control:993: warning: index mismatch (2/0) for control #225
> alsactl: set_control:995: failed to obtain info for control #225
> (Operation not permitted)
>
> I receive no errors when I load my asound.state under 2.6.23.1.
>
> Under 2.6.23.7, I get the message "No digital data" on my external
> amplifier, which normally I only see when the computer is powered down or
> rebooting. I do not get that message under 2.6.23.1, even when no audio
> is being played.
>
> I've tried copying down my alsamixer settings under 2.6.23.1, and
> re-entering them under 2.6.23.7, however I have still been unable to get
> any audio output.
>
> Here is the relevant part of my `lspci -v`:
> 05:0d.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev
> 08)
> Subsystem: Creative Labs CT4780 SBLive! Value
> Flags: bus master, medium devsel, latency 64, IRQ 23
> I/O ports at dce0 [size=32]
> Capabilities: [dc] Power Management version 2
>
> Please let me know if you need any more information, and please CC my
> e-mail address on any correspondence, since I am not subscribed to this
> list.
>
> thanks,
> Jim Faulkner
>
>

2007-11-18 09:41:54

by Nick Warne

[permalink] [raw]
Subject: Re: sb live (emu10k1) stops working between 2.6.23.1 and 2.6.23.7

> I've done some more testing this morning, and it appears that the "ALSA:
> emu10k1 - Fix memory corruption" patch from 2.6.23.6 has broken digital
> output on my SB Live Value card. Simply replacing the 2.6.23.7 emumixer.c
> with the version included in 2.6.23.1 I was able to get digital output
> working again under 2.6.23.7.

Hi Jim,

Just to prove you are not alone, I also get the exactly the same issue:

lspci:
00:0f.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 07)

log:

Advanced Linux Sound Architecture Driver Version 1.0.14 (Fri Jul 20 09:12:58
2007 UTC).
PCI: Found IRQ 5 for device 0000:00:0f.0
ALSA device list: #0: SBLive 5.1 [SB0060] (rev.7, serial:0x80611102) at
0xe000, irq 5

I use a restore file at boot, so run /sbin/alsactl restore

And updating this morning to 2.6.23.8 produces:

/usr/sbin/alsactl: set_control:991: warning: name mismatch (IEC958 Playback
Mask/IEC958 Playback Default) for control #228
/usr/sbin/alsactl: set_control:993: warning: index mismatch (3/0) for control
#228
/usr/sbin/alsactl: set_control:993: warning: index mismatch (0/1) for control
#229
/usr/sbin/alsactl: set_control:993: warning: index mismatch (1/2) for control
#230
/usr/sbin/alsactl: set_control:985: warning: iface mismatch (3/2) for control
#231
/usr/sbin/alsactl: set_control:987: warning: device mismatch (2/0) for control
#231
/usr/sbin/alsactl: set_control:989: warning: subdevice mismatch (0/0) for
control #231
/usr/sbin/alsactl: set_control:991: warning: name mismatch (IEC958 Playback
Default/SB Live Analog/Digital Output Jack) for control #231

Nick




> On Fri, 16 Nov 2007, Jim Faulkner wrote:

>
> Hello,
>
> I have an SB Live Value card which uses the emu10k1 driver. I use digital
> output to an external amplifier. This has worked fine for many years, up
> to and including kernel 2.6.23.1. Under 2.6.23.7, I have been unable
> to get any audio output. I get the following errors when loading my
> asound.state under 2.6.23.7 using `alsactl restore`:
> alsactl: set_control:991: warning: name mismatch (IEC958 Playback
> Mask/IEC958 Playback Default) for control #222
> alsactl: set_control:993: warning: index mismatch (3/0) for control #222
> alsactl: set_control:993: warning: index mismatch (0/1) for control #223
> alsactl: set_control:993: warning: index mismatch (1/2) for control #224
> alsactl: set_control:985: warning: iface mismatch (3/2) for control #225
> alsactl: set_control:987: warning: device mismatch (2/0) for control #225
> alsactl: set_control:989: warning: subdevice mismatch (0/0) for control
> #225
> alsactl: set_control:991: warning: name mismatch (IEC958 Playback
> Default/SB Live Analog/Digital Output Jack) for control #225
> alsactl: set_control:993: warning: index mismatch (2/0) for control #225
> alsactl: set_control:995: failed to obtain info for control #225
> (Operation not permitted)
>
> I receive no errors when I load my asound.state under 2.6.23.1.
--
Free Software Foundation Associate Member 5508

2007-11-19 06:54:31

by Takashi Iwai

[permalink] [raw]
Subject: Re: sb live (emu10k1) stops working between 2.6.23.1 and 2.6.23.7

At Sat, 17 Nov 2007 12:18:29 -0500 (EST),
Jim Faulkner wrote:
>
>
> I've done some more testing this morning, and it appears that the "ALSA:
> emu10k1 - Fix memory corruption" patch from 2.6.23.6 has broken digital
> output on my SB Live Value card. Simply replacing the 2.6.23.7 emumixer.c
> with the version included in 2.6.23.1 I was able to get digital output
> working again under 2.6.23.7.
>
> This does not appear to be a simple matter of adjusting the alsa mixer to
> compsensate for how the mixer controls are exposed to userspace. I have
> duplicated all alsamixer settings between 2.6.23.1 and stock 2.6.23.7 in
> the "F5" view all controls mode, but still received no audio output. I
> also tried adjusting other volume controls which normally do not need
> adjusting, but got nowhere. It appears that the 2.6.23.6 emu10k1 patch
> broke digital output entirely on this card.
>
> Just to add to the information in my first message, the SB Live card is
> connected from the yellow jack on the card to the "Digital Coax Input"
> connector on my external amplifier.

It's no regression of the driver. The problem is just a wrong use of
alsactl in your init script. It should use -F option to ignore
unmatching elements, which is caused when a mixer element is removed
or renamed.

This problem doesn't happen so often (as we try to keep the
compatibility as much as possible), so I didn't realize some distros
still doing wrong for years.

Anyway, this won't be a problem in future since I changed the default
behavior of alsactl to with -F.


Takashi

2007-11-20 00:13:01

by Jim Faulkner

[permalink] [raw]
Subject: Re: sb live (emu10k1) stops working between 2.6.23.1 and 2.6.23.7


On Mon, 19 Nov 2007, Nick Warne wrote:

> nick@linuxamd:nick$ sudo /usr/sbin/alsactl -F restore
> /usr/sbin/alsactl: set_control:970: failed to obtain info for control
> #228 (No such file or directory)
> /usr/sbin/alsactl: set_control:970: failed to obtain info for control
> #232 (No such file or directory)

Hi all,

I get a similar error message when I take Takashi's advice:
dampkring ~ # alsactl -F restore
alsactl: set_control:968: failed to obtain info for control #222 (No such
file or directory)
alsactl: set_control:968: failed to obtain info for control #226 (No such
file or directory)

However it did restore my digital audio output. Its strange that I was
unable to get it working myself using alsamixer, even when I took
screenshots of the settings under 2.6.23.1, and duplicated them under
2.6.23.7. Oh well, the SB Live has to have the most convoluted alsamixer
setup out of any sound card, so I suppose I might have missed something.
Thanks for your help in getting this working again!

Jim Faulkner

2007-12-21 14:44:25

by Jim Faulkner

[permalink] [raw]
Subject: Re: sb live (emu10k1) stops working between 2.6.23.1 and 2.6.23.7


Hi Brian,

The solution is here:
http://linux.derkeiler.com/Mailing-Lists/Kernel/2007-11/msg06482.html

You just need to run "alsactl -F restore" to force restoration of your
previous settings. This needs to be done while /etc/asound.state consists
of your settings that work correctly under your previous kernel.
Hopefully Fedora hasn't already overwritten /etc/asound.state, I actually
manually run alsactl from /etc/rc.local and disable the alsa service just
to prevent my settings from being overwritten.

If your settings have already been overwritten, you may need to boot into
the old kernel, get it working, save the alsamixer settings (alsactl
store), reboot to the new kernel, then run "alsactl -F restore". A
hassle, I know.

You might want to report this bug to the Fedora bug tracking system -- in
my opinion these kind of changes should not be made just for a minor
kernel update.

I also wonder if it is even possible to get digital output working under
newer kernels without an existing asound.state -- I tried in vain for
hours to get it working again by just using alsamixer, and I wasn't
getting anywhere. asound.state consists of 225 controls for my SB Live,
and only 40 or so are exposed in alsamixer. I wonder if alsamixer isn't
exposing the necessary control to enable digital output under newer
kernels.

Jim


On Thu, 20 Dec 2007, Brian wrote:

> Hi Jim,
>
> I've come across the exact same issue with my Creative Audigy ZS 2 and
> its digital output... the sound no longer works after I upgraded my
> kernel to 2.6.23.8-34.fc7 (I'm running Fedora 7). Same error message
> when using alsactl, etc. I'm trying to fix this, and I'm not quite
> sure exactly what you mean by "Simply replacing the 2.6.23.7
> emumixer.c with the version included in 2.6.23.1 I was able to get
> digital output working again under 2.6.23.7". Could you explain in
> further detail how I would go about doing this to fix this problem?
> Would this require the kernel to be recompiled with the different
> emumixer.c file?
>
> I'm starting to wonder if I should just wait it out for another kernel
> update that will hopefully have this issue fixed rather than spending
> so much time on it trying to fix it now.
>
> Any help you can provide is very much appreciated.
>
> Thanks in advance.
>
> Brian
>

2007-12-21 15:11:46

by Takashi Iwai

[permalink] [raw]
Subject: Re: sb live (emu10k1) stops working between 2.6.23.1 and 2.6.23.7

At Fri, 21 Dec 2007 09:44:15 -0500 (EST),
Jim Faulkner wrote:
>
>
> Hi Brian,
>
> The solution is here:
> http://linux.derkeiler.com/Mailing-Lists/Kernel/2007-11/msg06482.html
>
> You just need to run "alsactl -F restore" to force restoration of your
> previous settings. This needs to be done while /etc/asound.state consists
> of your settings that work correctly under your previous kernel.
> Hopefully Fedora hasn't already overwritten /etc/asound.state, I actually
> manually run alsactl from /etc/rc.local and disable the alsa service just
> to prevent my settings from being overwritten.
>
> If your settings have already been overwritten, you may need to boot into
> the old kernel, get it working, save the alsamixer settings (alsactl
> store), reboot to the new kernel, then run "alsactl -F restore". A
> hassle, I know.

Rather remove once /etc/asound.state and reload the driver. Then
it'll be in a "clean" state. Now you just need to adjust a few
important controls, "Master" and "PCM" for analog playback, for
example.


Takashi