gpt4 book ai didi

udev - 如何使用 udev 规则识别断开连接的 USB 设备?

转载 作者:行者123 更新时间:2023-12-04 15:49:21 27 4
gpt4 key购买 nike

我有两个 LCD 使用 Xorg 的 xinerama 功能。每个 LCD 屏幕都有一个连接到各自 USB 线的触摸屏。

查看“/var/log/messages”文件,我看到以下内容:

kernel: input: Analog Resistive as /class/input/input0
kernel: input: USB HID v1.01 Mouse [Analog Resistive] on usb-0000:00:1d.3-1
kernel: input: Analog Resistive as /class/input/input1
kernel: input: USB HID v1.01 Mouse [Analog Resistive] on usb-0000:00:1d.3-2

出于某种原因,在某个时间点 USB 总线似乎重置(或一些奇怪的东西)并且我的两个触摸屏倒置(按下左侧 LCD 鼠标在右侧移动,如果我按下右侧 LCD 鼠标在右侧移动剩下)。

为了尝试调试问题,我尝试编写一个 udev 规则来在我的设备重置/断开连接(或其他)时记录日志。但似乎 udev 会在连接时报告设备的完整详细信息(产品、制造商、idProduct、idVendor 等),但在移除时只提供一些总线编号。为什么是这样?

当我收到 ACTION=="remove", KERNEL=="input*"规则时,我无法知道它是哪个设备!有谁知道解决这个问题的方法?

最佳答案

我建议首先通过运行来检查设备“删除”事件上的 udev 事件,例如udevadm monitor --kernel --property --subsystem-match=usb并依次断开您的设备并比较输出。
在单个鼠标断开连接时,我收到两个事件:

KERNEL[6680.737678] remove   /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0 (usb)
ACTION=remove
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0
DEVTYPE=usb_interface
INTERFACE=3/1/2
MODALIAS=usb:v09DAp000Ad0034dc00dsc00dp00ic03isc01ip02in00
PRODUCT=9da/a/34
SEQNUM=2835
SUBSYSTEM=usb
TYPE=0/0/0

KERNEL[6680.739577] remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 (usb)
ACTION=remove
BUSNUM=002
DEVNAME=/dev/bus/usb/002/006
DEVNUM=006
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
DEVTYPE=usb_device
MAJOR=189
MINOR=133
PRODUCT=9da/a/34
SEQNUM=2836
SUBSYSTEM=usb
TYPE=0/0/0

您可以编写调用脚本的规则,该脚本应该在检查某些特定环境变量后完成一些工作。规则可能很简单
SUBSYSTEM=="usb", ACTION=="remove", RUN+="/usr/local/sbin/usbdevgone.sh"

在您的情况下,我建议检查 usbdevgone.sh 中的 $DEVPATH ,因为它们对于您的两个其他相同的设备应该有所不同。
您也可以通过 devpath (这是/sys/文件系统中的路径)作为脚本的参数,如下所示(请参阅 man udev 以获取可用列表 substitutions ):
SUBSYSTEM=="usb", ACTION=="remove", RUN+="/usr/local/sbin/usbdevgone.sh $devpath"

别忘了使用 udevadm control --reload-rules 通知 udevd 您的新规则或更改规则

关于udev - 如何使用 udev 规则识别断开连接的 USB 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1474266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com