1
votes

I'm trying to use a USB Audio Class device with my Galaxy Nexus in Host Mode. I'd like to use both the audio and GPIO/I2C functions of the chipset. My understanding is that the Android kernel will not support Audio through USB (without rooting the phone).

However, based on this post, it looks like I can write a soft driver for an arbitrary USB device if I can grab it by its VID and PID. Perhaps I can even play some audio from my application using the isochronous endpoint.. Is this possible? Too bad Isochronous endpoints are currently unsupported.

When I connect my device and use dmesg, I see device vXXXX pXXXX is not supported. What does that indicate?

What if my USB device sometimes fails to enumerate (see below)? Is that likely a hardware issue?

<6>[  262.061309] usb 2-1: new full speed USB device number 5 using musb-hdrc
<3>[  262.123870] hub 2-0:1.0: unable to enumerate USB device on port 1
<6>[  262.483215] usb 2-1: new full speed USB device number 6 using musb-hdrc
<3>[  262.631652] usb 2-1: device descriptor read/all, error -19
<3>[  262.694183] hub 2-0:1.0: unable to enumerate USB device on port 1
<6>[  263.053558] usb 2-1: new full speed USB device number 8 using musb-hdrc
<3>[  268.608215] usb 2-1: device not accepting address 8, error -110
<3>[  268.670715] hub 2-0:1.0: unable to enumerate USB device on port 1
1

1 Answers

2
votes

Per http://www.usb.org/developers/devclass_docs/audio10.pdf (section 4.6), USB audio class devices use isochronous endpoints to transport the actual audio data.

Per http://developer.android.com/reference/android/hardware/usb/UsbEndpoint.html, Android's USB host api doesn't currently support isochronous endpoints.