home-built arduino, usb (mega16u2) not recognized

Dear all,
Lately I have been trying to build an Arduino-like system on a piece of stripboard. I bought a mega16u2 in a tqfp32 package, and put it on a little breakout board. I then hooked up a 16 MHz crystal, some caps and resistors, and a USB-B socket. A picture of the setup is attached
I used a real arduino UNO as an ISP to program the mega16u2, and used avrdude to write the Arduino-usbserial-atmega16u2-Uno-Rev3.hex file to flash, which appears to have worked just fine.

However, when I then hook my little circuit up to my laptop, the latter tells me "USB Device not recognized" and so of course it doesn't work.

I played with the fuses on the m16u2 a bit, and now have them set at lfuse:0xef, hfuse:0xd9, efuse:0xf4, but it hasn't solved the problem.

So my questions are:
-Did I upload the right .hex file?
-Did I set my fuses correctly?
-Looking at my board, and believe me I know it isn't the prettiest layout the world has ever seen, does anyone see any obvious mistakes? I didn't have any varistors or ferrite beads lying around so those aren't in there at the moment, but I think the bare minimum is there.
Are the lines for D+,D- too long?

I probably made several very silly mistakes, and would be very grateful if anyone could point them out to me!

Thanks very much,


Sorry, I seem to be unable to upload any attachments. Trying again here…

Ok, I solved it, it must have been the connection between the mega16u2 and the USB socket. When I solder a USB cable as closely as possible to the UVcc, D-,D+ and UGND pins on the mega16u2, it works fine.