我需要检测 USB 串行设备何时在我的嵌入式系统上插入或拔出,并知道tty
与之相关联的内容。
我的系统运行在 2.6 Linux 内核上。
由于我没有对udev
规则的写入权限,现在我正试图从文件系统中获取这些信息,在/sys/bus/usb/devices
目录中寻找修改。但是,我在使用这种方法时遇到了一些问题。
我知道所Id BUS
连接的 USB 端口是什么(例如 1-1.3)。所以,我搜索相关的(在- 例如tty
中寻找目录)。这样我就知道我应该使用它来与我的设备进行通信。但是,有时,此设备 ( ) 不存在。/sys/bus/usb/devices/<Id BUS>:1.0/tty/
/sys/bus/usb/devices/1-1.3:1.0/tty/ttyACM0
/dev/ttyACM0
/dev/ttyACM0
有没有更好的方法来获取这些信息?
我什至想尝试从系统日志中获取这些信息,但我不知道这是否是个好主意。
编辑:
只是为了澄清一下,我的系统需要能够检测 USB 总线中的状态变化,即检测何时插入新设备(并将tty
名称链接到它)或拔出现有设备。
系统正在监控最多N
使用 USB HUB 插入的 USB/串行设备。在其正常执行期间,可以插入新设备,可以移除现有设备(或通过远程命令重新启动 - 超出此范围)。当一个设备重新启动时,它可能会收到tty
与之前使用的不同的(例如ttyACM0
-> ttyACM3
),因为内核指定它 atty
目前是免费的,这对我来说是一个大问题。