Уникальные идентификаторы устройств для USB, FireWire и последовательных портов - PullRequest
3 голосов
/ 09 июня 2011

Я работаю над проектом, который включает автоматическое обнаружение подключенных и отключенных USB-устройств и устройств FireWire из системы OS X.Для данного устройства система должна распознавать устройство, когда оно подключено (независимо от того, к какому порту), и загружать пакет для конкретного устройства, чтобы справиться с ним.

Ключом к выполнению этой работы, очевидно, являетсяуникальная идентификация каждого устройства.Я знаю, что USB-устройства идентифицируются по комбинации полей идентификатора поставщика и идентификатора продукта, но это не обеспечивает уникальный идентификатор, только «вид» устройства.Если у меня есть два одинаковых устройства и я подключаю их оба к компьютеру, я бы хотел как-то их различить.Есть ли общий и надежный способ сделать это, возможно, используя другие поля в дескрипторе USB?

Смежный вопрос, как это работает для последовательных портов USB?Предположим, я подключил два последовательных порта USB одной марки / модели.OS X должна дать им уникальные inode в дереве / dev.Однако предположим, что он вызывает их / dev / usbserial1 и / dev / usbserial2.Если я затем отключу порты и подключу только один из них, получит ли этот порт то же имя, что и раньше, или он просто подключится к порту / dev / usbserial1 (поскольку он единственный)?

Тот же вопрос для устройств FireWire, хотя я думаю, что устройства FireWire должны иметь 64-битный GUID.В этом случае я ищу кого-то, чтобы убедиться, что использование GUID для идентификации устройства FireWire будет надежным.Другими словами, если бы я подключил две отдельные камеры одного и того же производителя и модели, ожидал бы я, что у них будут разные GUID?

Я знаю, что смогу протестировать некоторые из них с соответствующим оборудованием, но я неВ настоящее время у меня несколько аппаратных средств, поэтому я надеюсь, что кто-то знает хотя бы некоторые из ответов на поставленные выше вопросы.

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Если вам повезет, ваши USB-устройства должны иметь уникальные серийные номера в дополнение к комбинации VID / PID. Если вы перечисляете IOUSBDevice объекты, посмотрите на свойство USB Serial Number.

0 голосов
/ 09 июня 2011

В Windows Microsoft запоминает настройки устройства по:

  • серийный номер устройства (поле iSerialNumber в дескрипторе устройства USB), если доступно
  • или иным образом, по «пути» к устройству: его шине (т.е. к какому концентратору он подключен и т. Д.) + USB VID и PID

Без серийных номеров USB-устройства практически неразличимы. Можно отличить разные USB-накопители, но для устройств, у которых нет энергонезависимой памяти любого типа (и многие USB-устройства попадают в эту категорию), они просто неразличимы, поэтому вам просто нужно приложить максимум усилий, чтобы сделать то, что пользователь ожидает.

...