USB LS and FS analyzer can't decode when connected to USB hub

I connected the USB devices to the USB hub, and i intercepted the wire communication and attached the Logic analyzer. when I collected the data it can’t decode.

Sorry, I have not done a lot with USB decoding for a while now, so I am rusty.

I assume that your device runs at Low Speed or Full Speed(12 Mbs), and you have configured the
analyzer to match. The Analyzer can not handle high speed (480Mbs). I also find that if I connect up the Logic Analyzer to a HS device, the device does not work. Probably interferes with the PU or PD resistors that the host uses to know a device is connected.

It may depend on where you try to connect the probes.

I have in the past been able to decode USB connected up to a HUB.

I connect the LA to pins D+/D- pins of the actual HUB port on the HUB that my device is connected to and not the one coming out of the HUB to the computer. Two reasons:

  1. like above most of my HUBS work at HS so issue mentioned above
  2. The hub might convert the LS/FS signals coming from the device into a different stream, that speeds up the communications to the host.

I have done my connections a few different ways. I have one USB hub with the cover removed where the pins were easy to get. Or a USB wire that I connected into…

More recently I use something like: risingsaplings USB Breakout Board 6 in 1 Type A Male to Mini Type-c Micro Type B Female Board : Electronics

Good luck

Thanks for the reply, So you are suggesting that analyzer cannot decode HS transmission ? My hub is the following one

I have a USB type A to type A wire. i have intercepted that with the LA. The hub is connected to the one of the end.

Generally the Hub will be having the backward compatibility to run on LS and FS when the connected devices belongs to LS or FS right ? If thats the case it D+ D- wires should be active on the Hub side instead of SSRX and SSTX ?

If the device is LS or FS (<= USB1.1), then the data is on D+/D- only, and the signal should be visible to the digital probes. Did you see edges on the channel but just not decoding, or not capturing anything? Is the logic isolated from the device (i.e., connecting on different USB host/PC vs. the PC that is hosting the logic analyzer)? The hub you linked is USB3.0 capable, so need to make sure the device you’re trying to probe isn’t configured/running at USB2.0+ speeds.

How are you probing the bus? Which channel(s) and ground pin(s) did you connect, and where/how are they all connected?

→ The connected USB devices are keyboards so they are USB LS devices.
→ The Hub is 3.0 version.
→ when i connected the probes to the hub external wire, I couldn’t see any spikes in the logic analyzer when recorded the data. All the lines show zero voltage D+ D- GND and VBus
→ The Logic analyzer is connected to the same host, the Logic is perfect working when a keyboard is directly probed without using the hub, Information is decoded perfectly.
→ Keyboards do not support 3.0 compatability as per my knowledge, so they must be running on USB LS/FS mode. Then what could be the issue ?
→ The pins are connected to D+ D- VBus and GND. This wire configuration worked perfectly without the use of 3.0 Hub.

Do you mean you were probing the bus between hub and PC? Or, probing the bus between keyboard and hub? I think they can be at different speeds: LS on the keyboard port and USB2.0+ on the wire to the PC. So, you should probe the port/wire of keyboard or other LS devices directly (and could use something like previous Amazon link to ‘breakout’ the signals more easily).

Screenshot from 2024-06-27 09-50-17
This is the how i made the conections. I cannot see any spikes in the Logic Analyzer

Screenshot from 2024-06-27 09-51-51
This way it works perfectly. Direct conection to the keyboard. But I need a way to probe any keyboard connected to the hub while other keyboard ports are disabled so that no interference. As per you idea if Hub is converting the signals to USB 2.0 + then is there any way that i can downgrade it to pick the signals by the Logic Analyzer ?

I am not sure if you can force a USB3 hub down to USB LS/FS speeds as that isn’t what most people want them to do. If you cut the USB3 wires it may revert to USB2, but may still run at Hi-Speed rather than FS/LS speeds as they use the same pins. Instead, I still suggest using the breakout board recommended above, or you could hack a cheap USB2 extension cable to make your own breakout interface that plugs into the keyboard directly.

Also, you could just open up the hub’s case and tap onto one of the device ports inside rather than the host cable.

Yehh I will use the breakout boards. To get clear the USB 3.0 Port has total of 10 lines, out of which if the hub runs in LS/FS mode then only the D+ D- will be used for data communication right ? What if it runs in HS mode ? And also I am using the Female to Male connector to breakout the wire and connect the Logic. I think this is the reason I couldn’t able able to see the spikes since this is a ISB 2.0 cable only D+ D- will be the communication links but the device might be running on HS mode so different lines coming from the hub are being used for communication. Am I right ?

The board you show has only one connector, you need both (passthru):

… as example from above (has other connector options, and is USB2 only). USB up to 2.0/high speed use the D+/- pins, bit I think HS is too fast for logic (480Mbps) to reliably monitor (500MS/s max). On USB3.x, running protocols above the 2.0 (HS) rates, the data will be on other wires/signals, and at voltages & speeds that logic can’t reliably ‘see’ any more. The levels are below digital thresholds, and/or the analog isn’t fast enough on a logic for USB2+ signals.

See the Wikipedia article on USB signaling/PHY for more details.

See also this USB2.0 article (signal switching) for more low-level details on the physical interface.

For USB up to 2.0, the data is all on D+/D- pins. LS/FS speeds use 3.3V levels, while HS uses only 400 mV levels (invisible to logic’s digital channels).

Another option, would be to try to find an old USB 1.1 HUB.
These only support USB LS and FS.

USB 1.1 4-PORT Powered HUB GoldX | eBay

I purchased something similar to this a while ago (An old Radioshack one),
Which when you plug in a device that typically communicates at HS or USB3 it will force it
to downgrade to FS, which we can decode…

I tried the USB 2.0 hub as well the signals aren’t picking up by the Logic. What could be the reason ? I want to use the hub.

No, while USB2.0 (HS/high speed) does use D+/D-, it is only using ~400 mV signals (below logic’s digital threshold) and also uses 480 Mb/s bitrate (close to the 500MS/s limit of Logic Pro digital sample rate).

The suggestion above was for buying an old USB1.1 hub that can only do LS/FS, not USB2.0/HS speeds. As stated before, only LS & FS speeds can be monitored by logic hardware. If you want to use the existing hub, you need to open the case and probe the device port running at LS/FS, not the uplink/host side wire – or, maybe you could hack the firmware on it to ‘force’ it to use LS/FS speeds on the uplink (if that is even possible).

Otherwise, you could buy a high-end oscilloscope (or USB protocol analyzer) with USB2.0+ speed & decoding support, but that is likely in $5-10K or more (??) depending on vendor/features you want. Also, I thought your hub was USB3.0, which will be even more $$$ to cover really high bandwidth/sampling demands of SS+ USB bus speeds.

Or, just get the ~$10 breakout/passthru board and plug it in between any LS/FS device and the hub or host PC. Why doesn’t this option work for you?

I can use breakout board not an issue, but my usecase is to connect multipe usb devices at a time and capture the each usb traffic individually by disabling other ports.

Ok, then I think you need a USB1.1 (only) hub that won’t talk USB2.0+ to the upstream host. There might be another way to ‘force’ a faster 2.0+ hub to slower speeds, but I’m not sure how other than using a USB1.1 host that forces downstream devices into ‘backward compatibility’ mode. Thus, I think you could plug your existing 3.0 hub into a 1.1 hub (or a USB1.1 port on an old enough PC), and then it should fall back to 1.1 speeds. I did find a stack exchange article on forcing slower USB speeds, but the main suggestion was the same as here – use a USB1.1 host controller. However, they did also suggest a USB isolator (by Adafruit) that might help do the trick (and it also isolates the power, but limits it to 100 mA which may or may not be enough to satisfy your USB3.0 hub).

Finally, just be aware – if you are probing on the host/uplink side of the hub vs. on device port directly, you are technically monitoring the host (PC) to hub interface and not the host (hub) to target device. Depending on exactly what you’re trying to do, this might matter to you, as the hub is both a host (connected to the target device(s)) and a device (connected to upstream host/PC). I don’t think everything passes transparently through the hub, and such details could make a difference in what your doing. If you only want to see high-level data/packets and not low-level signals/timing, you could still try Wireshark on USB (as suggested in the other thread) with your existing setup.

PS: Just curious – are you just not wanting to manually unplug/replug in each device being tested? Trying to automate testing/logging, and/or run remotely?

Heyy, Thanks for the information.

Wont I be able to capture the data packets if I probe between hub and host ?

Will this be able to capture the packets of type c devices with the current Logic ? If I connect the adafruit device or USB 1.X hub ?

Yehh I am trying to automate the testing each device.

If it were me, I would probably try it with a 1.1 hub and break it out from hub to host and see if you get what you want.

I agree with @KurtE
Getting a 1.1 only hub is likely your best bet, and then use a USB A to USB C cable, if needed.

The Adafruit isolator may or may not work on your existing hub – as it has limited power, and not 100% sure how well it would succeed at ‘throttling’ down a 2.0+ link to FS/LS only.
These constraints are all due to Logic’s limitations with respect to monitoring USB PHY with digital channels (i.e., it may not be the right tool if you really want to monitor USB 2.0+ links).

If your target devices are actually just USB 1.1 speeds, then you could also look for a 1:N switch/mux (like the TS3USB30 1 to 2 USB Switch from Adafruit), and then use a modded cable (or breakout board) to monitor each device directly.

There are likely better automated switches (more channels and/or directly controlled by PC), but depending on cost – you might just want to get a USB protocol analyzer that specializes in monitoring USB links (like a Total Phase USB Beagle). Note: I’m not sure if the USB 12 version would throttle any faster USB2.0+ devices down to 1.1 protocols or just be incompatible. Also, a USB 1.1 hub is cheaper and probably works better with your current setup & approach.

In the end, it really depends on your test cases & test criteria – the Logic is way more versatile, but is limited on USB speeds/physical signals it can actually ‘see’. The protocol analyzers can better interface with faster USB connections, but not monitor/decode any other analog or digital channels at the same time.