usbtcpipは、adbデーモン(adbd)がUSBとTCP/IPのどちらで通信を待ち受けるかを切り替えるサブコマンドである。TCP/IP接続のconnect/disconnect自体は【adb】connect/disconnectでTCP/IP経由の端末に接続する を参照。

tcpipでTCP/IPモードに切り替える

USB接続中の端末に対してtcpipにポート番号を指定して実行すると、adbdがそのポートでTCP/IPの接続を待ち受けるようになる。

$ adb tcpip 5555
restarting in TCP mode port: 5555

tcpipを実行してもUSB接続が切断されるわけではない。connectでTCP/IP接続すると、USB接続とTCP/IP接続が別々のエントリとして同時に一覧へ表示される。

$ adb connect 192.168.1.100:5555
connected to 192.168.1.100:5555

$ adb devices -l
List of devices attached
1234567890ABCDEF       device usb:8-3.3 product:SH-02M model:SH_02M device:SH-02M transport_id:19
192.168.1.100:5555     device product:SH-02M model:SH_02M device:SH-02M transport_id:20

usbでUSBモードに戻す

usbを実行すると、adbdはUSB接続での待ち受けに戻る。複数端末が一覧に表示されている状態では、-sでUSB接続側のシリアル番号を指定する。

$ adb -s 1234567890ABCDEF usb
restarting in USB mode

usbを実行した直後、それまで使っていたTCP/IP接続のエントリは一覧から消えずofflineとして残る。

$ adb devices -l
List of devices attached
1234567890ABCDEF       device usb:8-3.3 product:SH-02M model:SH_02M device:SH-02M transport_id:21
192.168.1.100:5555     offline product:SH-02M model:SH_02M device:SH-02M transport_id:20

このofflineエントリに対してコマンドを実行してもエラーになる。不要になったらdisconnectで明示的に取り除く。

$ adb -s 192.168.1.100:5555 shell echo hi
adb: device offline

$ adb disconnect 192.168.1.100:5555
disconnected 192.168.1.100:5555