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

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

github.com

128 points

sleepingNomad

3 hours ago


38 comments

sagacity an hour ago

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

  • poisonborz 28 minutes ago

    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.

    • UqWBcuFx6NV4r 14 minutes ago

      OK, thanks. We understand what a menu bar is.

      How is this conducive to the typical usage pattern of an app like this?

theanonymousone 36 minutes ago

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.

  • krelas 12 minutes ago

    `system_profiler SPPowerDataType | grep "Wattage"`?

mp0rta 8 minutes ago

Great project. It would be even better if it supported platforms other than Mac.

bkummel 2 hours ago

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.

ricardobeat an hour ago

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?

  • Neywiny 40 minutes ago

    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

kmmbvnr_ 2 hours ago

Could it be just a console utility?

  • captainbland an hour ago

    Yeah I like the sound of the functionality but I don't like the idea of it taking up menu bar space. Console utility would be good or even a gui that can be quickly launched through spotlight

thiagoperes 27 minutes ago

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

  • j16sdiz 24 minutes ago

    It won't tell you the _quality_

    It just tell you want the e-marker said.

emaro 2 hours ago

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.

denkmoon 43 minutes ago

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.

  • wallst07 29 minutes ago

    How do you define "thick" or "short" to a non-engineer/tech person? Relative to what exactly?

  • consp 30 minutes ago

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

aquir 2 hours ago

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!

  • justusthane an hour ago

    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.

    • regularfry an hour ago

      It's not always the case that the cable will correctly fix it. I think (hope?) any that any which didn't would be out of spec, but they exist...

Alifatisk an hour ago

Any plans to support installations through Homebrew?

BiteCode_dev an hour ago

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.

  • aphroz an hour ago

    You mean LTT ?

    • smusamashah an hour ago

      We type two capital LLs a lot these days.

ulfw an hour ago

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

  • AndroTux 19 minutes ago

    Everyone knows you have to flip the USB cable twice before it’s no longer upside down.

gedy 42 minutes ago

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

  • LordGrey 19 minutes 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.

  • xandrius 25 minutes ago

    Just because it got pushed 2h ago it doesn't mean they didn't test it on their end.