Перейти к содержанию

Установка CDC-драйвера

Когда нужен CDC-драйвер для виртуального COM-порта UnitX/open-dev устройств, как установить его в Windows и настроить права доступа в Linux.

Большинство устройств UnitX/open-dev определяются как USB HID или виртуальный последовательный порт CDC. В Windows 8/10/11, Linux и macOS отдельный драйвер обычно не нужен. Для CDC-интерфейса система создаёт виртуальный последовательный порт; HID-интерфейс как COM-порт не отображается.

Устанавливайте CDC-драйвер только если устройство не появилось как последовательный порт.

Windows 7

  1. Скачайте архив od_cdc_driver.zip.
  2. Распакуйте архив и запустите установку.
  3. Если Windows покажет предупреждение “Не удалось проверить издателя”, выберите Все равно установить.
  4. Переподключите устройство и проверьте COM-порт в диспетчере устройств.

Установка Windows 7 по шагам

Windows 8

Обычно Windows 8 использует системный CDC-драйвер.

Windows 11: код 10

Если Windows 11 пишет “Запуск этого устройства невозможен (код 10)”, установите встроенный драйвер Microsoft вручную:

  1. Откройте Диспетчер устройств.
  2. Найдите устройство с жёлтым значком.
  3. Выберите Обновить драйвер.
  4. Нажмите Выбрать драйвер из списка доступных драйверов.
  5. Выберите категорию Порты (COM и LPT).
  6. В левом списке выберите Корпорация Microsoft, в правом — Устройство с последовательным интерфейсом USB.
  7. Завершите установку и переподключите устройство.

Linux

Драйвер обычно не нужен. Проверьте порт:

ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null

Если порт появился, но программа сообщает об отказе в доступе, проверьте его группу:

ls -l /dev/ttyACM0

В Debian и Ubuntu последовательные порты обычно принадлежат группе dialout. Добавьте в неё текущего пользователя:

sudo usermod -aG dialout "$USER"

Если программа работает как служба, укажите вместо $USER имя её учётной записи. После изменения группы выйдите из системы и войдите снова. В дистрибутивах, где порт принадлежит группе uucp или другой группе, укажите эту группу вместо dialout.

Если порт занимает ModemManager

ModemManager может автоматически открыть CDC-порт и не дать вашей программе получить к нему доступ. Если права настроены, но программа не может открыть порт, остановите службу сейчас и запретите её запуск после перезагрузки:

sudo systemctl disable --now ModemManager.service

Проверьте состояние службы:

systemctl is-enabled ModemManager.service
systemctl is-active ModemManager.service

Если служба запускается снова через зависимости, полностью заблокируйте её:

sudo systemctl mask --now ModemManager.service

Чтобы вернуть службу обратно, снимите блокировку и включите её:

sudo systemctl unmask ModemManager.service
sudo systemctl enable --now ModemManager.service

Важно: после отключения ModemManager системные 3G/4G/LTE-модемы перестанут управляться через NetworkManager.

Правила udev для HID и libusb

Для CDC-порта отдельное правило udev обычно не требуется. Программам, которые работают с USB HID или libusb, может понадобиться правило для VID и PID конкретного устройства. Не применяйте приведённые ниже правила к другим устройствам без проверки VID и PID.

Пример udev

Для доступа к HID- и CDC-интерфейсам WatchDog создайте /etc/udev/rules.d/98-unitx.rules:

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a26a", GROUP="dialout", MODE="0660"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a26d", GROUP="dialout", MODE="0660"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a26e", GROUP="dialout", MODE="0660"
KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a26e", GROUP="dialout", MODE="0660"

Если последовательные порты принадлежат группе uucp или другой группе, замените dialout на её имя. Подробнее: драйверы и права доступа WatchDog.

После создания или изменения правила примените его и переподключите устройство:

sudo udevadm control --reload-rules
sudo udevadm trigger

Не устанавливайте MODE="0666" без необходимости: такое правило открывает устройство всем локальным пользователям. Запуск программы от root подходит для разовой диагностики, но не для постоянной работы.

macOS

Отдельный драйвер обычно не нужен. После подключения устройства проверьте порт:

ls /dev/cu.usbmodem* /dev/cu.usbserial* 2>/dev/null

Проверка

После установки переподключите устройство. Если драйвер выбран правильно, в диспетчере устройств Windows появится новый COM-порт, в Linux — устройство /dev/ttyACM* или /dev/ttyUSB*, а в macOS — /dev/cu.usbmodem* или /dev/cu.usbserial*.