virtual usb shield problem

I am new to developing on the arduino, and have recently ran into a problem on a project. I have been trying to complete the virtual usb project found in the Practical Arduino book (found here practicalarduino.com ).

I have been able to compile and upload the code just fine to my Duemilanove 328p. I have uploaded the 328p and 128 versions (the latter by forcing the upload). The code for my project seems to run fine as the LEDs present in the sketch are working. I have a feeling it is my shield I created. Here are front and back views of the shield (the back is mirrored for easy comparison)

I have used the correct components listed here practicalarduino.com

When plugging the device into my linux box, I get:
ehci_hcd 0000:00:1d.7: port 6 reset error -110
hub 1-0:1-0: hub_port_status failed (err = -32)
ehci_hdc 0000:00:1d.7: port 6 reset error -110
...
repeated a bunch
...
hub 1-0:1-0 Cannot enable port 6. Maybe the USB cable is bad?
...
everything repeated a bunch
...
usb 4-1: device descriptor read/64, error -71

Thanks in advance,
Ripper

I have also attempted a breadboard hardware setup with the layout found here Project Log : Arduino USB - ProjectLogArduinoUSB .
The design is a bit different as there is no connection to the arduino board's pin 5. Instead, the 2.2k ohm resistor goes the the 5v power line. The only thing I changed from their design was the pins that went to the arduino. It is required in the usbKeyboard library that the USB D- and D+ pins go to pin 2 and pin 4 of the arduino by default.

The errors on my linux box were not as harsh from this setup (ill post them later when I attach the project to my linux box again), but were similar.

I did this attempt on a breadboard instead of a shield. I will try to update the photo with labels later.

Ripper

Cross-referencing your shield to the schematic from the project, it all looks correct to me. This project has turned out to be quite problematic in two ways: firstly the circuit uses Zener diodes to do crude level-shifting and the capacitance of the Zeners can cause the sensitive USB data lines to be squelched, and secondly the library has problems compiling under some versions of Arduino.

It sounds like your sketch is compiling cleanly so that shouldn't be your problem, but the capacitance of the Zeners may be tripping you up. Are they definitely 500mW and not 1W? I've had this circuit working fine with 400mW Zeners but ideally it should be 250mW or so. The larger the power rating, the more likely it is to fail.

When I get home I'll take a pic of the bottom of the working shield I have for comparison purposes.

By the way, I assume you're unplugging the USB cable from the Arduino before plugging into the shield? You're not using 2 USB cables?

Jon
Freetronics: www.freetronics.com

the Zeners are defiantly 0.5w and I was unplugging the USB cable from the arduino before plugging it into the shield.

I was getting power to the arduino when plugging into the shield, so I know at least some of the connections on my shield were working correctly.

I look forward to seeing the back of your working setup. Thank you for the quick response.

Ripper

Sorry to take so long to reply. I dug my prototype out and just took a couple of pics, and did your trick of mirroring the bottom image so you can directly compare them.

Since you've had this problem with both systems you've assembled, I strongly suspect that the Zeners are your problem. 500mW Zeners are pushing the limit of the capacitive loading that you can get away with on USB data lines.

I've been wanting to do a better version of that circuit using proper level-shifting rather than dodgy voltage clamps, but haven't got to it yet.

Jon