Creative Commons images are CC BY-NC-SA 3.0

24.95

added to your
shopping cart

quantity
Only 13 left! 13 in stock
24.95 1+ units
22.46 10+ units
19.96 100+ units

Description:  This new version corrects the pin out for the GPX and RESET pins. 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.

Documents:

Replaces: DEV-09628

Comments 137 comments

  • How do your boards solder so well? I seriously sling hot solder form across the room and your boards soak it up in the spot I wanted, what are you doing differently with the production these thru hole PCBs?

  • Nice shield. It tooks some times for me to find and fix an issue with USB host library running on UNO. Reset pin 12 of the IC on this board wired to dig. pin 7, and it looks like as another citcuitsathome ’s board has reset tided up to reset of the arduino board, nobody care anymore about status of the digital pin 7. And of course chip is in RESET, because there is “0” - active at this pin. To fix, simply add two lines in your sketch setup(): pinMode( 7, OUTPUT); digitalWrite( 7, HIGH);

  • It should be noted in the description that the shield does not come with headers installed

  • I guess I have to solder the pin’s to the shield myself

  • Will this play nice with the micro sd shield (http://www.sparkfun.com/products/9802) ?

  • Hi,
    I just got this Shield.
    Like some of you, when I tried to execute the board test sample I got the following error :
    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.
    0×55 pattern is being transmitted via SPI to aid in troubleshooting
    Press RESET to restart test
    I’am using USB Host library downloaded with the name felis-USBHostShield-a59ba5b.zip.
    I tried to change MAX_GPX and MAX_RESET to #define MAX_GPX 7 #define MAX_RESET 8 but problem still persists.
    I use an ATMEGA 2560 linked to my PC and an external +9V power supply.
    (SPI pins are correctly connected according to atmega2560 specification)
    Thanks for your help !

    • I found the solution, just redefine the MAX_SS constant to 53 after that all tests passed !
      Here is a part of MAX3421e_constants.c:
      #if defined(AVR_ATmega1280) || (AVR_ATmega2560)
      #define SCK_PIN 52
      #define MISO_PIN 50
      #define MOSI_PIN 51
      #define SS_PIN 53
      #endif
      #if defined(AVR_ATmega168) || defined(AVR_ATmega328P)
      #define SCK_PIN 13
      #define MISO_PIN 12
      #define MOSI_PIN 11
      #define SS_PIN 10
      #endif
      #define MAX_SS 53
      #define MAX_INT 9
      #define MAX_GPX 8
      #define MAX_RESET 7

  • My power LED does not turn on when power with a 9-Volt source or via USB. I have voltage at Vin, I have voltage on the other side of the switch when switched on. It looks like the LED might be installed backwards. Anybody else having this problem?

  • I just got this board and can’t seem to get it to work. I am using Oleg’s code and receive this message: “Error: OSCOKIRQ failed to assert” I am using the Mega 2560 with an external power supply. I have read everything I can find about this and have tried everything suggested, but no luck.

    • The SPI pins are located somewhere else on the arduino mega, so this shield will not work out of the box. You need to do some soldering to get this to work. Just google for arduino mega and SPI.

    • I have a Duemilanove board and this shield
      To get V2 of Olegs code to run I must solder a line from reset to D7 on the sparkfun board. The code relies on reset commands coming from the arduino and on the Sparkfun board reset is not connected to the shield

  • hello, my shield is not working anymore and the MAX3421E chip gets really hot.. what could be the reason?

    • I investigated a bit and noticed that the 3.3V on board regulator is actually outputting 4.2V instead of 3.3V! what could be the reason??

  • just a stupid but important for me question where can i get the exact pin configuration of this board? the links given here seems to be for a board having a different layout than this one

  • Does this works for the mini arduino pro?

  • Could this be used on a Mega so that instead of using the Uno’s D10-13 pins to uses the Mega’s D31-34?

  • Is this compatible with Arduino Mega?

  • Hey everyone I tried running USB host shield by Sparkfun on Arduino Mega. I Updated the libraries by changing

    define SCK_PIN 52

    define MISO_PIN 50

    define MOSI_PIN 51

    define SS_PIN 53

    also changed

    define MAX_SS 53

    But still I’m getting Error: OSCOKIRQ failed to assert. Can anyone help me with this. Thanks in advance.

  • Shield works great! A couple tips to help others avoid the stumbling blocks I hit:

    (1) You really do need to jumper the RESET pin to 7. Sounds silly, but if you’re seeing “Error: OSC Did Not Start” or a variety of other errors, this is your fix.

    (2) For my application, I was using a mouse with a 1ms poll rate. The Host Shield Library (v2) has a default 10ms delay between polls. That sucks! To fix it, I edited “hidboot.h” in the library. Near the bottom of the file, look for “qNextPollTime = millis() + 10” and change the 10 to a 1.

    (3) Not all the mice I tried played nice with this shield. The Razer Taipan is the one I ended up using. It has an absurdly high DPI and AWESOME drivers that you can use to tweak firmware settings like DPI and liftoff distance. The taipan is pricey, though – if your application doesn’t require these things, try something cheaper first of course.

    Happy hacking!

  • I have tried using USB host Shield with Arduino uno with a joystick. But I’m getting an error Data Packet 9. Can anyone suggest me why this error is coming?

  • I was not able to get Oleg V2 library to work on the shield until I put the jumper from D7 to RST. Initially, hesitated to put the jumper, but after I read all the comments and I looked at the schematics. I realize that Oleg V2 Library should be resetting the RST line if it is not using Pin D7 to do the job. But make sure you do not connect the D7 on the shield to the Arduino. You only connect D8-D13 to the Arduino, otherwise you will be shorting the Arduino D7 to RST. If you set Pin7 as output and high, this should also prevent Pin D7 from resetting Arduino (if D7 is still connected between Shield and Arduino).

  • I got the shield working with a PS3 remote using a usb cable and all readings are fine. How ever when I connect a usb dongle that came with a bluetooth mouse I bought there is no connection between the two. The mouse on the other works fine.

    Do I need to buy a new usb dongle for the shield to comunicate with the PS3 remote?

    • Do you mind sharing with me how you got this to work? I’m having troubles getting the PS3 controller to output anything.

  • Hey guys,

    I’m playing around with my new USB Host Shield and have encountered a problem. I am simply connecting different optical mice to an Arduino Uno through the shield. I have got 1 (let’s call it mouse A) up and running. It displays right/left/middle button presses and delta x’s&y’s for movement. I have a second mouse (mouse B) with the buttons working, but I cannot get the movement to display. On a guess, I probed my USB lines directly and noticed that neither the VBus pipe or the optical sensor Vss is at 5V. They both are running at 3.38V at the moment. I suspect that mouse A can function at that voltage but mouse B actually requires 5V to use it’s optical sensor. Both data sheets for the optical sensors in each mouse state 4.25-5V for power supply. The USB Shield description says it provides 5V to the Vbus line, but maybe I missed the part saying you need to do steps A and B for that to happen.

    1) Any suggestions on what might be going wrong?

    2) Can I safely route a 5V line from my Arduino directly to the Vbus of the USB on the Shield? I figure it would be better to cut the existing Vbus line if I can find it, and then attach the 5V line from the Arduino. Thoughts? I’m worried that the MAX3421 reads a voltage level off the Vbus line and if I cut it, nothing will work.

    Thanks guys!! Ben

  • I already have an Ardweeny, a kit from Solarbotics that uses an ATmega328 fyi, and was wondering if this can be used with that while the Ardweeny is still using an FTDI basic breakout board. I’m still very new to USB hosting and would like to just use what I already have while simultaneously having separate host and slave buses from which the Arduino can still be programmed. Fingers crossed that somebody here can help me, and thanks if you can.

    • Note: I’m probably at the same knowledge level as you so keep that in mind.

      I don’t see a problem with what you describe. The Ardweeny talks to the FTDI breakout board through SPI. It would also use SPI to talk to the USB Host Shield. This is perfectly fine, but you would probably have to reroute a pin or two and update your code (or modify existing free libraries). You would need to route and program a second Slave Select line for the USB Shield. Modifications to existing code would involve making sure that your two modules are not trying to use the SPI lines at the same time. SPI has simple protocols for this but you would likely have to modify some things in your code to make sure that SPI msgs are not being lost or crossed. Hope that makes sense and I hope I’m correct….

      Ben

  • hello i bougth a usb shield from sparkfun and a motor shield from maker shed when i connect both separtly to the arduino uno i got them to work. But if I stack them together they stop working. How can i find out if there is a pin problem?

    • The best way to figure this out is to look at both schematics and see if there are any pins that are used by both shields that could be causing this problem. For example, you can share MISO, MOSI, and SCK between multiple boards, but you can’t share SS (Slave Select) pins; each board needs its own. When you find the culprit, you may have to do a bit of hacking (change the hardware so the offending pin(s) are moved on one of the boards), and change the software to match the new allocation. An alternative to hacking boards is to use the Go-Between Shield, which is made to reroute pins. Good luck!

  • Not sure why you are selling these when Oleg himself doesn’t support them.

    • Oleg himself doesn’t support them.

      Nor should he. Unfortunately, this board was created before (or right around the time) his library went public, so we didn’t have his hardware specs during our design. To get the board to work with Oleg’s code, there are some hardware mods you need to make, see other comments on this page. At some point we would like to revise the board and will make sure the board is compatible with the best and most up-to-date libraries. Thanks for the feedback!

  • I’m seeing “sketch too big” is there a work-around…when compiling wii example

  • Hi, regards from Argentina. I have my Sparkfun USB Host translating USB MIDI to Standard MIDI. I use a nanoKey to play my Monotribe (both from Korg) using both Oleg and Yuuichi Akagawa libraries. Everything OK with this. But I connected a Korg microKey 37 and the shield doesn’t even power it up. I tried to conect just data and GND to USB HOST and power it from an external source and nothing either. Any experience out there using USB MIDI controllers with this shield? Any suggestions? Thanks in advance! Jorge

  • Can this shield be used on a second Arduino to recieve USB data from an existing Arduino that is already sending out serial data on the USB (normally sent to a PC)? For example, my original project is sending out data to the USB port which is normally used for viewing the data with a PC, and all of the original project’s Arduino pins are used up in the project (no spare pins to create a simple serial connection). If I want to add a second Arduino with a USB Host Shield to recieve data via the original project’s USB and display that to a serial LCD, is this USB Host Shield capable of hosting such communication? I think that a “stand alone USB viewer” would be a neat tool to have when I want to temporarily view the serial USB output of an Arduino project without connecting a PC to my existing projects.

    • I guess you could do that, but remember that the USB port is connected to the RX/TX pins (unless you have a Leonardo). But for the price of the board you might be better off just using a Mega or something else.

  • I can’t tell if the shield is defective or I’m using a wrong/incompatible library (usblib2.0 from Oleg). Is there any recent code example?

    • I just got my Sparkfun USB shield working. I’m using the most recent Oleg usblib2.0 library and the example that are in the library. I had to add a jumper between D7 and reset button to get the board to work. I also replaced the tiny 5 volt regulator with a bigger one. When I connected my cell phone up the board, the original regulator would get real hot real quick.

  • I’m unable to initialize this board with my Arduino UNO.

    The board_qc example from the 2.0 library gives the following:

    /**** 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 Test failed. Value written: 01 read: 00 Unrecoverable error - test halted!! 0x55 pattern is transmitted via SPI Press RESET to restart test /

    The board’s revision can be read but data can’t be written to the board. Usb.Init() will give -1 and examples say that means ‘ osc did not start’.

    1.0 Library also fails to start. I’m worried if I burnt something I shouldn’t while soldering the headers to the board.

    Any ideas?

  • Hello, I wanna connect this shield to control a fax-modem (AT Commands). The modem uses the Conexant CX93010… Can anyone tell me if the instructions on “Interfacing Arduino to a Cellular Phone” can work on this case?

  • Suggestion to Sparkfun… you should add a note to your shields about compatibility with Leonardo. I burned a fair bit of time trying to figure this out. While there is some info on the forums, you actually have to do a bit of digging since the Leonardo is new.

  • I have spent an afternoon trying to get this board to work with a Leonardo. I just discovered that Leonardo will not work with it it doesn’t have the SPI lines on pin 10, 11, 12 and 13 but only on the ICSP header.

    Is there any way I can get around this without buying a different Arduino?

    • I got some help from the Arduino forum. This shield will not work with a Leonardo unless you get the Sparkfun TransmogriShield or make a modification yourself.

      I chose to make the modification myself. I cut the legs off D11, D12, D13 on the header to the USB Host Shield and jumpered in from the ISP header on the Leonardo SCK (ISP pin 3 to D13), MOSI (ISP pin 4 to D11), MISO (ISP pin 5 to D12).

  • Hi People I’ve been googling the whole day find any piece of code that can used for writing data on a USB flashdrive connected to the host shield. I’ve got the 2.0 library working but there aren’t any examples of writing to a USB drive connected to the host shield

    I’m surprised I coudn’t find any code. Has anyone managed to do this?

  • Can I use it with the ardumoto shield? Or, they use the same pin?

  • Greetings,

    I haven’t received my board yet, but based on the photos, it looks like there is a simple trace on the Sparkfun PCB that connects arduino D7 to the 5 volt to 3.3 volt level-shifter chip. I plan to carefully cut that trace near the arduino D7 pin, and then jumper the arduino RESET to the level-shifter side of the cut trace. This seems safer – I don’t like the idea of RESET and D7 being shorted together… bill

    • Followup - this modification worked well for me. I cut the trace near the Arduino D7 pin. For the jumper wire, I tacked a wire from pin 9 on the level-shifter over to the momentary reset button. Seems to work fine so far. As others pointed out – always use an external power supply so you will have a good Vin. Don’t try using just the USB for power.

    • With my shield I didn’t short RESET and D7 instead I have set D7 as output with PORTB7 being a 1.

  • I can also confirm that I have been able to get everything working with a 328 and a jumper between D7 and RST. All good. Just in case no one has spotted the little on/off switch next to the USB socket I thought I’d mention it as you tend to get a failure when its like off… i.e. not on. :)

    What a fantastic board and what fantastic code by Oleg.. simply stunning.

  • Attention: The only way to get this to work with Oleg’s code is to jumper D7 to RESET. After that everything works perfectly. Also, if you run the board QC code, ignore the warnings pertaining to ground pins, they are not important.

  • Help! Can I use this dongle with this shield? It would seem that this would be a cheaper option for swapping in and out inexpensive USB modules instead of using larger boards. I want to connect via Bluetooth to a Palm Pre Plus.

  • Circuits@Home has a USB Host Shield Ver. 2 that they say is compatible with the Mega. I prefer the Sparkfun design. Has Sparkfun given any thought to producing a Ver. 2 of their own that resolves the issues discussed in some of the other comments? Lack of compatibility with my Mega is the only thing standing in the way of me ordering one. I may not be alone.

  • Hi,

    I have connected the pin 7 to the reset and soldered all the GPIN connections from GPIN0 to GPIN7 and GPIN1 to GPIN6 and so on. I am getting the below mentioned message for the board_qc

    ˜ƒÁE- 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: 10 Press any key to continue…

    Have i made some mistake in the GPIN connections. As I was making the connections I kept checking the value read and it went from FF to 10 but not to 00.

    Is there a way I can check which pin has the mistake ? Please help

  • Hi,

    I soldered the connections and also the Resest pin with the pin 7. When i run the board quality check code of Oleg, the SPI test is passed but the GPIN test is failed. Are the GPIN and GPOUT pins connected on the board or do i need to solder the connections for them as well. That would definitly make the board too messy.

    BR, Muhammad

  • I have just recieved the USB host shield but I am unable to figure how to connect it to my UNO. I have seen the schamtic but it shows the lay out of the USB Host. Which pin of the UNO i have to solder with USB host shield board. Can anyone please guide me ?

    • You need the stackable header kit, than just mount the shield on top of your Arduino.

      • Hi,

        I have connected the pin 7 to the reset and soldered all the GPIN connections from GPIN0 to GPIN7 and GPIN1 to GPIN6 and so on. I am getting the below mentioned message for the board_qc

        ˜ƒÁE- 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: 10 Press any key to continue…

        Have i made some mistake in the GPIN connections. As I was making the connections I kept checking the value read and it went from FF to 10 but not to 00.

        Is there a way I can check which pin has the mistake ? Please helpHi,

        I have connected the pin 7 to the reset and soldered all the GPIN connections from GPIN0 to GPIN7 and GPIN1 to GPIN6 and so on. I am getting the below mentioned message for the board_qc

        ˜ƒÁE- 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: 10 Press any key to continue…

        Have i made some mistake in the GPIN connections. As I was making the connections I kept checking the value read and it went from FF to 10 but not to 00.

        Is there a way I can check which pin has the mistake ? Please help

  • Hi All, I got the USB Host shield, together with the Nokia LCD shield and it works great. But the LCD shield stacked on top of hr USB shield does not work. Some port conflict? SPI adress? Is there anything I can do about that??

    Arjan

    • Figured it out, it uses the same digital pins as the LCD shield. Now trying to move to an ATMega and changing the pins.

  • Can you plug a hub into this shield and connect more than one device or is it restricted to a single host device?

  • Just got mine and forgot to order the shield connectors. So I’m asking this in advance before being able to check it myself and fry the shield. To be honest, I would like to know why wiring pin 7 RESET to RST is necessary at all? But slowly …

    I’ve read the comments about wiring the shields pin 7 RESET to Arduino’s RST pin. So far so clear … really? Why is this necessary at all? The datasheet says that the MAX3421E has its own internal POR generator. As far as I could see from Oleg’s sources, all he does is a “soft” reset through the appropriate register accessible via SPI. And this register does not touch SPI communication, as also pin 7 RESET/RST does not.

    So what can be the reason for Oleg’s library and QC sketch to fail at all? There has been the (independent) POR and contrary what other wrote here, there is no pulling the Arduino’s RST low as this would also reset the Arduino and restart the QC sketch or whatever. Someone a working explanation?

    The Usb::init() method just issues a bmCHIPRES to rUSBCTL, then clears rUSBCTL and waits for bmOSCOKIRQ to become set in rUSBIRQ. There is no fiddling with RST/RESET at all. It just spins and waits for the for the bit to become set.

    Any why is there the hardware RESET pin 7 at all if there is the really equivalent bmCHIPRES? Does the latter have issues and is not reliable? But then, the QC should also fail…?

  • Does this version work with Arduino Uno?

    • Yes.

      • Hi. I have ordered the USB host for interfacing it with UNO. Can you tell me the exact pins on the Arduino UNO which I need to connect with the USB Host Shield. I want to know which pins on the UNO need to be connected with which pins on the USB Host Shield ?

        • it’s a shield, it just plugs directly into the UNO.

          if you want the pinout, just check the schematic above.

          • Hi,

            I have connected the pin 7 to the reset and soldered all the GPIN connections from GPIN0 to GPIN7 and GPIN1 to GPIN6 and so on. I am getting the below mentioned message for the board_qc

            ˜ƒÁE- 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: 10 Press any key to continue…

            Have i made some mistake in the GPIN connections. As I was making the connections I kept checking the value read and it went from FF to 10 but not to 00.

            Is there a way I can check which pin has the mistake ? Please help

      • Anybody can please help me in making connection of the host shield with arduino UNO ?? Please this can be of great help.

        Thanks in Advance

  • Which pin should i digial read?

  • Be careful with this mod - apparently, it fries pin 7. After I made this mod, pin 7 stays high permanently and can’t be changed with DigitalWrite() even if I remove the wire.

    • Not right , he had something else connected to the pin at the same time -see his posts on arduino forum board. My board works perfectly

  • If you read the comment’s in the section Interfacing Arduino to a Cellular Phone on Oleg’s site, he say’s that his software does not work with Sparkfuns USB Host Shield, it only work’s with his version of USB Host Shield and you can buy it fro his site. Just follow the link to “Projects and code” on this site. This is not funny because Sparkfun is linking to Oleg’s code and no alternative exist’s.
    Please correct me if i’m wrong, i really want to get a Sparkfun USB Host Shield to work with Oleg’s code or i have a USB Host Shield that i can’t use and need to by one from Oleg.

    • It will work and I can confirm it..
      Just solder a wire from digital pin7 to reset pin (next to the 3.3V pin) at the bottom of the Sparkfun shield.
      No software changes necessary on V2.0 library..

  • I got this USB host shield working with version 1 of oleg libraries at https://github.com/felis/USB_Host_Shield
    Have anyone got this sparkfun usb host shield working with Version 2 USB Host Shield library ?
    Thanks

    • I got V2.0 libraries to work with this Sparkfun USB Host Shield.
      I compared this board schematic to the Circuit@Home V2 board and found the differences.
      The Sparkfun board, MAX3421E RESET pin is wired to pin D7 whereas the Circuit@Home V2 board is wired to the Arduino RST or Atmel328 Pin 1.
      I just jumper the D7 to RST on the female header and it “kinda” works…
      Run the board_qc of Version 2.0 libraries and all the test is passed except the 100 resets is a bit delay with the message below :
      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
      [snip]
      Resetting oscillator
      Reset number 0 Time to stabilize - 687

  • Good news - Circuits@Home lowered the price of the original shield to $25! 100% compatible with Oleg’s code :-).

  • I’ve purchased and received this board, for the sole purpose of making a sensor that has a USB Device (Type B) interface wireless using an XBee.
    I still have a lot to figure out, but I have a questions as I begin to gather resources and information to complete the task.
    When I navigate to the “Projects and Code” link there is a wealth of information to access, but none of it refer specifically to this shield.
    Can I assume the electrical connections are the same between this product and what is covered? If the discussion and software don’t match where can I find out the difference to avoid a trial and error process?
    Thanks

    • I should clarify. I know more hardware is needed between the USB Host shield and the XBee hardware. In fact, I plan to use a Mega 2560 board. If anyone has suggestions/advise that might be helpful please feel free to comment or email me tc@rteamworks.com. If there is interest and I achieve my goal I’d be happy to offer the code.

  • Hello, I was wondering if someone could help me with a problem I have with this shield. I just bought it and can get it to work. I have ran the board_test and descriptor parser but all I get form the serial monitor are some strange characters. I am using an Arudino UNO with an external power supply.

  • Hi folks.. I have one of your usb host shields. I’ve been trying to use it with a 328-based duemilinova and Oleg’s code (Thanks Oleg).. but I’ve not been able to get it to successfully talk to anything. I’ve tried a samsung tracphone, a moto v220 a blackberry 9630, a moto droid 2 and a canon powershot camera.. Neither Oleg’s acm_terminal or hub_demo packages can connect.
    When I try Oleg’s board_qc I get the following report
    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 – 689 cycles
    Reset number 1 Time to stabilize – 691 cycles
    … (deleted for brevity)
    Reset number 99 Time to stabilize – 689 cycles
    Reset number 100 Time to stabilize – 691 cycles
    Checking USB device communication.
    Waiting for device …
    Waiting for device …
    … (deleted for brevity)
    it never connects.. no matter what device I plug into the host usb port
    Note there’s a test failure in the gpio section
    So.. my questions:
    * First, is it reasonable to assume that Oleg’s board_qc routine should work on your version ?
    * second.. could this be related to the GPX/RESET problem mentioned above ? If so.. I can’t figure out from the commentary whether there’s a HW fix for that .. or a sw fix.. or both.. can someone point me at an explanation ?
    * Finally.. is it possible thta the board is bad ? If so.. how would I return it for replacement
    Thanks so much for your help.. and sorry for the longish note
    -jc

    • My results on a Duemilanove and this shield with a jumper from D7 to reset are identical to yours above . I’m trying a USB modem which makes its own connection when powered up. With this there seems to be a lack of power or voltage because it will not connect unless I plug in a 9V battery supply to the arduino board also . Then it connects itself. I have not tried any other USB device yet

  • I’m using this shield (new version) and a duemilanove. I’m using usb host 2.0 library, and the SPI long test fails every time. (short test runs, die revision 03) My understanding is that the reversed reset and gpx pins were resolved, but I still get “Test failed. Value written: 01 read: 00” on the long SPI test.. if I comment that out and allow the other tests to run, I get GPIO test passed, current oscillator state unexpected, then “OSCOKIRQ failed to assert”. I do have external power connected as well, 12v 800mA. Any ideas? Much appreciated in advance =)

    • Check the instructions I posted above from the link http://arduino.cc/forum/index.php/topic,73735.15.html

      Basically connect the host shield to the arduino uno. Then get a jumper wire and connect Digital 7 to Reset pin

    • This shield doesn’t work with the new usb host 2.0 lib. Circuits@homes says “Older shields can be made compatible with new library by performing a simple hardware modification” but I’m still using the older library. From the looks of it the new library and board are set up to use the 3x2 ISCP header.

  • I can confirm that the Sparkfun Ethernet shield works with the USB Host Shield. To make mine work with Oleg’s legacy code:
    1. Cut USB Host Shield PCB trace going to IO pin 10.
    2. Wire the PCB trace to pin 6. (this is the trace that used to be hooked to pin 10).
    3. Change #define MAX_SS 10 to #define MAX_SS 6 in Max3421e_constants.h
    4. Supply a hefty source of 9 volts to the Ethernet shield. Running from the USB power is not enough!!!
    5. Run board_test.pde. Monitor using the serial monitor with monitor speed set to 115200 baud (the drop down menu in the lower right corner).
    The Sparkfun Arduino ethernet regulator is almost too hot to touch. Using an IR thermometer I measured 150 F on the regulator and 180 F on the reverse protection diode D1 feeding it.

    • In the instructions, it says to cut the usb host shield PCB trace going to IO pin 10. Instead of trying to cut a little bitty trace on the board, I just broke off pin 10 from the header and jumpered pin 6 over to pin 10. The problem I was having before this was I was getting an error running the wifi shield examples, saying that the wifi shield didn’t exist. ( Everything works fine without the USB shield. ). I’m still getting that error. I’m not even loading the code for the USB shield at this point, I just want to see if I can recognize the WIFI shield with the USB shield mounted. Any thoughts?

    • Hi One quick question, I use the Freetronics Ethernet shield and most examples with from the Ethernet library seem to work just fine. (http://www.freetronics.com/products/ethernet-shield-with-poe)

      I’ve only tested this while the UNO board is attached to the Ethernet Shield. NOT WHILE BOTH host shield and Ethernet Shield are stacked on top of one another. So in this case do you think I will still need to attach a 9V battery source?

  • Hi,
    Some days ago I bought the Arduino UNO and I’m really satisfied. Today I got the USB Host Shield. With the fact, that I’m very new to this stuff, I had to spend several hours to get it work.
    At first I got the “MOUSE”-Code to work, but after some other code-tests i got lost with the same error “setup packet error:d”. Even if i tryied the first code again.
    Then I finally found out:
    Before testing I bought a new Block-Battery (E-Block, 9V). To save some money I took the cheaper one (VARTA Superlife).
    When I was about giving up on that, i connected the arduino to my “Laboratory power supply”. Finally … it worked !?!? So i checked my Battery with my multimeter. Instead of 9V it only gave me about 7.3V. I think there was the problem. When i lowered the V on my “labor.pow.sup” i got the same error (setup packet error:d). Switched back to ~9V … and it worked fine again.
    Perhaps I helped someone with that Info.
    (Damn you VARTA SUPERLIFE!)
    But I’m really new to this stuff, so it won’t mean much.
    bye,
    zacharias

    • Hi. I have ordered the USB host for interfacing it with UNO. Can you tell me the exact pins on the Arduino UNO which I need to connect with the USB Host Shield. I want to know which pins on the UNO need to be connected with which pins on the USB Host Shield ?

    • Hi Zacharias
      Thanks for the suggestion. I checked the voltage of my low-cost adaptor but it gave 9V so no problems there. The max current of the adaptor is 1200mA.
      I checked some USB specs and apparently a USB device needs to send a request to the host if it requires more than 100 mA to get an additional block of 100mA with a max of 0.5A. Does somebody know if it is necessary to increase the current manually? (I guess I have the same problem as described in the post above)
      Many thanks in advance!!
      Ward

      • Typically, the amount of power a USB port -can- provide does not vary. The part of the USB spec in which devices request the power they’ll need is just there to prevent devices from drawing too much current and blowing a port.
        That is, if you had a device that -claimed- to need just 100mA, but it actually drew 500mA, and you hooked it up to your computer - in all likelihood it’d work just fine. The port is designed to provide 500mA, and that doesn’t change.
        But if you took two of those devices and hooked them up to a bus-powered hub (a USB hub with no external power supply) - that would result in 1000mA being drawn from the host computer’s USB port, which could cause the port to fail or disable itself.
        If those two devices were well-behaved, what would happen is the host would see a request for 500mA on a port that can’t provide 500mA, and reject the request.

        • Hi Tetsujin
          Thanks for answering my current-question. Meanwhile I also found that the AKAI EWI USB (the device I’m trying to connect with) only uses ~100mA. Any other ideas on what could cause the “setup packet error:d” or the power led on the device not going on? (The description parser code works well with other USB devices)
          Thanks a lot!

  • just got the board in the mail. attempting to use Oleg’s codewith no luck; keep getting stuck on testing the SPI. I noticed the led on the usb device is not going on. could this be the problem? is the device not getting power?

  • Hi all!
    I have an Arduino UNO and this USB host shield. I would like to receive messages from an AKAI EWI USB (MIDI wind controller), similar to this project: http://blog.makezine.com/archive/2010/11/usbhacking.html.
    A first step was to change the code of the mentioned project., among which the USB device description. I was able to use the description parser example code from Oleg for a USB mouse and camera but when I attach the EWI, I get following error messages:
    Setup packet error: D
    Device addressed… Requesting device descriptor.Setup packet error: D
    Request error. Reurn code: 0D
    Device descriptor cannot be retrieved. Program Halted
    Also, the power led on the EWI does not turn on when plugged in (which it does when plugging it into a computer).
    Any ideas on what the problem might be? (I’m powering the Arduino with a 9V power adaptor and the EWI uses a type B USB cable (although I don’t think this makes any difference))

    • Hi! I am also interested in getting my EWI USB to work with the USB host shield. Did you manage to get it to work?

    • hello Wazje, did you manage to make this work? i’m tryin tryin and tryin and nothing. i think i have problems with the libraries which are changing all the time can you please help me?

  • I have this shield (DEV-09947) and now need to use it with an Arduino Mega 2560. After reading various posts around the Net I’m still uncertain about the compatibility between them and if there is any change to put in the code for driving the shield with Oleg’s library 2.0 (felis-USB_Host_Shield_2.0-96d506b).
    Can someone shed the light for me?

    • I know this is late. I just got it working on a Mega2560 R3 with a transmorgi shied. I had to change the SS pin back to 10, but that was the only change. Also works with an UNO R3 without the Transmorgi Shield.

  • Any example code to read/write files to/from thumbdrives?

  • Can this be used in conjunction with the Arduino Ethernet Shield?
    I have a feeling that it won’t work (well), because it uses pin 10 (which the ethernet shield uses as well) – perhaps it would be modifiable?

    • Did you ever get this to work? We have a project that requires bot the Ethernet shield and USB shield on the same Arduino, and I’m about to take a knife to the USB shield.

      • For those wondering, you can use this shield with the Ethernet shield, there’s just a minor modification to make to the board and to the code first.
        On the USB Host Shield, cut the trace to pin 10 and then run a jumper from that line to pin 6. (I used the port [hole through the board] as a nifty place to tie the jumper to.)
        In the code, change the MAX[underscore]SS definition from 10 to 6. In version 1 of the library this is in ‘Max3421e[underscore]constants.h’. I’m not sure where this is in version 2. (For the curious minds, what we’re changing is the Slave Select pin. The SPI bus is shared with all SPI devices, but each device needs its own SS pin; That or you can use a shift register to control a bunch of SPI devices with just a few pins.)
        Hope this helps somebody out, and if SparkFun could do a revision of their board to include a solder jumper to change the SS pin that would be awesome. :-)
        PS: SparkFun: Can you change that annoying underscores-make-things-italic bit?

        • Anyone know what/where has to be changed in version 2 to use pin 6 instead of pin 10?

          • Hi I don’t know how to connect with the ethernet shield but here are the instructions for the version 2 pin configuration. Credit goes to Stanley from http://arduino.cc/forum/index.php/topic,73735.15.html

            I will try to make it as easy as possible , so hope u understand my simple instructions..

            I would assume you know how to operate the Arduino IDE s/w and know how to upload the arduino sketches into the Uno..

            If you do not know these knowledge, I suggest you google or read up some documentations on arduino.cc first..

            Here are the simple steps :-

            1. Download the host shield 2.0 library, unzip and install into Arduino

            2. Goto Menu : Files -> Examples -> USB_Host_ShieldV2 and select board_qc

            3. Compile and upload the sketches into Arduino UNO

            4. Plug Usb host shield on top of Uno AND take a jumper wire to connect Digital Pin 7 to RESET pin across the Uno board beside 3.3V pin

            5. Click on the Serial Monitor button and set speed to 115200

            6. You should see something like below

            7. Insert a USB device and let it detect it automatically..

            8. If it passed, you have got the USB host shield v2.0 working…

            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.. 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 complete. Waiting for the first SOF… Getting device descriptor Descriptor Length: 12 Descriptor type: 01 USB version: 0200 Device class: 00 Device Subclass: 00 Device Protocol: 00 Max.packet size: 08 Vendor ID: 0403 Product ID: 6001 Revision ID: 0600 Mfg.string index: 01 Prod.string index: 02 Serial number index: 03 Number of conf.: 01

            • Also note: For the instructions I’ve pasted above. My optical mouse from UNI did not work. Not sure (I think its maybe because it required 1.1A current or maybe because its quite old) But when I tested it from a simple USB flashdrive. It worked like a charm. So please do keep this in mind.

              Regards Varun

        • They should also get rid of the left and right triangle bracket deletion.

  • Could someone please confirm that this board plus 2 Arduino Stackable Header - 8 Pin , sku: PRT-09279, 2 Arduino Stackable Header - 6 Pin ,sku: PRT-09280, plus a Duemilanove would enable me to do Android ADK development.
    TIA,
    Paul

  • Item is on back order, looking forward to getting my Android app to work with Arduino via this when it comes in. On the notify list but it has been out of stock for a while.

  • I have a USB GPS and want to connect it to an Arduino. With this board, Oleg’s code and an Arduino will I be able to do this simply or is it going to require a lot of coding for the GPS and host to communicate?

    • I would open it up and look for a serial output, what’s the name of the device. Using this board would probably take a while and a lot of code. It probbally output in NMEA-23 strings.

  • I was concerned about some of the comments above but I just received this and have it working fine with an Uno. Please note that I needed to use the version of the code from Oleg that uses built in SPI functions. My download was named felis-USB_Host_Shield-a59ba5b.zip and I presume the a59ba5b is a label for that version. Also note that there was enough voltage on the USB connector without connecting the DC jack to run a thumb drive but not a mouse. For that I did need to provide power to the Uno via the DC jack but that worked fine.

  • ok so im wondering if i can build this on a bread bord or something cuse im on a budget what parts would i buy to make this

    • You might be able to build it on a breadboard, but sourcing the parts (in the correct packages) and the time taken to find them would probably make the shield a more cost effective solution.

      • well i got time but not money it would b nice to make it on a bread bord or on a shield that has a proto area? that way i dont have to have like 2 shields only 1 with multi uses

  • I use the Arduino who came out before the Uno design, not the Mega 2560, which is the Duemilanove. Are all of you stating that this fellow would need to be externally powered to participate with this shield?

  • Hi,
    I’ve got problem with this shield and board test program.
    I got this in console :
    —š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: FF
    Test FAILED!!!
    Test Halted.
    0x55 pattern is being transmitted via SPI to aid in troubleshooting
    Press RESET to restart test
    I am using Oleg’s code, with Arduino UNO and 9V external power + arduino linked to computer

  • I’ve been unable to compile the Arduino camera control stuff. The directory structure of the source code has been changed but not saved with the zip file. There seems to be a ‘time.h’ missing as well.

  • Word of caution: Check the voltage that you are feeding to the USB device connected to that shield!
    Using a USB powered UNO will not result in 5V on the USB bus!
    If you are using a UNO make sure to use a 9V power adapter, even if the UNO is connected to your computer via USB.

    • Yep I notice on a USB modem it will not connect with the USB computer supply only . I must plug in a 9V battery also

  • I have problems too with this board. First it worked intermittently. Now not at all although the programming was not changed.I used an oscilloscope and a protocol analyser to trace and there is no SPI response from the MAX chip. Can someone confirm he had the same problem?

  • It should be made more clear that you must supply and solder your own headers to connect to the Arduino board. It’s not mentioned in the description or the data sheet.

    • I agree. I just got one and wondered if I missed it, and then I noticed that it is nowhere in the description.

      • All shields come without headers populated. There are many options for headers and we don’t want to include the ones you didn’t want. The pictures above are indicative of the board you will get.
        All products come as shown, unless noted otherwise.

  • I too am seeing errors; however, I’m running the USB board test on a Uno. Oleg mentioned that he thought there might be some compatibility issues with this board and his code. I’m not sure if the corrections listed above (GPX and RESET pins) were supposed to address that.


Related Products