2017-08-09 6 views
0

Mon application Java utilise trois périphériques audio identiques. J'ai trouvé ce tutoriel qui explique comment créer des relations entre périphérique et bus pci (par les règles udev): http://alsa.opensrc.org/Udev#Writing_udev_rules Cela fonctionne mais je souhaite créer des ID de carte par programme à partir de mon application sans utiliser les règles UDEV. Pour cette opération est suffisante pour créer des fichiers d'identification dans les répertoires /sys/devices/..../card[0-9]/. Mais je ne peux pas. Je ne peux pas modifier les fichiers dans /sys/. En outre, je ne peux pas modifier les fichiers dans /proc. Même si j'ai les permissions root.ALSA. Comment changer l'identifiant de l'appareil par programme?

Quelqu'un peut-il m'aider? Comment puis-je créer un fichier dans le répertoire /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/ par exemple? Ou au /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 

Répondre

0

Comme indiqué sur la page que vous avez lié, vous pouvez changer l'ID de la carte en attribuant une nouvelle valeur à id propriété de la carte:

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" 

Ce attribut est un fichier dans sysfs répertoire de la carte , donc vous pouvez simplement écrire au fichier id:

echo XYZ > /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/id 
+0

Oui. Si j'essaye de créer le dossier du terminal - j'obtiens l'erreur "le fichier est existe". Si j'essaie de le supprimer, l'erreur "Opération non autorisée" s'affiche. J'exécute les deux commandes avec sudo. Mais la racine n'est pas autorisée. C'est une question. – Virkom

+0

'$ sudo echo XYZ> /sys/devices/pci0000:00/0000:00:1c.1/0000:04:00.0/0000:05:04.0/sound/card4/id bash:/sys/devices/pci0000 : 00/0000: 00: 1c.1/0000: 04: 00.0/0000: 05: 04.0/sound/card4/id: Accès refusé' – Virkom

+0

Ce n'est pas la bonne façon d'utiliser 'sudo'. –