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