前回までのwifiデバッグの件
端末はT-01Cです。
default.propを編集したが、adb devicesで列挙されない。
ブリッジされるemulator-5554て、どんな契機で立ち上がっているの?
adb tcpip 5555
adb connect xxx.xxx.xxx.xxx:xxxx
をusb経由で仕込んでおくと繋がる。
--
解決しました。
adb tcpip 5555打っておくと、adb start-serverでemulatorが立ち上がる(もしくは内部接続される)ぽいので、
事前にbuild.propにservice.adb.tcp.port=5555を追記しておく。
そうすることで、adb tcpip 5555などの事前有線(USB)仕込みが不要になりました。
build.prop追記後、再起動して検証。
>SET ADBHOST={IPアドレス}
>adb kill-server
>adb start-server
>adb devices
List of devices attached
emulator-5554 device
てな具合です。後は、adb shellなどブリッジは問題なく動作。
接続状態は以下の通り
#netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:5037 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN
tcp 0 0 XXX.XXX.XXX:5555 XXX.XXX.XXX.XXXX:XXXX ESTABLISHED
もちろん、wifiで繋げているので、sleep時にwifi切断する設定にしているとwifiデバッグ運用に支障をきたします。
設定->ワイヤレス設定->Wi-Fi設定->menu->詳細設定->画面消灯時のWi-Fi設定にて「画面消灯時にWi-Fiを切断する」を「画面消灯時にWi-Fiを切断しない」に変更しておきます。
あと、この設定では、逆にUSBデバッグが出来なくなります(USBデバッグではなくWifiデバッグしたいという設定なので問題はありませんけど)。
あと、もう不要かと、USBデバッグをOFFにしましたが、デバイス列挙されなくなります。設定画面ではUSBデバッグと明示してありますが、どうもデバッグ全般に効くみたいです。WifiデバッグでもUSBデバッグはONにしておく必要があります。
コードを読んでいないので、かなり黒箱的な観察記になってしまいましたが、外枠攻めとしてはこんなものかな。
後は、adbが使用している5037と5555の違いを学習して終わりかな。
adb kill-serverやadb start-server、adb devicesとかは5037に接続しているに違いないし、adb shellやらブリッジ先のサーバと通信する場合は5555に接続しているのは、よく分かりました。
emulator-5554の5554て、ポート番号ですよね。あの表記て、如何にも5554で待ちうけているみたいな印象を与えられるから混乱します。adb start-serverした時も、"starting it now on port 5037"てメッセージを吐くので、5037に接続するものと思い込み、5554とか5555の話が出てくると「え?5037はどこいった?」てなります。
すべては、浅はかな己が悪いのですが。
ここに全て記載されていました(笑
ブリッジ先のデバイスエミュレータは、emulator/device instancesと表現していますね。あれ、何と表現すればと思っていました。
そんな訳で、A500にもservice.adb.tcp.portを追記してあげたところ、無事にwifiブリッジ接続出来ました。結局のところ、ro.secureなどはadbdがroot権限起動するか否かなどに関与するだけという結果になり、default.propは弄らなくても別に良い感じです。
あの苦労を返して欲しいです。揮発でなければ、どんなに合理的に作業出来たか。
これで、USBを使わなくて良い環境になりました。
お疲れ様でした。