CLI
USB-C diagnostics from your terminal. Same engine as the menu bar app.
Install
Homebrew (recommended)
The cask installs the menu bar app and puts the whatcable CLI on your PATH automatically.
$ brew install --cask darrylmorley/whatcable/whatcable
After this, whatcable just works from any new terminal window.
Homebrew, CLI only (no menu bar app)
If you don't want the menu bar app, install just the command-line tool:
$ brew install darrylmorley/whatcable/whatcable-cli
Same signed and notarised binary as the one inside the .app, packaged on its own. Useful for scripting environments or terminal-only setups. Pick one of these two installs (both can coexist, but they ship the same whatcable binary).
Homebrew 6 may warn about untrusted third-party taps on first install. If an existing install starts complaining about an untrusted tap, run brew trust darrylmorley/whatcable or see docs.brew.sh/Tap-Trust for details.
Downloaded the .zip from GitHub?
The CLI is bundled inside the app, at:
/Applications/WhatCable.app/Contents/Helpers/whatcable
You can run it from there directly, alias it, or symlink it. Pick whichever fits how you use Terminal.
Option 1: run the full path (no setup)
Fine for one-off invocations:
$ /Applications/WhatCable.app/Contents/Helpers/whatcable
Option 2: shell alias (no sudo needed)
Add this line to ~/.zshrc (or ~/.bashrc), then open a new terminal:
alias whatcable='/Applications/WhatCable.app/Contents/Helpers/whatcable'
Option 3: symlink into your PATH
Pick the directory that's already on your PATH. On Apple Silicon Macs that's usually /opt/homebrew/bin; on Intel Macs or with custom setups it's often /usr/local/bin. Both need sudo:
# Apple Silicon (Homebrew default)
$ sudo ln -s /Applications/WhatCable.app/Contents/Helpers/whatcable /opt/homebrew/bin/whatcable
# Intel / other
$ sudo ln -s /Applications/WhatCable.app/Contents/Helpers/whatcable /usr/local/bin/whatcable
If you'd rather not use sudo, create ~/bin, add it to your PATH in ~/.zshrc, and symlink there instead:
$ mkdir -p ~/bin
$ ln -s /Applications/WhatCable.app/Contents/Helpers/whatcable ~/bin/whatcable
$ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
Usage
Basic scan
Run whatcable (lowercase) with no flags to get a plain-English summary of every USB-C port.
$ whatcable
USB-C Port 1
✓ Charging well at 96W
Cable: 5A, 100W, USB4 40 Gbps
Charger: 5V / 9V / 15V / 20V PDOs
USB-C Port 2
! Cable is limiting charging speed
Cable: 3A, 60W, USB 2.0
Device: External SSD, USB 10 Gbps
JSON output
Use --json to get structured JSON. Pipe it into jq for scripting and automation.
$ whatcable --json | jq '.ports[0].cable'
Watch mode
Use --watch to monitor ports in real time. The display updates as cables connect and disconnect.
Press Ctrl+C to stop.
$ whatcable --watch
In watch mode, the terminal clears and redraws on each change with a timestamp header.
Combine with --json for newline-delimited JSON (one object per change).
$ whatcable --watch --json
Raw IOKit properties
Use --raw to include the underlying IOKit properties alongside the summary. Useful for debugging or filing bug reports.
$ whatcable --raw
Cable report
Use --report to generate a markdown report for each e-marked cable. It includes the cable's
vendor ID, product ID, capability flags, and a pre-filled GitHub issue URL.
$ whatcable --report
If no e-marker data is available, the command tells you so. Two reasons that can happen: either the cable genuinely doesn't have an e-marker chip (USB-PD doesn't require one below 3A), or macOS hasn't asked for it yet (it only does that when negotiating above 3A, so a 20W charger is unlikely to trigger the read). Try a higher-wattage charger if you're not sure.
Pro from the command line
WhatCable Pro adds live power telemetry plus licence management from the terminal. Activations sync with the menu bar app on the same Mac, so activating from one unlocks Pro in the other.
$ whatcable --monitor # live power telemetry, Ctrl+C to exit
$ whatcable --monitor-json # newline-delimited JSON, for scripting
$ whatcable --dashboard # full-screen TUI dashboard (Tab cycles screens, q quits)
$ whatcable --activate XXXX-XXXX-XXXX-XXXX # validate and store a licence
$ whatcable --licence # show current licence status
$ whatcable --deactivate # remove stored licence from this machine
$ whatcable --pro # show Pro features, open purchase page
Full-screen live dashboard in your terminal. Tab cycles Overview, Negotiation, and Power screens, arrow keys select ports, q quits. Requires Pro.
Unlicensed users see a one-line footer at the end of plain text output pointing at
whatcable --pro. Run whatcable --silence-pro-hints to hide it,
whatcable --show-pro-hints to bring it back. The footer is suppressed
automatically when output is piped, redirected, or used with --json.
All flags
$ whatcable --help
whatcable 0.18.0 -- What can this USB-C cable actually do?
Usage: whatcable [options]
Options:
--watch Continuously monitor for changes (Ctrl+C to exit)
--json Output as JSON instead of human-readable text
--raw Include raw IOKit properties for each port
--report Print a cable report (markdown + GitHub URL) and exit
--version Print version and exit
-h, --help Show this help and exit
--monitor Monitor live power telemetry (WhatCable Pro)
--monitor-json Output live power telemetry as newline-delimited JSON
--dashboard Full-screen TUI dashboard: ports, power, Thunderbolt (WhatCable Pro)
--test-kit Run diagnostic probes and submit data to help improve WhatCable
--pro Show WhatCable Pro features and open the purchase page
--silence-pro-hints Stop showing the Pro hint at the end of CLI output
--show-pro-hints Re-enable the Pro hint shown at the end of CLI output
--activate KEY Activate a WhatCable Pro licence (KEY = XXXX-XXXX-XXXX-XXXX)
--deactivate Remove the stored Pro licence from this machine
--licence Show the current Pro licence status
Requirements
- macOS 14 (Sonoma) or later.
- Apple Silicon (M1 or later). Intel Macs don't expose USB-PD state through IOKit.
- Either the WhatCable.app (cask install) or the standalone CLI install (
whatcable-cliformula).