Reputation: 21892
In the various tutorials for building an Android accessory that uses a USB connection, the first step is to "Select a hardware platform that can support USB host mode." Most of these tutorials claim that that means obtaining a device that is running > Android 3.1 (or one that is rooted, or a tablet, etc.).
In my testing, it seems that, for a phone to support USB host mode, it not only has to be running > Android 3.1, but must also supply power over the USB cable. Can anyone confirm or deny this?
Most tablets seem to supply power over USB, but many phones do NOT. I can't find any place that will directly state that the phone must supply power over USB in order to be able to run an accessory as they all seem to loosely state that anything running >3.1 will work (as long as, at least, the device you're connecting to the phone supplies power). However, in all USB libraries that I've tested, I can make a connection to my USB device just fine from my tablet (which DOES supply power over USB), but I can't get any of them to work with my phone (which does NOT supply power over USB). Both are running > Android 3.1.
Note that I'm not trying to power my accessory over USB. My accessory has its own 5v power source and can even supply power over USB. I just want to build an app that will allow my phone to be able to connect to it, change it's settings, receive data, etc., but I can't get my phone to recognize if/when the device is connected. I don't know if that's because of my phone's unpowered USB, or if it's because of another problem with my phone and/or software. Unfortunately, I don't have another >3.1 phone to test with.
As a side note, the device I'm connecting to is an FTDI/Arduino board that I'm working on which, again, connects to the (powered) tablet just fine, but the (unpowered) phone claims that no USB devices are connected (even though the FTDI board supplies its own power).
Upvotes: 4
Views: 7495
Reputation: 41
Well, considering your target area, you might not want risk frying your device before starting to understand the internal pin structure of USB connectors.
I suggest that you use a low-cost non-brand unit. I just discovered this while researching how to direct-solder a +5V DC power source on my broken tablet's PCB, so old that its damaged micro USB port can't be replaced. Normally, an in-market, low-cost, phone-sized Android device (various non-brand products, most of China manufacture) has a very low-power battery attached; no OTG option to play with. It's just getting connected with a PC/USB host to get power for charge and communication over USB/ADB. Almost all of the units I've bought above 7" display size, support even USB 2.x drive as external storage, meaning that OTG is enabled by default.
Try with some other devices from your friends/family/collegues -- just to connect an OTG cable and maybe an USB drive with a built-in LED for easier identification without the PC/Controller device -- if you have enough "test subjects) and they trust you to connect a storage device.
Upvotes: 0
Reputation: 21
Your Android Device needs to have OTG Hardware built in, you can not add it to your phone, most high end smartphones have OTG built in, Samsung Galaxy series does, this allows connection with external USB slave devices, you do need a USB Cable that is OTG which connects pin 5 to GND, this enables the OTG and then supplies power to the device, Like USB Flash memory, if you want to connect an Arduino, you will need an external power source.
As a side note, the device I'm connecting to is an FTDI/Arduino board that I'm working on >which, again, connects to the (powered) tablet just fine, but the (unpowered) phone claims >that no USB devices are connected (even though the FTDI board supplies its own power).
This leads me to believe that your tablet is OTG, and you phone is not.
Upvotes: 1