web-dev-qa-db-ja.com

Android USB OTG:プログラムでポートの電源をオフにします

USBOTGアダプターを介してAndroid 4.0.3を実行しているToshibaExcite 10タブレットに接続されたUSB電源のLEDランプがあり、これが電力を供給しているとします。

アプリからUSBOTGホストポートの電源ピンをプログラムでオンまたはオフにしたい。 (理想的にはルートなしですが、私は私が得ることができるものを取ります)。何か案は?

24
AlcubierreDrive

/ sysディレクトリへの書き込み権限が必要です。ルート化はプロセスを非常に簡単にします。デバイスをroot化し、正しいechoコマンドを発行して、次のようなカーネルステータスビットを切り替えます。

String[] command = { "/system/bin/sh", "-c", "echo xxx > /sys/bus/usb/devices/usb3/power/level", };
Runtime.getRuntime().exec(command);

もう1つの方法は、libusbを使用して、電源を切る関数のライブラリを掘り下げることです。 Android.hardware.usb.UsbManagerを使用して、libusbの適切な権限をリクエストできます。

3
Ehsan

私がここから知っているように https://askubuntu.com/questions/342061/power-on-off-usb-ports "これまでの回答はすべて、USBサスペンドメカニズムについて説明しています。電源オフ」の場合、USBポートからVBUS + 5Vを物理的に切断することはありません。」.

ハードウェアソリューションは悪い考えかもしれませんが、LEDランプへの電力を遮断するようにプログラムされたPCB上のプログラムされたAtmega8U4チップを備えたMOSFETトランジスタを使用することをお勧めします。