Linux下Arduino USB to TTL 权限问题解决
在Linux中高高兴兴的安装完了Arduino,结果编译下载程序时发现竟然出错,不能下载程序,本文就来说一下这个问题。
在linux下使用usbttl均会出现usb使用权限问题,下图是我在Ubuntu15.04中的问题截图:
可以看到问题是:avrdude:ser_open():can't open device "/dev/ttyUSB0":Permission denied
解决方法
解决方法,我找到了两种,一个来自Arduino官网labs的ARDUINO IDE ON LINUX-BASED OS,一个来自文章让ubuntu串口和USB设备不用root权限访问,经尝试均可解决,更喜欢用Arduino官网的解决方案。
方法一
-
创建文件90-extraacl.rules,放到目录
/etc/udev/rulse.d/
下sudo vim /etc/udev/rules.d/90-etreacl.rules
-
粘贴以下内容:
KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>" KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>"
其中OWNER的值是用户名,比如我的linux用户名是smslit,我就可以是下面的样子:
KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="smslit" KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="smslit"
-
开启权限,注销后有效,可执行下面命令:
sudo usermod -a -G tty smslit sudo usermod -a -G dialout smslit
**注:**smslit替换为你当前的用户名。
方法二
从文章中我们知道ubuntu采用udev管理设备,因而插入设备的权限可以由udev的rules文件来定义,其实linux都是如此的。这里Arduino访问的硬件是USB转TTL串口,所以可以创建rules文件来解决,做法如下:
-
在/etc/udev/rules.d/目录下新建一个文件,取名可以是90-tofu.rules 用vim创建文件,命令如下(需要用sudo的):
cd /etc/udev/rules.d/ sudo vim 90-tofu.rules
这样我们就进入vim,按下i,进入编辑插入状态。
-
添加内容如下:
SUBSYSTEMS=="usb-serial", KERNEL=="ttyUSB?", GROUP="tofu", MODE="0666"
按下 ESC 键,输入
:wq
,保存并退出。重新插拔Arduino或下载线。
Arduino此时就有权限使用设备下载程序了。