无法打开端口/ 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'" 
  1. 使用上面的行创建一个新规则文件/etc/udev/rules.d/99-axe027.rules

  2. 通过运行sudo udevadm control --reload重新加载规则。 或重启。

  3. 如果已插入,请拔下设备的电源插头。

  4. 插入设备。