如何在断开连接时跟踪USB设备?

ipm*_*mcc 3 macos usb iokit

我有一堆USB串口设备(准确地说是这些:http://plugable.com/products/PL2303-DB9),如果可能的话,我想在拔出插头时"跟踪"它们重新插入事件(即使重新插入事件是针对不同的USB端口).

驱动程序似乎从其USB位置创建了BSD dialin/callout/tty设备名称,但这取决于您将其插入的USB端口.

看着插入两个独立的USB端口的两个相同的设备之间由于IOKit属性词典,唯一的区别是在sessionID,USB Address,locationID,portNum或在出现的值从所导出的locationID.sessionID似乎每个会话都会发生变化(即每次拔出/重新插入后都会有所不同).

由于这些设备都返回0iSerialNumber,我觉得我基本上这里拧,但我想我会折腾出在这里,看看是否有人有任何想法.是否有一些通用设施可以将一些"令牌"写入我可以读回的USB设备?我在USB标准的快速浏览/谷歌搜索中没有看到任何内容,但是像这样的设施肯定会做到这一点......

有任何想法吗?

gai*_*ige 6

不幸的是,没有好的方法可以做到这一点(如果你想出一个,请在这里发布,因为我一直试图想出一个多年).

正如您所推测的那样,问题在于设备本身没有唯一的ID.如果设备具有唯一的序列号(在IOKit属性字典中公开),您可以处理它,如果您可以访问的设备上有一点用户可寻址的闪存,那么您可以写入它,但是就我能够神圣而言,没有任何东西.

到目前为止,我唯一能做的就是跟踪位置,并告诉人们如果想要识别设备,可以将设备连接到相同的端口.但是,在我的情况下,我确实有一组可预测的设备,它们自己处理序列号,所以我可以通过直接查询串行线路另一端的设备来做一些事情.