无法使用stino和Ubuntu 12.04(精确穿山甲)将代码上传到Arduino Uno

时间:2013-06-05 20:34:59

标签: arduino sublimetext2 ubuntu-12.04

我已成功在Sublime Text 2上安装了stino,但当我尝试将代码上传到Arduino Uno时,输出如下:

  

上传/home/lucas/Arduino_Build/programa_teste/programa_teste.hex到Arduino Uno ...
  avrdude:ser_open():无法打开设备“/ dev / ttyACM0”:权限被拒绝
  ioctl(“TIOCMGET”):设备的不适当的ioctl   [Stino - 上传时出错。]

我安装了Arduino IDE,工作正常,只有Sublime Text无法上传代码。

3 个答案:

答案 0 :(得分:4)

好吧,正如@Bibhas所说,你的问题是/dev/ttyACM0拥有错误的权限,而这与Arduino或sublime文本无关。这是Linux内核,默认情况下创建的字符设备没有用户权限。

但好的是它可以改变!

快速简便的解决方案是将您当前的用户添加到dialout群组:

sudo adduser YOU dialout

你是你的用户名然后注销并重新登录以将这些新权限传播到你的shell中。

提示:

有一个更复杂的解决方案,就是创建一个udev规则,例如:

/etc/udev/rules.d/48-arduino.rules

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="arduino_end"
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", MODE="660", GROUP="arduino", SYMLINK+="arduino.leonardo"
LABEL="arduino_end"

创建一个由arduino组可读写的/dev/arduino设备,您需要创建(或者您可以使用完全正常的默认dialout组):

addgroup arduino
adduser YOU arduino

然后重新加载规则:

sudo udevadm control --reload-rules

关于第二个暗示的好处是,当你拔掉你的arduino时,你不会奇怪地改变它的设备号,它会保留在名字上。如果您没有使用arduino leonardo,可以使用lsusb检查您的设备idvendor / idproduct:

% lsusb                
…                      ↓↓↓↓ ↓↓↓↓
Bus 006 Device 105: ID 2341:0036 Arduino SA 
…

HTH

答案 1 :(得分:0)

Troubleshooting doc进行编码,我使用

sudo usermod -a -G tty yourUserName
sudo usermod -a -G dialout yourUserName

解决我的问题。

答案 2 :(得分:0)

我今天遇到同样的问题,以及令人难以置信的事情。 USB线为Arduino供电,但不允许通信。我们的解决方案是更换USB线,之后一切正常