Stop Guessing: How to Actually See What Your USB-C Cables Can Do

USB-C cables all look the same, but their capabilities vary wildly. WhatCable is a macOS utility that decodes e-marker data to tell you exactly what your cable supports.

If you have a drawer full of USB-C cables, you know the frustration: they all look identical, but one might be a 240W power-delivery beast, another a 40Gbps Thunderbolt powerhouse, and a third a cheap, 480Mbps "charge-only" cable that came with a pair of headphones.

For years, the only way to know the difference was to test them with expensive hardware or rely on trial and error. WhatCable changes that by surfacing the hidden "e-marker" data directly from your Mac’s IOKit, presenting it in a clean, human-readable menu bar app.

Why This Matters for Developers

As developers, we often deal with high-bandwidth peripherals, external SSDs, and power-hungry workstations. When a transfer speed is throttled or a laptop isn't charging at full speed, the cable is usually the first suspect, but it's notoriously difficult to verify.

WhatCable solves this by reading the USB Power Delivery (PD) Discover Identity responses. It doesn't just guess; it queries the chip inside the cable's connector to report:

  • Data Speed: 480 Mbps (USB 2.0) up to 80 Gbps.
  • Power Rating: 60W, 100W, or 240W capabilities.
  • Protocol Support: Thunderbolt 3/4/5, USB4, or DisplayPort.

Beyond the Menu Bar: The CLI

While the menu bar app is perfect for a quick glance, the project also includes a robust CLI tool. This is invaluable for scripting or quick diagnostics in the terminal. If you install via Homebrew (brew install --cask whatcable), you get the whatcable command automatically.

Running whatcable in your terminal provides an instant snapshot of your ports:

$ 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

You can even use --json to pipe the output into jq for automated monitoring or logging, or use --watch to see real-time updates as you plug and unplug devices.

How It Works Under the Hood

WhatCable is a masterclass in leveraging native macOS APIs without resorting to private hacks. It interacts with four specific IOKit service families:

  1. AppleHPMInterface / AppleTCController: Monitors per-port state, connection, and orientation.
  2. IOPortFeaturePowerSource: Extracts the full Power Delivery Object (PDO) list from your charger.
  3. IOPortTransportComponent: Decodes the PD Discover Identity VDOs from the cable's e-marker.
  4. XHCI Controller Subtree: Maps connected USB devices to their physical ports.

Because it relies on these standard interfaces, it is lightweight, secure, and doesn't require invasive kernel extensions or helper daemons.

Pro Features and Hardware Health

While the core tool is free and open-source, the project offers a "Pro" version that adds deep-dive diagnostics. This includes:

  • Live Power Metering: Real-time graphs of power input.
  • Negotiation Diagnostics: A side-by-side view of what your Mac, cable, and device each support versus what was actually negotiated.
  • Resistance Estimation: A clever way to identify low-quality or damaged cables that might be causing voltage drops.

Getting Started

If you are on Apple Silicon running macOS 14 or later, you can grab the latest release from the GitHub repository.

Pro-tip: If you have a cable that you suspect is mislabeled or counterfeit, use the whatcable --report command. It generates a pre-filled GitHub issue with the cable's fingerprint, helping the community build a better database of cable capabilities. By contributing your data, you help make the tool more accurate for everyone.

Source

darrylmorley/whatcable: macOS menu bar app that tells you, in plain English, what each USB-C cable plugged into your Mac can actually do