Cannot get USB Host Shield running (no signal on D+/D-)

Hi,

I have this setup:

I have soldered the 5V and 3.3V like shown here. I verified that the resistance on the soldered bridges is zero.

The UNO has external 9V support.

I checked 3.3V and 5V on the USB Host shield.
I checked that VBUS is 5V as well (when I don't use external support it is only 4.5V)
I also checked that the pins of the USB jack delivers 5V (using an old USB cable).

I run this program to verify the USB Host Shield and I get this output with a mouse attached to the USB jack (I removed some of the resets here)

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 - 332 cycles
Reset number 1 Time to stabilize - 333 cycles
…
Reset number 98 Time to stabilize - 332 cycles
Reset number 99 Time to stabilize - 332 cycles

Checking USB device communication.

Waiting for device...

When I measure D+ vs D- there is silence

Measurement of D+ vs D- on a USB port of my laptop (same settings on the Oszi)

So at least I understand why the USB Host Shield does not recognize a device but what can go wrong on the shield so there is no data on D+/D-?

I ordered a 2nd Host Shield (different supplier) and I see the same issue. So maybe it is something with the board itself? But what could that be? I thought the moment where SPI transfer is working the connection between Arduino and Host Shield is OK. Is that assumption wrong?

I also tested with Mega 2560 but any combination of the two Arduino's and the two USB Host Shields results in the same error pattern. So either I have overseen something on both Host Shields or I am doing something wrong on software side. Any hints would be highly appreciated.

Sorry, I am not an expert on Host Shield, I have had a couple of different ones over the years, and mostly played with them to try to make them work with earlier Teensy boards, like a 3.2... Mostly now days I use boards that have native support built in. But at times still pull one out to see how their software handles some different device.

Not sure how well your scope will capture USB traffic. I believe it is similar to:
DSO 138 Oscilloscope Kit Open Source with Probe 2.4" TFT 1Msps Digital Oscilloscope Kit with DSO 138 Case + Probe 13803K for Electronic Learning Set: Amazon.com: Industrial & Scientific
Which I believe can sample rate up to 200k...

For USB 1, 2 we have:
USB Low speed 1.5M
USB Full Speed 12M
High Speed 480M

I use a Logic Analyzer (Saleae) to do captures of USB, and even my fastest one that can sample up to about 500Mhz can only capture Low and Full speed. And even having the probes connected to the D+ and D- pins, will not allow HS communications to happen.

If I remember correctly it is not that unusual for there not to be any communications going on those two pins if nothing is happening.

The shield should detect something is plugged in and depending on how resistors are hooked up, decide if it is LS or FS...

From:
USB in a NutShell - Chapter 2 - Hardware (beyondlogic.org)

So if something plugged in with resistors setup correctly. The stuff on the HS, should then start up a conversation, where it will ask the device for information...

I don't remember with the Host shield if there is no software setup for the device type you plugged in, if the communication will continue.

Have you tried it with something the USBHIDBootMouse example?

If I were you, would go into USBHost_Shield_2 sources into settings.h and turn on debug.

/* Set this to 1 to activate serial debugging */
#define ENABLE_UHS_DEBUGGING 0

/* This can be used to select which serial port to use for debugging if
 * multiple serial ports are available.
 * For example Serial3.
 */
#ifndef USB_HOST_SERIAL
#define USB_HOST_SERIAL Serial
#endif

Depending on what I saw, I would check other source files and see if the have some
defines like EXTDEBUG and if appropriate enable additional output...

Sorry I know that is not much to go on, but...
Good luck.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.