Не удается найти ttyUSB*

#linux-kernel #embedded #embedded-linux #ftdi #zynq

#linux-ядро #встроенный #встроенный-linux #ftdi #zynq

Вопрос:

У меня есть плата PYNQ-Z2, и она содержит микросхему FT2232HQ, которая преобразует данные с USB в JTAG и UART

Проблема в том, что плата работает и обнаруживается Vivado (я могу ее запрограммировать), но устройство не отображается как /dev/ttyUSB* устройство, оно отображается как /dev/ftdi-x (где x — случайное число), и я не могу открыть последовательный порт с помощью этого файла устройства.

Я использовал lsusb command и обнаружил, что чип обнаружен правильно:

 Bus 003 Device 017: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
  

После этого я попытался проверить файл системного журнала и заметил два странных поведения, первое — при подключении платы распознаются два устройства ttyUSB, а не одно! /dev/ttyUSB0 amp; /dev/ttyUSB1 .

второе поведение заключается в том, что эти два устройства немедленно отключаются после их подключения.

Вот полный системный журнал:

 Oct 27 11:45:20 ao20xa kernel: [73109.798748] usb 3-4: new high-speed USB device number 17 using xhci_hcd
Oct 27 11:45:21 ao20xa kernel: [73109.949757] usb 3-4: New USB device found, idVendor=0403, idProduct=6010
Oct 27 11:45:21 ao20xa kernel: [73109.949761] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Oct 27 11:45:21 ao20xa kernel: [73109.949763] usb 3-4: Product: TUL
Oct 27 11:45:21 ao20xa kernel: [73109.949765] usb 3-4: Manufacturer: Xilinx
Oct 27 11:45:21 ao20xa kernel: [73109.949767] usb 3-4: SerialNumber: 1234-tul
Oct 27 11:45:21 ao20xa kernel: [73109.950844] ftdi_sio 3-4:1.0: FTDI USB Serial Device converter detected
Oct 27 11:45:21 ao20xa kernel: [73109.950899] usb 3-4: Detected FT2232H
Oct 27 11:45:21 ao20xa kernel: [73109.951100] usb 3-4: FTDI USB Serial Device converter now attached to ttyUSB0
Oct 27 11:45:21 ao20xa kernel: [73109.951815] ftdi_sio 3-4:1.1: FTDI USB Serial Device converter detected
Oct 27 11:45:21 ao20xa kernel: [73109.951861] usb 3-4: Detected FT2232H
Oct 27 11:45:21 ao20xa kernel: [73109.952058] usb 3-4: FTDI USB Serial Device converter now attached to ttyUSB1
Oct 27 11:45:21 ao20xa mtp-probe: checking bus 3, device 17: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-4"
Oct 27 11:45:21 ao20xa mtp-probe: bus: 3, device: 17 was not an MTP device
Oct 27 11:45:21 ao20xa systemd-udevd[18701]: Process '/bin/sh -c 'basename $(dirname $(realpath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/device)) > /sys/bus/usb/drivers/ftdi_sio/unbind'' failed with exit code 1.
Oct 27 11:45:21 ao20xa kernel: [73110.089464] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
Oct 27 11:45:21 ao20xa kernel: [73110.089536] ftdi_sio 3-4:1.1: device disconnected
Oct 27 11:45:21 ao20xa kernel: [73110.089818] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
Oct 27 11:45:21 ao20xa kernel: [73110.089865] ftdi_sio 3-4:1.0: device disconnected
Oct 27 11:45:21 ao20xa snapd[16139]: hotplug.go:199: hotplug device add event ignored, enable experimental.hotplug
Oct 27 11:45:21 ao20xa upowerd[1835]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0
Oct 27 11:45:21 ao20xa snapd[16139]: hotplug.go:199: hotplug device add event ignored, enable experimental.hotplug
Oct 27 11:45:21 ao20xa upowerd[1835]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.1
Oct 27 11:45:21 ao20xa systemd-udevd[18701]: Process '/bin/sh -c 'basename $(dirname $(realpath /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/device)) > /sys/bus/usb/drivers/ftdi_sio/unbind'' failed with exit code 1.
Oct 27 11:45:21 ao20xa upowerd[1835]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4
Oct 27 11:45:21 ao20xa ModemManager[1044]: <info>  (tty/ttyUSB0): released by device '/sys/devices/pci0000:00/0000:00:14.0/usb3/3-4'
Oct 27 11:45:21 ao20xa ModemManager[1044]: <info>  (tty/ttyUSB1): released by device '/sys/devices/pci0000:00/0000:00:14.0/usb3/3-4'
Oct 27 11:45:21 ao20xa ModemManager[1044]: <info>  Couldn't check support for device '/sys/devices/pci0000:00/0000:00:14.0/usb3/3-4': Operation was cancelled
Oct 27 11:45:21 ao20xa upowerd[1835]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0
Oct 27 11:45:21 ao20xa upowerd[1835]: unhandled action 'unbind' on /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.1

  

Итак, мне интересно, может ли кто-нибудь помочь решить эту проблему.

Комментарии:

1. Два устройства ttyUSB будут вызваны тем, что FT2232HQ имеет два дескриптора интерфейса USB (проверьте bNumInterfaces значение в lsusb -v выходных данных), каждый из которых реализует последовательный порт. Остальная часть странного поведения с исчезновением устройств ttyUSB, по-видимому, связана с некоторыми пользовательскими правилами UDEV, запускающими какой-то пользовательский скрипт в вашей системе.

2. Итак, для начала попробуйте grep -l ftdi_sio /etc/udev/rules.d/*.rules , а затем перечислите содержимое соответствующих файлов * .rules . Если в списке ничего нет, попробуйте вместо этого использовать /lib/udev/rules.d/*.rules .

3. Я нашел один файл в первом каталоге, второй был пуст, первый файл был: /etc/udev/rules.d/10-lattice.rules и вот его содержимое: ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0666", SYMLINK ="ftdi-%n", RUN ="/bin/sh -c 'basename $(dirname $(realpath /sys%p/device)) > /sys/bus/usb/drivers/ftdi_sio/unbind'",RUN ="/root/ftdi_fixer.py"

4. Большое вам спасибо, лан Эбботт , я прокомментировал эту единственную строку в файле, и теперь все работает, я попробовал UART, и он работает нормально. Похоже, что в этой строке запускается скрипт для отвязки устройства после его подключения.

5. Но мне интересно, не должен ли этот скрипт останавливать как UART, так и JTAG, почему JTAG работал?

Ответ №1:

В моем случае мой пользователь не был в группе dialout . Когда я добавил:

 sudo adduser <my_user> dialout
  

И вышел из системы и, наконец, после нескольких часов поиска ответа мне удалось подключиться к последовательному.

Ответ №2:

Как упоминалось в комментариях Яна Эббота и Абади, запуск:

 grep -l ftdi_sio /etc/udev/rules.d/*.rules
  

и комментирование строк там помогло. Для меня они были:

 #lattice
#BUS=="usb", ACTION=="add", ATTRS{idVendor}=="1134", ATTRS{idProduct}=="8001", MODE=="0666", GROUP=="plugdev", SYMLINK ="lattice-%n"
#FTDI
#SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE=="0666", GROUP=="plugdev", SYMLINK ="ftdi-%n"
#SUBSYSTEM=="usb",  ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", RUN ="/bin/sh -c 'basename %p >/sys/bus/usb/drivers/ftdi_sio/unbind'"
  

Похоже, существовало правило, которое вызывало отключение (переименование ttyUSB * в ftdi- *)