Uploading simple sketches seems to work when I run the Arduino program as root (sudo
). I would like to run it as a regular user. Has anyone faced the same problem before and fixed it?
Here is what I obtained from lsusb
:
$ lsusb
Bus 002 Device 022: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
And the Arduino program identifies it as /dev/ttyACM0
. Here are its permissions:
$ ls -l /dev/ttyACM0
crw-rw---T 1 root dialout 166, 0 Mar 14 22:03 /dev/ttyACM0
Here is the output from id
groups=1000(abhiram),20(dialout),24(cdrom),25(floppy),29(audio),
30(dip),44(video),46(plugdev),105(scanner),110(bluetooth),112(netdev)
When I upload an sketch from the examples, as a regular user, I encounter this error:
avrdude:stk500_recv(): programmer not responding
Any suggestions are welcome.
3 Answers 3
The easiest solution is to add yourself to the dialout
group.
First make a note of the output from id
. Save it in file (not in /tmp
as that gets cleaned out on a reboot). If you look at the output, you'll notice that your user is signed up for several groups and those groups represent extra privileges on the system. By default your Arduino is assigned to the group dialout
because it registers as a serial interface and in the old days these were often used to ... dial out, using a modem.
To add yourself to the dialout
group, issue the following command:
sudo usermod -a -G dialout $USER
Don't forget the -a
flag (for appending groups rather than replacing) or you will have entirely different problems. This is the reason for making a copy of the id
output to a file, so in case you do mess up at least you know what your user was configured like before.
Then log out and log in and it should work from that point.
Optionally you can double check the output for id
against the output you saved before.
-
thanks @jippie, for the thoughtful answer. I have added myself to the
dialout
group, but the problem still seems to persist. I have modified my question with the output from theid
command.feverDream– feverDream2014年03月15日 06:06:47 +00:00Commented Mar 15, 2014 at 6:06 -
My impression from your update is that the exact cause of the problem has shifted to the next issue. You are on your way to solve it. What happens when you
cat /dev/ttyACM0
? Does it throw an error?jippie– jippie2014年03月15日 06:11:43 +00:00Commented Mar 15, 2014 at 6:11 -
No, the device file seems to empty, when I
cat
it.feverDream– feverDream2014年03月15日 06:49:42 +00:00Commented Mar 15, 2014 at 6:49 -
Empty is OK, as long as you don't get an error message.jippie– jippie2014年03月15日 06:57:53 +00:00Commented Mar 15, 2014 at 6:57
The oft-repeated advice to "just do sudo usermod -aG dialout <username>
never worked for me, and I finally figured out why. On my machine, /dev/ttyUSB0
is of the group serial
and not dialout
, so adding my username to dialout
did nothing.
# ls -l
# crw-rw---- 1 root serial 188, 0 Mar 31 20:52 /dev/ttyUSB0
^^^^^^ (group-name)
Finally: sudo usermod -aG <group-name> <username>
fixed it for me.
Embarrassingly, this is also explicitly mentioned here under "SET THE PERMISSION". Sigh.
-
Yes, it's worth checking the actual owning group. Also the device file can be either a ttyUSB# or a ttyACM# (or theoretically anything) depending on the board type, kernel driver, and ultimately configuration of udev or whatever creates the nodes.Chris Stratton– Chris Stratton2014年04月06日 00:18:40 +00:00Commented Apr 6, 2014 at 0:18
-
It's also mentioned at arduino.cc/en/Guide/Linux#toc6Roberto Tyley– Roberto Tyley2017年03月18日 22:43:39 +00:00Commented Mar 18, 2017 at 22:43
This happens to me. In my case, I had upgraded the version of arduino and seems the preferences file was causing the problem. Just delete ~/.arduino/preferences.txt file (with Arduino IDE closed).
Steps:
- Close Arduino IDE
execute this:
rm ~/.arduino/preferences.txt
Launch Arduino IDE
This worked for me, hope it works for someone else. I am using Linux Mint 17 and I upgraded from Arduino 1.05 to Arduino 1.06 by extracting the Arduino IDE, I am not using the one in the repo. (Of course, after adding your user to the corresponding group as mentioned by others, but if that wont help you try this)
-
Possibly related to this, one side effect of running tools as root is that you can end up leaving behind temporary, config, or project files which your ordinay account cannot modify or clean up.Chris Stratton– Chris Stratton2014年11月02日 22:38:59 +00:00Commented Nov 2, 2014 at 22:38
Preferences
menu.dmesg
for the device file that is registered./dev/ttyACM0: USB ACM device
. So, it doesn't seem like problem to me. On the other hand, the logs from compiling and uploading( had to enable them in Preferences), seem promising. I just can't seem to copy them from the arduino program :(. (may be they are writing to a file somewhere?)