USB Host mode device not detected - Which files are exactly needed

beamer picture beamer · Feb 28, 2014 · Viewed 8.2k times · Source

I am trying to make my samsung galaxy gt-i8530 phone read USB devices (mouse, pendrive, keyboard). It has the same SoC as the galaxy s 3 mini and the mini has OTG support. My goal is not to create an app, but to simply turn on USB host mode so the phone can mount and read the files of these USB devices. The phone is rooted, has busybox installed and runs on 4.1.2. I am trying to find out which files are missing so the phone can detect these usb devices. Once I plug in a USB pendrive, mouse or keyboard (below 200mA) with a suitable otg cable nothing happens. I also tried a powered usb hub but still nothing is recognized.

Here are the files which already exist in root:

  1. UsbDriveA-F folders in /storage (no permissions set) and in /mout (permissions rwxrwxrwx)
  2. vold.fstab in etc with mounting commands to UsBDriveA-F
  3. android.hardware.usb.host.xml permissions in etc/permissions
  4. android.hardware.usb.accessory.xml in etc/permissions
  5. handheld_core_hardware.xml including android.hardware.usb.host
  6. usbhost.so in system/lib
  7. 51-android.rules in /etc/udev/rules.d (was initially missing so I created it and added SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"

Now looking into http://developer.android.com/reference/android/hardware/usb/package-summary.html I can see that beside the already existing

  1. android.hardware.usb.host.xml permissions in etc/permissions
  2. android.hardware.usb.accessory.xml in etc/permissions

it seems that the classes: UsbConstants, UsbDevice, UsbDeviceConnection, UsbEndpoint, UsbInterface, UsbManager, UsbRequest are non existent in etc/permissions. Also in /lib/modules there is no usb-storage.ko file

That brings me to the conclusion that because of these missing classes and the missing .ko module (unless these files can be found in another root folder) USB host mode cannot work on my phone. Am I correct? Or am I missing something else? Thank you

Answer