No /dev/ttyACM0 or /dev/ttyUSB0 on Linux Mint Debian Edition

Hello,

I'm unable to talk to a Arduino Uno R3 board, using a Linux Mint Debian Edition (=Debian testing) machine. Upon plugging in the naked board with a USB cable, dmesg tells me

[ 1944.188334] usb 6-1: new full-speed USB device number 12 using uhci_hcd
[ 1944.356537] usb 6-1: New USB device found, idVendor=03eb, idProduct=2fef
[ 1944.356547] usb 6-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0

After plugging in the board there is no /dev/ttyACM0 or /dev/ttyUSB0.

On a Xubuntu 11.10 machine I have the same effect. Various combinations of plugging the board out and in, pressing the reset button repeatedly, starting the Arduino IDE (v1.0.1) etc did not help. In the Arduino IDE, the Tools -> Serial Port menu item is greyed out.

After plugging the board in, the power LED comes on, the "L" LED flashes a few times and then lights constantly.

This is even more surprising because it used to work until yesterday! Can fiddling with the board (ie, making shorts or other stupid mistakes) cause this?

I'm at a loss. What can I do?

Many thanks,

Enno

I think you don't have the rights to mount the new peripherical.
Read this:
http://www.arduino.cc/playground/Linux/All
and this:
http://www.arduino.cc/playground/linux/debian

Hello,

many thanks for your reply. I followed the instructions at Arduino Playground - All, but to no avail. I managed to set up a udev rule which gives me a /dev/ttyACM1 (or ACM2), but that doesn't show up in the Arduino IDE. The instructions on this page were only partially compatible with my system. For example, /dev/ACM1 does not belong to the group "dialup", and the file legacy.conf which is supposed to be in /usr/lib/tmpfiles.d/ doesn't exist at all on my system. Starting the IDE as root didn't help.

The only option in "Tools -> Serial Port" is /dev/ttyS0, but that doesn't work.

Any other hints/suggestions which I might try?

Many thanks,

Enno

Are you using the IDE from your repository or the Arduino site? If you are using the repository version, I recommend downloading IDE v1.0.1 from the Arduino site and unpacking it in a local directory. Then navigate to that directory and run the arduino shell script there. Does that do any better?

SurferTim:
I recommend downloading IDE v1.0.1 from the Arduino site and unpacking it in a local directory.

+1
The IDE that comes from the Arduino site works fine on any distro.

Hello,

I've tried the IDE from arduino.cc, but I get the same results. Also I don't see how this is a problem with the IDE - the problem seems to be with the generation of the device, i.e., with what happens before the IDE is even started.

Cheers,

Enno

Just checking. But you are correct. The IDE should not determine how the device connects to your OS. That happens in most cases before the IDE is started.

I use Ubuntu v11.10 and v12.04 with good results. I can see my Mega as dev/ttyACM0 with read/write permissions to dialout group.

Hello,

should I conclude then that the board maybe broken? As I said, the lights come on and the "L" LED blinks and then lights up, which (AFAIR) means that the self-test has passed.

Also I'd like to point out again that the board DID work until a few days ago, without me doing anything specific to get going, apart from installing the Arduino IDE from the repositories.

Is there a test procedure I could go through?

Enno

Hello,

I have a working Arduino board again. It seems that the device at some point went into DFU mode and never returned back to normal. At least that's what I think because all I got from my board when plugging it into a Linux box was as described on CJ Davies after going into DFU mode. Hence I had to install the original firmware again. For completeness' sake, here are the relevant steps:

1 - download dfu-programmer from Atmel USB DFU Programmer download | SourceForge.net (v0.5.4)

2 - add a line to src/arguments.c, according to http://academic.cleardefinition.com/2012/07/31/using-dfu-programmer-with-an-arduino-uno-r3:

--- src/arguments.c (revision 105)
+++ src/arguments.c (working copy)
@@ -72,6 +72,7 @@
{ "at90usb647", tar_at90usb647, adc_AVR, 0x2FF9, 0x03eb, 0x10000, 0x2000, true, 128, true, false, 128, 0x0800 },
{ "at90usb646", tar_at90usb646, adc_AVR, 0x2FF9, 0x03eb, 0x10000, 0x2000, true, 128, true, false, 128, 0x0800 },
{ "at90usb162", tar_at90usb162, adc_AVR, 0x2FFA, 0x03eb, 0x04000, 0x1000, true, 128, true, false, 128, 0x0200 },

  • { "at90usb162unor3",tar_at90usb162, adc_AVR, 0x2FEF, 0x03eb, 0x04000, 0x1000, true, 128, true, false, 128, 0x0200 },
    { "at90usb82", tar_at90usb82, adc_AVR, 0x2FF7, 0x03eb, 0x02000, 0x1000, true, 128, true, false, 128, 0x0200 },
    { "atmega32u6", tar_atmega32u6, adc_AVR, 0x2FF2, 0x03eb, 0x08000, 0x1000, true, 128, true, false, 128, 0x0400 },
    { "atmega32u4", tar_atmega32u4, adc_AVR, 0x2FF4, 0x03eb, 0x08000, 0x1000, true, 128, true, false, 128, 0x0400 },

3 - compile

4 - get the firmware from the Arduino IDE sources: Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex

5 - plug in the board and (for completeness) shorten two pins in a group of six (the group being close to the USB port). The two pins are those closest to the reset button. This should turn the board into DFU mode

6 - then reflash the firmware:

dfu-programmer at90usb162unor3 erase
dfu-programmer at90usb162unor3 flash Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex --suppress-bootloader-mem
dfu-programmer at90usb162unor3 reset

7 - Plug out, plug in, done.

Cheers,

Enno