All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matti Picus <matti.picus@gmail.com>
To: alsa-devel@alsa-project.org
Subject: Re: S51 usb support
Date: Mon, 04 Oct 2010 22:08:56 +0200	[thread overview]
Message-ID: <4CAA3458.9080007@gmail.com> (raw)
In-Reply-To: <20101004044152.GC7159@buzzloop.caiaq.de>

On 10/04/2010 06:41 AM, Daniel Mack wrote:
> On Sun, Oct 03, 2010 at 11:22:00PM +0200, Matti Picus wrote:
>    
>> My X-FI Surround USB card is barely usable. pulseaudio will let me
>> control the volume levels, alsa support cannot view any volume controls.
>>      
> But audio streaming does work for you? I heard people reporting success
> with this kind of hardware.
>    
Yes, audio streaming works in aplay if I choose the hw:S51 device. I 
cannot find a convenient way to control the volume without firing up 
pavucontrol, "convenient" in this case means "for mpd run as root"
>> How can I contribute to better support for this card under alsa? I would
>> like to get to the point where amixer can control the analog
>> input/output volume levels.
>>      
> As for the volume controls, there are merely two ways how they can be
> implemented on USB soundcards. One is as feature unit control, and the
> other is a proprietary vendor specific USB request. You should start
> having a look at the USB descriptors the devices exports (by running
> "lsusb -v").
>
>    
OK, what should I be looking for? Here is a summary:
 >lsusb -v -s 002:006 |grep '\(\<i[^I]\)\|\(bDescriptorSubtype\)\|\(PCM\)'
   idVendor           0x041e Creative Technology, Ltd
   idProduct          0x3042
   iManufacturer           1 Creative Technology
   iProduct                2 SB X-Fi Surround 5.1
   iSerial                 3 000008NV
     iConfiguration          0
         bDescriptorSubtype      1 (HEADER)
         bDescriptorSubtype      2 (INPUT_TERMINAL)
         iChannelNames           0
         iTerminal               0
         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
         iTerminal               0
         bDescriptorSubtype      2 (INPUT_TERMINAL)
         iChannelNames           0
         iTerminal               0
         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
         iTerminal               0
         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
         iTerminal               0
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)
         bDescriptorSubtype      1 (AS_GENERAL)
         wFormatTag              1 PCM
         bDescriptorSubtype      2 (FORMAT_TYPE)
           bDescriptorSubtype      1 (EP_GENERAL)


> In case the card does not offer a standard way to control the volume
> levels, you need to trace how the Windows driver does it by sniffing
> the communication while performing this specific operation, either with
> an USB hardware analyzer, or with a piece of software. There are some
> projects aiming for this, but I can't give you any recommendation. Just
> try some of these, maybe:
>
>    http://www.google.com/search?q=windows+usb+traffic+sniffer
>
> Once you found out how they do it in Windows, you can add device
> specific mixer handlers, as they exist for other hardware. Have a look
> at sound/usb/mixer_quirks.c.
>
> Hope that helps,
>
> Daniel
>
>    
The card must offer something close to a standard set of volume controls 
since pulseaudio can control the basic stereo volume sliders. I would be 
happy if amixer or even alsamixer would see just the analog stereo 
output and analog line-in input. Currently, pulseaudio can control the 
volume levels but alsa cannot, alsamixer simply shows no volume controls.

Any guidance you can give toward getting the volume controls recognized 
would be greatly appreciate.
Matti

  reply	other threads:[~2010-10-04 20:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-03 21:22 S51 usb support Matti Picus
2010-10-04  4:41 ` Daniel Mack
2010-10-04 20:08   ` Matti Picus [this message]
2010-10-05  7:38     ` Daniel Mack
2010-10-05 19:11       ` Matti Picus
2010-10-05 22:04         ` Daniel Mack
  -- strict thread matches above, loose matches on Subject: below --
2010-10-20 20:30 Mandar Joshi
2010-10-22  5:14 ` Mandar Joshi
2010-10-23 15:37   ` Mandar Joshi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CAA3458.9080007@gmail.com \
    --to=matti.picus@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.