USB LS and FS Analyzer been enhanced?

I was able to modify @KurtE high level analyzer, with his usb low level analyzer. I was able to make the HLA be a filter for packets:

This allowed me filter through the forest and find the trees. Specifically my device was sending out a zero length packet (ZLP) when it was not suppose to.

This appears to be a bug with the USB peripheral on the micro I am using. With some experimenting I found a work around.

I really wish Saleae would take a few minutes and merge in changes with @KurtE. I find that the stock USB analyzer has more details than @KurtE as such some simple merging would be good. Then having the HLA for packet filtering is great.

I found several bugs in Logic 2.x application during this work, I wanted to submit bug reports for them but could not find a way to do this on Saleae’s website.

Sorry for the bugs you’ve been experiencing… From the app, you can click Help > Report Issue at the top. This will submit a bug report and will allow you to share screenshots. It will also automatically share your machine ID with us so we can dive into any potentially uploaded error reports your PC may have sent to us during the time of errors/crashes.

@trampas @timreyes - As you have probably noticed, I only went so far. And that was three years ago. Looks like I am several updates behind the master branch. And was(probably still is) sufficient for what I was mostly doing, which is to carve out the main information I was interested in. Which is the data packets that are being sent back and forth between the host and a device.

Was hoping that someone at Saleae would either incorporate it and/or come up with an official version of the USB low level analyzer that supports HLAs. But I can understand that you probably only have so many development resources available, and probably everyone is busy with trying to release the new product.

@KurtE
Yes I took the HLA a bit further and made a class which takes the USB LLA output and turns them into packets. This made the HLA a bit cleaner, and I could work with packets.

However like you said it is just a scratch on the surface, and needs more work to make into something robust, it was just functional enough to solve my USB issues. I had lots of thoughts about improving the LLA and HLA further but there was little motivation after solving my problem.

Ironically my USB issue ended up being a ā€œbugā€ in the microcontroller. The datasheet eluded that it could do autoZLP packets per endpoint, which was incorrect. As such if one endpoint had autoZLP disable and another endpoint was transmitting simultaneous with autoZLP on it would enable autoZLP for all endpoints. I call this a ā€œbugā€ as the datasheet never stated exactly how autoZLP worked, so like typical hardware vendors they will ignore the issue and let next guy suffer.

Once I could see the trees for the forest it took less than 10 mins to identify issue and fix it…

The data was always there it was just a matter of seeing it!

The really good thing is I know ALOT more about USB now.

1 Like

I know that feeling! It was working well enough for me that I could get the information.

As I have mentioned in some other threads, like:

Where in that post, I was trying to understand the communications of a PS4 controller connected up to a Teensy through the USB Host port.

As I mentioned back then, my capture and then dump out to text/csv file, the output was
1.9 million lines long. I used a linux grep command, where it looked for the data… lines and output the line before it as well… Then I used SublimeText with global search and replace to
remove some other stuff and concatenate them and got down to about 3K lines.
Many of those were simple the next joystick packet which I could ignore and got it down
to something like 50-100 lines that I really needed to look through.

I’m curious – is there a lot of USB 1.x still in active use?

It seems that Logic (even the Logic Pro series) isn’t capable of monitoring anything over USB 1.x (LS or FS) due to the physical signal voltage levels being too low for the digital thresholds. Also, I recall another thread where it was a challenge just to get a USB hub to revert back to USB 1.x protocol so that Logic hardware could ā€˜see’ the data.

There are other tools more specialized for USB monitoring & packet decoding, while Logic more general purpose and very good at monitoring many other protocols & signals besides USB. However, I agree that refreshing/updating the officially supported Low-Level Analyzers to provide FrameV2 output for HLA compatibility would be nice.

There are lots of devices that still run at the lower speeds, such as mice, keyboards and the like,
and a lot of the MicroControllers still communicate at the lower speeds.

And as you mentioned, the electrical voltages of the USB HS connections, is one major issue. Actually if I connect up the LA to the two IO pins, the USB communications fail to work. And if it did, not sure that the LAs could reliably capture the communications at 480MBs…

A while ago, I did purchase a USB Hub that runs at USB 1.x speeds. It was a RadioShack one I picked up on Ebay.