Этот преобразователь прекрасно работает со штатным драйвером ядра linux cdc_acm, но нужно изменить некоторые регистры преобразователя в момент его подключения. Для этого я написал небольшую программу и правило для udev. В момент подключения преобразователя срабатывает правило udev, запускает программу и передает ей адрес преобразователя на шине USB. Программа меняет нужные регистры и прекращает свою работу. И так каждый раз при переподключении преобразователя.
Программа распространяется в исходных кодах. Сборка и установка:
Код: Выделить всё
make
cp corExar /sbin/
cp 99-corExar.rules /etc/udev/rules.d/
udevadm control --reload
и переподключить преобразователь.
Программу проверял на USB-RS232, но должно заработать и на USB-RS485/С2000-USB, т.к. я меняю не один регистр (достаточно для USB-RS232), а четыре регистра, которые я подсмотрел раньше при работе с С2000-USB на этой же микросхеме (эти регистры устанавливал драйер от производителя микросхемы).
Возможно есть способ записать параметры инициализации этих регистров в постоянную память микросхемы, но как это сделать не написано в документации.
Добавлено позже. Проверил так-же на USB-RS485. В системе должны быть установлены библиотеки libusb, libusb-dev (названия могут отличатся в зависимости от дистрибутивов). Так же может потребоваться изменить путь к libusb в makefile. В постах ниже выяснилось, что в Ubuntu встроен непропатченный драйвер от Exar, с которым преобразователь не заработает. Необходимо добавить этот модуль в черный список или удалить.