Problem getting USB enumeration on a custom "Leonardo"/ATmega32u4 3v 8Mhz board


Started out borrowing the schematics from Adafruit's Itsybitsy which is ATmega32u4 running at 3v 8Mhz. Programming the bootloader from Arduino works fine using the Adafruits modified Caterina bootloader.

Problem is that the USB port never enumerates successfully after that. Tried different cables and so on.

Seems to be two important parts left. Routing of diff-pairs and the frequency tolerance when using a resonator.

I "followed" good practices for the most part when I routed the diff-pair. D+ and D- are length matched to under 1mil. BUT. I do go through a single via for both D+ and D- but then for the last final 0.5cm of the board/routing they split up to pass a resistor on either side. Could it really be that sensitive??

For the resonator I chose a Murata CERACLOCK 8Mhz +-0.5% industrial version.

Could it be something with the fuses here? Attached the output I got during bootloader programming.

It ends with:

avrdude: verifying ...
avrdude: WARNING: invalid value for unused bits in fuse "lock", should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in future version
You probably want to use 0xef instead of 0x2f (double check with your datasheet first).
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.