Since this analyzer is provided, I may as well get something out of it. But before I struggle through the process of learning it, what does this analyzer look like? Any videos or tutorials? I’m used to “real time” USB analyzers such as Beagle so I know what Saleae analyzer is and isn’t and I’m not expecting much out of USB analysis from Saleae. Thanks.
Hopefully someone from Saleae will give a much better answer. But I have been using the USB captures to help understand some USB data in order to add support for the PJRC (Teensy) USB Host on the T3.6, T4, T4.1, for some USB devices to be connected to them. Things like Joysticks, Mice, Keyboards, Serial Adapters…
So to add them I need to understand what packets each of them expect and compare that to the ones we are generating or receiving. The Saleae Pro I have can only capture the slower speeds of USB (up to 12mhz) like the Beagle USB 12. AFAIK it can not capture the higher speeds like the Beagle USB 480. There are I believe 4 different formats for displaying the data/reports. So far the main one I use is packet. But at least for me the vast majority of the data is noise. That is for what I am doing I don’t care about frame starts with ACK/NAK, I am mainly interested in those packets that either send or receive data.
Example recent usage was trying to understand PS4 connecting using Bluetooth to a T4.1, sometimes it binds correctly sometimes not.
So I did a capture. I then tell the analyzer to save the data out to txt/csv file. In this case it saved about 1.9 million lines of text, which is a bit look through.
I then extracted the data I wanted only those lines that had DATA so did a linux grep (in this case on Windows 10 in Ubuntu window), where I look for DATA and tell the grep to also output 1 line above the match and save this to a file. Which got me down to about 10K lines, I then used my editor to remove all of the — lines that grep added (so cut this down by one third). I then did a regular expression search and replace to combine the pieces of the two lines per group into one… And end up with a file that looks like:
23.21607064 IN 0x02 0x18 0x48 0x20 0x53 0x00 0x4F 0x00 0x71 0x00 0xA1 0x11 0xC0 0x00 0x81 0x7C 0x81 0x7C 0x08 0x00 0x48 0x00 0x00 0xA0 0x7F 0xFC 0x0E 0x00 0x00 0x00 0x05 0x00 0x81 0x0A 0x7C 0x1E 0x1A 0x00 0x00 0x00 0x00 0x00 0x00 0x09 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00
23.21707062 IN 0x02 0x18 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00 0x00 0xC3 0x7D 0xE1 0x8C
23.21807067 IN 0x02 0x18 0x48 0x20 0x53 0x00 0x4F 0x00 0x71 0x00 0xA1 0x11 0xC0 0x00 0x81 0x7C 0x81 0x7C 0x08 0x00 0x4C 0x00 0x00 0xF7 0x80 0xFC 0x0E 0x00 0x00 0x00 0x05 0x00 0x69 0x0A 0x83 0x1E 0x09 0x00 0x00 0x00 0x00 0x00 0x00 0x09 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00
23.21907066 IN 0x02 0x18 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x00 0x00 0x54 0x59 0xCC 0x75
Which then I compared to the data that I had know which type of packet and format these are. Note: In this case, of the maybe 3K lines left most of them were simple joystick packets which I trimmed away and had maybe a hundred or two to actually look through.
Note: Some of this has been discussed on other threads here, and I know that one of the Saleae developers has been working on supporting HLA for the USB Analyzer. It will be nice if it at least allowed you to filter on which types of data you wish to see in the output, like do you want to see Start of Frames, and ACK/NAK and …
So It would be great if it got at least to this point where you can find all of the data packets.
It would be even greater if the HLA could have a higher level of smarts and decode some of these packets, like Bagle does or the WIreShark setup, where we could see information, like is the packet an HCI message (Event or Command), L2CAP, SDP (the part I starting to try to understand)!
Sorry for maybe being off of your request?
Hi KurtE,
Thank you so much for such detailed response! I think with my background of linux I won’t be able to make enough sense out of this USB analyzer if I had to hand-sift through even SOFs or NAKs. It might be useful to analyze the timing of thses packets but I’m only focused on content delivery between host and device, which is where Beagle works great. But Beagle isn’t so great on software side. I have a Beagle 12 and a Beagle 480. There’s no difference the data they can read off a high-speed device but on software side Beagle dumbbed down the real-time parsing if you use Beagle 12. Lots of things such as indicating an HID report descriptor that is automatic if you use Beagle 480 are not shown if you used Beagle 12 and loading back the captured result doesn’t make the software parse, post-capture, either. It’s created a rather unsavory taste in my mouth since I thought their only difference is speed and captured many things with the 12 only to be confused why parsing didn’t work on some data sets. It’s not that Saleae software has nothing to complain about. If I don’t have pro 16 connected, I can’t load preset to data captured by a pro 16. That’s kind of bull.