我正在尝试连接新设备 (Keysight U2722A),但它没有出现在 /dev 中。我已经在 Ubuntu、Fedora 和 openSuse 中尝试过了,结果都相同。目前在 Fedora 工作。当我插入它时,我可以看到它出现在:
消息:
[58451.072367] usb 3-2.4.2: new high-speed USB device number 11 using xhci_hcd
[58451.287716] usb 3-2.4.2: New USB device found, idVendor=0957, idProduct=4218
[58451.287720] usb 3-2.4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[58451.287722] usb 3-2.4.2: Product: Agilent U2722A/U2723A
[58451.287724] usb 3-2.4.2: Manufacturer: Agilent Technologies
[58451.287725] usb 3-2.4.2: SerialNumber: MY57070005
日志ctl-fe
Oct 05 09:36:47 geronto kernel: usb 3-2.4.4: new high-speed USB device number 10 using xhci_hcd
Oct 05 09:36:48 geronto kernel: usb 3-2.4.4: New USB device found, idVendor=0957, idProduct=4218
Oct 05 09:36:48 geronto kernel: usb 3-2.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Oct 05 09:36:48 geronto kernel: usb 3-2.4.4: Product: Agilent U2722A/U2723A
Oct 05 09:36:48 geronto kernel: usb 3-2.4.4: Manufacturer: Agilent Technologies
Oct 05 09:36:48 geronto kernel: usb 3-2.4.4: SerialNumber: MY57230002
Oct 05 09:36:48 geronto mtp-probe[4578]: checking bus 3, device 10: "/sys/devices/pci0000:00/0000:00:07.1/0000:24:00.3/usb3/3-2/3-2.4/3-2.4.4"
Oct 05 09:36:48 geronto mtp-probe[4578]: bus: 3, device: 10 was not an MTP device
但是,/dev 目录没有变化。我的理解是这应该显示为 usbtmc 设备。事实上,Keysight 有一个关于 usbtmc 设备的页面(这里)。但是,此页面已过时,并且驱动程序的链接不再有效。我认为这是因为内置的 Linux 驱动程序现在可以处理所有这些?我还尝试使用 National Instruments VISA 库查找该设备,但不起作用。
我想如果有一个设备节点,我应该能够与它通信。这导致我编写了 udev 规则。我写了以下规则:
ATTR{idVendor}=="0957", ATTR{serial}=="MY57070005", SYMLINK+="keysight0"
ATTR{idVendor}=="0957", ATTR{serial}=="MY57230002", SYMLINK+="keysight1"
ATTR{idVendor}=="05e6", ATTR{serial}=="4022588", SYMLINK+="keithley"
前 2 条规则适用于感兴趣的设备。第三个是用于被正确识别的设备(我的控制,看看我是否正确制定了规则)。它们识别设备并填充 /dev 中的设备。然而,这些链接似乎无法控制设备,即使对于 keithley 来说也是如此,它有一个可以使用的适当的 usbtmc 设备,并且相同的命令也适用于 usbtmc 设备。我认为我的规则有问题。我可以调查这些设备:
> udevadm info -n /dev/keysight0
P: /devices/pci0000:00/0000:00:07.1/0000:24:00.3/usb3/3-2/3-2.4/3-2.4.2
N: bus/usb/003/011
S: keysight0
E: BUSNUM=003
E: DEVLINKS=/dev/keysight0
E: DEVNAME=/dev/bus/usb/003/011
E: DEVNUM=011
E: DEVPATH=/devices/pci0000:00/0000:00:07.1/0000:24:00.3/usb3/3-2/3-2.4/3-2.4.2
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_MODEL=Agilent_U2722A_U2723A
E: ID_MODEL_ENC=Agilent\x20U2722A\x2fU2723A
E: ID_MODEL_ID=4218
E: ID_REVISION=1111
E: ID_SERIAL=Agilent_Technologies_Agilent_U2722A_U2723A_MY57070005
E: ID_SERIAL_SHORT=MY57070005
E: ID_USB_INTERFACES=:000000:
E: ID_VENDOR=Agilent_Technologies
E: ID_VENDOR_ENC=Agilent\x20Technologies
E: ID_VENDOR_FROM_DATABASE=Agilent Technologies, Inc.
E: ID_VENDOR_ID=0957
E: MAJOR=189
E: MINOR=266
E: PRODUCT=957/4218/1111
E: SUBSYSTEM=usb
E: TYPE=0/0/0
E: USEC_INITIALIZED=58451223677
我认为问题可能出在 DEVNAME=/dev/bus/usb/003/011 中。我可以使用符号链接进行连接吗?问题的根源是我没有将其连接到像 usbtmc0 这样的“正确的设备节点”吗? keithley 有一个 usbtmc0 节点,但规则不是将其链接到该节点,而是在我创建符号链接时链接到总线地址。这让我相信我的规则有问题?
谢谢你!
答案1
对于一般娱乐或任何对此设备感兴趣的人,必须首先使用仅限 Windows 的安捷伦内存管理器打开该设备。这会将通信能力加载到 RAM(注意:不是 ROM)中。然后它就被识别为usbtmc设备并可以正确通信。如果您拔掉电源插头,则必须再次执行此过程。