I can now access USB Storage Devices on the Dell Streak. (2.1 FW)
USB host mode DOES NOT (currently) Work on Android 2.2 (Froyo). This means storage devices AND keyboards/etc. If you really need to access USB devices, you should consider this before upgrading. Short Version for those familiar with messing around in Android:
1. Create the mount point /data/disk/media/disk
2. Un-comment the volume_usb sections of /system/etc/vold.conf
EDIT: NOTE: While USB storage devices seem to be supported by the 2.1 O2 F/W, it is a bit flaky. After Ejecting a USB Storage device, expect possible false Notifications about USB storage, and it seems to also unmount the SD Card. Perhaps this is why they commented out the USB lines. A reboot (withouth a USB device connected) may be needed after using a USB storage device.
EDIT 2: Added softlink, so files are visible in file managers, specifically ES File Manager; Spelling; Clarified above Edit.
EDIT 3: DOES NOT work for Android 2.2 (Froyo).
-----
More Detailed Version:
What you need:
- A Dell Streak
- A USB Storage Device (Flash Drive; Card Readers, and even Hard Drives should work too, but are untested.)
- Some sort of USB OTG (On-The-Go) adapter - either Made from a Streak Cable, - OR - a Proper Mini-USB OTG Cable and the Dell Home Dock or PDMI <> USB adapter.
Reference:
http://forum.xda-developers.com/showthread.php?t=781361 http://linuxslate.com/index.html The USB adapter MUST have Pins 4 and 5 connected. Regular USB Mini to Female USB "A" Cables WILL NOT WORK.
- A 2.1 Firmware (Will be slightly different for Froyo, but same basic instructions) Specifically, the O2 firmware.
- Root on the Dell Streak
- For this to be useful, you'll probably want a File Manager on your Dell Streak. Many apps (such as QuickOffice) cannot see the USB device.
- Android SDK on your Host PC. You need to know how to use ADB (and optionally, ddms).
- Brains (A little)
- Guts (A lot) - Standard Disclaimers apply. You will be issuing commands as Root, and may make your Dell Streak Temporarily or
Permanently Unusable. It is your decision to continue. Proceed at your own risk. What is written here is from memory, and may contain errors.
Steps:
Connect With ADB, then:
Code:su
mkdir /data/disk
mkdir /data/disk/media
mkdir /data/disk/media/disk
I then changed the owner/group of /data/disk/media/disk to system, but I am not sure this is necessary:
Code:chown system.system /data/disk/media/disk
Copy /etc/vold.conf to a PC (or someplace) for editing. There's a million ways to do this:
- dd it to the card, and copy to pc
- use ddms or adb to pull it right from /etc/
... or how ever you normally do this.
Do Not edit with something that is going to mess up the LF's. (Warning to Windows users.)
If you have busybox installed, you can cp instead of dd in these steps.
Un-comment all of the lines relating to USB. (essentially the rest of the file after the sdcard entry section). Save the file.
Before we write the edited file, we make a backup of the original. Using ADB, do:
Code:su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock6 /system
dd if=/etc/vold.conf of=/etc/vold.conf.bak
Put the file back in the correct place. Again there are many ways to do this. Assuming the edited vold.conf is on the SDcard do the following (Still using ADB, still root):
Code:dd if=/sdcard/vold.conf of=/etc/vold.conf
I am not sure why the lines in vold.conf call out the mountpoint they do, but I left them as they are. Due to permissions on /data, we cannot navigate to this mountpoint. Rather than mess with the permissions, I added the following softlink so we can get to our files from e.g. ES File Manager.
Code:ln -s /data/disk/media /system/usb
Reboot, or remount /system read only again:
Code:mount -o ro,remount -t yaffs2 /dev/block/mtdblock6 /system
That's it. USB devices should work. Unmounting works from Settings:USB Mass Storage:Unmount/Eject UMS device