Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android USB OTG: programmatically turn off power to the port

Tags:

Suppose I have a USB-powered LED lamp connected through a USB OTG adapter to a Toshiba Excite 10 tablet running Android 4.0.3, which provides the power.

I want to programmatically turn the USB OTG host port's power pins on and off from an app. (Ideally without root, but I'll take what I can get). Any ideas?

like image 200
AlcubierreDrive Avatar asked Jan 04 '13 04:01

AlcubierreDrive


2 Answers

You must have write permission on /sys directory. Rooting makes the process very easy. Just root your device and issue the right echo command to toggle kernel status bits like :

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

Another way is to use libusb, dig the library for the function that cuts the power off. You can use android.hardware.usb.UsbManager to request proper permission for libusb.

like image 70
Ehsan Avatar answered Sep 21 '22 13:09

Ehsan


As I know from here https://askubuntu.com/questions/342061/power-on-off-usb-ports "All of the previous answers talk about a USB suspend mechanism, i.e. a "logical power-off", they will never physically cut the VBUS +5V from the USB port.".

Maybe a hardware solution is bad idea, but I can advise you to use MOSFET transistor with programmed Atmega8U4 chip on PCB, that is programmed to cutoff power to led lamp.

like image 33
Евгений Новиков Avatar answered Sep 19 '22 13:09

Евгений Новиков