Electronic – How to view USB traffic on an oscilloscope

oscilloscopeusb

I'm trying to examine the communication of a USB mouse with an oscilloscope (PicoScope 3204). When I connect the scope's ground to one of the two data signal lines (Data+ or Data-) the mouse shuts down. The mouse is the 1995 Microsoft Home device, so it must be using USB 1.1, not some fancy high-speed version. I also tried the same on a USB memory stick and experienced the same problem. Is there an simple circuit I can build to overcome this problem?

I'm aware there are sophisticated USB test fixtures for this purpose, but I'm trying this as a demonstration/experiment, so I'm looking for a minimal home-brew solution.

Best Answer

Don't ground the data lines. They are above ground. Beyond Logic says

USB uses a differential transmission pair for data. This is encoded using NRZI and is bit stuffed to ensure adequate transitions in the data stream. On low and full speed devices, a differential ‘1’ is transmitted by pulling D+ over 2.8V with a 15K ohm resistor pulled to ground and D- under 0.3V with a 1.5K ohm resistor pulled to 3.6V. A differential ‘0’ on the other hand is a D- greater than 2.8V and a D+ less than 0.3V with the same appropriate pull down/up resistors.

You need to connect scope ground to USB ground. Otherwise you're killing one of the signals and the differential receiver will not detect the required phase reversal.

With scope connected to ground a single channel scope can monitor either D+ or D-. A dual channel scope can monitor both and you should see the phase inversion when data is transmitted.