---
title: "USB-C 케이블 정체를 까보는 macOS 메뉴바 앱, WhatCable"
published: 2026-05-01T08:43:45.000Z
canonical: https://jeff.news/article/2144
---
# USB-C 케이블 정체를 까보는 macOS 메뉴바 앱, WhatCable

WhatCable은 Mac에 꽂힌 USB-C 케이블이 실제로 몇 와트 충전과 몇 기가비트 전송을 지원하는지 보여주는 작은 macOS 메뉴바 앱이다. macOS의 IOKit에서 USB-PD 협상 상태, 케이블 e-marker, 충전기 PDO, 연결 장치 정보를 읽어 사람이 이해하기 쉬운 문장으로 풀어준다. Apple Silicon과 macOS 14 이상만 지원하고, App Store에는 못 올라가는 구조다.

- USB-C 케이블이 ‘도대체 뭐까지 되는 놈인지’ 보여주는 macOS 메뉴바 앱이 나옴
  - 이름은 WhatCable이고, Mac에 꽂힌 USB-C 케이블의 충전 전력, 데이터 속도, 연결 장치, 활성 전송 모드를 사람이 읽기 쉬운 문장으로 보여줌
  - 같은 USB-C 모양이라도 USB 2.0 충전 전용 케이블부터 240W / 40Gbps Thunderbolt 4 케이블까지 섞여 있는 현실을 겨냥한 도구임

- 핵심 기능은 ‘충전이 왜 느린지’를 바로 찍어주는 진단임
  - 케이블 정격이 충전기보다 낮으면 ‘케이블이 충전 속도를 제한 중’이라고 알려줌
  - Mac이 배터리 상태 때문에 일부러 적게 요청하면 ‘충전기는 96W까지 되지만 현재 30W로 충전 중’처럼 구분해서 보여줌
  - 케이블, 충전기, Mac 중 누가 병목인지 알 수 있으니 책상 밑 케이블 추리쇼가 줄어듦

> [!IMPORTANT]
> WhatCable은 케이블 e-marker에서 속도와 전류 정격을 직접 읽음. 그래서 3A, 5A, 60W, 100W, 240W, 5/10/20/40/80Gbps 같은 숫자를 UI에서 바로 확인할 수 있음.

- 앱이 읽어오는 정보가 꽤 깊음
  - 케이블 e-marker에서 USB 2.0, 5Gbps, 10Gbps, 20Gbps, 40Gbps, 80Gbps 같은 실제 속도와 3A/5A 전류 정격, 칩 벤더를 표시함
  - 충전기 PDO 목록도 보여줘서 5V, 9V, 12V, 15V, 20V 중 어떤 프로필이 광고되고 현재 어떤 프로필이 협상됐는지 볼 수 있음
  - 연결된 USB 저장장치, 허브, 주변기기도 물리 포트 아래에 묶어서 표시하고, 협상된 속도까지 보여줌

```mermaid
sequenceDiagram
    participant 사용자
    participant 메뉴바앱 as 메뉴바 앱
    participant IOKit
    participant 케이블칩 as 케이블 e-marker
    participant 충전기
    사용자->>메뉴바앱: USB-C 포트 상태 확인
    메뉴바앱->>IOKit: 포트와 전원 서비스 조회
    IOKit->>케이블칩: 케이블 식별 정보 읽기
    IOKit->>충전기: PDO와 현재 협상값 확인
    IOKit-->>메뉴바앱: 속도, 전력, 장치 정보 반환
    메뉴바앱-->>사용자: 병목과 케이블 성능을 문장으로 표시
```

- 엔지니어 모드도 있음
  - 옵션 클릭이나 설정 토글로 내부 IOKit 속성을 그대로 볼 수 있음
  - 메뉴바 앱뿐 아니라 같은 진단 엔진을 쓰는 `whatcable` CLI도 같이 제공함
  - Homebrew로 설치하면 앱과 CLI 경로 설정이 같이 처리되고, 수동 설치 시에는 앱 번들 안의 바이너리를 직접 심볼릭 링크해야 함

- 지원 조건은 꽤 명확하게 선이 그어져 있음
  - macOS 14 Sonoma 이상이 필요하고, Apple Silicon Mac만 지원함
  - Intel Mac은 Titan Ridge / JHL9580 Thunderbolt 3 컨트롤러를 쓰는데, Apple의 IOKit 드라이버가 USB-PD 협상 상태나 케이블 e-marker VDO를 공개하지 않아서 같은 정보를 뽑을 방법이 없다고 함
  - App Store에도 없음. 앱 샌드박스가 필요한 IOKit 읽기를 막기 때문임

> [!NOTE]
> e-marker가 없는 케이블도 많음. 보통 60W 미만 케이블은 표시 정보가 제한될 수 있고, Thunderbolt / USB4 케이블이나 5A / 100W 이상 케이블은 e-marker가 들어가는 경우가 많음.

- 구현은 Swift 5.9 기반이고, 앱과 CLI가 공통 코어를 공유함
  - UI는 `Sources/WhatCable/ContentView.swift`, 사람이 읽기 쉬운 판단 로직은 `Sources/WhatCableCore/PortSummary.swift`, USB-PD 비트 해석은 `Sources/WhatCableCore/PDVDO.swift` 쪽에 있음
  - 빌드는 Xcode 15 이상이 필요하고, 스크립트로 universal 앱과 zip 배포물을 만들 수 있음
  - Developer ID 서명, hardened runtime, notarisation, GitHub 릴리스, Homebrew cask 갱신까지 릴리스 파이프라인도 갖춰져 있음

---
## 기술 맥락

- WhatCable이 재밌는 이유는 USB-C 문제를 새 하드웨어 없이 소프트웨어로 풀려고 한다는 점이에요. macOS 안에는 이미 포트 상태, 전원 협상, 케이블 식별 정보가 있는데, 보통 사용자는 그걸 볼 방법이 거의 없거든요.

- 이 앱은 IOKit을 골랐기 때문에 메뉴바 앱과 CLI에서 같은 진단 엔진을 공유할 수 있어요. 별도 커널 확장이나 데몬을 깔지 않아도 되고, 공개 접근자로 읽을 수 있는 범위 안에서 문제를 해결한다는 게 장점이에요.

- 대신 이 선택 때문에 제약도 분명해요. Intel Mac에서는 필요한 USB-PD 상태와 e-marker 정보가 공개되지 않아서 지원할 수 없고, App Store 샌드박스 안에서도 필요한 IOKit 접근이 막혀요.

- USB-PD와 e-marker를 같이 보는 것도 중요해요. 충전이 느릴 때 원인이 케이블 정격인지, 충전기 프로필인지, Mac이 현재 적게 요청하는 상태인지 구분해야 실제로 바꿔야 할 부품을 알 수 있으니까요.

## 핵심 포인트

- USB-C 케이블의 충전 전력, 데이터 속도, e-marker 정보를 메뉴바에서 확인
- 240W, 40Gbps, Thunderbolt 4처럼 겉보기로 구분 안 되는 케이블 문제를 해결
- IOKit 공개 접근자로 USB-PD 상태와 케이블 정보를 읽으며 별도 데몬이나 비공개 API는 쓰지 않음
- Intel Mac은 Thunderbolt 3 컨트롤러가 필요한 정보를 공개하지 않아 미지원
- CLI와 Homebrew 설치를 함께 제공해 개발자용 진단 도구로도 쓸 수 있음

## 인사이트

USB-C는 커넥터는 하나인데 실제 성능은 케이블마다 천차만별이라 현장에서 디버깅이 은근 빡세다. WhatCable은 그 혼란을 macOS가 이미 들고 있는 저수준 정보로 풀어내는, 개발자 취향 제대로 타는 작은 도구다.
