Bricked Pro Micro - 3.3V/8MHz -

Hi guys,

I was perhaps a bit quick when I plugged in my new Pro Micro - 3.3V/8MHz for the first time. Arduino IDE 2.2.1 on my Win11 computer recognized it immediately as “Arduino Micro” and I uploaded the small blink example Blink_01.ino.

After that the board is no longer recognized by the OS as a USB device.

I have one more board here but won’t plug it in until I know how to fix the first one or prevent this from happening again.

Any ideas? I have both soldering equipment and an old AVRdragon kit that might be useful for flashing it. I see on the Pro Micro schematic that bringing out an ISP6 header should be quite easy. To do something like that, do you have a binary file that I can upload?

Alternatively, is there a GPIO button I can modify (ref. button use here https://cdn.sparkfun.com/datasheets/Dev … U4Note.pdf)?

Assuming an 8MHz / 16MHz issue, do you believe running it from a 16.0MHz clock source and 5.0V supply will help?

Thanks,

Borge

Removing the 8MHz crystal and patching in a 16MHz clock did the trick, at least to begin with.

It is now recognized as a serial port device (USB descriptor below).

However, I’d still like to get it back to stock functionality on its 8MHz crystal. This is important since the end application is fixed at 3.3V.

The GUI seems able to program it as a 16MHz device. It even enumerates in Windows as a COM device after that. But it does not come back when I change it to 8MHz and power cycle it.

Thanks for any advice!

Best,

Børge

Information for device Arduino Micro (VID=0x2341 PID=0x8037):


Connection Information:


Device current bus speed: FullSpeed

Device supports USB 1.1 specification

Device supports USB 2.0 specification

Device address: 0x0013

Current configuration value: 0x01

Number of open pipes: 3


Device Descriptor:


0x12 bLength

0x01 bDescriptorType

0x0200 bcdUSB

0xEF bDeviceClass (Miscellaneous device)

0x02 bDeviceSubClass

0x01 bDeviceProtocol

0x40 bMaxPacketSize0 (64 bytes)

0x2341 idVendor

0x8037 idProduct

0x0100 bcdDevice

0x01 iManufacturer “Arduino LLC”

0x02 iProduct “Arduino Micro”

0x03 iSerialNumber

0x01 bNumConfigurations


Configuration Descriptor:


0x09 bLength

0x02 bDescriptorType

0x004B wTotalLength (75 bytes)

0x02 bNumInterfaces

0x01 bConfigurationValue

0x00 iConfiguration

0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup)

0xFA bMaxPower (500 mA)

Interface Association Descriptor:


0x08 bLength

0x0B bDescriptorType

0x00 bFirstInterface

0x02 bInterfaceCount

0x02 bFunctionClass (Communication Device Class)

0x02 bFunctionSubClass (Abstract Control Model - ACM)

0x00 bFunctionProtocol

0x00 iFunction

Interface Descriptor:


0x09 bLength

0x04 bDescriptorType

0x00 bInterfaceNumber

0x00 bAlternateSetting

0x01 bNumEndPoints

0x02 bInterfaceClass (Communication Device Class)

0x02 bInterfaceSubClass (Abstract Control Model - ACM)

0x00 bInterfaceProtocol

0x00 iInterface

CDC Header Functional Descriptor:


0x05 bFunctionalLength

0x24 bDescriptorType

0x00 bDescriptorSubtype

0x0110 bcdCDC

CDC Call Management Functional Descriptor:


0x05 bFunctionalLength

0x24 bDescriptorType

0x01 bDescriptorSubtype

0x01 bmCapabilities

0x01 bDataInterface

CDC Abstract Control Management Functional Descriptor:


0x04 bFunctionalLength

0x24 bDescriptorType

0x02 bDescriptorSubtype

0x06 bmCapabilities

CDC Union Functional Descriptor:


0x05 bFunctionalLength

0x24 bDescriptorType

0x06 bDescriptorSubtype

0x00 bControlInterface

0x01 bSubordinateInterface(0)

Endpoint Descriptor:


0x07 bLength

0x05 bDescriptorType

0x81 bEndpointAddress (IN endpoint 1)

0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)

0x0010 wMaxPacketSize (1 x 16 bytes)

0x40 bInterval (64 frames)

Interface Descriptor:


0x09 bLength

0x04 bDescriptorType

0x01 bInterfaceNumber

0x00 bAlternateSetting

0x02 bNumEndPoints

0x0A bInterfaceClass (CDC Data)

0x00 bInterfaceSubClass

0x00 bInterfaceProtocol

0x00 iInterface

Endpoint Descriptor:


0x07 bLength

0x05 bDescriptorType

0x02 bEndpointAddress (OUT endpoint 2)

0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)

0x0040 wMaxPacketSize (64 bytes)

0x00 bInterval

Endpoint Descriptor:


0x07 bLength

0x05 bDescriptorType

0x83 bEndpointAddress (IN endpoint 3)

0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)

0x0040 wMaxPacketSize (64 bytes)

0x00 bInterval

Microsoft OS Descriptor is not available. Error code: 0x0000001F


String Descriptor Table


Index LANGID String

0x00 0x0000 0x0409

0x01 0x0409 “Arduino LLC”

0x02 0x0409 “Arduino Micro”

0x03 0x0409 Request failed with 0x0000001F


Connection path for device:

USB xHCI Compliant Host Controller

Root Hub

Generic USB Hub

Generic USB Hub

Arduino Micro (VID=0x2341 PID=0x8037) Port: 1

Running on: Windows 10 or greater (Build Version 22631)

Brought to you by TDD v2.17.0, Feb 23 2021, 14:04:02

Information for device Arduino Micro (VID=0x2341 PID=0x8037):


Connection Information:


Device current bus speed: FullSpeed

Device supports USB 1.1 specification

Device supports USB 2.0 specification

Device address: 0x0013

Current configuration value: 0x01

Number of open pipes: 3


Device Descriptor:


0x12 bLength

0x01 bDescriptorType

0x0200 bcdUSB

0xEF bDeviceClass (Miscellaneous device)

0x02 bDeviceSubClass

0x01 bDeviceProtocol

0x40 bMaxPacketSize0 (64 bytes)

0x2341 idVendor

0x8037 idProduct

0x0100 bcdDevice

0x01 iManufacturer “Arduino LLC”

0x02 iProduct “Arduino Micro”

0x03 iSerialNumber

0x01 bNumConfigurations


Configuration Descriptor:


0x09 bLength

0x02 bDescriptorType

0x004B wTotalLength (75 bytes)

0x02 bNumInterfaces

0x01 bConfigurationValue

0x00 iConfiguration

0xA0 bmAttributes (Bus-powered Device, Remote-Wakeup)

0xFA bMaxPower (500 mA)

Interface Association Descriptor:


0x08 bLength

0x0B bDescriptorType

0x00 bFirstInterface

0x02 bInterfaceCount

0x02 bFunctionClass (Communication Device Class)

0x02 bFunctionSubClass (Abstract Control Model - ACM)

0x00 bFunctionProtocol

0x00 iFunction

Interface Descriptor:


0x09 bLength

0x04 bDescriptorType

0x00 bInterfaceNumber

0x00 bAlternateSetting

0x01 bNumEndPoints

0x02 bInterfaceClass (Communication Device Class)

0x02 bInterfaceSubClass (Abstract Control Model - ACM)

0x00 bInterfaceProtocol

0x00 iInterface

CDC Header Functional Descriptor:


0x05 bFunctionalLength

0x24 bDescriptorType

0x00 bDescriptorSubtype

0x0110 bcdCDC

CDC Call Management Functional Descriptor:


0x05 bFunctionalLength

0x24 bDescriptorType

0x01 bDescriptorSubtype

0x01 bmCapabilities

0x01 bDataInterface

CDC Abstract Control Management Functional Descriptor:


0x04 bFunctionalLength

0x24 bDescriptorType

0x02 bDescriptorSubtype

0x06 bmCapabilities

CDC Union Functional Descriptor:


0x05 bFunctionalLength

0x24 bDescriptorType

0x06 bDescriptorSubtype

0x00 bControlInterface

0x01 bSubordinateInterface(0)

Endpoint Descriptor:


0x07 bLength

0x05 bDescriptorType

0x81 bEndpointAddress (IN endpoint 1)

0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)

0x0010 wMaxPacketSize (1 x 16 bytes)

0x40 bInterval (64 frames)

Interface Descriptor:


0x09 bLength

0x04 bDescriptorType

0x01 bInterfaceNumber

0x00 bAlternateSetting

0x02 bNumEndPoints

0x0A bInterfaceClass (CDC Data)

0x00 bInterfaceSubClass

0x00 bInterfaceProtocol

0x00 iInterface

Endpoint Descriptor:


0x07 bLength

0x05 bDescriptorType

0x02 bEndpointAddress (OUT endpoint 2)

0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)

0x0040 wMaxPacketSize (64 bytes)

0x00 bInterval

Endpoint Descriptor:


0x07 bLength

0x05 bDescriptorType

0x83 bEndpointAddress (IN endpoint 3)

0x02 bmAttributes (Transfer: Bulk / Synch: None / Usage: Data)

0x0040 wMaxPacketSize (64 bytes)

0x00 bInterval

Microsoft OS Descriptor is not available. Error code: 0x0000001F


String Descriptor Table


Index LANGID String

0x00 0x0000 0x0409

0x01 0x0409 “Arduino LLC”

0x02 0x0409 “Arduino Micro”

0x03 0x0409 Request failed with 0x0000001F


Connection path for device:

USB xHCI Compliant Host Controller

Root Hub

Generic USB Hub

Generic USB Hub

Arduino Micro (VID=0x2341 PID=0x8037) Port: 1

Running on: Windows 10 or greater (Build Version 22631)

Brought to you by TDD v2.17.0, Feb 23 2021, 14:04:02

What you will have to do is change the IDE to 3.3 volt 8 MHz and send any sketch to the board. That will “set” the board to run at 8 MHz. Once you’ve done that, the board will appear dead again. (since it now has the wrong clock) Now, put the 8MHz back on and you should be good to go.

After that, if it happens again there’s a section in the hookup guide for recovering the board should it get into this state again.

Thanks! Here is what I do:

Select SparkFun Pro Micro, 3.3V and 8MHz in the GUI. Compile OK.

Apply 16MHz from my oscillator to the clock input of the board.

Plug in USB. Enumeration OK as “USB Serial Device (COM8)”. GUI shows “SparkFun Pro Micro” in bold letters (top-left) and identifies it on COM8 (bottom-right).

Click “Upload” button and get the message “Uploading…”. I left it like that for 22 minutes. Nothing seemed to happen. All three LEDs on the board remained on.

Unplugged the USB cable and immediately got this error message in the GUI: “Upload error: Failed uploading: uploading error: exit status 1”. The full output of the GUI is below.

Changed the generator frequency to 8MHz and power cycled the board. It does not enumerate.

Changed the generator frequency to 16MHz and power cycled the board. It immediately enumerates and shows up in the GUI again.

I’ll read up on the hookup guide and see what can be done to it.

Best,

Borge

Error log after upload attempt:

Sketch uses 3954 bytes (13%) of program storage space. Maximum is 28672 bytes.

Global variables use 149 bytes (5%) of dynamic memory, leaving 2411 bytes for local variables. Maximum is 2560 bytes.

Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding

avrdude: butterfly_recv(): programmer is not responding

avrdude: ser_send(): write error: sorry no info avail

avrdude: ser_recv(): read error: The I/O operation has been aborted because of either a thread exit or an application request.

avrdude: butterfly_recv(): programmer is not responding

avrdude: ser_send(): write error: sorry no info avail

avrdude: ser_recv(): read error: The device does not recognize the command.

avrdude: butterfly_recv(): programmer is not responding

avrdude: ser_recv(): read error: The device does not recognize the command.

avrdude: butterfly_recv(): programmer is not responding

avrdude: ser_send(): write error: sorry no info avail

avrdude: ser_recv(): read error: The device does not recognize the command.

avrdude: butterfly_recv(): programmer is not responding

Found programmer: Id = “�”; type = �

Software Version = i.