Бесплатные пары VID PID для открытых проектов

    Для однозначного определения устройств, интерфейс USB использует 16-битные идентификаторы: VendorID и ProductID. Если ваш проект использует стандартную пару… ну, думаю вы уже знаете.

    Однако, опенсорсу иногда везёт, и получить легитимные идентификаторы можно бесплатно.



    Основная проблема проектов с неуникальной парой VID PID, в сложности подключения нескольких устройств, имеющих одинаковые идентификаторы. Предположим к компьютеру подключают два устройства, VID и PID у них одинаковые, но им нужны разные драйвера. В результате будет работать только одно из них, при переключении драйвера придётся устанавливать заново. Такая ситуация наблюдается у многих проектов, использующих V-USB, и не только. Кроме того, уникальная пара идентификаторов, даёт шанс получить право разместить на проекте логотип USB.

    Для получения VendorID необходимо обратиться к USB-IF и заплатить пошлину 3500–5000 $, это позволяет выпустить 65535 различных устройств. Несложно догадаться, что существует большое количество ProductID, которые никогда не будут использованы. Довольно редко, некоторые компании, устраивают раздачу неиспользованных PID.

    Недавно, pid.codes получили права на VendorID = 0x1209, изначально он принадлежит InterBiometrics, поэтому PID от 0x1000 до 0x1FFF зарезервированы.

    Самое интересное, этот VID зарегистрировали ещё до появления USB-IF, что мешает объявить эти пары идентификаторов нелегитимными.

    Как получить халявную пару идентификаторов написано здесь.
    1. Создайте форк репозитория.
    2. В директории org, создайте папку с названием проекта. В ней создайте файл index.md
    ---
    layout: org
    title: Проект
    ---
    Краткое описание проекта и его назначения.

    3. Выберите любой свободный PID, его не должно быть в списке. Затем создайте папку с путем /1209/<выбранный PID>. Внутри создайте файл index.md
    ---
    layout: pid
    title: Имя устройства
    owner: Проект
    license: MIT
    site: Сайт проекта(можно любую ссылку, где написано о проекте и есть ссылка на репозиторий)
    source: Репозиторий проекта на Гитхаб
    ---
    

    4. Сделайте pull request.

    В случае принятия запроса, вы станете обладателем легитимной пары VendorID ProductID, с неограниченным сроком действия.

    Проект должен распространятся под лицензией MIT, GPL или аналогичной; иметь публичный репозиторий, например, на гитхабе; и иметь USB интерфейс.
    Share post

    Comments 11

      +5
      Можно придумать открытый способ идентификации устройств, выдать всем устройствам его поддерживабщим одинаковые VID+PID на шине USB, и сделать свою собственную шину, где проблема с драйверами будет решена.
        +3
        Хорошая идея.

        Свою собственную шину, разумеется, делать не надо. Достаточно только сделать драйвер, который ОС будет запускать для данной пары VID+PID. Этот драйвер запрашивал бы по стандартизированному для данной схемы протоколу более подробную информацию об устройстве (например, 128-битный UUID) и, в зависимости от результата, подгружал уже драйвер конкретного устройства.
          0
          По идее, механизм подргузки нужного конкретного драйвера для устройства в зависимости от полученного UUID с точки зрения ОС и есть «шина».
            +3
            Под словом «шина» обычно имеется в виду физический интерфейс с заданными протоколами обмена. То, что механизм подгрузки одного драйвера другим в некоторых ОС называется «шиной» — это специфика архитектуры и терминологии конкретной ОС.

            Хотя с некоторой натяжкой и можно сказать, что шина USB, дополненная протоколом UUID, является уже другой шиной, но все же это вводит в заблуждение. Мы же все-таки ведем речь о сугубо программном решении, которое не изменяет стандартные протоколы обмена USB, а максимум — добавляет класс устройств, аналогично другим USB-классам (HID и т.д.)
              +1
              Да. Тут вы правы…
          0
          Для своих устройств можно ещё по Serial Number делать идентификацию. Или по строке производителя или продукта.
          +8
          А если нужно драйвер подписать цифровой подписью, то обращайтесь.

          reactos.org/wiki/Driver_Signing
          0
          Микрочип, например, может дать сублицензию на vid&pid www.microchip.com/usblicensing/Default.aspx на нужды девелоперов или до 10 тысяч экземпляров бесплатно ;)
            +2
            Микрочип вообще молодцы. Они и для MAC-адресов предоставляют решение. Покупать у них чипы 24AA02E48, в каждом из которых прошит уникальный MAC-адрес. Выгодно для мелкосерийного производства устройств с Ethernet.
              0
              Silabs еще выдает pid, насколько помню.

            Only users with full accounts can post comments. Log in, please.