一定数以上のUSBデバイスを接続すると Mac が不安定になり、内蔵キーボード・トラックパッドなどが一切効かなくなる (USB バス全体が死ぬ感じ) という状況があり、よくわからないので、怪しいハブを止めたり、新しいハブを買ってみたりしていた。

そんななか、あるハブに替えたところバスが死ぬ前にエラーメッセージがでるパターンがようやく観測された。以下の通り (Console.app で USB を grep しながら見ていた)

the USB hardware ran out of device slots

このエラーメッセージで検索をかけたところ、まさにこの問題のことであろうFacebook のノートがひっかかった。

どうやら Haswell ではデフォルトだとたくさん繋ぐことができないらしい。このノートでもひとまずの解決方法が示されてはいるものの、USB 3.0 バスとの併用で疑問がある感じ。

リンクされているErgotron のドキュメントも読んだが、よくわからない。Haswell では25台以上はサポートしないと書いてあったり、もし30台以上のデバイスを繋ぐのであれば USB 3.0 デバイスは繋ぐなという感じのことが書いてある。

台数の根拠がよくわからないので、自分のところで追試を行なったが、「the USB hardware ran out of device slots」になるのは32台を超えたとき(32台までなら大丈夫)という感じだった。

そんなにいっぱい繋がないやろwww とお思いだろうか?

接続中のUSBデバイスの数

接続中のUSBデバイスの数は以下で出した。

system_profiler SPUSBDataType | grep 'Location ID' | wc -l

USB の規格上のデバイス数上限は127(USB のアドレスが7bitで、0は予約されている)、このアドレスは Mac 上では「場所 ID」や「Location ID」と呼ばれている。デバイスの抜き差しが発生していなければ普通は連番の番号が振られている。

上記コマンドではアドレスが割り振られたデバイスがいくつあるか? を算出している。なので現実世界における見掛けのデバイス数とは異なる。

手元の MacBook Pro Retina Late 2013 では何も接続していなくても以下のデバイスが有効になっている。

  • メモリカードリーダー(内蔵)
  • キーボード・トラックパッド(内蔵)
  • Bluetooth ハブ(内蔵)
  • Bluetooth USB コントローラ(内蔵)

つまり、外部にはこれらを抜いた28デバイスが最大となる。

USB 3.0 7ポートハブの罠

USB 3.0 ハブは USB 2.0 のハブの機能も持っている。これは、実際に物理レイヤーとして USB 2.0 レイヤーも持っている (USB 2.0 と USB 3.0 は物理プロトコルが全然違うからかな)。そんな関係からか、OS から見ると 3.0 のハブと 2.0 のハブ2種類が別々に見える。

あるチップの仕様書を見たりするとなんとなくわかりやすい、
http://ww1.microchip.com/downloads/en/DeviceDoc/00001681B.pdf

そして、7ポートのハブというのは、内部的には4ポートのハブチップを2個使って2段接続されている。

つまり、7ポートUSB3.0ハブは、見掛けは1台だが、OSには4つのデバイスに見え、SuperSpeed と Hi-Speed それぞれにアドレスが振られる。

どうしてもたくさん繋ぎたい場合

Ergotron のドキュメントに示されているように、とりあえず USB 2.0 の機器をたくさん繋ぎたい場合、

nvram -p | grep usb-options で何も設定されていないことを確認して

sudo nvram usb-options="%01%00%00%00"

を実行して再起動すると認識するようになる。

元に戻すには

sudo nvram -d usb-options

この方法は確かにデバイスの上限を突破できるみたいだが、手元で試したところバスが不安定になり、内蔵キーボードなどを巻き込んでバスが死ぬことがあった。

Mac の場合、USB 3.0 Hi-Speed バス (2.0 互換レイヤー)、USB 3.0 SuperSpeed バス (3.0レイヤー) のみがデフォルトでアクティブなバスとなっているが、このコマンドによって USB Hi-Speed バス (2.0 ネイティブレイヤー) のバスが有効になるっぽい。

消費電力が増えるデメリットがあるみたいだけど、他のデメリットがよくわからない。3.0 との併用がうまくいかない?

いずれにせよ、自分の環境では不安定になるのは解決されなかったので深く追わなかった。

自分の環境

これからは USB 3.0 だ!! と意気込んでハブ類は USB 3.0 にできるだけ統一しようとしており 7 ポートの USB 3.0 ハブを2台をメインにデバイスを接続していた。また、ディスプレイに内蔵されている USB 3.0 ハブも、どうせだからと接続していた。上記の罠の関係もあって、デバイス上限に達しやすい環境だった。

ハブがいっぱいあっても意味がないので、USB 機器は計画性を持って管理したほうが良い。上限いかねーよwwとか舐めてると余裕でひっかかる。

バスが死ぬのは、デバイス上限を超えるというエッジケース(仕様上は127台を超えるまで発生しない)をしっかりテストしておらず対応できないデバイスがあって暴走(バスをロック?)しているような気がする。バスが死ぬとCPUは生きているのにハードリセットしか終了方法がなくなるので絶対に避けたい。

まとめ

USB 2.0 ですむ範囲のデバイスは USB 2.0 用のハブでまとめたほうが良い。今回のようなケースもそうだし、コスト的にもかなり安くすむ。USB 3.0 が必要なケースはそれほど多くない。カードリーダーや、HDD などぐらいだ。

また、DELL のディスプレイにはカジュアルに USB 3.0 ハブがついているが「せっかくだから…」と繋いでおいたりすると、上限を超えやすくなる。

というか根本的に127デバイスまでちゃんといけるようにしてほしい。

iBUFFALO USB2.0Hub バスパワー 4ポート ブラック 【PlayStation4,PS4,PS3 動作確認済】BSH4U06BK - バッファロー

バッファロー

5.0 / 5.0

USB C Hub Type-C Hub One/in Macbook Pro 13 15/For 40gbps Thunderbolt 3 K HDMI PD Fast Charging Micro/SD Card USB 3.0 Port X 2 Multi Converter Adapter - FIESAND

FIESAND

5.0 / 5.0

  1. トップ
  2. tech
  3. Mac でいっぱいUSB機器を繋げない問題

たとえば視力2.0の人が300ppiのディスプレーで十分に綺麗に(隣り合うピクセルを区別できない)見れる距離で使っていたとしたら、同じ鑑賞距離の場合視力1.0の人は半分の150ppiでも十分ということになってしまう。

というわけで、デスクトップのディスプレイを想定して鑑賞距離を50cm固定としたとき、各視力でどれぐらいのppiがあれば十分かを出してみた。

0.3 52 ppi
0.5 87 ppi
0.7 122 ppi
1 175 ppi
1.5 262 ppi
2 349 ppi

2K 24インチモニタの場合 96ppi なので、50cm の鑑賞距離の場合、視力 0.5 の人は 4K になっても気付きにくいということになる。

  1. トップ
  2. tech
  3. 4Kと2Kが同じにみえる、という人もいるらしい。

久しぶりにやるとカラーマネジメントまわりのことをすっかり忘れている。

キャリブレーションしてもOSのUIの色はあわない

写真を表示させるとあっているように見えるのに、OS の UI (例えば Finder の背景の白) とかがディスプレイごとに全く違う色に見えたりする。

正確な情報が見つからなかったけど、OS の UI にはカラープロファイルがついてない?っぽい。スクリーンショットを撮った場合、撮影した画像にはモニタのプロファイルが埋め込まれる (ので、この画像を移動させると、そのモニタにおける見えかたが再現される、はず…)。

同じように、ウェブページの背景色など、CSS で指定されている色もカラーマネジメントの対象外なので、たとえディスプレイプロファイルを適切に設定していても、色は一致しない。実は color-profile というプロパティがCSSに用意されているが、どのブラウザにも実装されていない。(追記: Safari では sRGB として扱われるのでカラーマネジメントの中にいるみたい)

色域が異るディスプレイ間での色一致

片方が Adobe RGB 対応で、もう片方が sRGB だけの対応という場合

Adobe RGB の色域の画像を表示させる
  • Adobe RGB モニタでは正確に出せる
  • sRGB では色が圧縮される

sRGB の色域の画像を表示させる

  • Adobe RGB モニタでは正確に出せる (sRGB 領域を含んでいるから)
  • sRGB でも表示できる

カラーマネジメントが有効なケースまとめ

印刷まで行う場合

これが基本になる。ディスプレイのプロファイルと、プリンタ(用紙も含む)のプロファイルを作り、カラーマッチングする。

この出力の場合 Adobe RGB モニタで、画像データも Adobe RGB の範囲で作業するのが望ましい。

ウェブ向けの場合

基本的に、世の中のモニタはキャリブレーションされていないので、正確なカラーマッチは期待できない。とはいえ、中にはあわせている人もいるので、基本的に sRGB で統一して出すのが一番良い。

画像データの恒久性

あとは自分の写真が将来的に一貫して同じ色で表示されるようにデータをちゃんとしておくという用途。

ちゃんとキャリブレーションされていないモニタで作業した時点で、データは何がなんだかわからない色を基準にしていることになってしまう。将来的にモニタを替えたときに色が変わってしまう。

Lightroom でのカラーマネジメント覚書

http://helpx.adobe.com/jp/lightroom/help/color-management.html#about_color_management_in_lightroom

Lightroom は内部的には ProPhotoRGB というカラースペースを使っている。これは Adobe RGB よりももっと広い色域を持つカラースペースになっている。Adobe RGB ではカバーしきれない範囲の色をサポートするプリンタのためこうなっているっぽい。

つまり、Adobe RGB のモニタを使っていたとしても、見えない色を作っている場合がある。これは、ちょっと難しい問題だ。もしプリンタの色域を活かすならばディスプレイとのカラーマッチを捨てる必要がある。ディスプレイとのカラーマッチを優先するなら、ディスプレイの表示色域に出力色域が制限される。

実際のワークフローでは以下のような手順が必要

全体的な調整

ソフト校正を使用せずに大まかに好みの画質に調整する。とりあえず色域のことを考えず見えている画像を最適化する。

印刷する場合

現像モジュールでソフト校正をプリントのプロファイルにあわせる。校正刷りをつくる。

色域外警告をちゃんと見ながら作業する。モニター色域外警告色の部分は頭で補完するか、実際に印刷して検証するしかない。

校正の色域外警告はソフト校正で「色が変わっている部分」なので、注目してチェックを行う。

ウェブ用に出力する場合

印刷する場合と一緒だけど、現像モジュールでソフト校正を sRGB にあわせる。

sRGB はかなり色域が狭く感じることがあるので、校正刷りを作るなり、ウェブ主体なら sRGB の状態で校正かけるなりしたほうがよさそう。

色域

綺麗な青緑系の色は sRGB モニタでは殆ど表示できない。ので、意図的にホワイトバランスを崩したりしている場合かなり色が変わることがある。

  1. トップ
  2. tech
  3. ディスプレイキャリブレーションの覚書

WebP に変換するデモコマンドである cwebp はデフォルトでメタデータを全て削除する。ICC プロファイルすら消しさるのでかなりひどい。

  -metadata <string> ..... comma separated list of metadata to
                           copy from the input to the output if present.
                           Valid values: all, none (default), exif, icc, xmp

必要なメタデータ削っといて「ファイルサイズ減りました!!!」とか言わないように気をつけてください。

  1. トップ
  2. tech
  3. cwebp はメタデータを削除する

Dell 4Kモニター 23.8インチ P2415Q(3年間無輝点交換保証/sRGB 99%/広視野角/IPS非光沢/フリッカーフリー/DP,mDP,HDMI/高さ調整/回転) - Dell

Dell

3.0 / 5.0

最近でた安い4Kディスプレイはサイズ違いで2つある。価格もすこし違うがだいたい一緒で、サイズだけが違う。

スペック

4K は 16:9 なので、横に長いタイプしかない。

P2415Q 23.8インチ

  • 185ppi
  • 527.04 mm x 296.46 mm

P2715Q 27インチ

  • 163ppi
  • 596.74 mm x 335.66 mm

検討

24インチでもA4 (210 x 297)見開き (=A3 420x297) 原寸表示は可能。ただし、A3ノビ (483x329) は原寸表示不可 (ノビ分はトンボ用なので、実質的には問題ないと思われる)

一般向け写真プリンタではA3ノビが限界なので24インチで十分な画面サイズといえる。

ppi 的には高いほうが正義なので、24インチのほうがいい。デスクトップ用だと 200ppi ぐらい欲しい気持がある。

一方、dot by dot で使った場合、ppi の高さは UI 文字の読みにくさに直結する。この点でいくと、単に広い画面が欲しいなら、27インチのほうがいいかもしれない。視力の良さにかかってる。

ref. 500 Can't connect to lowreal.net:443 (certificate verify failed), 500 Can't connect to lowreal.net:443 (certificate verify failed)

結論

今のところ視力はそこまで悪くないし、A4見開きができるなら、24インチで十分と判断。

買ったあと

画面を見た感じでも24インチで良かった。それと 27インチと 24インチは、横に並べてもそれほど大きさに違いはない。ppi 優先で良さそう。

Mac での罠

自分の Mac は MacBook Pro 13inch Late 2013 なのだけれど、この機種は 4K で出せることは出せるのだが、30Hz までしか出せない。しかも出すためにちょっとコツがいる。以下の通り

  • ディスプレイのOSDで MST の設定を Secondary に設定する
  • システム環境設定の「ディスプレイ」から該当ディスプレイの解像度を
    • 1920×1080 に設定 (自動でRetina設定になる device pixel ratio が2)
    • 3840×2160 に設定 (「変更」のラジオボタンを選択した状態で、もう一度 Option を推しながら「変更」のラジオボタンをクリックすると選択可能になる。device pixel ratio が1)

これで 30Hz で2通りのフル解像度使うことができる。ちなみに 30Hz はマウスカーソルが結構カクついて見えたりする。動画とか見ないなら問題ないけど、動画見るなら不満がありそう。

3840×2160 にするとかなり広大だけど、他のモニタとのバランスが難しくなる。とはいえ、文字読めないレベルではないので、UI を小さくして情報量をあげたい場合、こちらのほうが良いと感じる。というか、Retina 設定のフルHDだと狭い。PDF 読んだりするときは、ウィンドウサイズを広げて拡大すれば Retina と同等になるので問題ない。アプリケーション側の拡大機能を活用したほうがいい気がする。

キャリブレーション

元からキャリブレーションされた状態で出荷されるっぽくて、キャリブレーションの結果表が同梱されてる。

とはいえ一応手元でキャリブレーションかけなおしてプロファイルを作った。色域は確かにほぼ sRGB 全域が出てるっぽかった。普通に綺麗なので問題ないかんじ。

トリプルディスプレイ

上記の通り、4K では 30Hz までしか出せないので、さらにディスプレイを繋いで表示できるか不安だったが、DELL U2713H (2560 x 1440 60Hz) 繋いで問題なく使えている。こちらは 4K と同時に使っていても普通に 60Hz でいけるので、転送速度の問題ではないと思うんだけど、4K のときだけなぜか制限がかかるっぽい。謎。

ppi まとめ

  • MacBook Retina 13.3in = 227ppi
  • MacBook Retina 15.4in = 220ppi
  • P2415Q 23.8インチ 185ppi
  • P2715Q 27インチ 163ppi
  • U2713H 27インチ 109ppi

エルゴトロン LX デスク モニターアーム アルミニウム 34インチ(3.2~11.3kg)まで VESA規格対応 45-241-026 - エルゴトロン

エルゴトロン

5.0 / 5.0

【国内正規代理店品】X-rite エックスライト キャリブレーションツール ColorMunki Photo カラーモンキー・フォト KHG0100-PH - x-rite

x-rite

5.0 / 5.0