2017-08-09 169 views
0

我的java应用程序使用三个相同的音频设备。 我发现本教程,如何创建设备和PCI总线之间的关系(通过udev规则):http://alsa.opensrc.org/Udev#Writing_udev_rules 它的工作,但我想创建卡ID的编程从我的应用程序不使用UDEV规则。对于此操作足以在目录/sys/devices/..../card[0-9]/中创建标识文件。 但我不能。我无法更改/sys/中的文件。另外,我无法更改/proc中的文件。即使我获得root权限。ALSA。如何以编程方式更改设备ID?

任何人都可以帮助我吗?例如,我如何在/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 

回答

0

如您联系,您可以通过该卡的id财产分配一个新的值更改卡的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 
+0

是的。如果我尝试从终端创建文件 - 我得到“文件存在”错误。 如果我尝试删除它 - 我收到“操作不允许”错误。 我用sudo执行两个命令。但根不允许。这是问题。 – 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:拒绝访问 – Virkom

+0

这不是使用'sudo'的正确方法。 –

相关问题