I own a NSA-220, which I would like to use as music server. So I tried to get USB sound working. I downloaded the kernel sources and build tree at ZyXEL, and managed to build the modules
These can be loaded with insmod in this sequence.
Searching the internet I found how to make Alsa nodes:
mknod -m 666 /dev/snd/controlC0 c 116 0
mknod -m 666 /dev/snd/hwC0D0 c 116 4
mknod -m 666 /dev/snd/hwC0D1 c 116 5
mknod -m 666 /dev/snd/hwC0D2 c 116 6
mknod -m 666 /dev/snd/hwC0D3 c 116 7
mknod -m 666 /dev/snd/midiC0D0 c 116 8
mknod -m 666 /dev/snd/midiC0D1 c 116 9
mknod -m 666 /dev/snd/midiC0D2 c 116 10
mknod -m 666 /dev/snd/midiC0D3 c 116 11
mknod -m 666 /dev/snd/midiC0D4 c 116 12
mknod -m 666 /dev/snd/midiC0D5 c 116 13
mknod -m 666 /dev/snd/midiC0D6 c 116 14
mknod -m 666 /dev/snd/midiC0D7 c 116 15
mknod -m 666 /dev/snd/pcmC0D0c c 116 24
mknod -m 666 /dev/snd/pcmC0D0p c 116 16
mknod -m 666 /dev/snd/pcmC0D1c c 116 25
mknod -m 666 /dev/snd/pcmC0D1p c 116 17
mknod -m 666 /dev/snd/pcmC0D2c c 116 26
mknod -m 666 /dev/snd/pcmC0D2p c 116 18
and/or OSS nodes
mknod -m 660 /dev/mixer c 14 0; chgrp audio /dev/mixer
mknod -m 660 /dev/mixer1 c 14 16; chgrp audio /dev/mixer1
mknod -m 660 /dev/dsp c 14 3; chgrp audio /dev/dsp
mknod -m 660 /dev/dsp1 c 14 19; chgrp audio /dev/dsp1
When I use mpd (with libmad) to play some music both alsa and oss work. But I can play only one playlist. Using alsa mpd hangs hereafter, and I can only kill it by rebooting. Using oss the kernel crashes. I can give one command at the prompt, then the output is 'Killed', and the prompt returns. Then the system is dead. Using another sound source (madplay for oss or aplay for alsa) gives the same result.
I tried two diffent el-cheapo usb cards, a Speed-link SL-8850, and a unbranded 'skype-phone'.
I suppose ZyXEL didn't port the modules they don't use, and that the source is not fully Marvell compatible. The vanilla kernel seems to support Marvell now, so maybe I can just compile one of it's modules in the ZyXEL environment.
Questions: Is it possible that a 'vanilla module' will work in my system? (compiled with ZyXEL's kernel headers and toolchain), and if yes, which module would be the problem? Facing my investigation I suppose the problem rises when mpd closes the device (/dev/dsp or /dev/snd/pcmX?), but I don't see the link between the modules and the nodes.
Is there a way to find out why and in which module the kernel crashes?
Extra information: uname -a gives Linux NSA220 126.96.36.199 #1 Fri Nov 9 18:46:49 CST 2007 armv5tejl GNU/Linux
When using oss the cpu load is 8% for mpd, when using alsa it's 50%. I suppose the difference is causes by a virtual mixer which is not optimized for a FPU less system?