Leonardo: USB Device Not Recognized

This is my first Arduino board and I was very impressed by the powerful yet simple to learn/use platform. I was writing code to read a rotary encoder (from a mouse wheel) using an interrupt and using information I found on the Arduino Playground and was reading the encoder successfully. I had updated my code about 10 times without problem then just after uploading my sketch I got an error from windows that said that the “USB Device Not Recognized.” I have unplugged, pressed the reset button, restarted my computer and updated and re-installed the drivers for my Leonardo board but the board shows up as a working COM ports for about 2 seconds then changes to an Unknown Device and doesn't work in any way. The ON light is the only light on. I cannot do anything with this board now. What did I do? How can I fix it? OR can it be fixed? Any help would be great. Thanks.

Do you tried with another usb wire? In another pc?
Also, do you have linux? If you have, can I see the output of
"dmesg# command after you plug the board?

regards

Yes I have tried it on a second PC it did not work. I do not have linux on any machines right now. Should I get linux?

I got a UNO board from RadioShack and it works just fine with my PC. I think that maybe somehow the bootloader/firmware may have got corrupted somehow. Is this possible? If so how can I reload the original Leonardo bootloader and what hardware/software would I need to do it?

Yes, you can do that. You need another arduino to act as an ISP programer. Then, you can follow this tutorial http://arduino.cc/en/Tutorial/ArduinoISP

I found a quick and easy fix for all of my Leonardo/Uno problems including this one:

  • While holding down the reset button, unplug the Leonardo/Uno from your computer
  • Place the board directly on the ground or flat surface
  • Stomp on the board until you're sure that it's properly smashed
  • Throw this piece of shit in the trash
  • Buy another board from a company other than Arduino and make sure that it's not a Leonardo or Uno clone.

I hope this helps.

If you hate Arduino then why are you here in this forum.

The Leonardo are somewhat finicky. Sparkfun have a special bootloader where I think you reset it twice quickly and it stays as a com port for a longer period of time. Sounds to me like your Leo acts like a com port for two seconds. I think the trick will be to hold the reset button and only release it right before the ide tries to upload. I try releasing the reset right when the IDE finishes saying "compiling..."

The timing is tricky and you have to practice a lot to get it. Google for Leonardo on this forum, it's been covered before.

Good luck,

Jimmy

hi
i had the similar problem and i was able to fix it using the method below.this is caused by an unsuccessful upload or uploading a sketch that doesn’t use serial communication(since mega32u4 chip on the board has built in usb and doesn’t need any other chip to communicate with the computer, turning serial communication off, makes it unrecognizable by your PC):
1- use this sketch:

#include <Keyboard.h>
void setup() {
  // make pin 2 an input and turn on the
  // pullup resistor so it goes high unless
  // connected to ground:
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  digitalWrite(13,HIGH);
  pinMode(2, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  //if the button is pressed
  if(digitalRead(2)==LOW){
    //Send the message
    Keyboard.print("Hello!");
  }
  delay(1000);
  digitalWrite(13,HIGH);
  delay(1000);
  digitalWrite(13,LOW);
}

2-under tools>board select arduino leonardo
3-instead of connecting your board to your PC, use a programmer like usbasp
4-connect your usbasp programmer to your board using ICSP headers provided on the board(instruction on how to setup and use a programmer like usbasp can be easily found on the internet)
5-under tools>programmer choose usbasp(or any other programmer that you have)
6-under sketch menu select upload using programmer
7- wait until upload is finished. now disconnect it from the programmer and connect the board normally to your PC using a usb cable. that should fix it

Hold reset button, start uploading blink, or bare minimum, or something very simple like thsy. Release reset just as it switches from compiling to uploading, and it should work.

The problem is that your sketch crashed the micro badly enough that it hosed the usb, so as soon as sketch runs, there's no usb. This is normal for boards with native usb that you program via that usb, if you hose the usb, it's tricky to reprogram

Rebootloading it as suggested above will also work

For Leonardo on Windows PC, the Windows device driver needs to be installed "Manually". All your problems will go away if you have the proper Windows driver installed.

Leonardo Manually Installing Windows Drivers

Getting Started with Arduino Leonardo

borland:
For Leonardo on Windows PC, the Windows device driver needs to be installed “Manually”.

I haven’t had a need for that in Windows 8.1 with IDE 1.6.6. I just connected it and it worked.

I haven’t used it as a HID, but the only tricky part till now is that one can select the wrong com port in the IDE (bootloader versus ‘normal’). Symptoms are that one needs to reset while upload is in progress and that opening serial monitor can’t find the com port.