arduino - 无法使用 stino 和 Ubuntu 12.04 (Precise Pangolin) 将代码上传到 Arduino Uno

标签 arduino sublimetext2 ubuntu-12.04

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

Uploading /home/lucas/Arduino_Build/programa_teste/programa_teste.hex to Arduino Uno...
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
ioctl("TIOCMGET"): Inappropriate ioctl for device
[Stino - Error while uploading.]

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

最佳答案

嗯,正如 @Bibhas 所说,你的问题是 /dev/ttyACM0 具有错误的权限,这与 Arduino 或 sublime text 无关。 Linux 内核默认创建字符设备,无需用户权限。

但好消息是它可以改变!

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

sudo adduser YOU dialout

其中 YOU 是您的用户名,然后注销并重新登录以使这些新权限传播到您的 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

关于arduino - 无法使用 stino 和 Ubuntu 12.04 (Precise Pangolin) 将代码上传到 Arduino Uno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949367/

相关文章:

c - 我怎样才能有执行两项任务的条件语句?第一个然后循环中的另一个

sublimetext2 - 无法杀死Sublime Text 2中的python进程

sublimetext2 - 是否可以从 Sublime Text 2 中删除正确的 "code overview"?

hadoop - 如何在Ubuntu 12.04上构建Hadoop(1.0.4)libhfs

c++ - 显式从头文件调用变量

c++ - 将 strcmp C/C++ 用于 Arduino 时的数字通配符

java - 找不到 COM 端口且端口列表为空

python - 将缩进代码向左移动,删除前导标签

python - 无法在终端上打开 Python 脚本

c - fork()-parent 忽略 except 脚本的 execv()