Hi,

This is just an interim report on sound blaster digital music sx with Alsa
usb driver.
For those who is interested in this device...

>From the point of view of USB audio spec., the device has three interfaces.
One is
"Audio Control Device" and the others are "Audio Streaming" for playback and
capture
respectively, and the first IF accompanies 14 Audio Control interfaces such
as volumes
and mute controls.  Those AC interface descriptors seem ok synctactically
but some
of them may be wrong and they caused the alsa driver breaks L/R volume
balance.
According to usb snooping result under Windows envrionment where the device
works
correctly, it shows that this device does not seem to require any special
boot-up
sequence.

For just an interim hack I could make both Left and Right audio channels
work by
skipping the first audio control interface.

# diff -c alsa-kernel/usb/usbquirks.h.orig alsa-kernel/usb/usbquirks.h
*** alsa-kernel/usb/usbquirks.h.orig    Fri Jul  3 02:16:07 2009
--- alsa-kernel/usb/usbquirks.h Sat Jul  4 00:33:23 2009
***************
*** 79,84 ****
--- 79,110 ----
        .idProduct = 0x3f0a,
        .bInterfaceClass = USB_CLASS_AUDIO,
  },
+ {
+       USB_DEVICE(0x041e, 0x3090),
+       .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk)
{
+               .vendor_name = "Creative Technology, Ltd",
+               .product_name = "Sound Blaster Digital Music SX",
+               .ifnum = QUIRK_ANY_INTERFACE,
+               .type = QUIRK_COMPOSITE,
+               .data = (const struct snd_usb_audio_quirk[]) {
+                       {
+                               .ifnum = 0,
+                               .type = QUIRK_IGNORE_INTERFACE
+                       },
+                       {
+                               .ifnum = 1,
+                               .type = QUIRK_AUDIO_STANDARD_INTERFACE
+                       },
+                       {
+                               .ifnum = 2,
+                               .type = QUIRK_AUDIO_STANDARD_INTERFACE
+                       },
+                       {
+                               .ifnum = -1
+                       }
+               }
+       }
+ },

  /*
   * Logitech QuickCam: bDeviceClass is vendor-specific, so generic
interface
#

The L/R volume balance for playback is ok, though I have not tested if
capture
works correctly.  This makes an mixer device unavailable and is not an
essential
correction at all,  but it is definitely better than one-sided sound...

Just FYI.


2009/6/28  <k.kibak...@gmail.com>

> 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)
> --------
>
>
------------------------------------------------------------------------------
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to