推測はもう終わり:USB-Cケーブルの真の性能を見極める方法
USB-Cケーブルはどれも同じに見えますが、その性能は大きく異なります。WhatCableは、e-markerデータを解析してケーブルの対応仕様を正確に表示するmacOS用ユーティリティです。
引き出しの中がUSB-Cケーブルで溢れかえっているなら、そのフラストレーションはよくご存知でしょう。どれも同じ見た目なのに、あるものは240Wの電力供給に対応した強力なケーブル、あるものは40GbpsのThunderbolt対応ケーブル、そしてまたあるものはヘッドフォンに付属していた安価な480Mbpsの「充電専用」ケーブルかもしれません。
長年、その違いを知る唯一の方法は、高価なハードウェアでテストするか、試行錯誤するしかありませんでした。WhatCable は、MacのIOKitから隠れた「e-marker」データを直接取得し、クリーンで読みやすいメニューバーアプリとして表示することで、その状況を一変させます。
開発者にとっての重要性
私たち開発者は、高帯域幅の周辺機器や外付けSSD、電力を大量に消費するワークステーションを扱うことがよくあります。転送速度が低下したり、ノートPCがフルスピードで充電されなかったりする場合、真っ先に疑われるのはケーブルですが、それを検証するのは非常に困難でした。
WhatCableは、USB Power Delivery (PD) Discover Identity レスポンスを読み取ることでこの問題を解決します。推測ではなく、ケーブルのコネクタ内部にあるチップに問い合わせを行い、以下の情報を報告します。
- データ転送速度: 480 Mbps (USB 2.0) から最大 80 Gbps まで。
- 電力定格: 60W、100W、または 240W の対応能力。
- プロトコルサポート: Thunderbolt 3/4/5、USB4、または DisplayPort。
メニューバーを超えて:CLIツール
メニューバーアプリは一目で確認するのに最適ですが、このプロジェクトには強力なCLIツールも含まれています。これは、スクリプト作成やターミナルでの迅速な診断に非常に役立ちます。Homebrew (brew install --cask whatcable) でインストールすれば、whatcable コマンドが自動的に利用可能になります。
ターミナルで whatcable を実行すると、ポートの状態が即座に表示されます:
$ whatcable
USB-C Port 1
✓ 96Wで正常に充電中
ケーブル: 5A, 100W, USB4 40 Gbps
充電器: 5V / 9V / 15V / 20V PDOs
USB-C Port 2
! ケーブルが充電速度を制限しています
ケーブル: 3A, 60W, USB 2.0
デバイス: 外付けSSD, USB 10 Gbps
--json オプションを使って jq にパイプし、自動監視やログ記録を行ったり、--watch を使ってデバイスの抜き差しに応じたリアルタイムの更新を確認したりすることも可能です。
仕組みについて
WhatCableは、プライベートなハックに頼ることなく、macOSのネイティブAPIを活用する優れたツールです。具体的には、以下の4つのIOKitサービスファミリーと連携しています:
- AppleHPMInterface / AppleTCController: ポートごとの状態、接続、向きを監視します。
- IOPortFeaturePowerSource: 充電器から完全なPower Delivery Object (PDO) リストを抽出します。
- IOPortTransportComponent: ケーブルのe-markerからPD Discover Identity VDOをデコードします。
- XHCI Controller Subtree: 接続されたUSBデバイスを物理ポートにマッピングします。
標準インターフェースに依存しているため、軽量かつ安全であり、侵入的なカーネル拡張機能やヘルパーデーモンを必要としません。
プロ機能とハードウェアの健全性
コアツールは無料のオープンソースですが、プロジェクトには詳細な診断機能を追加する「Pro」版も用意されています。これには以下が含まれます:
- ライブ電力計測: 電力入力のリアルタイムグラフ。
- ネゴシエーション診断: Mac、ケーブル、デバイスがそれぞれ何をサポートしており、実際に何がネゴシエーションされたのかを並べて比較表示します。
- 抵抗値推定: 電圧降下を引き起こしている可能性のある、品質の低いケーブルや損傷したケーブルを特定する賢い方法です。
はじめ方
Appleシリコンを搭載し、macOS 14以降を実行している場合は、GitHubリポジトリから最新のリリースを入手できます。
プロからのアドバイス: ラベルが間違っている、あるいは偽物ではないかと疑われるケーブルがある場合は、whatcable --report コマンドを使用してください。ケーブルのフィンガープリントを含むGitHub Issueが自動生成され、コミュニティがより良いケーブル性能データベースを構築する手助けになります。データを共有することで、ツールをより正確なものにすることができます。