Arduino Debugging

From CoMakingSpace Wiki
Jump to navigation Jump to search

Usually not everything goes as planned with Arduino; here are some bugs and (possible) workarounds we found.

Serial Programmer

Sometimes the bootloader on the ATMEGA can get corrupted and has to be re-burned or your program just doesn't fit on the flash of the Arduino with the bootloader present.


On some distributions the IDE exits with following exeption when trying to write a program via the serial interface (using the USBasp programmer for example):

avrdude: Warning: cannot open USB device: Permission denied

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='' product='USBasp'

This happens if the USB device is not loaded with the right permissions. A quick fix is to look for the programmer via lsusb. This is a typical return value:

Bus 002 Device 006: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb

In this example you have to grand permission to the USB device with: sudo chmod 666 /dev/bus/usb/002/006

However after the programmer is reconnected the procedure has to be repeated. A more permanent fix is to create a .rules file in /etc/udev/rules.d/ and always grand permission for the programmer device (here for USBasp):

SUBSYSTEM=="usb", ATTR{product}=="USBasp", ATTR{idProduct}=="05dc", ATTRS{idVendor}=="16c0", MODE="0666"

A more refined way would be to set the device permission to a specific user group with access to the USB devices (e.g. "dialout" on Ubuntu). So instead if MODE="0666" set GROUP="dialout" . Don't forget to add your user to this group as well. Didn't work on Fedora 25, but should under Ubuntu.

Credit to this blog.