SparkFun USB Host Shield board_qc not working [RESOLVED]

Hello,

I am sure this is not a novel issue, but I have tried the suggested fixes to no avail.

I purchased the DEV-09947 version of the SparkFun USB Host Shield but I have no idea of knowing if it is in fact the correct revision. The only thing printed on my board is a date: "5-28-10".

I have my Arduino Uno hooked up to my PC via USB and it also has an external 9V regulated supply DC jack connected.

After uploading "board_qc", the serial monitor shows the following output:

Circuits At Home 2011
USB Host Shield Quality Control Routine
Reading REVISION register... Die revision invalid. Value returned: 00
Unrecoverable error - test halted!!
0x55 pattern is transmitted via SPI
Press RESET to restart test

This message does not go away if I jumper D7 to RST.

Wondering if anyone has any suggestions. Thank you!

SOLUTION
1) Check what SparkFun board revision you have
2) If DEV-09947, you don't need to make any jumper connections
3) Add the following #defines in your sketch along with the code below it in void setup()
//Revision 1.3 (DEV-09947)
#define MAX_RESET 7 //MAX3421E pin 12
#define MAX_GPX 8 //MAX3421E pin 17
void setup()
{
** pinMode(MAX_GPX, INPUT);**
** pinMode(MAX_RESET, OUTPUT);**
** digitalWrite(MAX_RESET, LOW);**
** delay(20); //wait 20ms digitalWrite(MAX_RESET, HIGH);**
** delay(20); //wait 20ms**
** ...**
4) Plug in your USB device/keyboard/etc
5) Make sure switch on SparkFun USB Host Shield is in ON position
6) Run board_qc or USB_desc to test with Arduino Serial Monitor

Have you tried this suggestion?

gdsports:
Have you tried this suggestion?

Thank you, I have now been able to get passed my last hurdle and have been met with another.

This code setup below worked for me, while the opposite did not.

//Revision 1.3 (DEV-09947)
#define MAX_RESET 7 //MAX3421E pin 12
#define MAX_GPX 8 //MAX3421E pin 17

adding the following under void setup():

pinMode(MAX_GPX, INPUT);
pinMode(MAX_RESET, OUTPUT);
digitalWrite(MAX_RESET, LOW);
delay(20); //wait 20ms
digitalWrite(MAX_RESET, HIGH);
delay(20); //wait 20ms

I get stuck at "Checking USB device communication. Waiting for device..."

Circuits At Home 2011
USB Host Shield Quality Control Routine
Reading REVISION register... Die revision 03
SPI long test. Transfers 1MB of data. Each dot is 64K................ SPI long test passed
GPIO test. Connect GPIN0 to GPOUT7, GPIN1 to GPOUT6, and so on
Test failed. Value written: 00 Value read: FF
Press any key to continue...
GPIO test passed.
PLL test. 100 chip resets will be performed
Resetting oscillator
Reset number 0 Time to stabilize - 291 cycles
Reset number 1 Time to stabilize - 291 cycles
Reset number 2 Time to stabilize - 291 cycles
Reset number 3 Time to stabilize - 291 cycles
Reset number 4 Time to stabilize - 291 cycles
Reset number 5 Time to stabilize - 291 cycles
Reset number 6 Time to stabilize - 291 cycles
Reset number 7 Time to stabilize - 291 cycles
Reset number 8 Time to stabilize - 291 cycles
Reset number 9 Time to stabilize - 292 cycles
Reset number 10 Time to stabilize - 291 cycles
Reset number 11 Time to stabilize - 291 cycles
Reset number 12 Time to stabilize - 291 cycles
Reset number 13 Time to stabilize - 291 cycles
Reset number 14 Time to stabilize - 291 cycles
Reset number 15 Time to stabilize - 291 cycles
Reset number 16 Time to stabilize - 292 cycles
Reset number 17 Time to stabilize - 292 cycles
Reset number 18 Time to stabilize - 292 cycles
Reset number 19 Time to stabilize - 292 cycles
Reset number 20 Time to stabilize - 292 cycles
Reset number 21 Time to stabilize - 291 cycles
Reset number 22 Time to stabilize - 291 cycles
Reset number 23 Time to stabilize - 291 cycles
Reset number 24 Time to stabilize - 291 cycles
Reset number 25 Time to stabilize - 291 cycles
Reset number 26 Time to stabilize - 291 cycles
Reset number 27 Time to stabilize - 291 cycles
Reset number 28 Time to stabilize - 291 cycles
Reset number 29 Time to stabilize - 291 cycles
Reset number 30 Time to stabilize - 292 cycles
Reset number 31 Time to stabilize - 292 cycles
Reset number 32 Time to stabilize - 292 cycles
Reset number 33 Time to stabilize - 292 cycles
Reset number 34 Time to stabilize - 292 cycles
Reset number 35 Time to stabilize - 291 cycles
Reset number 36 Time to stabilize - 291 cycles
Reset number 37 Time to stabilize - 291 cycles
Reset number 38 Time to stabilize - 291 cycles
Reset number 39 Time to stabilize - 291 cycles
Reset number 40 Time to stabilize - 291 cycles
Reset number 41 Time to stabilize - 291 cycles
Reset number 42 Time to stabilize - 291 cycles
Reset number 43 Time to stabilize - 291 cycles
Reset number 44 Time to stabilize - 291 cycles
Reset number 45 Time to stabilize - 292 cycles
Reset number 46 Time to stabilize - 292 cycles
Reset number 47 Time to stabilize - 292 cycles
Reset number 48 Time to stabilize - 292 cycles
Reset number 49 Time to stabilize - 292 cycles
Reset number 50 Time to stabilize - 291 cycles
Reset number 51 Time to stabilize - 291 cycles
Reset number 52 Time to stabilize - 291 cycles
Reset number 53 Time to stabilize - 292 cycles
Reset number 54 Time to stabilize - 291 cycles
Reset number 55 Time to stabilize - 292 cycles
Reset number 56 Time to stabilize - 291 cycles
Reset number 57 Time to stabilize - 291 cycles
Reset number 58 Time to stabilize - 291 cycles
Reset number 59 Time to stabilize - 291 cycles
Reset number 60 Time to stabilize - 292 cycles
Reset number 61 Time to stabilize - 292 cycles
Reset number 62 Time to stabilize - 292 cycles
Reset number 63 Time to stabilize - 292 cycles
Reset number 64 Time to stabilize - 292 cycles
Reset number 65 Time to stabilize - 291 cycles
Reset number 66 Time to stabilize - 291 cycles
Reset number 67 Time to stabilize - 292 cycles
Reset number 68 Time to stabilize - 292 cycles
Reset number 69 Time to stabilize - 291 cycles
Reset number 70 Time to stabilize - 291 cycles
Reset number 71 Time to stabilize - 291 cycles
Reset number 72 Time to stabilize - 291 cycles
Reset number 73 Time to stabilize - 291 cycles
Reset number 74 Time to stabilize - 291 cycles
Reset number 75 Time to stabilize - 292 cycles
Reset number 76 Time to stabilize - 292 cycles
Reset number 77 Time to stabilize - 292 cycles
Reset number 78 Time to stabilize - 292 cycles
Reset number 79 Time to stabilize - 292 cycles
Reset number 80 Time to stabilize - 291 cycles
Reset number 81 Time to stabilize - 291 cycles
Reset number 82 Time to stabilize - 291 cycles
Reset number 83 Time to stabilize - 291 cycles
Reset number 84 Time to stabilize - 291 cycles
Reset number 85 Time to stabilize - 291 cycles
Reset number 86 Time to stabilize - 292 cycles
Reset number 87 Time to stabilize - 291 cycles
Reset number 88 Time to stabilize - 291 cycles
Reset number 89 Time to stabilize - 291 cycles
Reset number 90 Time to stabilize - 292 cycles
Reset number 91 Time to stabilize - 292 cycles
Reset number 92 Time to stabilize - 292 cycles
Reset number 93 Time to stabilize - 292 cycles
Reset number 94 Time to stabilize - 292 cycles
Reset number 95 Time to stabilize - 291 cycles
Reset number 96 Time to stabilize - 291 cycles
Reset number 97 Time to stabilize - 291 cycles
Reset number 98 Time to stabilize - 291 cycles
Reset number 99 Time to stabilize - 292 cycles
Checking USB device communication.
Waiting for device...

Plug in something simple such as a USB keyboard. Or try the USB_desc.ino example program.

I finally got this to work and it turned out to be a silly oversight on my part.

I didn't realize that there was a physical ON/OFF switch on the SparkFun USB Host Shield board. Once I turned it into the ON position, after making the above code changes, everything worked and my USB keyboard was recognized using both board_qc and USB_desc files.

I also confirmed with SparkFun and my board is a DEV-09947 revision.

In summary:

  1. Check what SparkFun board revision you have
  2. If DEV-09947, you don't need to make any jumper connections
  3. Add the following #defines in your sketch along with the code below it in void setup()

//Revision 1.3 (DEV-09947)
#define MAX_RESET 7 //MAX3421E pin 12
#define MAX_GPX 8 //MAX3421E pin 17

void setup()
{
pinMode(MAX_GPX, INPUT);
pinMode(MAX_RESET, OUTPUT);
digitalWrite(MAX_RESET, LOW);
delay(20); //wait 20ms digitalWrite(MAX_RESET, HIGH);
delay(20); //wait 20ms

...

  1. Plug in your USB device/keyboard/etc
  2. Make sure switch on SparkFun USB Host Shield is in ON position
  3. Run board_qc or USB_desc to test with Arduino Serial Monitor

Thanks again, gdsports!