Вопрос или проблема
Свежая установка 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):
- Сканировать и анализировать (значок лупы)
- Перейти к “USB Device Descriptor” в дереве устройств
- Из выпадающего списка Custom VID/PID выбрать “FTDI Default”
- Открыть окно программирования устройств (значок молнии)
- Подтвердить, выбрав “Программировать”
- Из того же окна и после программирования выбрать “Переключить порты”
- Закрыть окно
- Сканировать повторно и подтвердить обновленные 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 для дальнейшей поддержки.