我有两个 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(err=2:没有此文件或目录)
我能做些什么?
尝试LSUSB:http://www.subirimagenes.com/otros-lsusb-9076605.html
尝试二甲基硅油:http://www.subirimagenes.com/otros-dmesg-9076607.html
答案1
dmesg
为您提供一些有用的提示(请参阅您发布的图片)。
- 您的规则肯定是错误的:请参见说明参数未知/被忽略的
udev
行。无论如何,加载此模块会产生一些结果:您的适配器现在称为串行适配器并已创建,但据说该驱动程序是实验性的,您应该要求将您的适配器添加到正确的驱动程序(我会代替您这样做,这很可能是更好的方法)。ftdi_sio
ttyUSB0
[email protected]
现在,关于被拒绝的权限,您可以:
- 列出
/dev
文件夹以ls -l
查找拥有 的组ttyUSB0
。(可能是tty
)。它应该rw
对该文件夹具有权限。 - 让运行你的应用程序的用户成为该组的成员,例如
sudo adduser theuser thegroup
。它应该可以解决权限问题。
顺便说一句,当类似命令的输出modprobe -c
太大时,您可以将其通过管道传输到 less 或 grep:
sudo modprobe -c | less
sudo modprobe -c | grep ftdi_sio
答案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
。或者重启。如果已插入设备,请拔下它。
插入设备。