Не могу открыть порт /dev/ttyUSB0
У меня есть два микроконтроллера PICAXE. На самом деле, у меня есть Ubuntu 14.04 LTS (Trusty Tahr).
Мне пришлось скачать приложение LinAXEpad и установить эти библиотеки:
sudo apt-get install libgtk2.0-0: libcairo2 i386: i386 libpango1.0-0: libgdk-pixbuf2.0-0 i386: i386 libstdc ++ 6: i386
Я следовал этим инструкциям:
4.0) Установка Linux
Кабель AXE027 содержит внутреннюю электронную схему на основе преобразователя FTDI USB-to-serial. Этот чип уже поддерживается установкой Linux по умолчанию через драйвер ядра с именем 'ftdi_sio' (ядро 2.4.20 и выше). Поэтому загрузка драйвера не требуется.
Тем не менее, поскольку во многих различных продуктах разных компаний используется один и тот же чип FTDI, каждому продукту присваивается уникальный номер идентификатора продукта в целях идентификации.
Этот уникальный идентификатор продукта запрограммирован в микросхему внутри кабеля, поэтому при подключении кабеля к компьютеру его можно однозначно идентифицировать.
Уникальный идентификатор продукта для USB-кабеля AXE027 - 0xbd90. Идентификатор поставщика - 0x0403. Однако драйвер по умолчанию, ftdi_sio, установленный в большинстве дистрибутивов Linux, распознает только пару (по умолчанию) идентификаторов продукта для чипа FTDI (например, 0x6001). Поэтому необходимо "исправить" драйвер, чтобы он правильно поддерживал идентификатор продукта AXE027 0xbd90.
Все три параметра проверяются на корректную работу одним и тем же простым способом - после подключения кабеля AXE027 к USB-порту в операционной системе автоматически должен появиться файл символической ссылки /dev/ttyUSB0.
Обратите внимание, что любое приложение, использующее кабель AXE027, должно обращаться к этой символической ссылке USB:
/ DEV / ttyUSB0
Что не совпадает с традиционным последовательным портом (например, "COM1"):
/ DEV / ttyS0
4.2) Опция Linux Patch Option 2 (рекомендуется) Создайте новое правило udev, чтобы правило modprobe автоматически применялось при каждой загрузке компьютера. Создайте новый файл (например, используя KWrite, gedit или аналогичный текстовый редактор) с именем:
/etc/udev/rules.d/99-axe027.rules
Для этого откройте консоль терминала и введите:
sudo kwrite /etc/udev/rules.d/99-axe027.rules
Затем введите следующий текст (обратите внимание, что последние две строки ниже должны быть введены как одна длинная строка), а затем сохраните файл.
# /etc/udev/rules.d/99-axe027.rules
# contains axe027 udev rule to patch default
# FTDI product id to AXE027 product id (0xbd90)
SYSFS{idProduct}=="bd90",
SYSFS{idVendor}=="0403",
RUN+="/sbin/modprobe -q ftdi_sio product=0xbd90 vendor=0x0403"
Новое правило будет всегда применяться при загрузке системы. Чтобы немедленно опробовать новое правило без перезагрузки, откройте консоль терминала и введите:
(Оригинальный код)
sudo udevcontrol reload_rules
(Мой код)
sudo udevadm control --reload-rules
Затем я попытался запустить приложение LinAXEpad, открыв: VIEW>>OPTIONS (выберите микроконтроллер) и, наконец, "щелкнуть" на ПО
Я получил это:
Не могу открыть порт /dev/ttyUSB0 (err=2: нет такого файла или каталога)
Что я могу сделать?
Попытка с LSUSB: http://www.subirimagenes.com/otros-lsusb-9076605.html
Попытка с DMESG: http://www.subirimagenes.com/otros-dmesg-9076607.html
2 ответа
В последних версиях ядра (определенно с 14.04 LTS) ftdi_sio
Модуль больше не принимает параметры продукта и поставщика. Вместо этого вы должны вручную записать значение в /sys/bus/usb-serial/drivers/ftdi_sdio/new_id
, Вы можете автоматизировать это, используя следующее правило udev:
ACTION=add, ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bd90", RUN+="/sbin/modprobe", RUN+="/bin/sh -c 'echo 0403 bd90 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
Создать новый файл правил
/etc/udev/rules.d/99-axe027.rules
с линией вышеПерезагрузите правила, запустив
sudo udevadm control --reload
, Или перезагрузиться.Отключите устройство, если оно подключено.
Подключите устройство.
dmesg
дает несколько полезных советов (см. картинку, которую вы разместили).
- Ваше правило для
udev
должно быть неверно: смотрите строки, гдеftdi_sio
говорит, что параметры неизвестны / игнорируются. В любом случае загрузка этого модуля имеет некоторый результат: ваш адаптер теперь называется последовательным адаптером, аttyUSB0
создан, но говорят, что драйвер является экспериментальным, и вы должны спроситьlinux-usb@vger.kernel.org
добавить свой адаптер к правильному драйверу (я бы сделал это на вашем месте, скорее всего, это лучший путь).
Теперь о разрешении отказано, вы могли бы:
- перечислить
/dev
папка сls -l
найти группу, владеющуюttyUSB0
, (наверноеtty
). Должно иметьrw
разрешение на это. - сделать пользователя, работающего с приложением, членом этой группы, например с
sudo adduser theuser thegroup
, Это должно исправить проблему с разрешениями.
И кстати, когда вывод команды вроде modprobe -c
слишком велик, вы можете либо направить его на меньший, либо выполнить grep:
sudo modprobe -c | less
sudo modprobe -c | grep ftdi_sio