FTDI USB к последовательному: /dev/ и UDEV не обнаруживают и не монтируют устройство

Вопрос или проблема

Свежая установка Ubuntu 22.04.5 (bare-metal). Характеристики:

  • Gigabyte Technology Co., Ltd. B650 GAMING X AX
  • AMD® Ryzen 9 7900x3d 12-ядерный процессор × 24
  • NVIDIA GeForce RTX 3060/PCIe/SSE2 / NVIDIA Corporation GA106

Попытка разработать FPGA с помощью Vivado 2024.1 и не удается установить связь с Numato Mimas A7 через встроенный чип USB к последовательному интерфейсу FT2232H. Я мог успешно подключать другие устройства FTDI, и драйверы USB создают /dev/ пути. Я даже заказал вторую плату разработки Mimas, думая, что получил дефектный экземпляр. Однако обе платы Mimas ведут себя одинаково.

Информация терминала

Соответствующий вывод lsusb показывает:

 ...
Шина 001 Устройство 005: ID 2a19:1009 Numato Systems Pvt. Ltd Mimas Artix 7 FPGA Module
 ...

Вывод dmesg при подключении Mimas показывает:

[Nov26 23:11] usb 1-4: новое устройство USB высокой скорости номер 5 с использованием xhci_hcd
[  +0.214620] usb 1-4: Новое USB устройство обнаружено, idVendor=2a19, idProduct=1009, bcdDevice= 7.00
[  +0.000006] usb 1-4: Новые строки USB устройства: Mfr=1, Product=2, SerialNumber=3
[  +0.000002] usb 1-4: Продукт: Mimas Artix 7 FPGA Module
[  +0.000002] usb 1-4: Производитель: Numato Lab
[  +0.000001] usb 1-4: SerialNumber: NXXXXXXX

Примечание: Здесь нет записей usb-serial, usb-core или ftdi_sio. С другими устройствами FTDI, такими как мой Digilent Analog Discovery, я вижу эти дополнительные записи

Вывод udevadm monitor при подключении Mimas показывает:

KERNEL[1467.971766] add      /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4 (usb)
KERNEL[1467.998258] add      /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4/1-4:1.0 (usb)
KERNEL[1468.003203] add      /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4/1-4:1.1 (usb)
KERNEL[1468.003222] bind     /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4 (usb)
UDEV  [1468.006816] add      /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4 (usb)
UDEV  [1468.008083] add      /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4/1-4:1.0 (usb)
UDEV  [1468.008105] add      /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4/1-4:1.1 (usb)
UDEV  [1468.010333] bind     /devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-4 (usb)

Примечание: Снова нет записей usb-serial, driver или ftdi_sio. С другими устройствами FTDI, такими как мой Digilent Analog Discovery, я вижу эти дополнительные записи

Вывод после установки логирования через udevadm control --log-priority=debug и journalctl -f во время подключения:

Nov 27 01:22:37 AAbuntu22 mtp-probe[9119]: проверка шины 5, устройства 10: "/sys/devices/pci0000:00/0000:00:08.1/0000:10:00.4/usb5/5-2"
Nov 27 01:22:37 AAbuntu22 mtp-probe[9119]: шина: 5, устройство: 10 не является MTP устройством
Nov 27 01:22:37 AAbuntu22 systemd-udevd[9117]: 5-2: 'mtp-probe /sys/devices/pci0000:00/0000:00:08.1/0000:10:00.4/usb5/5-2 5 10'(выход) '0'
Nov 27 01:22:37 AAbuntu22 systemd-udevd[9117]: 5-2: Процесс 'mtp-probe /sys/devices/pci0000:00/0000:00:08.1/0000:10:00.4/usb5/5-2 5 10' прошел успешно.
Nov 27 01:22:37 AAbuntu22 systemd-udevd[9117]: 5-2: Обработка узла устройства '/dev/bus/usb/005/010', devnum=c189:521
Nov 27 01:22:37 AAbuntu22 systemd-udevd[9117]: 5-2: sd-device: Создан файл базы данных '/run/udev/data/c189:521' для '/devices/pci0000:00/0000:00:08.1/0000:10:00.4/usb5/5-2'
Nov 27 01:22:37 AAbuntu22 systemd-udevd[9117]: 5-2: Не удалось получить дескриптор отслеживания, игнорирование: Нет такого файла или каталога

Примечание: Еще раз, никаких UDEV не приходит на помощь

Фон:

В дистрибутиве Vivado 2024.1 есть 3 файла .rules, которые добавляются в /ect/udev/rules.d/ после запуска скрипта установки “cable-drivers”. Они были написаны в 2012-2016 годах для поддержки устройств Digilent и Xilinx. Больше информации здесь. Например, в 52-xilinx-ftdi-usb.rules есть следующая строка:

ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{manufacturer}=="Xilinx", MODE:="666"

Очевидно, что мое устройство не было включено в вышеуказанное правило FTDI, но я попытался добавить свою строку в этот файл, используя ATTRS{idVendor}=="2a19" и ATTRS{idProduct}=="1009" вместо показанных ATTRS. После применения udevadm control --reload, udevadm trigger и даже перезагрузки, это не оказало влияния ни на вывод dmesg, ни на вывод udevadm monitor. Я попробовал создать свой собственный файл правила 10-numato-ftdi-usb.rules в том же месте:

ATTRS{idVendor}=="2a19", ATTRS{idProduct}=="1009", ACTION=="add", MODE="666", RUN+="/bin/sh -c 'echo $(date) $(env) >>/tmp/udev-debug.log'"

К сожалению, это имело тот же нулевой эффект как с логированием, так и без него.

Я просмотрел и попробовал все предложения из этих ссылок:

(Ссылка 1):
Правила UDEV для FTDI не полностью работают
(хотя у этого пользователя есть преимущество в наличии установленного устройства в /dev/).

  • Я подтвердил, что мой пользователь находится во всех соответствующих группах.

(Ссылка 2):Ubuntu20.04 ttyUSB не отображается при подключении устройства FTDI

  • Проверил, что пакет linux-modules-extra установлен через sudo apt install linux-generic

(Ссылка 3):
https://stackoverflow.com/questions/45054026/ftdi-device-not-detected (хотя этот пользователь пытается использовать устаревший драйвер FTDI D2XX)

  • Попробовал удалить и повторно включить модули ftdi_sio (и ‘usb-serial’) через rmmod и modprobe

(Ссылка 4):
FT232 – ни один ttyUSB* устройство не будет создано после подключения

  • Подтвердил, что мое устройство не находится в черном списке

(Ссылка 5):
/dev/ttyUSB0 отсутствует в Ubuntu 22.04

  • В логах не было проблем с brltty, но я все равно его удалил.

Судя по всему, это проблема с ядром, но я открыт для предложений.

Согласно Numato, это “не дефектный экземпляр, это ограничение в последних версиях Ubuntu, которое не принимает пользовательский VID/PID”.

Вариант 1:
Динамически ассоциировать устройство с драйвером ftdi_sio:

sudo modprobe ftdi_sio
echo "2a19 1009" | sudo tee /sys/bus/usb-serial/drivers/ftdi_sio/new_id

Вариант 2:
Задать VID и PID на значения по умолчанию FTDI (0403 и 6010 соответственно) через FT Prog, доступный на сайте FTDI Chip.

Используя FT Prog (вкладка EEPROM):

  1. Сканировать и анализировать (значок лупы)
  2. Перейти к “USB Device Descriptor” в дереве устройств
  3. Из выпадающего списка Custom VID/PID выбрать “FTDI Default”
  4. Открыть окно программирования устройств (значок молнии)
  5. Подтвердить, выбрав “Программировать”
  6. Из того же окна и после программирования выбрать “Переключить порты”
  7. Закрыть окно
  8. Сканировать повторно и подтвердить обновленные VID и PID в “USB Device Descriptor”

Ответ или решение

Проблема с обнаружением и монтированием устройства FTDI USB к серийному интерфейсу в операционной системе Ubuntu 22.04.5 может возникнуть по различным причинам, и в данном случае сценарий требует всестороннего анализа, чтобы выделить ключевые моменты для решения.

1. Осмотр оборудования и конфигурации

Ваши аппаратные характеристики, включая материнскую плату Gigabyte B650 с процессором AMD Ryzen 9 7900x3d и видеокартой NVIDIA GeForce RTX 3060, полностью соответствуют требованиям для работы с FPGA-разработками. Убедитесь, что драйверы для USB-портов (xhci_hcd) правильно загружены. Подключение других устройств FTDI показывает, что ваша конфигурация USB и драйверы в целом работают корректно.

2. Выходные данные терминала

Вывод команд lsusb и dmesg показывает, что устройство Mimas Artix 7 FPGA определяется системой, однако не загружаются соответствующие модули, такие как ftdi_sio. Это может указывать на проблемы с совместимостью драйверов или необходимости ручного добавления идентификаторов VID и PID.

3. Действия UDEV

Ваши попытки добавить правила UDEV не сработали, поскольку система не распознает подключенное устройство как тип устройства, поддерживаемый ftdi_sio. Применение команды udevadm control --reload для обновления правил также не привело к желаемому эффекту.

4. Возможные решения

Теперь перейдем к возможным путям решения проблемы:

Опция 1: Динамическое связывание с драйвером

Вы можете попытаться динамически ассоциировать устройство с драйвером ftdi_sio. Используйте следующую команду:

sudo modprobe ftdi_sio
echo "2a19 1009" | sudo tee /sys/bus/usb-serial/drivers/ftdi_sio/new_id

Такие действия позволят системе идентифицировать ваше устройство и использовать необходимые драйвера.

Опция 2: Перепрограммирование VID и PID

По словам поддержки Numato, существует ограничение для кастомных VID/PID в последних версиях Ubuntu. Если вы можете перепрограммировать VID и PID вашего устройства на стандартные FTDI значения (0403 и 6010), используйте утилиту FT Prog для этого. Подробная последовательность действий уже была описана в вашем запросе.

5. Проверка и диагностика

После выполнения предложенных шагов проверьте, появилась ли запись в /dev/, используя команду:

ls /dev/ttyUSB*

Также полезно отслеживать события UDEV в реальном времени:

udevadm monitor

Это позволит вам увидеть, как система реагирует на подключение устройства.

Заключение

Ситуация, возникающая с вашим FTDI устройством, требует внимательного подхода. Приведенные решения могут помочь в устранении проблемы с обнаружением вашего FPGA-разработческого устройства. Если ни одно из предложений не сработает, возможно, стоит рассмотреть возможность обращения за помощью к разработчикам вашего устройства или в сообщество Ubuntu для дальнейшей поддержки.

Оцените материал
Добавить комментарий

Капча загружается...