2017-04-12 13 views
0

私は、USBハブと複数のUSBサウンドカードを搭載したLinuxコンピュータを使用しています。ここで複数のUSBサウンドカードを特定する方法

iははaplay -lコマンドで見ることができるものである:ALSA、デバイス、DEVICE_1、Device_2、Device_3

:だから

aplay -l 
**** Liste des Périphériques Matériels PLAYBACK **** 
carte 0: ALSA [bcm2835 ALSA], périphérique 0: bcm2835 ALSA [bcm2835 ALSA] 
    Sous-périphériques: 8/8 
    Sous-périphérique #0: subdevice #0 
    Sous-périphérique #1: subdevice #1 
    Sous-périphérique #2: subdevice #2 
    Sous-périphérique #3: subdevice #3 
    Sous-périphérique #4: subdevice #4 
    Sous-périphérique #5: subdevice #5 
    Sous-périphérique #6: subdevice #6 
    Sous-périphérique #7: subdevice #7 
carte 0: ALSA [bcm2835 ALSA], périphérique 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] 
    Sous-périphériques: 1/1 
    Sous-périphérique #0: subdevice #0 
carte 1: Device [USB PnP Sound Device], périphérique 0: USB Audio [USB Audio] 
    Sous-périphériques: 1/1 
    Sous-périphérique #0: subdevice #0 
carte 2: Device_1 [USB PnP Sound Device], périphérique 0: USB Audio [USB Audio] 
    Sous-périphériques: 1/1 
    Sous-périphérique #0: subdevice #0 
carte 3: Device_2 [USB PnP Sound Device], périphérique 0: USB Audio [USB Audio] 
    Sous-périphériques: 1/1 
    Sous-périphérique #0: subdevice #0 
carte 4: Device_3 [USB PnP Sound Device], périphérique 0: USB Audio [USB Audio] 
    Sous-périphériques: 1/1 
    Sous-périphérique #0: subdevice #0 

、私はこの名前で識別されている5つのデバイスを持っています私の質問は次のとおりです。コンピュータを起動するたびに、Device_2が同じUSBサウンドカードと一致することを確認するにはどうすればよいですか? コンピュータの起動時に一致がランダムになると思われますか? サウンドカードには一意の識別子はありませんので、カーネルがどのようにマッチングを行うのか不思議です。

おかげで各カードの名前を変更する

+0

http://alasa.opensrc.org/Udevの「2つの同一のオーディオデバイスを識別する」を参照してください。 –

+0

私はこれがマッピングの原点にあるUSBポート識別子であると理解していますか? – Bob5421

+0

そのページでは、「デバイスが接続されているポートに応じてIDを変更する方法」について説明しています。 –

答えて

0

使用 "デバイスパス"。デバイスパスは、基本的にカードが接続されているUSBポートを定義します。 ls -la /sys/class/sound/を実行して、カードとそのデバイスのパッチングをリストし、カードのid属性に新しい名前を書き込みます。例えば

$ ls -la /sys/class/sound/ 
total 0 
drwxr-xr-x 2 root root 0 May 27 17:48 . 
drwxr-xr-x 34 root root 0 May 27 17:48 .. 
lrwxrwxrwx 1 root root 0 May 27 17:48 card1 -> ../../devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/sound/card1 
lrwxrwxrwx 1 root root 0 May 27 17:48 card2 -> ../../devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/sound/card2 
lrwxrwxrwx 1 root root 0 May 27 17:48 card3 -> ../../devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/sound/card3 
lrwxrwxrwx 1 root root 0 May 27 17:48 card4 -> ../../devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/sound/card4 
... 

4デバイスpathesを与えます。インデックスは異なる場合がありますが、デバイスのパスはカードを別のUSBポートに接続するまで変更されません。

echo -n NewName1 > /sys/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/sound/card*/id 
echo -n NewName2 > /sys/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/sound/card*/id 
echo -n NewName3 > /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/sound/card*/id 
echo -n NewName4 > /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/sound/card*/id 

cat /proc/asound/cardsaplay -l出力に名前を変更されます。これらのデバイスpathes

使用すると、新しい名前を設定します。

デバイスが検出されたときにこれらの名前を自動的に設定するルールを定義できます。

ACTION=="add", SUBSYSTEM=="sound", DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/sound/card?", ATTR{id}="NewName1" 
ACTION=="add", SUBSYSTEM=="sound", DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/sound/card?", ATTR{id}="NewName2" 
ACTION=="add", SUBSYSTEM=="sound", DEVPATH=="/devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/sound/card?", ATTR{id}="NewName3" 
ACTION=="add", SUBSYSTEM=="sound", DEVPATH=="/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/sound/card?", ATTR{id}="NewName4" 

(そこあなたカード名とデバイスpathesを書くことを忘れないでください)

次に例えば、お使いのソフトウェアにカードを参照するために、これらの名前を使用します。/etc/udev/rules.d/70-my-sound-cards.rules何かのようにudevの書き込み用"plughw:NewName4"、 "dmix:NewName2" ...

関連する問題