USB Device Not Recognised

Hi All.
I’ve just assembled my new MidiBoy and powered it on in bootloader mode (Blokas logo appears fine), but my Windows 10 PC keeps giving me the error message “USB Device Not Recognised”.

The device appears as “Unknown USB Device (Device Descriptor Request Failed)” in Device Manager. I’ve tried uninstalling the device / reinstalling drivers / powering on & off, etc but nothing helps.

I have installed Arduino IDE 1.8.13, which included various USB drivers.

I’ve also tried a few other things:

  • different USB cables
  • different Windows 10 PC (gives same error)
  • tested other Arduino boards on my PC (these work fine)
  • re-soldered components
  • tested solder joints with multimeter
  • attempted with and without 9v battery power

… but nothing I do seems to work. I’m about to throw this thing out the window!

Has anyone got any suggestions please?!

Hi, check if all of the components are in the right place and the polarized ones are the right way round. This issue could be caused by some soldering mistake somewhere on the board, especially in the rectangular area covering the MIDI ports and the main ATmega328P chip, but not necessarily limited to it.

Compare your board with this picture:

Thanks for the quick reply Giedrius. I have compared my board with your image and it seems identical. I have attached a photo of my board, if that helps?

And here’s the other side of my board…

Thank you for providing the pictures. Unfortunately I didn’t spot anything obviously wrong. Just in case, check this picture out:

The components enclosed within the orange outline are critical for USB communication, as well as the 3 pins marked with light green dots. Please double check whether the solder joints on theses components are indeed fine (they do look fine from the picture, but maybe looking at them at an angle could reveal something). Also, double check if the microcontroller pins didn’t get bent when inserting, to remove it from the socket, use some slim long-nose pliers or long tweezers to slide underneath and lift the whole body at once. Removing the optocoupler first is a good idea. :slight_smile:

Another thing to try is to keep the B button held down for a few seconds during and after plugging in the USB cable, or powering on the device with cable already inserted.

By the way, you mentioned other Arduino boards - do you have a tool that could flash the memory of ATmega328P? We haven’t seen this occur before, but maybe the chip itself is flashed incorrectly - if it’s fuse settings were not set correctly, the USB won’t work, but the bootloader logo would still show up. This could be checked and fixed using a programmer or another Arduino board set up for In System Programming (ISP) and avrdude.

Do you have the original Arduino UNO board by any chance? If so, I think you could pop the ATmega328P in it and inspect it.

I’ve triple-checked the component soldering and IC pins for bends and all seems ok.

I’ve also checked for shorts and the continuity of connections (e.g. from IC pins to diodes, resistors, etc) using a multimeter and everything seems fine.

Unfortunately I don’t have an UNO board to test the ATmega328P, only Leonardo boards. But I have just ordered an UNO dev board off eBay; I should receive it next week. Hopefully that helps shed some light on the problem… I’ll report back soon…

1 Like

Hi again. I finally got hold of an UNO dev board off eBay. I’ve swapped the ATmega328P chip on the dev board for the MidiBoy chip and connected to my PC. I’m not getting any USB errors and it seems to be recognised within the Arduino IDE software (e.g. on port 6). How do I go about inspecting the MidiBoy chip to check that it is 100% okay? Or do you think the chip is actually fine and the problem is with one of the other components? (e.g. diodes)

1 Like

The Arduino UNO board gets recognized, because it has an FTDI USB To Serial chip, for programming the ATmega328P controller - the controller itself does not have direct access to USB via the USB port on the board. :slight_smile:

Let’s try this - on Arduino IDE, select Midiboy as the board in Tools menu, and Arduino ISP as the Programmer, pick the COM6 port (or how it corresponds on your OS), so the settings look similar to this:

Also, in File->Preferences, make sure these options are enabled:

image

Then with the Midiboy’s ATmega328P inserted into the Arduino UNO (do any chip swaps only with USB unplugged), do Tools->Burn Bootloader.

Additionally, you may open a sketch in Arduino IDE, like https://patchstorage.com/midimon/, and from its window, do Sketch->Upload (or you may even have to do Sketch->Upload Using Programmer, not sure which is the correct one to use)

Then unplug the USB from the Arduino UNO, and insert the recently programmed chip into the Midiboy, and give it a try. It should hopefully be recognized as a USB device, and run the Midimon sketch. In bootloader mode, it should be programmable straight from the Arduino IDE, just make sure to select USBasp as the programmer. The selected Port is irrelevant for this kind of programmer, as it autodetects the device itself. See https://blokas.io/midiboy/software/5/ for OS specific notes, and the other steps of the guide for additional information on the programming process.

If it does not get recognized, then please retry with just flashing the bootloader, and testing it out.

In case you get any errors in the output log at the bottom, please post the contents here, so we can take a look and figure it out. :slight_smile:

Ok, so I’ve changed the settings to those outlined above and selected Tools->Burn Bootloader, but I get the following error message “avrdude: Error: Could not find USBtiny device (0x2341/0x49)”

Ok, looks like I’ve specified the wrong Programmer to use. Please try again using ‘AVRISP mkII’ or ‘Atmel JTAGICE3 (ISP mode)’

Hi again, sorry to dredge up this old topic again, but I’ve been unable to test out your suggestions until now.

I tried using the different programmers listed above, but both resulted in errors. Using ‘AVRISP mkII’ gives the following messages:

Also, I’ve now got 2 Arduino UNO dev boards, so I thought I would try setting one up as an ISP programmer and one as a target. This works fine for uploading the UNO bootloader and sketches. Could I use this method to upload the Midiboy bootloader and sketches? I tried selecting Midiboy as the board and then ‘tools->burn bootloader’ but this didn’t work, but I suspect I’m doing something wrong?

No worries at all! :slight_smile:

Yes, it should work. What output did you get when doing this?

Here’s a screen shot of my settings and the error message:

Could you copy and paste the whole output here? The ‘Copy error messages’ button should put everything in clipboard.

Looks like I found the issue, and fixed it in the Blokas Boards - the port number was unintentionally getting overridden when doing Burn Bootloader.

I’ve just published 1.0.6 version of Blokas Boards with this fixed, follow the steps here to get the update:

Midiboy Software Setup - Step 3

1 Like

It’s working!!! Thanks so much for your help mate. Just uploaded the Midimon sketch and it’s working great :slightly_smiling_face:

Thought I might be going crazy there at one point! :upside_down_face:

Sorry, I may have spoken too soon… I’m now back to my original problem from my first post where I get the error message “USB Device Not Recognised” when connecting via USB to my PC.

I’m assuming we can now rule out the ATmega328P chip as being the source of this issue?

Would you recommend I start replacing the components you circled in orange (in the 4th post) one by one to find the culprit? Starting with the diodes?

At least I now have a method to upload sketches to the Midiboy! (although it is quite cumbersome)

When the Midimon sketch is running, is the device recognized as a USB MIDI device by the system?

No, I’ve used MIDI-OX to check and I see nothing. It appears in Device Manager as an “Unknown USB device”:
Screenshot 2021-03-09 223922

Also, holding down the “B” button whilst powering on does not bring up the Blokas logo and put it into programming mode - it does nothing - all I see is the Midimon input | output screen the entire time.