首次设置-对USB端口的权限被拒绝-Ubuntu 14.04


18

我只是将arduino插入电源,并且指示灯点亮,但是眨眼测试无法上传。这是我的错误:

Arduino:1.6.7(Linux),开发板:“ Arduino / Genuino Uno”

Sketch使用1,030字节(3%)的程序存储空间。最大为32,256字节。全局变量使用9字节(0%)的动态内存,剩下2,039字节用于局部变量。最大为2,048字节。avrdude:ser_open():无法打开设备“ / dev / ttyUSB0”:权限被拒绝ioctl(“ TIOCMGET”):设备的ioctl不当上传到板上时出现问题。有关建议,请参见http://www.arduino.cc/en/Guide/Troubleshooting#upload

该报告将具有在文件>首选项中启用的“在编译过程中显示详细输出”的更多信息。

usb  ubuntu 


2
@ IgnacioVazquez-Abrams-你能把它变成答案吗?我们正在努力提高我们的百分比。:)也许有一点复制和粘贴,所以它不是仅链接的。
尼克·加蒙

我做了所有步骤,并且第一次成功。现在,我尝试上传第二个程序,并收到以下消息:“ avrdude:ser_open():无法打开设备“ / dev / ttyUSB0”:权限被拒绝”,我这样做:roquet @ roquet-HP-EN-VX-x360-m6 -可转换:〜$ sudo adduser roquet Dialout用户roquet' is already a member of 拨出'。roquet @ roquet-HP-ENVY-x360-m6-可转换:〜$ sudo chmod a + rw / dev / ttyUSB0 roquet @ roquet-HP-ENVY-x360-m6-可转换:〜$ ls -l / dev / ttyUSB * crw -rw-rw- 1根拨出188,1 Jan 20 13:12 / dev / ttyUSB0 roquet @ roquet-HP-ENVY-x360-m6-Convertible:〜$但仍然得到'permission denie
Roque Zabalet 19'Jan

Answers:


26

文档中

打开终端并输入:

ls -l /dev/ttyACM*

您将得到类似:

crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0

ACM末尾的“ 0”可能是一个不同的数字,或者可能会返回多个条目。我们需要的数据是“ dialout”(是文件的组所有者)。

现在,我们只需要将用户添加到组中:

sudo usermod -a -G dialout $USER

然后:

sudo chmod a+rw /dev/ttyACM0

您将需要注销并再次登录才能使此更改生效。

请注意,以上是旧的Ubuntu指令。在使用ConsoleKit的现代发行版上,创建/etc/udev/rules.d/01-ttyusb.rules包含以下内容的文件,然后重新加载udev规则并重新插入Arduino设备:

SUBSYSTEMS=="usb-serial", TAG+="uaccess"

好答案。在较新的安装中,您不必重新加载udev规则。Udev将监视/etc/udev/rules.d中的更改。您必须重新插入arduino。
ppareit '16

@ppareit什么算作“较新的安装”?在Ubuntu 16.04上,无论是否加载规则(通过sudo udevadm control --reload),这对我都不起作用。
Desty

1
我认为它不起作用,因为该板被标识为属于“ tty”而不是“ usb-serial”子系统。无论如何,创建以下udev规则反而对我有用:SUBSYSTEM=="tty", ATTRS{idVendor}=="(vendor)", ATTRS{idProduct}=="(product)", ATTRS{serial}=="(serial)", SYMLINK+="ttyUSB.arduino", GROUP="adm",其中(供应商)和(产品)取自lsusb和(序列)的输出udevadm info -a -n /dev/ttyACM0|grep '{serial}'|head -n1
Desty

至少在Ubuntu 16.04上,我在Mint 18.1上没有看到此问题。很高兴得知您找到了解决方案!
ppareit'1

搞定了!!!!已支持。我有一个17.04发行版,第一个解决方案并不持久!
托尼·吉

3

您所需要做的就是按照Ignacio Vazquez-Abrams的回答将自己添加到拨出组中。这是在终端中输入以下命令完成的:

sudo usermod -a -G dialout $USER

您不需要使用chmod。这为所有用户提供了读/写访问权限,而不仅仅是该组的成员。但是,在尝试连接之前,您必须注销并重新登录。重新登录后,您将被视为拨出组的成员,并且能够打开设备。



0

以上没有任何帮助。从官方站点从文件安装后,它甚至无法启动。然后我从“ Linux应用程序商店”安装了Arduino IDE,并且可以正常工作,但是遇到了像我们的朋友这样的问题。所以我已经卸载了它并通过终端安装了它sudo apt install arduino,现在它可以 工作了。干杯。


-1

或者只是使用chown命令。

sudo chown <username> /dev/ttyACM*

这对我有用


1
这个问题在这个站点已经问过很多遍了,另一个用户也给出了相同的答案。我将在这个主题上引用Chris Stratton:这是一个坏主意,特别是在具有udev或类似的管理/ dev节点的典型动态配置的linux上,每次连接设备时都必须这样做。而是将您的用户添加到适当的组中,这是一个持久的解决方案。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.