ALSA. Как программно изменить идентификатор устройства?

Мое java-приложение использует три одинаковых аудиоустройства. Я обнаружил, что это руководство объясняет, как создавать отношения между устройством и шиной pci (по правилам udev): http://alsa.opensrc.org/Udev. Это работает, но я хочу создать идентификатор карты программно из своего приложения без использования правил UDEV., Для этой операции достаточно создать id файлы в каталогах /sys/devices/..../card[0-9]/, Но я не могу. Я не могу изменить файлы в /sys/, Кроме того, я не могу изменить файлы в /proc, Даже если я получу права root.

Кто-нибудь может мне помочь? Как я могу создать файл в /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/ каталог например? Или в /proc/asound/card4/?

$ sudo nano /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/id
$ Saving error: /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/id: File exists

$ sudo rm /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/id
$ rm: can't delete '/sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card0/id': Operation is not permitted

1 ответ

Как показано на странице, на которую вы ссылаетесь, вы можете изменить идентификатор карты, присвоив ей новое значение id имущество:

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"

Этот атрибут является файлом в карточке sysfs каталог, так что вы можете просто написать в id файл:

echo XYZ > /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/id
Другие вопросы по тегам