I've been struggling with this issue for a few days on and off now. I made a custom PCB (schematic) for a smaller Arduino Pro Micro and it works - mostly. The only issue I had was that the pins on the USB connector were backward, but when I soldered on a USB cable everything worked as expected.
I then made a new board (schematic) with the following changes:
- Fix the USB connector
- Changed two of the GPIOs that were brought out to pins (from D4 and D17 to D6 and D9)
- Added an onboard LED connected to D8
- Removed the jumper on HWB pin
I have been able to burn the bootloader using both an Arduino Uno and with an AVRISP mkII. When I plug the micro into the computer the first time it is recognized as an "Arduino Micro (COM6)". Then I try to upload the Arduino example Blink.ino sketch - and that works too. In the process the IDE forces the reset and in device manager I can see the "Arduino Micro bootloader (COM7)" replace the micro on COM6. The LED does begin to blink but in device manager it remains as "Arduino Micro bootloader (COM7)". When I try to upload another sketch to this port it fails (as I would expect) because it cannot force the reset; presumably because the bootloader is already active. So I unplug it and try again. It shows up as "Arduino Micro (COM6); all looks good but when I try to upload it cannot force the reset, tries to upload to "Arduino Micro (COM6)" and fails (I assume because it is not entering into the bootloader).
When I double tap the reset pin or connect to the arduino using a baud rate of 1200 the micro does reset (as expected) and the light stops flashing so I suspect the bootloader is being executed - but on device manager it remains as "Arduino Micro (COM6)".
If anyone has any ideas I'm all ears. Normally I do not have to fight with Atmel hardware like I have on this issue.