HLA USB Traffic Decoding

The USB analyser (https://github.com/saleae/usb-analyzer) is very useful when debugging USB communication. Unfortunately even the most coarse view shows a large amount of traffic that it can be difficult to figure out what communication is going on. I have attached a picture with an example. Depending on what you are debugging you might not be interested in all the Sync and PID IN data.

I looked at writing a HLA in Python to process the data more to remove the communication that isn’t PID_DATA0/PID_DATA1 (the interesting communication) but the HLA shows a warning that the USB input isn’t supported.

Can the USB analyser be updated to support a HLA? It would also be great if Saleae could write an example USB decoder in Python as a starting point. Then people can use this to filter out the background communication and just focus on requests and responses. This would then allow the LA to be very similar to the expensive USB sniffers which offer similar features.

1 Like

I do and have done similar stuff. For example for a Teeny 3.6 and now T4.x that have the ability for USB Host setup, I often try to capture the USB data transfers and try to get the data into a format maybe more similar to what WireShark or Beagle USB 12 might output. (Wish we could do the 480, but that is probably wishing for too much).

I have mentioned it in a few of the different threads, including: Logic 2.1.5 (Alpha 17)

And I know that one of the Saleae developers was working on being able to do an HLA doing something similar:

One of the threads:

And another:

I don’t remember if this was ever added to the feature requests and/or if any progress has been made since then.

It sounds like you are looking for the same sort of features. The posts you link to are what I’m looking for as well. I never had a lot of luck analysing the exported the data as it was difficult to get a good idea what is going on.

It would be great if this could be added to the roadmap at: https://saleae.upvoty.com/

It does sound like huffman was working on it, at least at one point.

I just added an idea post below to begin officially tracking this feature request. I also linked it to this discuss post to add more context.

Feel free to add your votes and comments to it. It’s not on the roadmap yet, but we’d like to track user interest in it to help with prioritization. Right now, our HLAs support the following analyzers. Adding HLA support for a single analyzer is quite involved.

@alistair As for your comment below:

Depending on what you are debugging you might not be interested in all the Sync and PID IN data.

Would a simple Data Table filter (in this case for “VALUE”) help in your case? We’re in the process of evaluating how to improve our Data Table. if so, would you mind posting that idea below with that information? Feel free to link this discuss post to your idea post as well.

1 Like

@timreyes - Thanks,

Yes having versions of the filtering might help. There was some discussion about some of it I think back in the thread:

As I mentioned back then, when I receive packets with data, I need the previous packet as well. That will give you context of if it is a Setup or an IN or an OUT packet, with the context.

But at a minimum it would help if one could filter out, all of the other stuff, like SOF, ACK, NAK, … type messages.

Thanks @KurtE! Noted.

Thanks for adding that to the feature request @timreyes.

I can imagine that porting the USB analyser to the new HLA setup would be a lot of work. Hopefully others are interested in it and can up vote the feature request.

I included an example of what some interesting traffic looks like in USB. As you can see there are multiple transactions, so a simple value filter wouldn’t be enough. In this case it might be easier to do an inverse filter (as in ignore values that match a pattern).