Shared publicly  - 
 
#android #projectidea #gohavefun

I see a some grumbling about the Nexus 7 (and Galaxy Nexus) not supporting USB Mass Storage devices (thumb drives, etc).  Want to make some friends by writing a fun app?  Use the USB Host APIs, implement USB Mass Storage (basicly SCSI over USB bulk -- pretty simple encapsulation), and FAT/FAT32 in a standard Android app and make it available via market.  No need for "rooting" for this to work.

Android USB Host API: http://developer.android.com/guide/topics/connectivity/usb/host.html
USB Mass Storage Protocol: http://en.wikipedia.org/wiki/USB_mass-storage_device_class (links to docs at the bottom)
FAT Filesystem: http://en.wikipedia.org/wiki/File_Allocation_Table
17
8
Alfred Pleyer's profile photoPrayag Upd's profile photoPierre Nguyen (Thus0)'s profile photoAndrew Kamau's profile photo
14 comments
 
Are there? If so, excellent!  The only ones I'm seeing say "need root", etc. 
 
Well I just looked again because you got my hopes up, and I see no sign of anything that uses the USB Host support in the SDK to provide UMS access without requiring some amount of mucking with the underlying system.
 
 Want to make some friends by writing a fun app? -- Are you asking others to write the app or looking for collaborators?
 
I'm suggesting that such an app might be popular -- clearly there are people who want the feature, and probably not all of them want to modify the stock OS to get it. 

Not interested in writing it myself.  I've implemented UMS on both client and host side on a few different platforms in the past, and have done my share of filesystem tinkering too.  For somebody who hasn't done this but is interested in understanding what makes it tick, it could be a fun learning experience.
 
Jim: Perhaps, but the devices in question (Galaxy Nexus and Nexus 7) do not have a full-size USB A port, they have micro-USB OTG ports, for which one would further need an adapter to connect an USB MSC device.

Generally (but not universally), devices that do ship with a full-size USB A port and are obviously computing devices that have host control capacity do have built-in MSC support.
 
If only the Nexus devices already supported all the parts necessary for the reading and writing of USB drives, then we wouldn't have to waste time on also rewriting the same code in userspace.

Oh wait, they do! Most USB host supporting devices can already do this out of the box. What doesn't work is the mounting part. What do you think these root apps in the Play Store do ? They just perform some "mount" commands, that's all.

That's what the grumbling is about. No app should be needed for this in the first place. It's basic functionality, and as far as I understand it all the Nexus is missing is a little text file describing USB hotplug automounts (or whatever you call them, I'm sure you understand what I mean). Samsung firmwares have this if you're looking for what the file needs ...

Want to make some friends not writing a fun app ? Fix the Nexus firmware. No need for "rooting" for the rest of the world or writing redundant apps to get this to work.
 
It works for Samsung. It works for the root apps (not seen any complaints). Please elaborate on what more is needed in that case.
 
There's many solutions to that part of the problem. Preferably a framework update to finally work properly with multiple storages, but by now developers are used to working without that (it's been years since we've all been having multiple external storages - and it worked pretty well until somebody introduced media_rw user). 

Still, if the permissions were set "nicely" this could still be handled by 3rd party apps however the end-user would like. That's still a much better solution than the current situation. At least you'd put the decision and capability in the hands of the end-user. Now you're just making it impossible even for people who want to be using it, even in unfriendly ways.

Your point about file explorers being unfriendly is (a) subjective and (b) if we weren't shipping Android features because they're not perfect, Android would never have been shipped.

I understand you want to do more and fix stuff before you advertise it as a feature, but you'd make a lot of people a lot more happy if you'd just enable it.

Either case, any solution based on kernel support in this case would be a better solution than duplicating the effort by writing a userspace app implementing the same code in a different way.
 
Look, I'm not really interested in hosting an argument about this.  I was suggesting something a fun project that somebody interested in the involved technologies might enjoy hacking on to change the state of the world today, without requiring changes to the underlying OS.  If you're not interested, no harm done.
 
I'm merely elaborating on why there is a lot of grumbling about it. As various OEMs do it, people expect Google to provide this as well.

That's not to say it can't be a fun project. Who knows I might even build it. It's not something I hadn't come up with before (I built one of those root apps for mounting USB sticks), but it just seemed like it wouldn't be needed at all anymore soon.

Well that, and the ultra cheap Android tablets that were coming out at that time did come with USB host support, but would generally reboot or freeze if you tried to use it. Which left only the Nexus line as target. I'm glad to see that situation has significantly improved as of late.
 
+Jorrit Jongma I think the devs already understand why people are grumbling about it. Which is why they are asking us (the community) to look at solutions for now. At some point Android will support this feature defacto but until then it's not a bad idea to remind people that it doesn't require root and that there is a market out there for a solution.
Vin Yu
+
1
2
3
2
 
Challenge Accepted.
Add a comment...