Show HN: WhatCable, a tiny menu bar app for inspecting USB-C cables

3 days ago (github.com)

USB-C cables can be a mess. One cable charges at 5W, another does 100W and Thunderbolt 4, and they look identical in the drawer.

WhatCable sits in your menu bar and reads the cable data your Mac already has access to. Plug in a cable and it tells you in plain English what it can actually do: charging wattage, data speed, display support, Thunderbolt, etc.

Built in Swift/SwiftUI. Open source, free, no tracking.

GitHub: https://github.com/darrylmorley/whatcable

Cool. Just want to chime in that I wanted to see how quickly GPT-5.5 can turn this into a KDE Plasma 6 Plasmoid. Took about 10 minutes and two dollars, and now I have a nice QML app showing the same information in my taskbar.

Just wanted to say this because I feel it's really crazy that I can just do this today...

  • To save me 10 mins and $2, is this posted to GitHub somewhere?

    • Absolutely this is worth packaging for KDE.

      Although I imagine if you don't have the motivation to make it in the first place, you likely don't have the motivation to package it.

      18 replies →

    • It's 1st of May here, so probably not doing it today. Looking into it a bit more when I get back from the parties. but it's basically just three files: QML for the UI, some python code to parse /proc data and a metadata file.

      16 replies →

  • Did exactly this with the Sennheiser BTD-700 Bluetooth dongle. Found someone had done the work to create a little C library for controlling the dongle and with that Claude had created a nice widget for KDE to control my headphones.

  • Yeah it's insane how quickly the platform issue get solved by LLMs for 90% of software.

    I fixed lots of old tools' issues with using older broken APIs as well this way.

Props to @sleepingNomad here, who has done 16 releases in the last 7 hours, incorporating feedback from HN on the fly!

* Don't like menubar apps? you you can run it as a normal app

* Don't like GUIs? Now you can run it on the command line

Just look at that Changelog:

https://github.com/darrylmorley/whatcable/releases?page=2

This is pretty nice, but why do a lot of Mac apps insist on living in the menu bar?

  • Agreed, especially for something like this that might get used a handful of times (I’m assuming most people don’t have myriad cables or want to check them regularly?)

    The problem of course is that on my 14” screen the area to the right of the notch is already close to full and I don’t even have that many things there…

  • It works for me, but I understand for others it might not. So, there's now a "Show in menu bar" toggle in Settings. Turn it off and WhatCable runs as a regular Dock app with a normal window instead.

  • Making 1 click to access is faster than typing the app name in finder. Dock is usually full and used for different type of apps. Makes also constantly visible output possible with standard ui patterns.

  • Is it not rather useful in this particular case? You will see the reported capabilities whenever you plug in a cable. Or do people rather want to diagnose and label their cables just once?

    • Sure, but do you diagnose cables so often that you need a permanent icon in the menu bar?

      Following that logic, every application you use more than a handful of times should live there.

      Anyway. I'm not trying to argue, I think this is a neat tool, but when the Windows tray got bloated with icons people used to complain about it.

Thanks for creating this. I'm blind so the $16 USB tester off amazon to sort through my drawer of cables is not an option. This will stop me from needing to buy a sbc just so I have something running Linux to test cables.

  • Curious whether you've tested the popover with VoiceOver yet. Menu bar SwiftUI apps usually nail the status item by default, but the popover content tends to be hit-or-miss depending on row layout. A stack of Text views walks cleanly, but custom-drawn rows often read as one blob. Worth confirming for jareds' use case.

Nice! This solves a real problem. I have a drawer full of identical USB-C cables and no idea which ones support Thunderbolt. The menu bar approach is perfect for this :) You don't need a full app, just a glance when you plug something in.

Doesn't work for me. Says "No USB-C ports detected", although I'm pretty sure my monitor is connected via USB-C, and the monitor also has a built-in USB hub where my USB keyboard is connected to.

I remember seeing a recent analysis where the vast majority of cables from Amazon misreported their capabilities. Is this tool going to be able to catch those, or blindly report what the chip advertises?

  • I think for real cables the delta could also be explained by damage or just a bad plug-in attempt, so even if you're not trying to detect counterfeit cables it could be useful to know:

    1. What does the host support

    2. What does the cable support

    3. What does the device support

    4. What actually got negotiated

  • The tool can only tell you what the cable says. Detecting the gauge and composition of the wires in the cable is either destructive or requires temperature probes.

    Detecting whether the signal characteristics are close enough to in-spec or not requires a speed test, perhaps, but that also doesn't necessarily mean the cable is the problem if such a test failed.

    • This would be super to have! I do a lot of software defined radio work and the quality of USB (C) cables is pretty much a wild west. I needed some for a workshop and it was almost impossible to find a cable that didnt have crazy reflections and interference at all frequencies. I went through 6 different brands and vendors. In the end the cleanest signal came from an original Apple Type C cable (around 20usd). I am not sure if its because their shielding, differential pairs or signal integrity computation (iirc there is like a pretty beefy soc in the connector), or that I used it with an Apple Macbook. Some of the cables I found to perform badly were cut open, revealing missing shielding and none of them had twisted pairs.

I'm curious how the SPI to do this (e.g. `IOPortTransportComponentCCUSBPDSOP`) was discovered. There was nary a mention of it anywhere prior to release. Even Claude has to latch on to something. Always wondered if there was some way to read emarker data through some buried framework, but wasn't sure how to find it.

I don't think I can abide running vibe-coded software, but maybe I'll make a hand-coded fork now that the SPI is exposed. (Assuming it works correctly.)

Tangential, but LLT recently came out with their own lineup of USB-C cables guaranteed to be up to spec. And they have the main specs printed on each cable end, so you know what you grab.

That should be mandatory.

> Not on the App Store. App Sandbox blocks the IOKit reads we depend on.

Interesting - do we know why that api is not allowed? I see no reason, especially if it would also require runtime permission from user.

This reminds me ChromeOS has some USB-C cable identification superpowers: https://www.reddit.com/r/UsbCHardware/comments/1pyojjd/comme...

Not sure if it's using the same thing this MacOS thing is doing. In the link the author explains that the cable e-Marker contains a "Discover Identity" message that you can read and display in ChromeOS. Most ordinary Windows hardware can't read it because of BIOS limitations, but Chromebooks can. I'm guessing Macs can too.

Pretty cool. What I don't understand is why both my USB@1 and USB@2 show the same connected devices. I'd expect to only see the respective devices. USB@1 is my USB-hub monitor, the other one is connected to my phone. Both show keyboard, etc. plus my phone as connected devices.

Could it be just a console utility?

I like the idea and thanks for sharing, but I do think folks who vibe code or use Claude should take their time using, testing, and improving app before rushing to share. This was pushed/deved like 2 hours ago

  • And it's been updated, with full releases, many times since.

    I like this tool, but I agree that it was rushed and it is still being rushed. I urge the developer to slow down and get it right.

The 'plugged upside down' is weird for a USB-cable. Especially as that doesn't work. I tried plugging it 'the other way around' and it showed the same 'upside down' warning

Good stuff, but it's telling me that my USB-C Thunderbolt cable has been plugged in upside down but the connector handled this. I was not aware that you can plug in something into USB-C upside down!

  • I wasn't either (insomuch as I had never thought about it), but it makes sense if you think about it for a second. If you have one end plugged in one way, and the other end plugged in the other way, each individual wire is flipped from where it should be. The fact that you _can_ plug it in either way means that the device on one end needs to be capable of recognizing that and logically reversing it. Same as automatic crossover in Ethernet.

    That's all the program is telling you. It doesn't matter that it's backwards, but technically it is.

  • This is actually one of the cost adders of USB3 USB-C devices. They need lane swapping ICs which are basically high speed analogue switches.

  • You can't. This software is leaking implementation details of USB-C and you really don't need to know this. I understand it's tempting to show everything, but the author should have exercised restraint here (this is assuming they were consciously involved at all, of course).

This is a great app. I have a device for it that I bought maybe a year ago, but having it right on my laptop makes things a lot easier.

Great work!!!

I would like to ask an LLM to rewrite it as Python CLI script. Is it even possible, or some Swift-only functionality is necessary?

P.S. Some time ago I learnt through HN of a one-line command in macOS which revealed the power (Wattage) of the connected charger. Can't find it now, but it was very useful.

This is something that I’ve wanted for quite a while. I have lots of mystery USB-C cables that it would be nice to be able to label with their capabilities. Now I can.

Awesome! It handles my kinda complicated setup with docking station, USB and DisplayPort switches pretty well.

Is it also possible to read the e-marker on non-Apple devices? Linux or windows?

This would be so useful...

I am definitely gonna contribute or fork to create an open leaderboard of cable brands and quality :D

  • It won't tell you the _quality_

    It just tell you want the e-marker said.

    • Yep, the e-marker can effectively report whatever.

      You'd need proper hardware capable of testing bandwidth, power, noise, etc, which is prohibitively expensive.

    • > It just tell you want the e-marker said.

      Which isn't helpful if the cable has no e-marker.

  • I dont know how they do it, but the original Apple Type C cable is GREAT. I use it for software defined radio stuff, where your usb cable can start to act as an antenna and causing interference and reflections. I tested about 6 different brands and vendors and these gave the cleanest signal. Theyre also pretty pricy sadly. Not sure about the speeds and pd, but suspect it should be fine…

awesome utility . I purchased a $50 usb cable inspector on Ali express because usb-c compatibility is atrocious. there are dozens of protocols, (data, multiple PD, EPR, various wire gauges, various pinouts connected etc).

USB c is really just a connector standard, but vendors sell the cables as if it’s a cable standard. It’s a failure of the USB standards group to establish conduductor, pinout, shielding and protocol standards for consumers to understand.

There should be color and markings on USB C cables similar to resistors so you can immediately tell WTF the cable is capable of before and during use.

Clean execution. The "tiny menu bar app" framing is exactly where I'm trying to land my own scope right now.

What was the hardest thing you cut to keep it tiny? I keep adding "one more useful thing" and have to talk myself down.

I get that the connectors are identical but I find it odd that people find it so challenging. Thunderbolt is the thick and short cable. If it's not thick it's not gonna work well and if it's over a metre it's not gonna work well. cf my pile of thin long "basic" usb c cables.

  • Thunderbolt 4 passive (over usb) is 0.8m in length, longer cables are active, up to two meters I think, so they do exist.

  • Great, and what about non-Thunderbolt cables? How do I distinguish between power only, USB 2, USB 2+PD, and USB 3.2 cables? I've got a whole pile of cables that, without my Treedix tester, are indistinguishable re: functionality and support.