Hello,

I successfully installed, configured und run the Soundcard

Vendor:         Trust (www.trust.com)
Product:        Sound Expert Digital Surround 5.1 (www.trust.com/12667)
Chipset:        CMI8738
Driver:         cmipci
Notes:          (see below)

so this device could be supplemented in the ALSA Soundcard Matrix.

This soundcard has digital I/O IEC958 RCA Input/Output and TOSLINK
Input/Output,
however, I did not manage to get the Digital IN/OUT working - for this I
am looking
for any help or contacts, respectively. I searched the
FAQ/HOWTO/man-pages (unfortunately
the mailing list is not searchable) etc, but infos concerning digital
in/out are quite
abcent. Then I discovered the little note at the bottom of
http://www.alsa-project.org/~goemon
saying "NOTE: Just because an I/O is listed does NOT mean it is
guaranteed to be supported. ..."
and therefore, at this time I do not know anything definite in this
regard. I viewed an email
from a user who has the Zoltrix Nightingale (the same soundchip CMI8738)
and from his message
it appears that digital I/O should work, but who knows this reliably???
Do you know it???
If it is true that digital I/O is working with CMI8738-based soundcards,
where do I get detailed
infos how to set up and run it? My hardware setup is o.k. (I tested it
with Win95 and successfully
recorded from the optical SPDIF IN via TOSLINK cable connected to my
CD-player, with SPDIF set to
5V and normal phase in the Win95 driver), so I see two possibilities:

1) digital I/O for CMI8738-based soundcards basically unsupported/broken
2) digital I/O for CMI8738-based soundcards is basically supported, but
I have not the right driver setup/configuration etc.

I'am using SuSE 7.3 (kernel 2.4.10), "cat /proc/asound/version" says
0.5.11, and "arecord -l" says:

C-Media PCI CM8738: 1 [card1] / #0: C-Media PCI DAC/ADC
  Directions: playback capture duplex
  Playback subdevices: 1
  Capture subdevices: 1
  Playback subdevice #0: subdevice #0
  Capture subdevice #0: subdevice #0
C-Media PCI CM8738: 1 [card1] / #1: C-Media PCI 2nd DAC
  Directions: playback
  Playback subdevices: 1
  Capture subdevices: 0
  Playback subdevice #0: subdevice #0
C-Media PCI CM8738: 1 [card1] / #2: C-Media PCI SPDIF
  Directions: playback capture duplex
  Playback subdevices: 1
  Capture subdevices: 1
  Playback subdevice #0: subdevice #0
  Capture subdevice #0: subdevice #0
  
/etc/asound.conf is:
# ALSA driver configuration
# This configuration is generated with the alsactl program.

soundcard("card1") {
  control {
    ; The type is 'bool'.
    switch("Joystick", false)
    ; The type is 'bool'.
    switch("Modem", false)
  }
  mixer("C-Media PCI") {
    ; The type is 'bool'.
    switch("Exchange DAC", false)
    ; The type is 'bool'.
    switch("Analog Four Channel", false)
    ; The type is 'bool'.
    switch("Line-In As Rear", false)
    ; The type is 'bool'.
    switch("SPDIF Enable", true)
    ; The type is 'bool'.
    switch("SPDIF In Valid", false)
    ; The type is 'bool'.
    switch("SPDIF Copyright", false)
    ; The type is 'bool'.
    switch("SPDIF DAC To Out", false)
    ; The type is 'bool'.
    switch("SPDIF Out To DAC", false)
    ; The type is 'bool'.
    switch("SPDIF 5V", true)
    ; The type is 'bool'.
    switch("SPDIF Loop", false)
    ; The type is 'bool'.
    switch("SPDIF In Monitor", true)
    ; The type is 'bool'.
    switch("SPDIF In Phase Inverse", false)
    ; The type is 'bool'.
    switch("Line-In As Bass", false)
    element("Aux Input Switch",0,100,Switch1(on,on))
    element("Aux Output Switch",0,100,Switch1(on,on))
    ; Voice 0 : Min 0 Max 15
    ; Voice 1 : Min 0 Max 15
    element("Aux Volume",0,200,Volume1(0,0))
    ; Voice 0 : Min 0 Max 3
    element("PC Speaker Volume",0,200,Volume1(0))
    element("Mic Gain Switch",0,100,Switch1(off))
    ; Voice 0 : Min 0 Max 7
    element("Mic Gain Level",0,200,Volume1(0))
    element("MIC Input Switch",0,100,Switch1(off,off))
    element("MIC Output Switch",0,100,Switch1(off))
    ; Voice 0 : Min 0 Max 31
    element("MIC Volume",0,200,Volume1(0))
    element("Line Input Switch",0,102,Switch3(on,off,off,on))
    element("Line Output Switch",0,100,Switch1(on,on))
    ; Voice 0 : Min 0 Max 31
    ; Voice 1 : Min 0 Max 31
    element("Line Volume",0,200,Volume1(31,31))
    element("CD Input Switch",0,102,Switch3(off,off,off,off))
    element("CD Output Switch",0,100,Switch1(off,off))
    ; Voice 0 : Min 0 Max 31
    ; Voice 1 : Min 0 Max 31
    element("CD Volume",0,200,Volume1(0,0))
    element("Synth Input Switch",0,102,Switch3(off,off,off,off))
    ; Voice 0 : Min 0 Max 31
    ; Voice 1 : Min 0 Max 31
    element("Synth Volume",0,200,Volume1(0,0))
    element("PCM Input Switch",0,100,Switch1(off,off))
    element("PCM Output Switch",0,101,Switch2(on))
    ; Voice 0 : Min 0 Max 31
    ; Voice 1 : Min 0 Max 31
    element("PCM Volume",0,200,Volume1(31,31))
    element("3D Surround",0,101,Switch2(off))
    ; Voice 0 : Min 0 Max 31
    ; Voice 1 : Min 0 Max 31
    element("Master Volume",0,200,Volume1(31,31))
  }
}



"strace -o /tmp/strace.out arecord -c 0 -d 2 -t 1 /tmp/test.wav" says:
----------------------------------------------------------------------

execve("/usr/bin/arecord", ["arecord", "-c", "0", "-d", "2", "-t", "1",
"/tmp/te
st.wav"], [/* 48 vars */]) = 0
uname({sys="Linux", node="mp3", ...})   = 0
brk(0)                                  = 0x804f0c8
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0
x40015000
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=5009, ...}) = 0
old_mmap(NULL, 5009, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40016000
close(3)                                = 0
open("/usr/lib/libasound.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300P\0"...,
1024) = 102
4
fstat64(3, {st_mode=S_IFREG|0755, st_size=148445, ...}) = 0
old_mmap(NULL, 127520, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40018000
mprotect(0x40036000, 4640, PROT_NONE)   = 0
old_mmap(0x40036000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x1d0
00) = 0x40036000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\330"...,
1024) = 10
24
fstat64(3, {st_mode=S_IFREG|0755, st_size=1384168, ...}) = 0
old_mmap(NULL, 1201988, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40038000
mprotect(0x40153000, 42820, PROT_NONE)  = 0
old_mmap(0x40153000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x11
a000) = 0x40153000
old_mmap(0x4015a000, 14148, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANON
YMOUS, -1, 0) = 0x4015a000
close(3)                                = 0
munmap(0x40016000, 5009)                = 0
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
open("/dev/snd/controlC0", O_RDWR)      = 3
close(3)                                = 0
open("/dev/snd/controlC1", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC1", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC1", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC1", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC1", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC1", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC2", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC2", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC2", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC2", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC2", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC2", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC3", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC3", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC3", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC3", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC3", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC3", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC4", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC4", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC4", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC4", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC4", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC4", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC5", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC5", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC5", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC5", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC5", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC5", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC6", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC6", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC6", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC6", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC6", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC6", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC7", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC7", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC7", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC7", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC7", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC7", O_RDWR)      = -1 ENOENT (No such file or
directory)
write(2, "Arecord: version 0.5.10 by Jaros"..., 59) = 59
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbffff604)  = 0
brk(0)                                  = 0x804f0c8
brk(0x804f0e8)                          = 0x804f0e8
brk(0x8050000)                          = 0x8050000
ioctl(3, 0x81285501, 0xbffff640)        = 0
close(3)                                = 0
write(2, "Using soundcard \'C-Media PCI CM8"..., 66) = 66
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbffff6e4)  = 0
ioctl(3, 0x40045520, 0xbffff4f8)        = 0
ioctl(3, 0x40045521, 0xbffff4fc)        = 0
ioctl(3, 0x40045523, 0xbffff500)        = 0
open("/dev/snd/pcmC0D2c", O_RDWR)       = 4
ioctl(4, AGPIOC_INFO, 0xbffff724)       = 0
close(3)                                = 0
ioctl(4, AGPIOC_RELEASE, 0x804ee60)     = 0
ioctl(4, 0x4132, 0x8048a72)             = -1 EBADFD (File descriptor in
bad stat
e)
rmdir("/tmp/test.wav")                  = -1 ENOTDIR (Not a directory)
unlink("/tmp/test.wav")                 = 0
open("/tmp/test.wav", O_WRONLY|O_CREAT, 0644) = 3
write(3, "RIFFd\37\0\0WAVE", 12)        = 12
write(3, "fmt \20\0\0\0\1\0\1\0@\37\0\0@\37\0\0\1\0\10\0", 24) = 24
write(3, "data@\37\0\0", 8)             = 8
write(2, "Recording WAVE \'/tmp/test.wav\' :"..., 33) = 33
write(2, "Unsigned 8-bit, ", 16)        = 16
write(2, "Rate 8000 Hz, ", 14)          = 14
write(2, "Mono", 4)                     = 4
write(2, "\n", 1)                       = 1
ioctl(4, 0x4132, 0x4001a8a0)            = -1 EBADFD (File descriptor in
bad stat
e)
ioctl(4, AGPIOC_RELEASE, 0xbfffeffc)    = 0
ioctl(4, 0x41544110, 0xbffff2e8)        = 0
ioctl(4, 0x813c4120, 0x804f22c)         = 0
ioctl(4, AGPIOC_RELEASE, 0xbfffec94)    = 0
old_mmap(NULL, 2112, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) =
0x40016000
old_mmap(NULL, 131072, PROT_READ, MAP_SHARED, 4, 0x80000000) =
0x4015e000
ioctl(4, 0x4130, 0x4001a7f8)            = 0
brk(0x8056000)                          = 0x8056000
ioctl(4, 0x4131, 0x4001a83c)            = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = -1 EINTR (Interrupted system
call)
--- SIGINT (Interrupt) ---
+++ killed by SIGINT +++
atkis:/share/tmp/gosen> cat strace.out 
execve("/usr/bin/arecord", ["arecord", "-c", "0", "-d", "2", "-t", "1",
"/tmp/test.wav"], [/* 48 vars */]) = 0
uname({sys="Linux", node="mp3", ...})   = 0
brk(0)                                  = 0x804f0c8
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40015000
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=5009, ...}) = 0
old_mmap(NULL, 5009, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40016000
close(3)                                = 0
open("/usr/lib/libasound.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300P\0"...,
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=148445, ...}) = 0
old_mmap(NULL, 127520, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40018000
mprotect(0x40036000, 4640, PROT_NONE)   = 0
old_mmap(0x40036000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x1d000) = 0x40036000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\330"...,
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1384168, ...}) = 0
old_mmap(NULL, 1201988, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40038000
mprotect(0x40153000, 42820, PROT_NONE)  = 0
old_mmap(0x40153000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x11a000) = 0x40153000
old_mmap(0x4015a000, 14148, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4015a000
close(3)                                = 0
munmap(0x40016000, 5009)                = 0
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
open("/dev/snd/controlC0", O_RDWR)      = 3
close(3)                                = 0
open("/dev/snd/controlC1", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC1", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC1", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC1", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC1", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC1", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC2", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC2", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC2", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC2", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC2", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC2", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC3", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC3", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC3", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC3", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC3", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC3", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC4", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC4", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC4", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC4", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC4", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC4", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC5", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC5", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC5", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC5", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC5", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC5", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC6", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC6", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC6", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC6", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC6", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC6", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC7", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC7", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC7", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC7", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC7", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC7", O_RDWR)      = -1 ENOENT (No such file or
directory)
write(2, "Arecord: version 0.5.10 by Jaros"..., 59) = 59
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbffff604)  = 0
brk(0)                                  = 0x804f0c8
brk(0x804f0e8)                          = 0x804f0e8
brk(0x8050000)                          = 0x8050000
ioctl(3, 0x81285501, 0xbffff640)        = 0
close(3)                                = 0
write(2, "Using soundcard \'C-Media PCI CM8"..., 66) = 66
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbffff6e4)  = 0
ioctl(3, 0x40045520, 0xbffff4f8)        = 0
ioctl(3, 0x40045521, 0xbffff4fc)        = 0
ioctl(3, 0x40045523, 0xbffff500)        = 0
open("/dev/snd/pcmC0D2c", O_RDWR)       = 4
ioctl(4, AGPIOC_INFO, 0xbffff724)       = 0
close(3)                                = 0
ioctl(4, AGPIOC_RELEASE, 0x804ee60)     = 0
ioctl(4, 0x4132, 0x8048a72)             = -1 EBADFD (File descriptor in
bad state)
rmdir("/tmp/test.wav")                  = -1 ENOTDIR (Not a directory)
unlink("/tmp/test.wav")                 = 0
open("/tmp/test.wav", O_WRONLY|O_CREAT, 0644) = 3
write(3, "RIFFd\37\0\0WAVE", 12)        = 12
write(3, "fmt \20\0\0\0\1\0\1\0@\37\0\0@\37\0\0\1\0\10\0", 24) = 24
write(3, "data@\37\0\0", 8)             = 8
write(2, "Recording WAVE \'/tmp/test.wav\' :"..., 33) = 33
write(2, "Unsigned 8-bit, ", 16)        = 16
write(2, "Rate 8000 Hz, ", 14)          = 14
write(2, "Mono", 4)                     = 4
write(2, "\n", 1)                       = 1
ioctl(4, 0x4132, 0x4001a8a0)            = -1 EBADFD (File descriptor in
bad state)
ioctl(4, AGPIOC_RELEASE, 0xbfffeffc)    = 0
ioctl(4, 0x41544110, 0xbffff2e8)        = 0
ioctl(4, 0x813c4120, 0x804f22c)         = 0
ioctl(4, AGPIOC_RELEASE, 0xbfffec94)    = 0
old_mmap(NULL, 2112, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) =
0x40016000
old_mmap(NULL, 131072, PROT_READ, MAP_SHARED, 4, 0x80000000) =
0x4015e000
ioctl(4, 0x4130, 0x4001a7f8)            = 0
brk(0x8056000)                          = 0x8056000
ioctl(4, 0x4131, 0x4001a83c)            = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = 0
poll([{fd=4, events=POLLIN}], 1, 1000)  = 0
poll(
...
...
...


=>arecord is sticking in this polling forever, and the size of
/tmp/test.wav stays at 44 bytes
(the header, I suggest) - in contrast to recording from Line-In:



strace -o /tmp/strace.out arecord -c 0 -d 0 -t 1 /tmp/test.wav

execve("/usr/bin/arecord", ["arecord", "-c", "0", "-d", "0", "-t", "1",
"/tmp/test.wav"], [/* 48 vars */]) = 0
uname({sys="Linux", node="mp3", ...})   = 0
brk(0)                                  = 0x804f0c8
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40015000
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=5009, ...}) = 0
old_mmap(NULL, 5009, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40016000
close(3)                                = 0
open("/usr/lib/libasound.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300P\0"...,
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=148445, ...}) = 0
old_mmap(NULL, 127520, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40018000
mprotect(0x40036000, 4640, PROT_NONE)   = 0
old_mmap(0x40036000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x1d000) = 0x40036000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\330"...,
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1384168, ...}) = 0
old_mmap(NULL, 1201988, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40038000
mprotect(0x40153000, 42820, PROT_NONE)  = 0
old_mmap(0x40153000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x11a000) = 0x40153000
old_mmap(0x4015a000, 14148, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4015a000
close(3)                                = 0
munmap(0x40016000, 5009)                = 0
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
open("/dev/snd/controlC0", O_RDWR)      = 3
close(3)                                = 0
open("/dev/snd/controlC1", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC1", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC1", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC1", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC1", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC1", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC2", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC2", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC2", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC2", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC2", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC2", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC3", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC3", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC3", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC3", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC3", O_RDONLY)          = -1 ENODEV (No such device)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC3", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC4", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC4", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC4", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC4", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC4", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC4", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC5", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC5", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC5", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC5", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC5", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC5", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC6", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC6", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC6", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC6", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC6", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC6", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC7", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC7", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC7", O_RDWR)      = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC7", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC7", O_RDONLY)          = -1 ENOENT (No such file or
directory)
close(-1)                               = -1 EBADF (Bad file descriptor)
open("/dev/snd/controlC7", O_RDWR)      = -1 ENOENT (No such file or
directory)
write(2, "Arecord: version 0.5.10 by Jaros"..., 59) = 59
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbffff604)  = 0
brk(0)                                  = 0x804f0c8
brk(0x804f0e8)                          = 0x804f0e8
brk(0x8050000)                          = 0x8050000
ioctl(3, 0x81285501, 0xbffff640)        = 0
close(3)                                = 0
write(2, "Using soundcard \'C-Media PCI CM8"..., 66) = 66
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbffff6e4)  = 0
ioctl(3, 0x40045520, 0xbffff4f8)        = 0
ioctl(3, 0x40045521, 0xbffff4fc)        = 0
ioctl(3, 0x40045523, 0xbffff500)        = 0
open("/dev/snd/pcmC0D0c", O_RDWR)       = 4
ioctl(4, AGPIOC_INFO, 0xbffff724)       = 0
close(3)                                = 0
ioctl(4, AGPIOC_RELEASE, 0x804ee60)     = 0
ioctl(4, 0x4132, 0x8048a72)             = -1 EBADFD (File descriptor in
bad state)
rmdir("/tmp/test.wav")                  = -1 ENOTDIR (Not a directory)
unlink("/tmp/test.wav")                 = 0
open("/tmp/test.wav", O_WRONLY|O_CREAT, 0644) = 3
write(3, "RIFFd\37\0\0WAVE", 12)        = 12
write(3, "fmt \20\0\0\0\1\0\1\0@\37\0\0@\37\0\0\1\0\10\0", 24) = 24
write(3, "data@\37\0\0", 8)             = 8
write(2, "Recording WAVE \'/tmp/test.wav\' :"..., 33) = 33
write(2, "Unsigned 8-bit, ", 16)        = 16
write(2, "Rate 8000 Hz, ", 14)          = 14
write(2, "Mono", 4)                     = 4
write(2, "\n", 1)                       = 1
ioctl(4, 0x4132, 0x4001a8a0)            = -1 EBADFD (File descriptor in
bad state)
ioctl(4, AGPIOC_RELEASE, 0xbfffeffc)    = 0
ioctl(4, 0x41544110, 0xbffff2e8)        = 0
ioctl(4, 0x813c4120, 0x804f22c)         = 0
ioctl(4, AGPIOC_RELEASE, 0xbfffec94)    = 0
old_mmap(NULL, 2112, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0) =
0x40016000
old_mmap(NULL, 131072, PROT_READ, MAP_SHARED, 4, 0x80000000) =
0x4015e000
ioctl(4, 0x4130, 0x4001a7f8)            = 0
ioctl(4, 0x4131, 0x4001a83c)            = 0
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
1024) = 1024
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
1024) = 1024
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
1024) = 1024
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
1024) = 1024
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
1024) = 1024
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
1024) = 1024
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
1024) = 1024
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 1000) = 1
write(3, "\177\177\177\177\177\177\177\177\177\177\177\177\177\177"...,
832) = 832
close(3)                                = 0
munmap(0x40016000, 2112)                = 0
munmap(0x4015e000, 131072)              = 0
close(4)                                = 0
_exit(0) 


Any ideas, suggestions?

Or is the Hercules Fortissimo II (CS4624 chip) the better choice for
digital I/O??? I am
thinking about buying this one if it does digital I/O without hassle...


Sorry for any trouble, and many thanks in advance for any hint or help,

Christoph Goßen

_______________________________________________
Alsa-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to