2013 Nexus 7, USB host and DSLR Controller
Posted on 2013-09-02, 9 comments, 48 +1's, imported from Google+/Chainfire

NOTICE: This content was originally posted to Google+, then imported here. Some formatting may be lost, links may be dead, and images may be missing.

Finally received the 2013 Nexus 7 in the mail today (thanks +Jeremy Meiss). As reported by various DSLR Controller users, USB host did not work. Strangely - it does work for a small number of other users.

I've done a lot of messing about trying to get it to work, and I did. It works now on my device, but I can no longer get it to not work. As such, I need guinea pigs to help me try and solve this problem. Please report to this thread on XDA if you can help: http://forum.xda-developers.com/showthread.php?t=2379965&page=2

Tech details: it seems USB host only worked on kernel level but not on the Android API level. As such, stuff like StickMount (which is kernel based) would actually work, but DSLR Controller (which is Android API based) would not. I tried to trace why the API didn't work, but in the process, I somehow permanently(?) fixed it. I assume it has something to do with the AOSP kernel I produced, but as I can't reproduce the problem, I can't test the solution.

DSLR Controller and the new Nexus 7 - Page 2 - xda-developers

Jeremy Meiss commented on 2013-09-02 at 22:34:

/me needs a compatible DSLR camera to check this

Julio Cesar Reyes Gomez commented on 2013-09-03 at 00:44:

Do you have a list of compatible DSLR cameras?

mike kershaw commented on 2013-09-03 at 03:50:

I have code using USB host working on the N7 2013 using the android host API.  I'll test with camera hw tomorrow.

mike kershaw commented on 2013-09-03 at 03:56:

I meant to add - we have seen weirdness with it.  I know for starters it over-advertises its power budget leading to it losing devices once you activate them - enumeration is fine (usually).

Secondly, we've seen it where it decides to just not work in usb host - until you reboot it a few times.  No indication why.

In all cases, using stock firmware, sometimes rooted, sometimes not.  No difference in behavior noticeable on rooted.

One POSSIBLE path to "make usb host work" is to enable developer mode - however we've also seen it work w/out doing that, and work on a factory reset image w/out factory mode enabled.  I SUSPECT this is a red herring, but you can try it.

In all cases, I've also seen the behavior where once it starts working, it appears to keep working, with no indication of why it ever didn't work.

Chainfire commented on 2013-09-03 at 09:48:

+Jeremy Meiss actually you can help me in other ways, see IRC. 

+Julio Cesar Reyes Gomez http://dslrcontroller.com/devices.php

+mike kershaw If you have any Android API USB host stuff running you're having a different problem. Nothing Android API based worked for me before, and now everything does. While before, it was also clear that all kernel-level USB host things did work. Aside from that, it being generally unreliable - that appears to be a Nexus thing.

Joe Philipps commented on 2013-09-03 at 23:14:

Way to collapse the wave function Erwin Schrödinger style, +Chainfire :-)

Christian W. commented on 2013-09-04 at 09:36:

Just read your thread on xda about 'guinea pigs' :-) I have a rooted n7 2013 and n7 2012. The 2012 model works fine, the 2013 doesn't see the camera (eos 50d) (just as you wrote; kernel sees it, android not). Same applies to a DVB-T TV stick btw. Same issue I guess. So if you would like me to try something on the n7 2013, please let me know.

Jorrit Jongma commented on 2013-09-05 at 08:32:

+Christian Wittrock Please do report to the thread, I want everything centralized there.

Juan Israel commented on 2013-09-24 at 11:14:


This post is over a month old, commenting has been disabled.