Hello and Welcome! If you have a technical question please check out our Forums. If you have an order or shipping question please refer to our Customer Support page. Please see all COVID-19 updates here and thank you for your continued support.

USB Host Shield

Replacement:DEV-09947. The new version corrects the pin outs and correctly routs the GPX and RESET pins. This page is for reference only.

The USB Host Shield contains all of the digital logic and analog circuitry necessary to implement a full-speed USB peripheral/host controller with your Arduino. This means you could use your Arduino to interface with and control any USB slave device - thumbdrives, digital cameras, bluetooth dongles, and much more!

A four-wire serial interface is used to communicate with the host controller chip, so the shield connects the Arduino's hardware SPI pins (D10-13) to the MAX3421E. A USB type A female connector is wired up to the IC, and it also supplies 5V as any normal USB port would.

The Host Shield takes its power from the 'Vin' pin on your Arduino. Power from that pin is regulated to both 5V and 3.3V on the shield. All SPI signals are sent through a hex converter to step them down to 3.3V.

Note: If you are using the example code by Oleg, you will need to edit the max3421e_constsnts.h file to have:

#define MAX_GPX 7
#define MAX_RESET 8

**Note: **There is a new revision of this shield available, however, we've found a handful of these in stock and will be selling them for a limited time at a reduced price. Get them while you can!


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • So if an Arduino, with 32k program space and 2k RAM can have a USB port, why can't an iPad? ;)

  • The USB Host software uses the SPI library from the Arduino playground. Download here:

    The reset and GPX pins are switched on this board with Oleg's code, at least they were in my version, You need to open Max3421e_constants.h and change those two pins. The device may still work yet it will be really buggy and drive you crazy like it did to me.

    • I received my USB Host Shield this weekend, and I can confirm this comment. Now the question is whether or not the PCB layout should change to match Oleg's code, or if we should all just 'deal with it.' I sure wasted a lot of time wondering what the heck was wrong with my board! It seems that if Sparkfun is going to link off to his code, that the board would at least be compatible...

      • ribbotson: _The Sparkfun usb host shield pcb has the two pins for GPX and RESET swapped from the original board by Oleg.
        You simply need to edit the max3421e_constsnts.h file to have.

        define MAX_GPX 7

        define MAX_RESET 8

        Then all code works the same as on the shield from Oleg.
        Power supply on the Sparkfun board is also different to Oleg. Sparkfun is powered from Vin.
        I have both boards and they work fine. Post here or on circuitsathome if you have any specific problems later._
        Thanks everyone for the comments! In the next revision I will be sure to change the pin assignments to match Oleg's code.

      • Does the shield work with a change in the code? Changing code is always easier to do than a hardware revision.

  • can the usb shield support 255 divices as a desktop usb can? i didnt find that information in the datasheet

  • Typo -- in "The Host Shield takes it's power from", the "it's" should be "its". "it's" is a contraction for "it is". "Its" is the possessive form of it, no apostrophe required.

  • How this would work if the Arduino's Vin is 5V? Haven't used LM317s myself...

    • last paragraph in the description states the "Vin" power is regulated to 5 and 3.3 volts, thus the necessary power converter is on board already.

  • ciao nei link postati su questo video http://youtu.be/onm9Xb4o8So ci sono le librerie modificate per sparkfun usb host shield e file d'esempio per controller ps3 funzionanti ciao e spolliciate

  • libreria modificata e file per ps3 in questo video http://youtu.be/onm9Xb4o8So ci sono i link per sparkfun usb host shield ciao spoliciate grazie

  • Hi all. Recently working on usb shield and I had problems to work, you must make a bridge between pin 7 and pin reset. Only in this way can make it work. There is a manual or datashet about? thanks all

  • Hello, could I use this shield to keep data in a pendrive, as in the micro-sd shield? greetings.

  • Hi, I'm using the Arduino 1.0 IDE and there is a new version of the USB library (#2) with does not have the max3421e_constants.h file to edit. I found 'MAX_GPX' in the 'max3421e.h'-file, but no 'MAX_RESET'. Is it possible to use version 2 of the USB library with arduino 1.0 IDE? If yes, what should I change? Thanks, Bas

    • To use this shield with v2.0 of the library, you have to connect a small jumper cable between pin D7 and RESET. Also you should use an external power supply.

      I have written a small tutorial to show how you can use this shield with various versions of the library.

  • USB shield overheats ?
    I have a 12V power supply on the arduino uno external power supply. According to arduino uno data sheet this should be ok.
    However the USB host shield board gets extremely hot.
    Is this normal ?
    What is the recommended power supply ?

  • I'm considering to get this shield for my Arduino, but I noticed this shield has some pins named 'GPIN' and 'GPOUT' in the schematic. My question is what are they for? Are these additional I/O pins?

    • I'm just being silly (it's late)...
      I've looked up the datasheet for the MAX3421E chip. The GPIN/GPOUT pins are 8 digital inputs and 8 output pins.

  • Has anyone had any success using this shield with a USB modem, or customizing GSM Playground's GSM library to talk to a modem attached through this shield?

  • So are the pin headers included with this shield. Doesn't say that they are or arn't.

  • Could this be used to get images from a camera or webcam?

  • Could you guys make a tutorial for this?

  • I copied all code directly from the usb code/library site and I compile and I get this. EVEN THOUGH IT IS DECLARED AT THE TOP of that file as follows...


    C:\arduino\arduino-0018\libraries\Usb\Max3421e.cpp:90: error: 'Spi' was not declared in this scope

  • The Sparkfun usb host shield pcb has the two pins for GPX and RESET swapped from the original board by Oleg.
    You simply need to edit the max3421e_constsnts.h file to have.

    define MAX_GPX 7

    define MAX_RESET 8

    Then all code works the same as on the shield from Oleg.
    Power supply on the Sparkfun board is also different to Oleg. Sparkfun is powered from Vin.
    I have both boards and they work fine. Post here or on circuitsathome if you have any specific problems later.

    • Just got the board and changed reset pin. The MAX_GPX define in the constants.h was commented out for some reason. Even when I uncomment it and change it to 7, I still get the following:
      Error: OSCOKIRQ failed to assert
      Circuits At Home 2010
      USB Host Shield QC test routine
      Press any key to continue...
      Reading REVISION register...Die revision invalid. Value returned: 00
      Test FAILED!!!
      Test Halted.
      0x55 pattern is being transmitted via SPI to aid in troubleshooting
      Press RESET to restart test
      I get the same thing again after a reset. Is my board defective? On Oleg's blog it says it might be the oscillator that is giving the problem.

      • My bad. For some reason I thought Vin would supply power under USB power but it turns out that only works from an external power source. I'm using a Seeeduino.

        • ok, let me get this straight:
          1. swap pin 7 & 8 in max3421e_constants.h
          2. plug in external power source
          then the board would run normally, right?

  • so this shield works or not? people talking about unknown erros...

  • Hi guys,
    I got the board and then i tried to run the Oleg's code on the board but it seems that i get error message in Ma3421E::poweron() function which says "Error: OSCOKIRQ failed to assert" and i think there is something wrong with reseting!!! and then i noticed that GPX is on pin 7 of arduino but where is reset pin???
    please help

    • This happens when you did not plug in an external power supply to the Arduino. The board is powered by Vin, which means it bypasses the USB connector power.

  • I think it is unlikely you will see a large library of device drivers. They take a significant time to create, and there is usually no support from the USB device manufacturer.
    The arduino is memory challenged, which makes drivers for memory sticks and cameras most difficult.
    I personally use the USB Host shield, when other solutions are not available to support a specific device or interface. As a first choice I avoid USB completely, because it does put constraints on the whole arduino code operation to be non blocking, so for bluetooth serial profile, would still use a bluetooth serial module. When USB Host is needed, I still look if Vinculum or GHI, can already do what I need already. then I use the shield.
    With more chips having USB Host ports (PIC32, AVR8, AVR32, ARM, ..) more drivers will come available and easier to port to arduino. Especially when free stacks like the ones from Igor and LUFA are available.

  • what about drivers for the devices, is there a library yet?

  • If an iPad had a USB port, you could plug a 3G dongle into it. Where are the Job$ in that ?
    Arduino is about doing stuff, not perfect, not always pretty, no big marketing budget, lots of fun and lol !

  • If you want to support multiple devices , you would need to write hub libraries. Maybe your expectations of the Arduino platform are a bit high !

  • omg, i am so glad you finally got ahold of these, cant wait to get it in the mail

Customer Reviews

No reviews yet.