Как указано в D2XX Programmer's Guide сообщает во введении:
Для Linux, Mac OS X (10.4 и более поздние версии) и Windows CE (4.2 и более поздние версии) драйвер D2XX и драйвер VCP являются взаимоисключающими опциями, так как только один тип драйвера может быть установлен в данный момент времени для заданный идентификатор устройства.
Проблема в том, что ваш Linux может автоматически загружать драйвер VCP (ftdi_sio
), и поэтому вы не можете использовать драйвер D2XX. Введите следующее в свой терминал, чтобы убедиться, что ftdi_sio
загружен:
sudo lsmod | grep -a "ftdi_sio"
По это в статье я успешно преодолел проблему. Мое рабочее решение — создать два текстовых файла в папке /etc/udev/rules.d/
. Первый отвязывает мое устройство от драйвера ftdi_sio
, а второй настраивает разрешения для моего устройства. Предположим, что первый файл, который отвязывает мое устройство, называется 98-my-device.rules
и имеет следующее содержимое:
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{product}=="FTDI Device",\
PROGRAM="/bin/sh -c '\
echo -n $id:1.0 > /sys/bus/usb/drivers/ftdi_sio/unbind;\
echo -n $id:1.1 > /sys/bus/usb/drivers/ftdi_sio/unbind\
'"
Теперь предположим, что второй файл, который позволяет использовать мое устройство без root-прав, называется 99-my-device.rules
и имеет следующее содержимое:
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{product}=="FTDI Device",\
MODE="0666"
Эти правила будут активны со следующего перезапуска или их можно применить:
sudo udevadm trigger
Атрибуты устройства (идентификатор поставщика, идентификатор продукта и описание продукта) можно получить с помощью команды sudo lsusb -v
, но это покажет слишком много информации. Вы можете отфильтровать результаты примерно так:
sudo lsusb -v | grep -a "Bus ... Device ...:\|idVendor\|idProduct\|iProduct"
После того, как вы успешно запретили Linux загружать драйвер ftdi_sio
для определенного устройства, вы можете использовать API D2XX. Чтобы получить информацию со всех подключенных устройств, попробуйте пример кода функции FT_GetDeviceInfoDetail
из Руководства программиста D2XX.
person
Akira
schedule
20.04.2017
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0 usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB1 usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB2 usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB3
. Когда я вызываю API D2XX, я также получаю четыре устройства, но это не дает мне, какое устройство ttyUSB1, какое ttyUSB2 и т.д. Это только дает мне locid, серийные номера и описания. - person GLampros   schedule 12.11.2015rmmod
). Однако мне удалось решить эту проблему более сложным способом, как показано в моем ответе. - person Akira   schedule 12.05.2017