无法打开端口/ 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转串口转换器芯片。 默认的Linux安装已经通过名为’ftdi_sio’的内核驱动程序(内核2.4.20及更高版本)支持该芯片。 因此,不需要驱动程序下载。
但是,由于许多不同公司的许多不同产品都使用相同的FTDI芯片,因此每个产品都有一个唯一的“产品ID”号用于识别目的。
这种独特的产品ID被编程到电缆内部的芯片中,因此当电缆连接到计算机时,它可以被唯一识别。
AXE027 USB电缆的唯一产品ID为0xbd90。 供应商ID为0x0403。 但是,大多数Linux发行版安装的默认驱动程序ftdi_sio只能识别FTDI芯片的几个(默认)产品ID(例如0x6001)。 因此,需要“修补”驱动程序,以便它正确支持AXE027的0xbd90产品ID。
以相同的简单方式检查所有三个选项的正确操作 – 将AXE027电缆插入USB端口后,名为/ dev / ttyUSB0的符号链接文件应自动出现在操作系统中。
请注意,使用AXE027电缆的任何应用程序都需要解决此USB符号链接:
的/ dev / ttyUSB0
这与传统的串行(例如“COM1”)端口链接不同:
的/ dev / ttyS0来
4.2)Linux修补程序选项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(选择微控制器),最后“点击”FIRMWARE
我懂了:
无法打开端口/ dev / ttyUSB0(错误= 2:没有这样的文件或目录)
我能做什么?
尝试使用LSUSB : http : //www.subirimagenes.com/otros-lsusb-9076605.html
尝试使用DMESG : http : //www.subirimagenes.com/otros-dmesg-9076607.html
dmesg
为您提供了一些有用的提示(请参阅您发布的图片)。
- 您对
udev
规则必须是错误的:请参阅ftdi_sio
告诉参数未知/忽略的行。 无论如何,加载这个模块有一些结果:您的适配器现在称为串行适配器并且创建了ttyUSB0
,但据说驱动程序是实验性的,您应该请求linux-usb@vger.kernel.org
将适配器添加到正确的司机(我会在你的地方做到这一点,这很可能是更好的方式)。
现在,关于被拒绝的许可,您可以:
- 使用
ls -l
列出/dev
文件夹以查找拥有ttyUSB0
的组。 (可能是tty
)。 它应该有rw
权限。 - 让用户运行此组的应用程序成员,例如使用
sudo adduser theuser thegroup
。 它应该修复权限问题。
顺便说一句,当modprobe -c
这样的命令输出太大时,你可以把它管道化为less或grep:
sudo modprobe -c | less sudo modprobe -c | grep ftdi_sio
在最近的内核中(肯定有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
重新加载规则。 或重启。 -
如果已插入,请拔下设备的电源插头。
-
插入设备。