I would love an app that looks something like this.

I think all the data is here already,† but presented in an incomprehensible fashion.

† (Except whether a cable might be limiting the throughput, which I think would be very useful to know.)

I feel like if USB-C is such a mess where cables all look the same, having something like this to debug would help a lot.

I didn’t include power delivery, btw, which would also be helpful to know – I just don’t understand it very much.

Other nice things I could imagine:
- obviously, reacting in real time to connecting/disconnecting
- highlighting device(s) connected recently if you’re debugging
- showing activity on the cable if it’s happening
- highlighting special ports if they’re not equal
- eject buttons for devices that need it
btw thankful that even in making this mock I finally wrapped my head around this situation, as I had to make this table. I had no idea all these speeds were an option:
who wore it better

@mwichary I was about to note that we have 80gbps already, but you've discovered that.

I have an app that does something like this in Linux. Essentially a wrapper for lsusb. I forgot the name off hand, but I think it is missing a key element of your design: the throughput measurement piece.

I remember trying to look for something like this, and I ran into the problem where the drivers know the theoretical throughput, but not the actual throughout. If I'm reading screenshots correctly, you're noticing the same thing. The basic system queries don't have exactly the data we're looking for.

But I think this brings up a more subtle but complicated challenge with the original UI. One of your key requests is that you would like to identify on underperforming cable. But I don't know how the operating system can correctly differentiate between a bad cable or a bad device?... /1

@mwichary ... In the same vein, there are a few modes to each of the line weights in the diagram.

A. The theoretical maximum as displayed by the drivers.
B. The practical maximum as directly limited by the daisy chaining
C. The available maximum as implied by the active throughput of each of the devices
D. A verified maximum achieved via automatic testing

And I think this is where a UI like this kind of gets complicated.

If I plug in a 20gbps hub and then a bunch of peripherals, my actual throughput is going to be limited not just by the devices I've plugged in, but by the bandwidth they're actually using. If you plug in three monitors, a high def microphone, an external hard drive and a 2.5 gbps network cable, you could be totally fine or completely hosed based on how those things are configured and operating.

And I'm not actually sure how to do this, but I would definitely pay to have such a utility available. Answering such questions would be extremely valuable. //

@mwichary

addendum: I have seen some hobbyists post basic boards for USB cable testers and there are some gadgets on Amazon, but they're not very user friendly.

We're definitely in a reality where we need to have $20 cable testers that you use at home. With a useful display explaining which USB features this cable will support. Just like we have $0.50 battery testers.

I don't think it's ever going to be $0.50 for a USB one because it's complicated. But we can't be relying on $10k devices for this.

@gatesvp
Yes on the cable testers.
I was even thinking how one could get an “eye” signal test, at home, but shelved it for lack of resources and the faint possibility of doing signal analisis with sufficient accuracy.

@mwichary

@dzwiedziu

Thinking about this deeper and it kind of feels like a good tester here is going to be equivalent to at least something like a higher end USB hub. Like far more than even $20.

How do you test a 240W cable if you don't have at least a 240W power supply? Testing 80gbps throughout requires a chip that can actually process that much data, currently not super cheap. Looking at the details from the LTT testing on HDMI and I see the same things brought up.

LTT sold out their entire first batch of high quality USB cables in a matter of days. So there's clearly market here for transparency and quality. But it looks like we're going to have to wait a little bit longer for consumer level testability.

@gatesvp
The 240W example is a bit simpler, that if you have devices that can supply and can use 240W you can quickly see if it works, and many devices (±an extra app) will tell you how good it works based on the already-present electronics.

With 80Gbps it's harder, but that where signal testing/eye diagrams would help, without need for data.
LTT also featured a machine for that. “Just” ~15kUSD IIRC.
(Or a good oscilloscope and patience.)

@gatesvp Yeah… I know what you mean. But I think as long as we know what speed the device asked for and what speed it got negotiated down to, we could try to visualize it all.

It’s true that a device can ask for more than it needs, too.

Maybe some of this becomes a global database of devices? And in case vendor/ids lie or unreliable, you can choose the device from the dropdown.

@mwichary also cables sometimes lie :/

@mwichary What I find really impressive is that I'm using a really old keyboard at work, I don't know the model. I can send you a picture of you're curious, but it's old enough to have a physical wheel for volume control.

I can plug a modern mouse into its USB ports and it works fine, though when I plugged my USB key in, it gave me an insufficient voltage error, So I suspected USB 1.

But I can still use this with my current laptop, and everything works normally!

@mwichary I ran into this a month ago. The speeds on 3.0, 3.1 and 3.2 are not correct because 3.1 technically "doesn't exist anymore" and 3.2 has four modes providing 5Gbps, 10Gbps in two ways and 20Gbps. And 20Gbps is not widely supported either.

The USB Forum royally fucked up the naming for USB 3.

@static Yeah, I am not sure quite how one would explain the names and the logos etc. But I think at least the speed number should be useful – and whether you could go higher than the current one.

@mwichary I don't think you can diagram it simply.

I found this all out when trying to run two HDMI capture dongles (at 1080p!) on the one port. I can't do it, not even with a hub that claims to be USB 3.2.

@static Yeah, I was wondering about combined throughput etc.
@static But at least, you know: Show me the numbers, show me what’s connected and how. That would already be a lot more useful for debugging those situations, I think.

@mwichary Oh yes! What and where is definitely useful!

Would be good to have a Windows version, too. A lot of Windows PCs have internal hubs that people don't know are there.

@static @mwichary USB 5, 10, 20, 40, 80 would be perfectly clear.

At this point I must assume the confusion is intentional.

@voltagex @mwichary I like your idea. Reading the explanation on Wikipedia (which is not easy to read, either), it really sounds like people too close to the engineering managed to force through their preferred naming.

@mwichary Yea, the jump from 1 to 2, and then up from there is pretty amazing:

8X, 40X, 10X, 2X, 2X, 2X…

@mwichary I wrote a whole book about this
@glennf @mwichary I love my BLE CaberQU USB-C cable tester, that checks data speed AND charging capability for USB-C cables. (Two more things that do not correlate as much as most people would expect.)
@tphinney @mwichary I bought one. Defective. They sent me a new one. Same. The founder was baffled. I sent it back for QA. They sent me a 3rd and 4th. The one that I think worked failed on data rates on Thunderbolt 4/USB4 cables. It also kept testing cables that worked perfectly well at full speed/voltage as failed. So I don't know what to make of that.

@glennf @mwichary Oh wow. That sucks. I should have known you would have tried it!

I have had mostly good luck with it... but there is one cable that kinda flunked that I just tossed without further ado. Next time I will try it out in use as well, just to see.

@tphinney @mwichary Yes, it may be that I have edge case cables or got a spate of bad devices, but I tried a dozen cables and sometimes got different results by switching ends or rotating plugs. It could be that this is a USB-C problem, not a cyberQU problem, too!
@mwichary JUST as a prototype/exploration, I've got this running as a python script. Just to show the info is there and can be visualized.
@mwichary Clearly I don't have much connected to my laptop but I'm just seeing if there was a simple script that could at least get the data easily. Seems to be there. This clearly needs more testing with external hubs
@scottjenson Haha, I have a lot connected! The above is actually my live situation.
@scottjenson Interesting no permission is necessary to just do this!
@scottjenson Cool! Here’s an alt tool that shows it differently – but I feel some stuff that’d be great (like actual desired speed) is still missing. https://mastodon.online/@mwichary/116117909965763285
@mwichary ah, the "Hub vs cable" issue, yeah. I don't know if that data is available to a script/sys utility
@scottjenson Yeah, some of it looks a bit sketch in the System Information app that’s purportedly hierarchical.
@scottjenson I imagine this would have to be done inside Apple anyway to be fully up to snuff.
@mwichary Yeah, I was just seeing *if* that data was just "sitting there" so I tried the script approach as a first prototype. A lot *is* there but I don't think the negotiated speed (what cable you used) is there....
@scottjenson Well, Apple and the USB Consortium better start working on it. I need it by yesterday.
@mwichary Well, I'm getting a bit closer. I seem to be getting values for power and speed of the connection
@scottjenson You wanna make an app together so we get acquihired by Apple.
@mwichary sounds like a vibe coding opportunity! Tell it to generate a Figma document from that input…
@Drwave I don’t know if an app can access all the data necessary…
@mwichary Just do "File->Save" in the System Information app that is showing that.
It's just a plist...
USB Connection Information App - App Store

Download USB Connection Information by Daniel Gauthier on the App Store. See screenshots, ratings and reviews, user tips, and more apps like USB Connection…

App Store
@atomicbird @Drwave From looking at the screenshots, not sure if it tells you maximum supported speed? Just the current one.
@atomicbird @Drwave Oh wait, maybe I should just buy it! It shows “max supported speed” as an option in the last screenshot.

@atomicbird @Drwave Yeah, I’m afraid it doesn’t show when the cable is limiting the throughput. The maximum supported speed is just for the whole thing.

Also, it shows everything in a flat list, not hierarchically.

But good to know this exists!

@mwichary @atomicbird @Drwave I’ve encountered so many “USB-C” issues where the cable turned out to be the problem that I’ve bought these two devices to test cables:

BitTradeOne USB cable checker: https://bit-trade-one.co.jp/en/adusbcim/

ChargerLAB POWER-Z USB port tester: https://www.power-z.com/products/chargerlab-power-z-km003c

The first device shows me cable CONNECTIVITY—it’s shocking how many “USB-C” cables don’t have all their pins connected. It also shows you how much resistance the cable exhibits, which limits power application.

The second device displays various software queries. The most important is the cable’s E-Marker identifier, which tells you what protocols it supports. The device also lets you snoop on what’s going on in the cable when it is connected.

I went through my bucket of “USB-C” cables and threw out a bunch of them because they failed one test or another which made them booby traps for when I want to use them.

BONUS: the first device also tests adapters e.g. USB-A to C as well.

"USB CABLE CHECKER 2" reveals the performance of your USB cable | Bit Trade One

A verification device that reveals the performance of USB cables!

@drahardja @atomicbird @Drwave Do you know whether a Mac itself should have the right… I don’t know, circuitry/capabilities to do those things?
@mwichary @atomicbird @Drwave I don’t *think* the cable’s e-marker is available via API, but I’m not certain. Looking at the output of `ioreg`, I see no relevant difference with a cable connected vs disconnected.
@mwichary @drahardja @atomicbird @Drwave I believe @sven was working on such a tool? But using low level access via booting Asahi/m1n1. I don’t believe the capabilities are available once booted into macOS.
@twix @mwichary @drahardja @atomicbird @Drwave nope, not working on anything like that. you could possibly detect e-markers and check connectivity of some pins (SBU1/2, D+/- but only in one orientation, SSTX/RX) I think. if you get code execution on the type-c port controller you could maybe do some more tests. would be a fun project but nothing I'm personally going to spend time on.
@drahardja @CosmicTraveler @mwichary @atomicbird @Drwave It would be great if someone posted which brands test well.
@FeloniousPunk @CosmicTraveler @mwichary @atomicbird @Drwave “Well” for what purpose? There are thin cables that carry little data but is compact, thick cables that charge well but don’t do data, long cables that do data well but is power limited, and huge thick cables that do it all.
@drahardja @CosmicTraveler @mwichary @atomicbird @Drwave Touché. Maybe some classifications are in order.
@FeloniousPunk @CosmicTraveler @mwichary @atomicbird @Drwave Yeah. And the average consumer has no chance to figure any of this out.

@mwichary @atomicbird @Drwave Oh and I should mention: just because a cable *can* perform at some reported level, it doesn’t mean two connected devices *will* perform at that level. The protocol negotiation between the two devices may end up at some other equilibrium.

Case in point: I connected my phone to my computer with a cable that reports USB 3.2 Gen 2 speeds (10 Gbps), but the connection was established at USB 2.0 speeds (480 Mbps). I then switched to a cable that reports USB4/TB4 speeds (40 Gbps) and the connection was made at 10 Gbps.

USB-C cables and connections continue to be a hot mess that no mortal consumer can understand.

@mwichary
Missing (or inaccessible) information is not a problem at all for that magical vibe slob. It will always give you the most plausible factoids.

@Drwave