====== Arduino on Linux ====== ===== Managing permissions ===== ==== Serial port permissions ==== Depending on your distribution, you may need to add permission to your user so it can access ''/dev/ttyACM*'' or whatever. On my Debian sid system, all I needed to do was add my user to the ''dialout'' group. The following did the trick (as root): # usermod -a -G dialout ==== USBtiny/USBtinyISP permissions ==== If you plan to use a USBtiny or USBtinyISP to program your Arduino instead of the more conventional approaches, you are likely to encounter a different permission error. On my Debian sid system, I encountered a “Warning: cannot open USB device: Permission denied” error that adding my user to the ''dialout'' group didn't fix. I was able to clear it by adding the suggestion at the end of this [[https://learn.adafruit.com/usbtinyisp/avrdude|Adafruit page]]. Specifically, as root create a file ''/etc/udev/rules.d/99-USBtiny.rules'' with the following single line: SUBSYSTEM=="usb", ATTR{product}=="USBtiny", ATTR{idProduct}=="0c9f", ATTRS{idVendor}=="1781", MODE="0660", GROUP="dialout" The next time you log in, your programmer //should// work as expected --- unless the ''product'', ''idProduct'', and/or ''idVendor'' attributes aren't as expected. You can confirm their values by plugging in your USBtiny and running ''dmesg'' (as root): # dmesg [404467.789928] usb 2-1.2: New USB device found, idVendor=1781, idProduct=0c9f [404467.789930] usb 2-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [404467.789931] usb 2-1.2: Product: USBtiny A USBtinyISP from a different vendor I used identified itself as “USBtinyISP” rather than “USBtiny”, and so the udev rule above didn’t work. The solution was to add an additional rule in a second line to ''/etc/udev/rules.d/99-USBtiny.rules'': SUBSYSTEM=="usb", ATTR{product}=="USBtiny", ATTR{idProduct}=="0c9f", ATTRS{idVendor}=="1781", MODE="0660", GROUP="dialout" SUBSYSTEM=="usb", ATTR{product}=="USBtinyISP", ATTR{idProduct}=="0c9f", ATTRS{idVendor}=="1781", MODE="0660", GROUP="dialout" Modify as needed for your USBtiny or USBtinyISP.