Hello,

I have been trying to make Sound Blaster Digital Music SX work in my linux box.

It is recognized, related modules (snd-usb-audio and others) are autoloaded,  and
the playback works.  But the Right-Left volume balance is wrong.  The left channel
volume (sometimes right instead) is too small, though it is not zero. Something is
wrong with the device configuration by ALSA as it works without problems under the
Windows XP environment using system default USB audio driver.

Can I ask your advice on this problem?
Thanks in advance.

The current environment as follows:
# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.20.
Compiled on Jun 27 2009 for kernel 2.6.30.

# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SX [Sound Blaster Digital Music SX], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: SX [Sound Blaster Digital Music SX], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

# cat /proc/asound/cards
 0 [SX             ]: USB-Audio - Sound Blaster Digital Music SX
                      Creative Technology Ltd. Sound Blaster Digital Music SX at usb-0000:00:07.2-2,

# cat /proc/asound/devices
  0: [ 0]   : control
 16: [ 0- 0]: digital audio playback
 17: [ 0- 1]: digital audio playback
 24: [ 0- 0]: digital audio capture
 33:        : timer

# cat /proc/asound/modules
 0 snd_usb_audio

# cat /proc/asound/pcm
00-00: USB Audio : USB Audio : playback 1 : capture 1
00-01: USB Audio : USB Audio #1 : playback 1

# cat /proc/asound/SX/pcm0p/info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0

# cat /proc/asound/SX/pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1024
buffer_size: 16384

# cat /proc/asound/SX/pcm0p/sub0/info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0

# cat /etc/asound.conf
pcm.!default {
  type rate
  slave {
    pcm "hw:0,0"
    rate 48000
  }
}

ctl.!default {
        type hw
        card 0
}

Here is the kernel logs when the device is plugged and recognized.  The alsa drirver
is configured with '--with-debug=verbose' options;

--------
Jun 28 17:27:35 oboro kernel: usb 1-2: new full speed USB device using uhci_hcd and address 4
Jun 28 17:27:36 oboro kernel: usb 1-2: configuration #1 chosen from 1 choice
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:1: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:2: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:3: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:4: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:5: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:6: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:7: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:8: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2433: 4:1:9 : format type 0 is detected, processed as PCM
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:9: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2433: 4:1:10 : format type 0 is detected, processed as PCM
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:1:10: add audio endpoint 0x1
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:1: add audio endpoint 0x82
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:2: add audio endpoint 0x82
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:3: add audio endpoint 0x82
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:4: add audio endpoint 0x82
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:5: add audio endpoint 0x82
Jun 28 17:27:36 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:6: add audio endpoint 0x82
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:7: add audio endpoint 0x82
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:2835: 4:2:8: add audio endpoint 0x82
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [3] FU [PCM Playback Switch] ch = 1, val = 0/1/1
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [3] FU [PCM Playback Volume] ch = 2, val = -25600/0/128
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [4] FU [Headphone Playback Switch] ch = 1, val = 0/1/1
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:458: cannot set ctl value: req = 0x4, wValue = 0x201, wIndex = 0x400, type = 4, data = 0x40/0x0
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [4] FU [Headphone Playback Volume] ch = 2, val = -25600/0/128
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [6] FU [Headphone Playback Switch] ch = 1, val = 0/1/1
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:458: cannot set ctl value: req = 0x4, wValue = 0x201, wIndex = 0x600, type = 4, data = 0x40/0x0
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [6] FU [Headphone Playback Volume] ch = 2, val = -25600/0/128
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [8] FU [Headphone Playback Switch] ch = 1, val = 0/1/1
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1033: [9] FU [Digital In Playback Switch] ch = 1, val = 0/1/1
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1617: [7] SU [PCM Capture Source] items = 2
Jun 28 17:27:37 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbmixer.c:1777: status interrupt: c0 02
Jun 28 17:27:37 oboro kernel: usbcore: registered new interface driver snd-usb-audio
--------

And when I invoked aplay to playback a wav file the log says

--------
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
Jun 28 17:31:05 oboro kernel: ALSA /usr/src/alsa-driver-1.0.20/usb/usbaudio.c:1360: setting usb interface 1:3
Jun 28 17:31:05 oboro kernel: snd: bad kfree (called from e1065ded)
--------