Android端末とリーダー(外部機器)をUSB接続して充電する

2019-09-23

ソフトウェアの話から逸れるのだが、アプリケーション(iOSやAndroidなどのスマホアプリ)からUSBで機器に接続する場合、USBハブなんかでポート増やしたい時がある。

今回Androidタブレットを充電しながらリーダー(felicaなど)にUSB接続するアプリを開発する必要があった。

通常のスマホやタブレットにはUSB端子またはライトニング端子が1つしかないはずだ。そのため、端末からハブを使って端子を増やす方法をとるだろう。

充電しながら外部機器とusb接続って普通に考えてできそうなことであり、ネットでもこのような情報が出てくるのに、えらくハマったので以下に書き記す。そこにはアプリ開発以前の問題が存在したのである。

USBハブにはホスト・クライアントがある

まず、タブレットと外部リーダーを通常のUSBハブで接続してみたが充電状態にはならなかった。

そもそもUSBハブとは接続元(ホスト)のUSBポートを分岐させるもののようで、分岐先(クライアント)同士でデータのやり取りもできないようだ。

上記の例では電力はそれぞれ供給されているが、タブレットと外部機器をUSB接続できない。

クライアントポート同士で接続できない、そしてハブにはホストポートが1つ、クライアントポートが複数という事実。

スマホ・タブレットを充電しながら外部機器にUSB接続できない?

そしてもう一つの事実として、通常のUSBハブではクライアント機器に対しては電力を供給するが、ホストには電力供給されない。

つまり通常のUSBハブではホスト(タブレット)に電力供給を行えない。(充電できない)

このような単純な構成がなぜできないのか!?さっぱりわからん。もしスマホやタブレット側にUSB端子以外の充電方法があればUSBポートから電力供給されなくても問題ないのだが。

USBハブにはPD(Power Delivery)対応のものがある

2015年にUSB 3.1の追加仕様として定義されたもので、従来のUSBバスパワーでは4.5W、USB BC(Battery Charging)仕様でも7.5Wまでだったが、最大で20V/5Aの100Wの電力を供給することができる。

http://e-words.jp/w/USB_PD.html

正直よくわからないが、PD(Power Delivery)対応のUSBハブとは、接続元にも電力を供給するタイプのハブだということだ。

そしてこのPDにはtype-c端子が必要のようだ。私はお恥ずかしながらUSB-PDという規格が世の中にはあることを知らなかった。

USB-PDハブに対して以下の構成にする。

これで当初の予定を達成できる!?

PD対応のスマホ・タブレット端末

ところがところが。。USB-PD対応のスマホ・タブレット端末というのがあるらしい。これでなければ折角USB-PD対応ハブを購入しても、USBホストポートが充電されないという。

iOS端末でUSB-PD対応端末以下のものだ。(詳細はAppleの公式ページを参照)

  • iPhone8以降
  • iPad Pro

Android端末でUSB-PD対応端末以下のものが一例だ。

※ 上記端末がPD対応端末かどうかは保証しません。よく確かめてください。

これらの端末でなければ充電しながらUSBハブホスト接続で充電できない。現に私が試した少し古めのタブレットをUSBハブホストに接続し、ハブにACアダプターをかましても充電されなかった。

まとめ

スマホ・タブレットと外部機器をUSBで接続し、同時にそれらを充電するには、以下の2つの条件を揃える必要がある。

  • PD対応のスマホ、タブレット
  • USB-PD対応ハブ(ACアダプター接続可)

スマホ・タブレットと外部機器をBluetooth接続する場合はそれぞれ勝手に充電することができるんだが、どうしてもUSB接続が良い場合は以上を参考にしていただければ。