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

Re: How to join forever an alsa device id to a particular USB port?



On Wed, 11 May 2011 15:24:51 +0200
"owl700@gmail.com" <owl700@gmail.com> wrote:

> Hello, I bought 2 identic USB audio device that work correctly with
> linux but when I restart linux or I keep the devices out and I put it
> in again they take another id. I need that the id would be always the
> same.
> 
> 
> I tried a first script called "A working example":
> http://alsa.opensrc.org/Udev but squeeze doesn't rename it...
> Then I tried other kind of tries that I paste below (please don't
> laugh about me :) I am not good with udev)
> 
> 
> 
> # KERNEL=="2-2", SUBSYSTEM=="usb", ACTION=="add", DRIVER=="usb", SYMLINK="test"
> # KERNEL=="controlC[0-9]*", SUBSYSTEM=="usb", ACTION=="add",
> SYMLINK="snd/controlC9"
> # KERNEL=="2-2:1.0", SUBSYSTEM=="usb", ACTION=="add", DRIVER=="usb",
> SYMLINK="snd/controlC9"
> # KERNEL=="2-2:1.1", SUBSYSTEM=="usb", ACTION=="add", DRIVER=="usb",
> SYMLINK="snd/pcmC9D0c"
> # KERNEL=="2-2:1.2", SUBSYSTEM=="usb", ACTION=="add", DRIVER=="usb",
> SYMLINK="snd/pcmC9D0p"
> # KERNEL=="2-2:1.0", SUBSYSTEM=="usb", ACTION=="add", DRIVER=="usb",
> SYMLINK="snd/controlC9"
> 
> KERNEL=="controlC0", ACTION=="add" DRIVERS=="snd", NAME="snd/controlC9"
> 
> As you can see it doesn't work...the only thing I could do was to
> create a symling but that's not important to me, i couldn't rename the
> devices that's what I need
> 
> 
> What I precisely need is to join one or more particular USB gates to
> the same device d alsa. I will decide which one doing it in
> /proc/asound/devices
> 
> 
> ----
> 
> 
> udevadm info --query all --path /sys/bus/usb/devices/2-2  --attribute-walk
> 
> Udevadm info starts with the device specified by the devpath and then
> walks up the chain of parent devices. It prints for every device
> found, all possible attributes in the udev rules key format.
> A rule to match, can be composed by the attributes of the device
> and the attributes from one single parent device.
> 
>   looking at device '/devices/pci0000:00/0000:00:10.0/usb2/2-2':
>     KERNEL=="2-2"
>     SUBSYSTEM=="usb"
>     DRIVER=="usb"
>     ATTR{configuration}==""
>     ATTR{bNumInterfaces}==" 4"
>     ATTR{bConfigurationValue}=="1"
>     ATTR{bmAttributes}=="80"
>     ATTR{bMaxPower}=="100mA"
>     ATTR{urbnum}=="63"
>     ATTR{idVendor}=="08bb"
>     ATTR{idProduct}=="2902"
>     ATTR{bcdDevice}=="0100"
>     ATTR{bDeviceClass}=="00"
>     ATTR{bDeviceSubClass}=="00"
>     ATTR{bDeviceProtocol}=="00"
>     ATTR{bNumConfigurations}=="1"
>     ATTR{bMaxPacketSize0}=="8"
>     ATTR{speed}=="12"
>     ATTR{busnum}=="2"
>     ATTR{devnum}=="2"
>     ATTR{version}==" 1.10"
>     ATTR{maxchild}=="0"
>     ATTR{quirks}=="0x0"
>     ATTR{authorized}=="1"
>     ATTR{manufacturer}=="Burr-Brown from TI              "
>     ATTR{product}=="USB Audio CODEC "
> 
>   looking at parent device '/devices/pci0000:00/0000:00:10.0/usb2':
>     KERNELS=="usb2"
>     SUBSYSTEMS=="usb"
>     DRIVERS=="usb"
>     ATTRS{configuration}==""
>     ATTRS{bNumInterfaces}==" 1"
>     ATTRS{bConfigurationValue}=="1"
>     ATTRS{bmAttributes}=="e0"
>     ATTRS{bMaxPower}=="  0mA"
>     ATTRS{urbnum}=="36"
>     ATTRS{idVendor}=="1d6b"
>     ATTRS{idProduct}=="0001"
>     ATTRS{bcdDevice}=="0206"
>     ATTRS{bDeviceClass}=="09"
>     ATTRS{bDeviceSubClass}=="00"
>     ATTRS{bDeviceProtocol}=="00"
>     ATTRS{bNumConfigurations}=="1"
>     ATTRS{bMaxPacketSize0}=="64"
>     ATTRS{speed}=="12"
>     ATTRS{busnum}=="2"
>     ATTRS{devnum}=="1"
>     ATTRS{version}==" 1.10"
>     ATTRS{maxchild}=="2"
>     ATTRS{quirks}=="0x0"
>     ATTRS{authorized}=="1"
>     ATTRS{manufacturer}=="Linux 2.6.32-5-686 uhci_hcd"
>     ATTRS{product}=="UHCI Host Controller"
>     ATTRS{serial}=="0000:00:10.0"
>     ATTRS{authorized_default}=="1"
> 
>   looking at parent device '/devices/pci0000:00/0000:00:10.0':
>     KERNELS=="0000:00:10.0"
>     SUBSYSTEMS=="pci"
>     DRIVERS=="uhci_hcd"
>     ATTRS{vendor}=="0x1106"
>     ATTRS{device}=="0x3038"
>     ATTRS{subsystem_vendor}=="0x1043"
>     ATTRS{subsystem_device}=="0x3038"
>     ATTRS{class}=="0x0c0300"
>     ATTRS{irq}=="21"
>     ATTRS{local_cpus}=="ffffffff"
>     ATTRS{local_cpulist}=="0-31"
>     ATTRS{modalias}=="pci:v00001106d00003038sv00001043sd00003038bc0Csc03i00"
>     ATTRS{enable}=="1"
>     ATTRS{broken_parity_status}=="0"
>     ATTRS{msi_bus}==""
> 
>   looking at parent device '/devices/pci0000:00':
>     KERNELS=="pci0000:00"
>     SUBSYSTEMS==""
>     DRIVERS==""
> 
> ----
> 
> /proc/asound# ls
> card0  card1  card2  cards  default  default_1  devices  hwdep  modules  oss
> pcm  seq  timers  V8237  version
> 
> ----
> 
> /dev/snd# ls
> by-id  by-path  controlC0  controlC1  controlC2  pcmC0D0c  pcmC0D0p
> pcmC0D1c  pcmC0D1p  pcmC1D0c  pcmC1D0p  pcmC2D0c  pcmC2D0p  seq  timer
> 
> ----
> 
> dmesg
> 
> [    1.520541] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
> [    1.520545] usb usb4: New USB device strings: Mfr=3, Product=2,
> SerialNumber=1
> [    1.520549] usb usb4: Product: UHCI Host Controller
> [    1.520552] usb usb4: Manufacturer: Linux 2.6.32-5-686 uhci_hcd
> [    1.520555] usb usb4: SerialNumber: 0000:00:10.2
> [    1.520909] usb usb4: configuration #1 chosen from 1 choice
> [    1.521101] hub 4-0:1.0: USB hub found
> [    1.521126] hub 4-0:1.0: 2 ports detected
> 
> [ 4285.848016] usb 2-1: new full speed USB device using uhci_hcd and address
> 3
> [ 4286.169823] usb 2-1: New USB device found, idVendor=08bb, idProduct=2902
> [ 4286.169830] usb 2-1: New USB device strings: Mfr=1, Product=2,
> SerialNumber=0
> [ 4286.169834] usb 2-1: Product: USB Audio CODEC
> [ 4286.169837] usb 2-1: Manufacturer: Burr-Brown from TI
> [ 4286.170060] usb 2-1: configuration #1 chosen from 1 choice
> [ 4286.225195] input: Burr-Brown from TI               USB Audio CODEC  as
> /devices/pci0000:00/0000:00:10.0/usb2/2-1/2-1:1.3/input/input5
> [ 4286.225961] generic-usb 0003:08BB:2902.0002: input,hidraw1: USB HID v1.00
> Device [Burr-Brown from TI               USB Audio CODEC ] on
> usb-0000:00:10.0-1/input3
> 
> ----
> 
> Every help will be important to me :) thanks.
> 
> 

What you need to do is add manufacturer, configuration, serial # etc... to your lookup, e.g.

# Epson Perfection 2450 aka GT-9700

KERNEL=="sg[0-9]*", ATTRS{type}=="3", ATTRS{vendor}=="EPSON", ATTRS{model}
=="GT-9700", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes"
10-local.rules

I have a file in /etc/udev/rules.d/10-local.rules where I put all of that local stuff.

the real trick is how to figure out what those fields are:

   udevadm info --name=$1 --attribute-walk

you might need to sudo the above command or execute as root.

HTH.

Brian


Reply to: