Show HN: WhatCable, a tiny menu bar app for inspecting USB-C cables
Comments
pimeys
geordieboozer
To save me 10 mins and $2, is this posted to GitHub somewhere?
rustyhancock
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.
Zetaphor
I've got Opus crunching on it now, will update when I have it finished and published
Edit:
https://github.com/Zetaphor/whatcable-linux
Running on my Fedora KDE machine right now. Also includes a CLI so you could wrap your own widget
I still need to figure out publishing, doing this in between work meetings.
fidelramos
This is so cool that we can port useful stuff like this in minutes, thanks for sharing!
I packaged it for Arch Linux AUR: https://aur.archlinux.org/packages/whatcable-linux
vzaliva
I do not use KDE and wanted just command-line version of it without any Qt dependencies, so I've burned some tokens and produced just that:
_blk
Sorry, I'm late to the party but there's no rust port yet, so ..
https://crates.io/crates/whatcable
Thanks to the previous implementers/clauders.. I don't take any credits.
pseudohadamard
I have Claude working on a port to Intercal. Says it may take awhile, I'll post updates when they're available.
hnben
> Swift --(claude)--> Plasmoid --(claude)--> CLI --(claude)--> Rust-Port --(claude)--> Intercal
Is this the human centipede of programming?
TeMPOraL
Yes, as long as there are humans reviewing and quality-gating the outputs at every stage.
Otherwise, it's just a very long exoprosthetic digestive tract.
pimeys
Interesting. GPT-5.5 implementation was simpler with Python and a QML code.
Zetaphor
Python was a choice offered during the ideation phase but I chose to go with the C++ implementation
techwizrd
I am happy to package it and port it for Gtk/GNOME today.
darnir
If you end up doing that, please post it here. I'd be a very happy user of that extension
mfkp
Also happy to test it out on Gnome
pimeys
I feel like this is so lazy bothering maintainers for it is not great.
marmarama
No need to bother maintainers, just package it up and upload it to the KDE store as a Plasma extension. Then it can appear for download in "Get New Widgets" in Plasma edit mode. Plenty of "lazy" widgets in there.
TeMPOraL
Admiral Ackbar has entered the chat.
Making something has a well-defined end. Packaging something for distribution is an easy way to walk yourself into a long-term commitment.
pimeys
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.
lostlogin
> It's 1st of May here
Is that date significant somewhere? It was an nice sunny Friday for me.
hdndjsbbs
It's May Day, which is a labour holiday everywhere except North America commemorating the Haymarket Affair when American police brutally repressed striking workers .
In North America we have Labor Day in September to distance it from the historical associations with actual organizing and police brutality.
reaperducer
Still widely noted in Chicago, where the Haymarket riot took place. There's even a very well-attended reenactment every year.
North America is a big place. Generalizations always fail.
leptons
May Day has been around significantly longer than the Haymarket Affair.. a couple thousands years at least.
dotancohen
That's actually a different holiday celebrated on the same day. Why the other holiday got the name May Day is beyond me.
prmoustache
You do know that no sea/ocean has split the continent and that Mexico is still in North America right?
1st of may is festive day in Mexico.
DavideNL
International Workers Day:
pimeys
It's huge in Berlin. First sunny and warm day this year and techno parties everywhere.
harwoodr
May Day - like labour day in Canada/USA... but on the first of May
xp84
I would argue nothing about American Labor Day has anything to do with labor at all. Honestly we should just rename it “Summer’s End” because there is literally no theme. The ad flyers for the sales on that weekend have, if any perceivable theme at all, red, white and blue / Stars and Stripes for some reason. It’s traditional that school starts the day after it, but in many places that’s been dragged several weeks sooner into August for some sick reason.
We just don’t even have any holiday that honors labor, laborers, or labor unions.
wffurr
>> We just don’t even have any holiday that honors labor, laborers, or labor unions.
That holiday is May Day but it's not federally recognized in the US specifically to hinder labor organizing in this country. President Grover Cleveland went with the September alternative proposed by one of the early unions because it was "less inflammatory" than May Day which was preferred by all the other unions.
TeMPOraL
> I would argue nothing about American Labor Day has anything to do with labor at all. Honestly we should just rename it “Summer’s End” because there is literally no theme.
Isn't that true of most holidays pretty much anywhere in the West these days? Sure, there's Christmas and Halloween and Easter that have specific themes, but excepting deeply-religious communities who practice associated traditions, they're as meaningful as cosmetic items in free-to-play games. But every country has a bunch of other holidays that most people don't know or care about much beyond knowing it's a day off.
xp84
You’re not entirely off-base. But I think that people do get that Memorial Day, in addition to being the most popular day to BBQ, is about appreciating those who gave their lives in service of their country (i.e. they died for us). Valentine’s Day is about love. But Labor Day? People say “well uh I guess it’s about…work? Which we celebrate by not working lol”
lostlogin
> in many places that’s been dragged several weeks sooner into August
Do you mean April?
xp84
I mean they start school in August in many places now, instead of the traditional September, the Tuesday following Labor Day, a change which I think is dumb.
rigrassm
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.
porridgeraisin
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.
billyhoffman
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:
sleepingNomad
Thanks! HN gave me great bug reports and feature requests. Claude helped me ship fast. 16 releases in 7 hours is a lot easier with a decent pair programmer.
AnonC
Quite impressive, indeed. OP/sleepingNomad, can I have this on MacPorts, please? Thank you.
sleepingNomad
Added to the list!
9dev
Username doesn’t check out, that guy is anything but not sleeping
fredcallagan
Software development will never be as it was 3 years ago :D and that is great :D
sagacity
This is pretty nice, but why do a lot of Mac apps insist on living in the menu bar?
mft_
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…
sleepingNomad
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.
poisonborz
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.
Someone
And ‘every’ Mac developer thinks people will want to run their tool all the time.
For this kind of read-only tool, I doubt that’s the case. A regular application probably serves most users better.
Also, if you want users to have the option of permanently displaying this kind of info, a desktop widget (https://developer.apple.com/documentation/widgetkit) may be a better option than a menu bar item.
sgt
Exactly, this should just be a regular app with an optional menu bar option for those who want to switch it on.
sleepingNomad
I like this idea.
lxgr
> Dock is usually full
My menu bar is also full and, unlike the Dock, I can’t resize it to fit more.
poisonborz
You can put it in a secondary onclick taskbar with Ice (similarly to Windows)
alexcroox
Just a heads up Ice is abandoned and broken on upcoming versions of MacOS. I still need to look into an alternative
philsnow
Thank you for posting this, I've been increasingly frustrated with ice recently and have been considering paying for bartender, now i won't.
wlonkly
Thaw is a fork of Ice which is maintained and woks on Tahoe.
lxgr
There's also Bartender, Hidden Bar etc., but they all come with some downsides.
I just don't get why Apple doesn't recognize this as a problem. Do the engineers working on macOS all have two of these 5:1 aspect ratio ultra wide monitors!?
pndy
Whenever I look at my partner's Macbook I'm having a flashbacks from Win9x/2000 times when tray area was filled up.
But Microsoft managed to deal with that issue - years ago. With XP they introduced collapsible tray area and later, it also become possible to rearrange icons.
Somehow for Apple the problem doesn't exist or they assume that their users will choose a 3rd party solution. Frankly, it's them who should provide the solution straight within the operating system. Especially when Apple computers revolve nowadays more around laptops which by definition have smaller display area.
xp84
Worse - even if you have two, Apple just duplicates the menu bar on both screens.
Especially with the abomination that is The Notch, the menu bar has been overcrowded for years. No offense to OP. I’m talking about the 5 or so items I can’t get rid of in there.
efskap
Sure you can.
defaults -currentHost write -globalDomain NSStatusItemSpacing -int 2
defaults -currentHost write -globalDomain NSStatusItemSelectionPadding -int 2
Replace write with delete to undo.
UqWBcuFx6NV4r
OK, thanks. We understand what a menu bar is.
How is this conducive to the typical usage pattern of an app like this?
kranner
For some reason the app supports a separate standalone window mode as well [0]. It's not clear why the developer took the trouble to support two different modes when the menubar mode doesn't seem to add anything (like a live-updating icon for throughput).
Well, I can think of one reason why it wasn't that much more trouble. François Chollet had a nice tweet [1] on why removing human cognitive friction is resulting in needless software complexity.
[0] https://github.com/darrylmorley/whatcable/blob/main/Sources/...
jaffee
> removing human cognitive friction is resulting in needless software complexity
This is kind of a hilarious statement just on the surface. Isn't removing burden from humans the whole purpose of software? How can you call the complexity "needless"?!
(the actual tweet seems to go into a bit more detail around being incentivized to find good abstractions)
kranner
I think you're conflating the burden of creation with the burden of relevance, suitability, usability and usefulness of the created artifact. The more the person in charge is disengaged, the sloppier the output is likely to be.
hdndjsbbs
Making it trivial to generate software is making people turn their brains off. They don't think through the details and accept the "default" from an LLM which has no concern for the user experience.
wlonkly
> It's not clear why
People asked for it in these comments here and the developer added it.
kranner
Thanks, from the git log I see it was committed 20 minutes before my comment. I was going by the HN title and description and missed those comments.
awakeasleep
Are you saying you wish this was a desktop app and you would just open it occasionally when curious?
If so, it feels like a needlessly indirect and combative way to go about it.
teh_klev
Why is it "combative"? Seems like a needlessly hyperbolic description of launching a desktop app.
johanyc
Spotlight exists. Typing is much faster than moving your cursor to a small target like a menu bar item.
_Microft
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?
sagacity
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.
jrochkind1
oh no you're right, my menu bar is full already.
jareds
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.
thomas_viaelo
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.
wffurr
How did Claude do at conforming to accessibility standards on macOS?
n3storm
can something like this be done for linux? maybe a wrapper for lsusb. I just found https://github.com/doug-gilbert/lsucpd which adds PD and more.
n3storm
thanks!
bichiliad
I love that this is a native mac app. Thanks for building this, and thanks for sharing.
sleepingNomad
Thanks for taking a look, just pleased other people find it useful.
bkummel
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.
bkummel
There's an issue on Github for this now: https://github.com/darrylmorley/whatcable/issues/2
avidiax
Wontfix for Intel Macbooks: https://github.com/darrylmorley/whatcable/issues/12
Seems the Intel southbridge isn't known to expose the needed info.
sleepingNomad
Hi, should be fixed now.
codepoet80
Not for me! Intel Mac Pro 7,1, Sequoia 15.7.3, running v0.4.7
ricardobeat
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
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
avidiax
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.
thenthenthen
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.
bhouston
I tried to contribute back adapter current Wattage display to stats, but I got my PR closed without comment. It is similar to this:
archagon
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.)
BiteCode_dev
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.
pzmarzly
TIL, and they look great indeed. Shame they are all sold out except for <= 0.3m lengths. https://global.lttstore.com/products/ltt-truespec-cable-usb-...
aphroz
You mean LTT ?
smusamashah
We type two capital LLs a lot these days.
xandrius
LoL
BiteCode_dev
yes thx
barbazoo
I'll only buy them if they have gold connectors, those are the fastest. /s
emaro
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.
NelsonMinar
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.
thih9
> 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.
kmmbvnr_
Could it be just a console utility?
captainbland
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
piskov
> I don't like the idea of it taking up menu bar space
You know you can close it? :-)
captainbland
I will 100% ADHD it left open and it will sit there making it more cluttered than it needs to be
wlonkly
Sadly Ice is no longer maintained, but the fork Thaw[1] is active:
sleepingNomad
I'll look into this.
gedy
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
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.
ziml77
It's so weird seeing comments praising that there's been so many releases in such a short time. That's not a good thing!
literalAardvark
This isn't an air traffic control system though.
Shipping early is an entirely valid dev strategy.
xandrius
Just because it got pushed 2h ago it doesn't mean they didn't test it on their end.
sleepingNomad
I did indeed test it. Had the idea, and wanted to get it going.
ulfw
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
Everyone knows you have to flip the USB cable twice before it’s no longer upside down.
fuzzylightbulb
usb superposition. my favorite of the classic phenomena
aquir
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
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
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...
justusthane
It's the cable that is supposed to reverse itself and not the device? I'm not entirely sure I buy that - seems like it would add a lot of unnecessary complexity to every cable.
nhecker
The terminating device(s) are the ones that do the flipping, not the cable. You can take a cable that works either way between two high-end device, and then connect it to at least one low-end device and it will fail to connect for one of the two orientations.
bloggie
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.
globular-toast
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).
jrmg
What does it mean to be ‘upside down’ if the connector handles both orientations?
hurfdurf
USB2 wires are only on one side https://en.wikipedia.org/wiki/USB-C#cite_note-dp2.0-receptac...
sleepingNomad
This has been fixed now, apologies.
repoinsider
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.
patrickhener
This is really cool stuff. It is a pain to categorize cables and this really helps. Thanks for showing.
brk
14 Inch 2021 MBPro / M1 Pro chip / Sonoma 14.5
WhatCable says "No USB-C Ports Detected".
System info clearly shows my iPhone attached to USB 3.1 Bus.
bkummel
There's an issue on Github for this now: https://github.com/darrylmorley/whatcable/issues/2
wallst07
...And claude fixed it already https://github.com/darrylmorley/whatcable/commit/7a3ad1363ae...
theanonymousone
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.
nhecker
Python script that Claude Code wrote and I tweaked for peeking at marked USB-C cables: https://github.com/nhecker/usb-e-marker
Gist of random (human-written) power-related commands to peek at random power info: https://gist.github.com/nhecker/8e850773ff229724ce361967cc22...
For your last point, you're probably looking for something like `ioreg -raw0 -c AppleSmartBattery | plutil -extract 0.PowerTelemetryData.SystemPowerIn raw -` (The source for that last command is from the above gist: https://gist.github.com/nhecker/8e850773ff229724ce361967cc22... ) Or maybe `pmset -g ac | head -n3` is helpful, too. HTH.
_nick
(edit1: formatting)
(edit2: there's also https://news.ycombinator.com/item?id=47677607 which seems pretty cool but is quite complex, and might be overkill)
(edit3: different method for printing adapter wattage)
krelas
`system_profiler SPPowerDataType | grep "Wattage"`?
theanonymousone
Yes, something like this. Thanks!
thenakulchawla
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!!!
dhosek
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.
tuzemec
Awesome! It handles my kinda complicated setup with docking station, USB and DisplayPort switches pretty well.
andix
Is it also possible to read the e-marker on non-Apple devices? Linux or windows?
This would be so useful...
thiagoperes
I am definitely gonna contribute or fork to create an open leaderboard of cable brands and quality :D
j16sdiz
It won't tell you the _quality_
It just tell you want the e-marker said.
rupx
Yep, the e-marker can effectively report whatever.
You'd need proper hardware capable of testing bandwidth, power, noise, etc, which is prohibitively expensive.
zimpenfish
> It just tell you want the e-marker said.
Which isn't helpful if the cable has no e-marker.
thenthenthen
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…
sleepingNomad
That's a great idea.
Alifatisk
Any plans to support installations through Homebrew?
sleepingNomad
That's added.
randomeel
Cool ! Would love a brew installation as well
sleepingNomad
Added
tonymet
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.
mp0rta
Great project. It would be even better if it supported platforms other than Mac.
sleepingNomad
I'm working on a Windows version.
mwexler
Looking forward to seeing this one in action
jrochkind1
oh my god, this is going to change my life if it works.
gigatexal
very, very cool thanks for making this.
hallegbg
Nice!
thatxliner
is there a CLI?
khat_th
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.
denkmoon
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
How do you define "thick" or "short" to a non-engineer/tech person? Relative to what exactly?
sgerenser
It comes with experience, you know it when you see it.
lostlogin
Are you talking about cables?
wallst07
Lol, maybe?
consp
Thunderbolt 4 passive (over usb) is 0.8m in length, longer cables are active, up to two meters I think, so they do exist.
zimpenfish
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.
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...