[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Re^2: /dev/* and ALSA.



On 04/02/14 19:08, peter@easthope.ca wrote:

peter@dalton:~$ cat /proc/asound/cards
  0 [SI7012         ]: ICH - SiS SI7012
                       SiS SI7012 with ALC655 at irq 18
  1 [NX6000         ]: USB-Audio - MicrosoftB. LifeCam NX-6000
                       Microsoft MicrosoftB. LifeCam NX-6000 at usb-0000:00:03.3-
8, high speed
  2 [Set            ]: USB-Audio - C-Media USB Headphone Set
                       C-Media USB Headphone Set at usb-0000:00:08.0-3, full spee
d
  3 [Device         ]: USB-Audio - C-Media USB Audio Device
                       C-Media USB Audio Device at usb-0000:00:03.2-1, full speed


Since your two USB devices are of different types, they should have different USB device ids. You've used these ids before while writing your udev rules? Following the documentation at
<http://www.opensrc.org/MultipleCards>
should yield the solution, then:

<quote>
Ordering multiple cards of the same type

If you have more that one sound cards which use the same modules, you may want to define the card order. This can be done by specifying index and ID options to the module being loaded. For example,

options snd-usb-audio index=1,2 vid=0x0ccd,0x0d8c pid=0x0028,0x000c

This will define 2 usb sound cards, the first one at index=1, vid=0x0ccd and pid=0x0028; the second one at index=2, vid=0x0d8c and pid=0x000c. The vid and pid here were discovered using lsusb.

The documentation may not be entirely up to date and comprehensive. The command

modinfo -p ${modulename}

shows a current list of all parameters of a loadable module.

Example:

# modinfo -p snd-usb-audio
ignore_ctl_error:Ignore errors from USB controller for mixer interfaces.
device_setup:Specific device setup (if needed).
async_unlink:Use async unlink mode.
nrpacks:Max. number of packets per URB.
pid:Product ID for the USB audio device.
vid:Vendor ID for the USB audio device.
enable:Enable USB audio adapter.
id:ID string for the USB audio adapter.
index:Index value for the USB audio adapter.

In this case, the pid and vid options from lsusb can be used.
</quote>

I've only got one USB sound device, a Cambridge Audio DacMagic100, usb vendor id:product id 22e8:dac3 If I just plug it in, the snd-usb-audio module gets loaded, and the extra card shows up like this:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC269 Analog [ALC269 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC269 Digital [ALC269 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: C1 [Cambridge Audio DAC100 USB 1], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Now, editing  /etc/modprobe.d/alsa-base.conf to include (**):

options snd-hda-intel index=1
options snd-usb-audio index=0 vid=0x22e8 pid=0xdac3
#options snd-usb-audio index=-2 # this line commented out

and restarting alsa (*)

$ sudo alsa reload

changes the sound device ordering, and makes it predictable between reboots:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: C1 [Cambridge Audio DAC100 USB 1], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 0: ALC269 Analog [ALC269 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 1: ALC269 Digital [ALC269 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


HTH
----

(*) I struggeled to get alsa to reload the config file, and had to kill pulseaudio first. Mind you, pulseaudio automatically spawns a new instance after being killed, and to prevent this I edited
/etc/pulse/client.conf:
autospawn = no
(**) What happens when the USB audio device is not present at boot? By assigning the built-in Intel device index != 0, this solution should be stable.

--
Klaus


Reply to: