👻

スイッチ付きUSBハブとKVMスイッチの環境で、デバイスがOFFにならない

に公開

背景

少し前、左手デバイスを買った。
買ったのは、Stream Deck。液晶ボタンのプログラマブルキーボードで、アプリごとに設定を切り替えることができる。

はじめは、利用している3台のPCのうち、Windowsのデスクトップでのみ使っていた。

しかし、このStream Deck、使ってみるとすごく便利だ。そこで、M4 Mac miniやノートPCといった他のPCでも使いたいと思い、KVMスイッチ(パソコン切換器;以下、KVM)を使って、接続先のPCを切り替えて使うことにした。

一方で、WindowsのデスクトップPCを使っているとき、常にStream Deckを使うわけではない。使わないときに液晶表示されても邪魔なだけなので、スイッチ付きUSBハブを使うことにした。各ポートごとにON/OFFを切り替えることができるUSBハブだ。Stream Deckを使うときにはStream DeckのポートをONにする。逆に、使わないときにはOFFにして液晶を消す。そういう使い方をしようとした。

ところで、私が利用したKVMは4つポートがあり、選択中のポートがのLEDが点灯する、よくある仕様だった。外部電源はない一方で、選択中のポートのPCが電源OFFだったり、ポートがそもそもPCが繋がっていなくても、他のポートに電源がついたPCがあればLEDが点灯した。そのため、ポート間で電源は共有されているようだった。
そして、M4 Mac miniは電源つけっぱなしでの利用が想定されていると言われている[1]。私もそれに倣い、電源つけっぱなし運用だった。そのため、KVMには常時電源が供給される状態だった。

問題

デバイスがOFFにならない

さて、KVMでPC3台でStream Deckを切り替えて使えるようになった。そして、必要ないときには電源を消せるようになった。早速使おう。
まずKVMでノートPCを選択する。Stream Deckが動作した。問題ない!
次にMac miniを選択する。Stream Deckが動作した。問題ない!
そして、Windowsデスクトップを選択する。USBハブはOFFだ。Stream Deckが動作した。……問題だ!

原因はKVM?

さて、問題が起きたのであれば、原因を突き止めなくてはならない。
まず、ハブに他のデバイスをつけてON/OFFしてみる。ちゃんと電源が切り替わった。
次に、Stream DeckをKVMを介さずに直接繋いでみる。ちゃんと電源が切り替わる。
なるほど、どうやらKVMが怪しい。きっとKVMの動作不良に違いない!

私は、KVMこそが問題の原因と考えた。
早速、サポートセンターに連絡せねばと思った。
……しかし、根本的な疑問が生じます。
電源をOFFにしたはずなのに、なぜKVMを介してStream Deckに接続できてしまう。
ONなのに接続できないのであれば、それはKVMの動作不良でしょう。
OFFなのに接続できる。一体何が起きている?

切断したが、供給される

KVMの仕様を見直してみる。
KVMは、接続している各PCから電源を供給しており、その電源は共有されているようだった。
この仕様、すごく怪しくないか?

そこで、以下の仮説を立てた。

  • KVMは信号の切り替えは行っているが、電源は共通化している。そのため、一つでもPCから電源供給があれば、接続しているUSBデバイスに電源が供給される。
  • USBハブのスイッチは電源を遮断しているだけで、実は信号は遮断していないのではないか。
  • KVMとUSBハブを組み合わせると、USBハブから電源を供給されなくても、USBデバイスは他のPCから電源を供給さる。一方で、ハブから信号が遮断されていないため、デバイスに電源と信号が通る。結果としてデバイスが動作する。

今回の場合だと、ハブがOFFでもMac miniが電源を供給する。ハブは信号を遮断しないため、Stream Deckに電源と信号が通り、動作してしまう。

検証

検証方法

私は専門的な機器を持っていないが、簡単な検証ぐらいならできる。
KVMからMac Miniを外す。その後、USBハブをOFFにする。仮説が正しければ、Stream Deckに電源が供給されなくなるはずだ。

検証結果とまとめ

早速試してみた。
Stream Deckの画面は表示されない。動作しなかった!
これで、原因が判明した。KVMとスイッチ付きUSBハブ。この2つの機器の組み合わせが悪かったのだ!

なお解決策だが、Stream DeckをオフにしたいときだけMac MiniをKVMから外す……なんてことはしない。KVMには4つポートがある。接続しているPCは3つだ。
であれば、KVMに接続していないポートを選択してあげれば、信号が通らないのでStream Deckは動作しない。
問題を解決するにあたって、原因の特定は不要だったのだ![2]

脚注
  1. 厳密には、つけっぱなしというより使わないときはスリープ(参考)。 ↩︎

  2. とはいえ、原因がわからないと使ってて不安なので、原因がわかってよかったと思う。 ↩︎

Discussion