# SN25P digital out. Any clue how to get working? [SOLVED]

## roguetoad

After a quick googlewhack, it looks as though someone's figured out how to make basic sound for the SN25P work under alsa. Won't repeat details here, just follow the link if interested: http://www.nakack.net/2005/03/31/via-envy24ptht-sound-chip/

This gets basic sound up and running, but doesn't enable the digital out capabilities on the FN25 motherboard. Any  alsa/hardware gurus out there got a clue as to what extra info is needed to turn the digital out on? 

Any program I can run to poke at registers or whatnot to see if I can make them work? Tried filing a bug at bugtrack.alsa.org, but the website keeps dissing me, saying connection refused. So thought I'd give a wag here and see if anyone had any ideas.

Cheers, 

-A

[edit] have not tried the ac97/5.1 passthru yet.Last edited by roguetoad on Fri Oct 28, 2005 10:40 pm; edited 1 time in total

----------

## roguetoad

Got some quick feedback from Takashi Iwai, one of the lead ALSA developers. 

So I've gotten sound to come out from the COAX and optical out now. 

Having a problem with "stuttering" or beating when I try I play mp3's through Rhythmbox with a gstreamer backend. Will increasing the buffer size or period help out here? Time to break out the alsa docs I guess. 

Here's the quick hack:

From Takashi:

As an experiment, try to set 0x40 to k8x800_eeprom[3] in

vt1720_mobo.c (currently 0x00).

My tweak on his hack:

This didn't work for me, but looking at the vt1720 docs it needs the lsb enabled for spdif to work at all so I changed  k8x800_eeprom[3] to 0x41, and voila! I got sound from spdif. 

Hope someone else finds this useful.

----------

## roguetoad

BTW, 

you will have to recompile the kernel and do a make modules_install to get this fix working.

but on the plus side, no need to reboot. just /etc/init.d/alsasound restart

----------

## roguetoad

Seems the stuttering was not really a hardware problem. Downgrading the gst-plugin-alsa to version 0.8.8 fixed it. Listening to music through rhythmbox piped thru optical out right now.   :Very Happy: 

----------

## fangorn

Hey,

This is good news  :Cool: 

Just stumbled over your post.

Been waiting for this news since May and have already given up.

Have news from the Alsa guys?

Any chance this hack will be in alsa some time soon?

It's just annoying hacking the sources each time you try a new kernel version   :Twisted Evil: 

Thanks, Thanks and Thanks again

Will try this as soon as I get home. I'm sick of all the noise coming out of my amplifier (10 meters of basically unshielded audio cable  :Twisted Evil:  )

fangorn

----------

## fangorn

I just saw its already in alsa-1.0.10Last edited by fangorn on Thu Nov 24, 2005 12:55 pm; edited 1 time in total

----------

## fangorn

In the Changelog it says there is support for SPDIF on SN25P, but I installed alsa-driver-1.0.10 and there is no spdif device in alsamixer and no sound coming out of my receiver  :Crying or Very sad: 

Know a solution for this?

----------

## Cintra

in http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/Documentation/ALSA-Configuration.txt?rev=1.85  and here http://www.via.com.tw/en/products/audio/controllers/envy24pt/ it certainly looks as though its supported.. 

do you see the card OK in lspci?

and did you try the above hack?

mvh

Btw, how noisy is this box?

----------

## roguetoad

I haven't checked to see if the patch made into the next alsa rev. Takashi was committing it so if now this one then the next for sure

Here is the patch Takashi sent me

```

Index: alsa-kernel/pci/ice1712/vt1720_mobo.c

===================================================================

RCS file: /home/iwai/cvs/alsa/alsa-kernel/pci/ice1712/vt1720_mobo.c,v

retrieving revision 1.4

diff -u -r1.4 vt1720_mobo.c

--- alsa-kernel/pci/ice1712/vt1720_mobo.c   24 May 2005 12:15:59 -0000   1.4

+++ alsa-kernel/pci/ice1712/vt1720_mobo.c   31 Oct 2005 15:26:45 -0000

@@ -71,6 +71,22 @@

    0x00,   /* - */

 };

 

+static unsigned char sn25p_eeprom[] __devinitdata = {

+   0x01,   /* SYSCONF: clock 256, 1ADC, 2DACs */

+   0x02,   /* ACLINK: ACLINK, packed */

+   0x00,   /* I2S: - */

+   0x41,   /* SPDIF: - */

+   0xff,   /* GPIO_DIR */

+   0xff,   /* GPIO_DIR1 */

+   0x00,   /* - */

+   0xff,   /* GPIO_MASK */

+   0xff,   /* GPIO_MASK1 */

+   0x00,   /* - */

+   0x00,   /* GPIO_STATE */

+   0x00,   /* GPIO_STATE1 */

+   0x00,   /* - */

+};

+

 

 /* entry point */

 struct snd_ice1712_card_info snd_vt1720_mobo_cards[] __devinitdata = {

@@ -113,11 +129,11 @@

    {

       .subvendor = VT1720_SUBDEVICE_SN25P,

       .name = "Shuttle SN25P",

-      /* identical with k8x800 */

+      .model = "sn25p",

       .chip_init = k8x800_init,

       .build_controls = k8x800_add_controls,

       .eeprom_size = sizeof(k8x800_eeprom),

-      .eeprom_data = k8x800_eeprom,

+      .eeprom_data = sn25p_eeprom,

    },

    { } /* terminator */

 };

```

I also wanted to route sound to the headphones simultaneously. So he sent me this other patch as well, which I haven't tried yet. He said it could be flakey, so I've been holding off.

```

Index: alsa-kernel/pci/ice1712/ice1712.h

===================================================================

RCS file: /home/iwai/cvs/alsa/alsa-kernel/pci/ice1712/ice1712.h,v

retrieving revision 1.33

diff -u -r1.33 ice1712.h

--- alsa-kernel/pci/ice1712/ice1712.h   11 Apr 2005 13:07:45 -0000   1.33

+++ alsa-kernel/pci/ice1712/ice1712.h   18 Oct 2005 15:18:53 -0000

@@ -333,6 +333,8 @@

    unsigned int num_total_dacs;   /* total DACs */

    unsigned int num_total_adcs;   /* total ADCs */

    unsigned int cur_rate;      /* current rate */

+   unsigned char spdif_mirror_mode;

+   unsigned char spdif_slave;

 

    struct semaphore open_mutex;

    snd_pcm_substream_t *pcm_reserved[4];

Index: alsa-kernel/pci/ice1712/ice1724.c

===================================================================

RCS file: /home/iwai/cvs/alsa/alsa-kernel/pci/ice1712/ice1724.c,v

retrieving revision 1.68

diff -u -r1.68 ice1724.c

--- alsa-kernel/pci/ice1712/ice1724.c   12 Oct 2005 09:02:05 -0000   1.68

+++ alsa-kernel/pci/ice1712/ice1724.c   18 Oct 2005 15:18:53 -0000

@@ -97,6 +97,10 @@

 static int PRO_RATE_RESET = 1;

 static unsigned int PRO_RATE_DEFAULT = 44100;

 

+enum {

+   ICE_SPDIF_FREE, ICE_SPDIF_SLAVE, ICE_SPDIF_LOCKED

+};

+

 /*

  *  Basic I/O

  */

@@ -344,6 +348,9 @@

       what |= reg->start;

       snd_pcm_trigger_done(s, substream);

    }

+   if (ice->spdif_slave == ICE_SPDIF_SLAVE &&

+       (what & VT1724_PDMA0_START))

+      what |= VT1724_PDMA4_START;

 

    switch (cmd) {

    case SNDRV_PCM_TRIGGER_PAUSE_PUSH:

@@ -500,6 +507,12 @@

          if (ice->pcm_reserved[i] == substream)

             ice->pcm_reserved[i] = NULL;

       }

+      if (ice->spdif_slave != ICE_SPDIF_LOCKED) {

+         if (params_channels(hw_params) == 2 && ice->spdif_mirror_mode)

+            ice->spdif_slave = ICE_SPDIF_SLAVE;

+         else

+            ice->spdif_slave = ICE_SPDIF_FREE;

+      }

    } else {

       for (i = 0; i < 3; i++) {

          /* check individual playback stream */

@@ -532,12 +545,23 @@

    return snd_pcm_lib_free_pages(substream);

 }

 

+static void snd_vt1724_prepare_spdif_mirror(snd_pcm_substream_t *substream);

+

 static int snd_vt1724_playback_pro_prepare(snd_pcm_substream_t * substream)

 {

    ice1712_t *ice = snd_pcm_substream_chip(substream);

    unsigned char val;

    unsigned int size;

 

+   printk(KERN_DEBUG "XXX multi_prepare: channels = %d\n",

+          substream->runtime->channels);

+   printk(KERN_DEBUG "XXX multi_prepare: 0x%x\n",

+          (unsigned int)substream->runtime->dma_addr);

+   printk(KERN_DEBUG "XXX multi_prepare: 0x%x\n",

+          (unsigned int)(snd_pcm_lib_buffer_bytes(substream) >> 2) - 1);

+   printk(KERN_DEBUG "XXX multi_prepare: 0x%x\n",

+          (unsigned int)(snd_pcm_lib_period_bytes(substream) >> 2) - 1);

+

    spin_lock_irq(&ice->reg_lock);

    val = (8 - substream->runtime->channels) >> 1;

    outb(val, ICEMT1724(ice, BURST));

@@ -556,6 +580,10 @@

    spin_unlock_irq(&ice->reg_lock);

 

    // printk("pro prepare: ch = %d, addr = 0x%x, buffer = 0x%x, period = 0x%x\n", substream->runtime->channels, (unsigned int)substream->runtime->dma_addr, snd_pcm_lib_buffer_bytes(substream), snd_pcm_lib_period_bytes(substream));

+

+   if (ice->spdif_slave == ICE_SPDIF_SLAVE)

+      snd_vt1724_prepare_spdif_mirror(substream);

+

    return 0;

 }

 

@@ -594,16 +622,27 @@

    return ptr;

 }

 

-static int snd_vt1724_pcm_prepare(snd_pcm_substream_t *substream)

+static void snd_vt1724_setup_pcm_reg(snd_pcm_substream_t *substream,

+                 struct vt1724_pcm_reg *reg)

 {

    ice1712_t *ice = snd_pcm_substream_chip(substream);

-   struct vt1724_pcm_reg *reg = substream->runtime->private_data;

-

+   printk(KERN_DEBUG "XXX setup_pcm_reg: addr 0x%x, 0x%x\n",

+          reg->addr, (unsigned int)substream->runtime->dma_addr);

+   printk(KERN_DEBUG "XXX setup_pcm_reg: size 0x%x, 0x%x\n",

+          reg->size, (unsigned int)(snd_pcm_lib_buffer_bytes(substream) >> 2) - 1);

+   printk(KERN_DEBUG "XXX setup_pcm_reg: count 0x%x, 0x%x\n",

+          reg->count, (unsigned int)(snd_pcm_lib_period_bytes(substream) >> 2) - 1);

    spin_lock_irq(&ice->reg_lock);

    outl(substream->runtime->dma_addr, ice->profi_port + reg->addr);

    outw((snd_pcm_lib_buffer_bytes(substream) >> 2) - 1, ice->profi_port + reg->size);

    outw((snd_pcm_lib_period_bytes(substream) >> 2) - 1, ice->profi_port + reg->count);

    spin_unlock_irq(&ice->reg_lock);

+}

+

+static int snd_vt1724_pcm_prepare(snd_pcm_substream_t *substream)

+{

+   struct vt1724_pcm_reg *reg = substream->runtime->private_data;

+   snd_vt1724_setup_pcm_reg(substream, reg);

    return 0;

 }

 

@@ -759,15 +798,21 @@

    snd_pcm_hw_constraint_msbits(runtime, 0, 32, 24);

    set_rate_constraints(ice, substream);

    down(&ice->open_mutex);

-   /* calculate the currently available channels */

-   for (chs = 0; chs < 3; chs++) {

-      if (ice->pcm_reserved[chs])

-         break;

+   if (ice->spdif_mirror_mode) {

+      /* override */

+      printk(KERN_DEBUG "XXX open with mirror mode\n");

+      runtime->hw = snd_vt1724_spdif;

+   } else {

+      /* calculate the currently available channels */

+      for (chs = 0; chs < 3; chs++) {

+         if (ice->pcm_reserved[chs])

+            break;

+      }

+      chs = (chs + 1) * 2;

+      runtime->hw.channels_max = chs;

+      if (chs > 2) /* channels must be even */

+         snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, 2);

    }

-   chs = (chs + 1) * 2;

-   runtime->hw.channels_max = chs;

-   if (chs > 2) /* channels must be even */

-      snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, 2);

    up(&ice->open_mutex);

    snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES,

                VT1724_BUFFER_ALIGN);

@@ -800,6 +845,10 @@

 

    if (PRO_RATE_RESET)

       snd_vt1724_set_pro_rate(ice, PRO_RATE_DEFAULT, 0);

+   down(&ice->open_mutex);

+   if (ice->spdif_slave != ICE_SPDIF_LOCKED)

+      ice->spdif_slave = ICE_SPDIF_FREE;

+   up(&ice->open_mutex);

    ice->playback_pro_substream = NULL;

 

    return 0;

@@ -921,16 +970,33 @@

 static int snd_vt1724_playback_spdif_prepare(snd_pcm_substream_t * substream)

 {

    ice1712_t *ice = snd_pcm_substream_chip(substream);

+   printk(KERN_DEBUG "XXX prepare_spdif\n");

    if (! ice->force_pdma4)

       update_spdif_rate(ice, substream->runtime->rate);

    return snd_vt1724_pcm_prepare(substream);

 }

 

+static void snd_vt1724_prepare_spdif_mirror(snd_pcm_substream_t *substream)

+{

+   ice1712_t *ice = snd_pcm_substream_chip(substream);

+   printk(KERN_DEBUG "XXX prepare_spdif_mirror\n");

+   update_spdif_rate(ice, substream->runtime->rate);

+   snd_vt1724_setup_pcm_reg(substream, &vt1724_playback_spdif_reg);

+}

+

 static int snd_vt1724_playback_spdif_open(snd_pcm_substream_t *substream)

 {

    ice1712_t *ice = snd_pcm_substream_chip(substream);

    snd_pcm_runtime_t *runtime = substream->runtime;

 

+   down(&ice->open_mutex);

+   if (ice->spdif_slave == ICE_SPDIF_SLAVE) {

+      up(&ice->open_mutex);

+      return -EBUSY;

+   }

+   ice->spdif_slave = ICE_SPDIF_LOCKED;

+   up(&ice->open_mutex);

+

    runtime->private_data = &vt1724_playback_spdif_reg;

    ice->playback_con_substream = substream;

    if (ice->force_pdma4) {

@@ -954,6 +1020,7 @@

    if (PRO_RATE_RESET)

       snd_vt1724_set_pro_rate(ice, PRO_RATE_DEFAULT, 0);

    ice->playback_con_substream = NULL;

+   ice->spdif_slave = ICE_SPDIF_FREE;

 

    return 0;

 }

@@ -1483,6 +1550,34 @@

    .put =      snd_vt1724_spdif_sw_put

 };

 

+static int snd_vt1724_spdif_mirror_get(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)

+{

+   ice1712_t *ice = snd_kcontrol_chip(kcontrol);

+   ucontrol->value.integer.value[0] = ice->spdif_mirror_mode;

+   return 0;

+}

+

+static int snd_vt1724_spdif_mirror_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)

+{

+   ice1712_t *ice = snd_kcontrol_chip(kcontrol);

+   int change;

+

+   down(&ice->open_mutex);

+   change = ice->spdif_mirror_mode != (int)ucontrol->value.integer.value[0];

+   ice->spdif_mirror_mode = ucontrol->value.integer.value[0];

+   up(&ice->open_mutex);

+   return change;

+}

+

+static snd_kcontrol_new_t snd_vt1724_spdif_mirror __devinitdata =

+{

+   .iface =   SNDRV_CTL_ELEM_IFACE_MIXER,

+   .name =         "ICE958 Mirror Playback Switch",

+   .info =      snd_vt1724_spdif_sw_info, /* mono boolean */

+   .get =      snd_vt1724_spdif_mirror_get,

+   .put =      snd_vt1724_spdif_mirror_put

+};

+

 

 #if 0 /* NOT USED YET */

 /*

@@ -2058,6 +2153,10 @@

    kctl->id.device = ice->pcm->device;

    ice->spdif.stream_ctl = kctl;

 #endif

+   err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_vt1724_spdif_mirror, ice));

+   if (err < 0)

+      return err;

+

    return 0;

 }

 

```

Good luck hacking.

----------

## fangorn

Thanks, will hack my way ASAP  :Rolling Eyes: 

@Cintra

Have more silent boxes at work (even with dual core cpus), but it is not as loud as a cheap pentium 4 box  :Twisted Evil: 

But with 2 250 GB Maxtor HDDs and a passively cooled NVIDIA 6600 GT there is quite a little warmth to get out of the box.

And I would never take the boxes at work under one arm and the display under the other arm to go elsewhere   :Wink: 

----------

## dspgen

I changed to vt1720_mobo.c to

```
 0x41,   /* SPDIF: - */
```

recompiled & rebooted

the optical out still does not light up, and i didn't see any changes in alsamixer.

you said spdif is working - is that both the coax and optical?

----------

## dspgen

I also noticed that the inputs are not 'labeled' correctly:

'Sur' jack - the lower left of the 4 out on the back - is controlled by 'headphone'; 'master' as no effect on it.

'L/R' jack - upper right - is effected by master, nothing else.

the front headphone jack is effected by 'master', nothing else.

plugging headphones into the front turns off the 'L/R' jack.

Anyone else have this mixed-up mapping?

Anyone have optical-out working?

----------

## fangorn

I have alsa-driver-1.0.10 and spdif works smoothly. No hacking necessary any more!

You need to use an .asoundrc you can get at the alsa homepage in the commentaries for the ice1724 chipset driver to get spdif working. This one will route any sound through the spdif.

----------

## dspgen

I tried what I found at http://www.alsa-project.org/alsa-doc/doc-php/template.php?company=AudioTrak&card=Prodigy+7.1.&chip=Envy24HT&module=ice1724

optical out is still not light-up.

It lights-up pretty early in the WindowsXP boot.

If you have an ice1724 and working optical out, could you post the relevant configs you used?

I am using 

```
cat /proc/asound/version

Advanced Linux Sound Architecture Driver Version 1.0.10rc3.

Compiled on Jan  2 2006 for kernel 2.6.14-gentoo-r5.

```

```

cat /etc/modules.d/alsa

# ALSA portion

alias char-major-116 snd

alias snd-card-0 snd-ice1724

# module options should go here

# OSS/Free portion

alias char-major-14 soundcore

alias sound-slot-0 snd-card-0If you have an ice1724 and working optical out, could you post the relevant configs you used?

# card #1

alias sound-service-0-0 snd-mixer-oss

alias sound-service-0-1 snd-seq-oss

alias sound-service-0-3 snd-pcm-oss

alias sound-service-0-8 snd-seq-oss

alias sound-service-0-12 snd-pcm-oss

```

```

cat /etc/asound.conf

pcm.ice1724 {

    type hw

    card 0

}

ctl.ice1724 {

    type hw

    card 0

}

pcm.!default {

    type hw

    card 0

}

ctl.!default {

    type hw

    card 0

}

pcm.!default {

type plug

slave.pcm "dmixer"

}

pcm.dmixer  {

type dmix

ipc_key 1024

slave {

pcm "hw:0,1"

format S32_LE

period_time 0

period_size 1024

# increased buffer_size because in my system 1024 cause bad

# audio performance (for totem media player and mplayer)

buffer_size 8192

rate 44100

}

bindings {

0 0

1 1

}

}

ctl.dmixer {

type hw

card 0

device 1

}

```

~/.asoundrc is copy of /etc/asound.conf

----------

## fangorn

As I dont own a optical cable that I can plug into the connector (cable too good, thick metal housing) I never tried optical. converting signal from electrical plug to optical to bridge 10 m to the receiver.

----------

## dspgen

 *fangorn wrote:*   

> As I dont own a optical cable that I can plug into the connector (cable too good, thick metal housing) I never tried optical. converting signal from electrical plug to optical to bridge 10 m to the receiver.

 

When optical is on, it lights up the port (with no cable plugged in) enough to see that it is on.

Anyone else have working optical?

When I plug the coax digital into my amp, it says 'Din Unlock' - meaning its got no signal.

Your coax digital out works, right?  Did my config files look like yours?

----------

## dspgen

optical out is now working!

in alsamixer it is controlled by:

IEC958 [PCM Out]   (left channel?)

IEC958 Output  [Not Muted]

IEC958 1 [PCM Out] (right channel?)

I've done many things, so not sure which one fixed it - multiple reinstalls of different version of alsa-driver.

Problems now:

Nothing(!) controls the volume of digital out - the windows driver had a SPDIF volume control - by no mute for some reason.

No other output at all.

this page has useful info: http://alsa.opensrc.org/DigitalOut

----------

## roguetoad

Thought this was gone, but it seems that the alsa-1.0.11-rc3 and gstreamer-0.11 combo has once again brought my SN25P to audio hell. 

I get stuttering whenever I try to play anything through an alsa/gstreamer combo. gstreamer-properties, totem, rhythmbox, quodlibet. Stuttering all around. Funny thing is I can through bmpx just fine, although then software volume control does not work.

I have played with my .asoundrc for another hour or so to no avail. I don't even know where to begin to collect info for a bug report. 

Anywho, here is my .asoundrc.

```

   pcm.ice1724 {

           type hw

           card 0

      device 1

        }

   pcm.ossmix {

       type dmix

       ipc_key 1024          # must be unique!

       ipc_perm 0660         # sound for everybody (at least in your group)

       slave {

           #pcm "hw:0,1"      # you cannot use a "plug" device here, darn.

           pcm {

         type hw

         card 0

         device 2

      }

      period_time 0

           period_size 1024  # must be power of 2

           buffer_size 8192  # dito. It

           format "S32_LE"

           #periods 128      # dito.

           #rate 8000        # with rate 8000 you *will* hear, 

                               # if ossmix is used :)

       }

# bindings are cool. This says, that only the first

# two channels are to be used by dmix, which is enough for

# (most) oss apps and also lets multichannel chios work 

# much faster:

bindings {

        0 0   # from 0 => to 0

        1 1   # from 1 => to 1

}

}

pcm.ossin{

     type dsnoop

     ipc_key 5150

     slave.pcm "ice1724"

}

#pcm.dsp0 pcm.default 

pcm.dsp0 {

    type plug

    slave.pcm "ossmix"     # use our new PCM here

    #slave.pcm "output"

    #slave.pcm "hw:0,1"

}

pcm.ossduplex {

     type asym

     playback.pcm "ossmix"

     capture.pcm "ossin"

}

# mixer0 like above

ctl.mixer0 {

    type hw

    card 0

    #device 1

}

pcm.output {

    type dmix

    ipc_key 1234

    ipc_perm 0660

    slave {

        #pcm "ice1724"

   pcm {

      type hw

      card 0

      device 1

   }

        #period_time 0

        period_size 1024

        buffer_size 8192       # buffer size < 6653, but pow(x, 2)

        #period_size 2048

        #buffer_size 16384       # buffer size < 6653, but pow(x, 2)

       # rate 44100              # we want to play CDs only

       format S32_LE

    }

}

# Allow reading from the default device.

# Also known as record or capture.

pcm.input {

     type dsnoop

     ipc_key 2048

     slave.pcm "ice1724"

}

## Possible artsd full duplex fix:

#     slave {

#          period_time 0

#          period_size 1024

#          buffer_size 8192

#     }

# This is what we want as our default device

# a fully duplex (read/write) audio device.

pcm.duplex {

     type asym

     playback.pcm "output"

     capture.pcm "input"

}

pcm.!default {

   type plug

   #slave.pcm "spdif"

   #slave.pcm "output"

   slave.pcm "duplex"

   #slave.pcm "acopy"

}

pcm.doom3 {

   type plug

   slave.pcm "spdif"

   #slave.pcm "acopy"

}

#pcm.acopy {

#        type copy

#        slave

#   {pcm "hw0:0"

#    }

     

#}

        ctl.ice1724 {

           type hw

           card 0

        }

```

Crossing my fingers, a future update will finally put this to bed once and for all.

----------

## bergoo

I have got my SPDIF out working at last. But I cant get any 5.1 sounds working, only stereo. My VLC quits when trying to watch a ac3 coded movie. In xine, MPlayer I cant get any other sound but stereo.  in aplay it says that the SPDIF is already in use and I cant control the volume at all in the softwares. I use the .asoundrc file that I found in the comments for vt1724.

Anyone that got 5.1 from SPDIF working at all with this soundcard?

----------

