首页 > 解决方案 > 上传/Arduino 出错:Ubuntu 16.04 上的权限被拒绝

问题描述

几年前我就遇到过这个问题,我在 Ubuntu 14.04 上解决了这个问题,但我不知道为什么我的解决方案现在在 Ubuntu 16.04 上不起作用

错误:

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

我正在使用The guide中的相同解决方案,通过在 Stack 网站上搜索解决方案等等......

这是我所做的:

ls -l /dev/ttyACM*

结果:所有者是root,具有访问权限的组是拨出

然后我申请了:

sudo usermod -a -G dialout <username>
sudo chmod a+rw /dev/ttyACM0 

最后注销并登录。

Sompe 人说他们已经通过删除 modemmanager 解决了这个问题,所以我也尝试过:

sudo apt-get remove modemmanager

但毕竟问题还没有解决

注意:带有 Ubuntu 16.04 的 Arduino Uno

编辑:应用后:

ls -l /dev/ttyACM*

结果是:

crw-rw---- 1 root dialout 166, 0 Jan 10 13:33 /dev/ttyACM0

标签: linuxubuntuarduinoarduino-unoarduino-ide

解决方案


问题是(正如您已经发现的那样),您的用户不允许访问该/dev/ttyACM0设备。你有几种可能性:

  1. 暂时解决当前会话的问题

    sudo chown <user>:<group> /dev/ttyACM0
    

    这会将文件的所有权更改为用户并将组更改为注意:您必须再次执行此操作,只要您重新插入您的 arduino)

  2. 永久解决每个会话的问题

    您为您的 arduino 创建一个udev 规则并将其放入/etc/udev/rules.d(在谷歌搜索时,您应该能够为您的 arduino 找到正确的 udev 规则)。

    简单的方法是以下 udev 规则:

    99-arduino.rules

    KERNEL=="ttyACM0",GROUP="plugdev"
    

    请注意,现在每个/dev/ttyACM0设备都归组“plugdev”(或您指定的任何组)所有。这可能不是你真正想要的。所以请阅读 udev-rules 如何专门指定您的 arduino-device(提示:vendorID 和 productID)


推荐阅读