ハクソク

世界を動かす技術を、日本語で。

Show HN: WhatCable、USB-Cケーブルを検査するための小さなメニューバーアプリ

概要

  • 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/whatcable
    • brew 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製、インストールも簡単

Hackerたちの意見

これってLinuxでもできるのかな?lsusbのラッパーみたいなやつ。ちょっと前にhttps://github.com/doug-gilbert/lsucpdを見つけたんだけど、PDとかも追加されてるみたい。
こちらを見てね:https://news.ycombinator.com/item?id=47973621
かなりクールだね。でも、USB@1とUSB@2が同じデバイスを表示するのがよくわからない。各々のデバイスだけが見えると思ってたんだけど。USB@1はUSBハブのモニターで、もう一つは携帯に繋がってる。どっちもキーボードとか、携帯が接続デバイスとして表示されてる。
俺には動かないな。「USB-Cポートが検出されません」って出るんだけど、モニターはUSB-Cで繋がってるはずだし、モニターにもUSBハブがあって、そこにUSBキーボードが繋がってるのに。
今、GitHubにこの件についての問題があるよ: https://github.com/darrylmorley/whatcable/issues/2
こんにちは、今は修正されてるはずだよ。
ただのコンソールユーティリティってことはないかな?
機能はいいと思うけど、メニューバーのスペースを取るのはあんまり好きじゃないな。コンソールユーティリティがいいか、スポットライトからすぐに起動できるGUIでもいいな。
これ、調べてみるね。
最近、Amazonのケーブルの大半が能力を誤報してるって分析を見た記憶があるんだけど。このツールはそれをキャッチできるのかな、それともチップが宣伝してることを盲目的に報告するだけ?
本物のケーブルについては、デルタは損傷やプラグの接続ミスで説明できるかもしれないから、偽造ケーブルを検出しようとしていなくても、以下のことを知っておくと役立つと思うよ:1. ホストがサポートしているもの 2. ケーブルがサポートしているもの 3. デバイスがサポートしているもの 4. 実際に交渉された内容
これいいけど、なんで多くのMacアプリはメニューバーに居座ることにこだわるんだろう?
1クリックでアクセスできるのは、Finderでアプリ名を打つよりも早いよね。Dockはいつもいっぱいで、いろんなアプリに使われるし。標準のUIパターンで常に出力を表示できるのもいいよね。
そうだね、特にこれみたいに数回しか使わないかもしれないものに関してはね。(ほとんどの人はたくさんのケーブルを持ってたり、定期的にチェックしたりしないと思うし)問題は、14インチの画面だとノッチの右側のスペースがもうほぼ埋まってるってことだよね。そこにそんなに物も置いてないのに…
ああ、そうだね、メニューバーがもういっぱいだ。
いいね!GPT-5.5がこれをKDE Plasma 6のPlasmoidにどれくらい早く変えられるか見てみたくて。約10分と2ドルで、タスクバーに同じ情報を表示する素敵なQMLアプリができたよ。今日これができるのは本当にすごいと思って、ちょっと言いたかったんだ。
10分と2ドル節約するために、これってどこかにGitHubに投稿されてる?
これがネイティブのMacアプリだっていうのが大好き!作ってくれてありがとう、そして共有してくれてありがとう。
見てくれてありがとう、他の人が役立つと思ってくれるのが嬉しいよ。
これを作ってくれてありがとう。私は目が見えないから、アマゾンで売ってる16ドルのUSBテスターを使ってケーブルの引き出しを整理するのは無理なんだ。これがあれば、Linuxを動かすためだけにSBCを買う必要がなくなるよ。
アダプターの電流ワット数表示をstatsに戻そうとしたんだけど、コメントなしでPRが閉じられちゃった。これに似てるやつだよね:https://github.com/exelban/stats/pull/3024