職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

MacBookProのUSB

数週間前にMacBookProを手に入れた。
それまで使っていたMacBookと比べ、トラックパッドの操作性や画面の見易さ、アルミ筐体の肌触り、そして当然ながら性能。どれも非常に素晴らしい。

ところが、問題がいくつかある。

  • XcodeのInstrumentsが起動しない
  • USB機器を認識しないことがある

前者は、別の日に詳しく調査したい。文字通りOSのupdateかけたら治るのかな?Xcode再インストールが必要な気もするけど。
f:id:t_motooka:20110730125919p:image

今回は後者、USB機器について調べてみたい。
※以下の内容は誤りの可能性があります。検証に使っていたUSBハブが「見た目は1つのハブ」なのに内部的にはハブの階層構造を持っていたようです。詳しい検証の結果はまた後日。(2012/04/03更新)

USB機器接続状況と問題

現在、MacBookProには以下のようにUSB機器を接続している。

Mac本体
 ├ iPadなど(USBハブからは充電できないため直結)
 └ ハブ1
    ├ 常設系のUSB機器たち(音源など)
    └ ハブ2
      └ 頻繁に抜き差しするUSB機器たち(デジカメやICレコーダなど)

MacBookを利用していたときは正常に利用できていたのだが、MacBookProに変わってからは、デジカメ等を認識しないようになってしまったのである。iPadなどを接続するために空けてある本体のポートに接続すると認識するので業務上は問題無いのだが、やはり不便である。

原因

ハブ2をMacBookPro本体に直結して、ハブ2にUSB機器を指すと正常に認識してくれることから、ハブ2の故障ではない。ハブ1のポートが潰れてるのかな?と思い、上記の接続状況に戻して「システムプロファイル」を見てみると…
f:id:t_motooka:20110730125920p:image

画面上でハイライトされているUSBハブが「ハブ2」に相当するものなのに、接続されている機器が見えていない。ハブ2が見えているので「ハブ1のポートが壊れている」仮説は間違っていそうだ。
途方に暮れてしばらくシステムプロファイルを眺めていて、ふと、何かハブの階層が深いな〜、と思って調べてみると、USBハブは6階層までしか接続できないらしい(ソースはUSBの仕様書ではなくてブログなど)。このシステムプロファイル上だと確かに6階層になっている。
恐らく古いMacBookは内部的なUSBハブの階層が少なかったから、この構成で接続できていたんだろうな。

解決策

というわけで、MacBookProのUSBポートからは、USBハブをカスケードさせて接続させることができない。直結用のUSBポートを1つ確保しつつ、沢山のUSB機器を接続するためにはどうしたら良いだろうか?

  1. ポート数の多いUSBハブを1つだけ接続して使う
  2. FireWireのハブでUSBポートを併せ持つ製品を買う
  3. Thunderbolt Display を買う(USB2.0ポートが3つ付いてるらしい)

といったところだろうか。とてもThunderbolt Displayに惹かれるところではあるが、うーむ、資金力が…。

環境

現行MacBookPro : Early 2011 13インチモデル
MacBook : Early 2008 13インチモデル