2011-09-21 54 views
1

我正在编写一个必须在Fedora Core 4上运行的应用程序。应用程序需要访问没有root权限的USB设备。使用libusb-1.0.8我已经成功编写了除一个问题之外的应用程序。如果我没有root权限,libusb_open将以-3“拒绝权限”失败。Linux udev规则似乎不起作用

我读过我可以用udev规则修改设备的权限。因此,我加入10-local.rules使用以下行到/etc/udev/rules.d中:

BUS=="usb", SYSFS{idVendor}=="040a", SYSFS{idProduct}=="4e00", MODE="0666" 

我复制从udevinfo的输出上述信息。

即使使用上述规则,设备权限始终最终为“0644”,我无法从用户应用程序打开USB设备。即使重新启动后。

有没有人有任何建议,我可能做错了什么? Fedora Core 4支持我正在尝试做什么? 感谢

+0

该libusb的试图访问该设备的/ proc /总线/ USB/???哪里?随着设备的每次插入而改变。udev日志输出表示内核名称是“hiddev0”。如果我把KERNEL ==“hiddev *”放在规则文件中,我可以成功地控制/ dev/hiddev0上的权限,但是我仍然无法打开设备,因为我需要/ proc/bus/usb /?上的权限。 ??也要改变。 –

+0

更正:设备是/ proc/bus/004 /?其中004似乎是集线器ID –

回答

1

根据Linux的版本(HAL,udev,hotplug等),修改USB设备的权限似乎至少以3种不同方式处理。经过几次不成功的尝试,我终于找到了一个有准确信息的网站。

至少对于Linux 2.6.11,答案是hotplug。解决方案是在/ etc/hotplug/usb中创建一个自定义用户映射文件。以内置的用户映射(/etc/hotplug/usb.usermap)为例。用户映射文件指定在连接匹配设备时执行的脚本。该脚本还应位于/ etc/hotplug/usb中。

例如,我用我的设备的VID和PID以及执行命名为chmodmyusbdvc的脚本创建了/etc/hotplug/usb/myusbdvc.usermap。

我还创建的/ etc /热插拔/ USB/chmodmyusbdvc与后续的内容:

#!/bin/bash 
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ] 
then 
    echo "changing ${DEVICE}" >> /tmp/debug-hotplug 
    chmod 666 "${DEVICE}" 
fi 
+3

是否有一个特定的原因,你为什么要保持“网站的准确信息”的秘密? :) – sehe

2

尝试类似:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5090", MODE="0666" 

条件在udev规则是棘手的最好的。您可以检查哪些参数都可以用命令:

udevadm info --attribute-walk --name=<device> 

输出还包括以下声明:

A rule to match can be composed by the attributes of the device 
and the attributes from one single parent device. 

另外要注意的结束小号在某些属性名称。它出现在父设备中,但不出现在设备本身中。

+0

Fedora Core 4(linux 2.6.11)似乎没有udevadm。 –

+0

Fedora Core 4(linux 2.6.11)似乎没有udevadm。 man udev列出了可用的关键词。我已经尝试了SYSFS和ATTRS,BUS和SUBSYSTEM,用ACTION ==“add”而没有。我试图将我的设备添加到默认规则文件(50-udev.rules),没有运气。设备仍然显示0644。 –

+0

哦,我读了Fedora Core 14,而不是4!你有没有尝试启用udev调试日志?不要告诉我FC 4没有日志! – rodrigo

5

Udev的设置USB权限你的脚本运行后。重命名您的规则,以便文件名以大于50的数字开头(USB权限在/lib/udev/rules.d/50-udev-default.rules中设置)。由于您的脚本名称是10 -...,因此它将首先运行,然后重置权限。将文件名更改为例如99-local.rules。然后它将成为最后一个运行的脚本之一,并且所有设置都不会被覆盖。

来源:http://virtuallyhyper.com/2013/02/fixing-android-phone-device-permissions-on-fedora-17/

+0

您的答案迟了2年,我目前还没有Fedora Core 4安装程序来检查您的解决方案是否可行。 –