同じUSBデバイスのsysfsプロパティの名前変更

同じUSBデバイスのsysfsプロパティの名前変更

2つの同じUSBデバイスの「製品名」を使用するときに区別できるように名前を変更しようとしています。

問題のデバイスはUSB MIDIインターフェース(https://tie-products.com/en/produkt/midi-1i1o/)

試験を終えたたくさんところで今は閉じ込められてどこにも行けません。可能ですか?

ここに画像の説明を入力してください。

Aug 21 22:57:54 studio kernel: [    2.543513] usb 11-2.1.2: New USB device found, idVendor=fc02, idProduct=0101, bcdDevice= 2.50
Aug 21 22:57:54 studio kernel: [    2.543520] usb 11-2.1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
Aug 21 22:57:54 studio kernel: [    2.543524] usb 11-2.1.2: Product: USB MIDI Interface
..
Aug 21 22:57:54 studio kernel: [    3.379800] usb 11-2.1.3: New USB device found, idVendor=fc02, idProduct=0101, bcdDevice= 2.50
Aug 21 22:57:54 studio kernel: [    3.379807] usb 11-2.1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
Aug 21 22:57:54 studio kernel: [    3.379811] usb 11-2.1.3: Product: USB MIDI Interface
> udevadm info -a -p /devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.1/11-2.1.2

#  looking at device '/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.1/11-2.1.2':
#    KERNEL=="11-2.1.2"
#    SUBSYSTEM=="usb"
#    DRIVER=="usb"
#    ..
#    ATTR{product}=="USB MIDI Interface"
#    ..

私の簡単なルールは次のとおりです/etc/udev/rules.d/51-custom-usb-midi.rules

DEVPATH=="/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.1/11-2.1.2", ATTR{product}="USB MIDI Interface A"
DEVPATH=="/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.1/11-2.1.3", ATTR{product}="USB MIDI Interface B"
> udevadm test /devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.1/11-2.1.2
#  ..
#  11-2.1.2: /etc/udev/rules.d/51-custom-usb-midi.rules:1 Failed to write ATTR{/sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.1/11-2.1.2/product}, ignoring: Permission denied
#  ..

アップデート1

以下のMC68020にリンクされているドキュメントでは、これらのいくつかを編集する方法について説明します(アルファテスト)。しかし、私が変わるだけでは十分ではありません。名前USB MIDIインターフェース)MIDIデバイスは私の目標です。

デバッグイメージ

> ls -l /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.2/11-2.2.4/11-2.2.4:1.0/sound/card7/id
-rw-r--r-- 1 root root 4096 Aug 31 08:57 /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.2/11-2.2.4/11-2.2.4:1.0/sound/card7/id

> cat /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.2/11-2.2.4/11-2.2.4:1.0/sound/card7/id
Alf_test

> ls -l /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.2/11-2.2.4/product
-r--r--r-- 1 root root 4096 Aug 31 08:38 /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.2/11-2.2.4/product

> cat /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/usb11/11-2/11-2.2/11-2.2.4/product
USB MIDI Interface

アップデート2

私はそれが実際にBitwigに表示されるaconnect -l文字列の前に追加されたことを示しました。MIDI 1

では、この文字列を変更できますか?

> aconnect -l
..
client 36: 'Fastlane' [type=kernel,card=5]
    0 'Fastlane MIDI A '
    1 'Fastlane MIDI B '
client 40: 'Faderfox PC4' [type=kernel,card=6]
    0 'Faderfox PC4 MIDI 1'
client 44: 'USB MIDI Interface' [type=kernel,card=7]
    0 'USB MIDI Interface MIDI 1'
client 48: 'USB MIDI Interface' [type=kernel,card=8]
    0 'USB MIDI Interface MIDI 1'
client 52: 'Intech Studio: Grid' [type=kernel,card=9]
    0 'Intech Studio: Grid MIDI 1'
..

デバッグ

アップデート3 - 結論

これまでの私の結論は不可能だということです。迷惑ですが、すべてを持つことはできません...

ベストアンサー1

私が理解しているように、udevルールを読みながら変更しようとしています。製品キー。

USBデバイスの場合、この情報は以下から直接取得されるため不可能です。デバイス記述子したがって、修正できません。
だからignoring: Permission deniedあなたは結果を得るでしょう。

変更したいのは実際にはNAMEキーです。残念ながら、udevはこれらの可能性を提供しませんman udev

udevはデバイスノードの名前を変更できず、追加のシンボリックリンクのみを生成できます。

与えられたアドバイスに注目します:シンボリックリンクを作成してください!あなたのニーズによく合うかもしれません。必要なものを変更してください。

SYMLINK+="USB_MIDI_Interface_A"最初と SYMLINK+="USB_MIDI_Interface_B"2番目のルールの場合。


alsaデバイスのみが含まれていて編集されました。

Alsaによって詳細に説明されています。udevを使用して2つの同じデバイスを識別する方法。

この方法は、読み取り可能なカードIDを変更することに基づいています。/proc/asound/cardX/id

簡単に言えば、udevの助けを借りて変更を自動化するには、次の規則を作成します。

SUBSYSTEM!="sound", GOTO="my_usb_audio_end"
ACTION!="add", GOTO="my_usb_audio_end"

DEVPATH=="/devices/pci0000:00/0000:00:13.2/usb2/2-6/2-6.2/2-6.2:1.0/sound/card?", ATTR{id}="UA1A_A"
DEVPATH=="/devices/pci0000:00/0000:00:13.2/usb2/2-6/2-6.3/2-6.3:1.0/sound/card?", ATTR{id}="UA1A_B"

LABEL="my_usb_audio_end"

もちろん、開発パスに適応する必要があり、文字列ラベルが最大nb文字を許可するのか空白が許可されるのかわからないことに注意する必要があります。

amidi -lを使用または確認する必要がありますcat /proc/asound/cards
ちょうど中性子シンセサイザーのプラグインを確認しましたが…実際に動作します。 (しかし...私はこの名前が好きです;-P)Studio> MIDI Device Managementダイアログでこの識別子を使用するようにrosegardenもチェックしました。

おすすめ記事