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-cli formula).
New to WhatCable? See the main docs for what the app shows and how to configure it.