Show HN: WhatCable、USB-Cケーブルを検査するための小さなメニューバーアプリ
6時間前原文(github.com)
概要
- WhatCableは、Macに接続したUSB-Cケーブルの性能を分かりやすく表示するメニューバーアプリ
- ケーブルの種類や充電速度の遅さの原因を簡単な日本語で解説
- ケーブル・充電器・接続機器の詳細情報をリアルタイム表示
- macOS 14 (Sonoma)以降対応、オープンソースかつ無料
- CLI(コマンドライン)ツールも同梱
WhatCable 機能概要
- Macのメニューバーに常駐し、接続したUSB-Cケーブルの詳細を表示
- 各ポートごとに、Thunderbolt/USB4対応・充電専用・低速ケーブルなどを一目で判別
- 充電診断機能
- ケーブルが充電速度を制限している場合や、充電器・Macの要求電力状況をバナーで通知
- 例:「ケーブルが充電速度を制限中」「30Wで充電中(充電器は最大96W対応)」など
- ケーブルe-marker情報の取得
- 実際のデータ転送速度(USB 2.0, 5/10/20/40/80Gbps)
- 電流定格(3A/5A→最大60W/100W/240W)、チップベンダー名
- 充電器PDOリストの表示
- 充電器が対応する全電圧プロファイル(5V/9V/12V/15V/20V…)を一覧
- 現在選択中のプロファイルをリアルタイムでハイライト
- 接続機器のベンダー名・製品種別をPD Discover Identityから自動取得
- アクティブな転送モード(USB 2/3/Thunderbolt/DisplayPort)を表示
- ⌥(オプション)キークリックや設定でIOKitプロパティの詳細表示も可能(エンジニア向け)
設定・操作方法
- 歯車アイコンから設定画面を開き、以下のカスタマイズが可能
- 空きポートの非表示
- ログイン時自動起動
- Dockアプリとして常駐
- ケーブル接続・切断時の通知
- メニューバーアイコンの右クリックで
- 手動リフレッシュ
- ウィンドウ常時表示(スクリーンショット・デモ用途)
- アップデート確認、About、GitHubリンク、終了
- インストール方法
- Releasesページから最新のWhatCable.zipをダウンロード・解凍し、/Applicationsへ移動
- Apple Silicon/Intel両対応、署名・公証済みでGatekeeper警告なし
Homebrewインストール手順
- Homebrewタップとcaskで簡単インストール
brew tap darrylmorley/whatcablebrew install --cask whatcable
- CLI(コマンドライン)ツールも自動でパスに追加
コマンドラインインターフェイス(CLI)
whatcableコマンドで全ポートの人間向けサマリー表示whatcable --jsonで構造化JSON出力(jq等で利用可能)whatcable --watchでケーブル抜き差しをリアルタイム監視whatcable --rawでIOKitプロパティも含めて表示- 手動インストール時は
/Applications/WhatCable.app/Contents/Helpers/whatcableをシンボリックリンクでパスに追加
動作原理・技術仕様
- IOKitの3種類のサービスから情報を取得
- AppleHPMInterfaceType10/11/12, AppleTCControllerType10:ポートごとの状態・e-marker有無など
- IOPortFeaturePowerSource:充電器の全PDOリストと現在の交渉状況
- IOPortTransportComponentCCUSBPDSOP:PD Discover Identity VDOから機器・ケーブル情報取得
- USB Power Delivery 3.x規格に準拠したデコード処理
- Swift 5.9(Xcode 15+)でビルド可能
swift run WhatCable:メニューバーアプリ起動swift run whatcable-cli:CLI起動- 公証・署名・リリース自動化スクリプトも提供
注意事項・制限
- e-marker情報はe-marker搭載ケーブルのみ取得可能(60W未満の安価なケーブルは未対応が多い)
- ケーブルの性能表示はe-markerチップの情報に依存
- 偽物や誤記録されたチップの場合、実力より高性能を偽装することもあり
- PD 3.0/3.1規格対応、今後のPD 3.2 EPR対応はデータ取得後に調整予定
- ベンダー名リストは主要メーカー中心、未登録は16進VID表示
- macOS専用(iOSはUSB-C e-markerアクセスが困難)
- App Store未掲載(App Sandbox制限によりIOKitアクセス不可)
コントリビュート・クレジット
- Darryl Morleyによる開発
- コードは小規模で可読性重視、PR・Issue歓迎
- UI:Sources/WhatCable/ContentView.swift
- ロジック:PortSummary.swift
- PDデコード:PDVDO.swift
- オープンソース・無料・トラッキングなし
- GitHub:https://github.com/darrylmorley/whatcable
補足
- USB-Cケーブルの見た目の統一性による混乱を解消
- 5W充電用とThunderbolt 4ケーブルが見分け困難な現実に対応
- WhatCableはMacに既にある情報を分かりやすく可視化
- Swift/SwiftUI製、インストールも簡単