동일한 USB 장치의 sysfs 속성 이름 바꾸기

동일한 USB 장치의 sysfs 속성 이름 바꾸기

두 개의 동일한 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 장치가 내 목표입니다.

디버그 이미지

> 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"두 번째 규칙의 경우.


alsa 장치만 포함되어 있어 편집되었습니다.

Alsa가 자세히 설명합니다.udev를 사용하여 두 개의 동일한 장치를 식별하는 방법.

이 방법은 읽을 수 있는 카드 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 장치 관리 대화 상자에서 이 식별자를 사용하도록 rosegarden도 확인했습니다.

관련 정보