If you want to use avrdude with an AVRISPmkII from Atmel on your Ubuntu 14.04 machine, you need to use sudo. If you don’t, you will receive an “Operation not permitted” message.
Unless you tweak UDEV.
You need to create a file in /etc/udev/rules.d named 60-avrisp.rules containing the following :
SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"
# Atmel Corp.JTAG ICE mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout"
LABEL="avrisp_end"
Add yourself to dialout group.
sudo adduser $USER dialout
Restart udev:
sudo restart udev
sudo service udev restart
And to check status:
sudo service udev status
Plug/unplug your AVRISPmkII from USB port, and then you may now use avrdude whithout root permissions.
$ avrdude -p m168 -c avrisp2
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9406
avrdude: safemode: Fuses OK (H:01, E:DF, L:FF)
avrdude done. Thank you.
These commands apply on later versions as well.
For example, on Ubuntu 20.04, without these modifications, I was unable to use an AVRISP Mk2 within Arduino IDE to burn an updated boot sequence.
It might also apply to other Linux distros.