运行 gpib_config 的 udev 规则

运行 gpib_config 的 udev 规则

我在 Ubuntu 14.04 LTS 上使用 linux-gpib 软件包和 Keithley 的 KUSB-488A(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

我的不足之处还请帮助我吗?

答案1

我相信您/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"

相关内容