我正在我的Ubuntu14.04LTS上使用linux软件包和Keithley的KUSB488A (gpib-usb转换器)。它安装正确,我可以使用ibtest实用程序成功地命令我的设备。但在此之前,每次我断开并重新连接设备时,我都需要运行gpib_config --minor 0才能启动驱动程序。
我希望每次建立连接时都能自动运行,而不必显式运行。因此,udev规则是我所想到的,并编写了以下内容:
KERNEL=="gpib[0-9]*", ENV{DEVPATH}=="/devices/virtual/gpib_common/gpib0", RUN+="/usr/sbin/gpib_config --minor 0"根据我所得到的:
udevadm info /dev/gpib0
P: /devices/virtual/gpib_common/gpib0
N: gpib0
E: DEVNAME=/dev/gpib0
E: DEVPATH=/devices/virtual/gpib_common/gpib0
E: MAJOR=160
E: MINOR=0
E: SUBSYSTEM=gpib_common但是,当我重新启动udev规则时,这并没有帮助我。我所观察到的是,如果我重新启动pc本身,那么在第一次连接时,我就可以运行ibtest,而无需显式执行gpib_config。
请帮我找我缺的地方?
发布于 2015-12-03 11:07:07
我相信您在重新启动后第一次获得了/dev/gpib0,下一个重新连接是在/dev/gpib1上,每次重新连接它都会增加,就像在USB存储中一样。
在你的第一次联系中,你得到了:
E: DEVNAME=/dev/gpib0
E: DEVPATH=/devices/virtual/gpib_common/gpib0关于第二个问题,我希望:
E: DEVNAME=/dev/gpib1
E: DEVPATH=/devices/virtual/gpib_common/gpib1因此,该规则永远不会在任何重连接上运行,就像规则中的ENV{DEVPATH}固定在0上一样。另一点,在您的例子中,DEVNAME和DEVPATH是非常相关的(如果我不能说:它们是相同的),所以ENV{DEVPATH}不会在规则中添加任何东西。尝试:ls -l /dev/gpib*,您应该找到一个符号链接:
/dev/gpibX -> /sys/devices/virtual/gpib_common/gpibX所以,让你的规则简单:
KERNEL=="gpib[0-9]*", RUN+="/usr/sbin/gpib_config --minor 0"顺便说一句,此规则多次运行,至少在设备连接和设备断开时运行两次(2)。我不熟悉硬件,如果您需要它,那么只有在设备连接时才需要该命令,将ACTION添加到规则中:
ACTION=="add", KERNEL=="gpib[0-9]*", RUN+="/usr/sbin/gpib_config --minor 0"https://askubuntu.com/questions/705409
复制相似问题