"Puede" hacerlo sin root, creo.
Tendrá que hacer todo esto utilizando algún código C nativo que haga interfaz con el dispositivo USB que utiliza USBFS. El gran problema proviene de la falta de documentación de los usbfs de Linux. Básicamente todo tiene que hacerse a través de ioctls. Dicho esto, abres un dispositivo como lo harías normalmente desde Java. A continuación, pase el descriptor de archivo del USBDeviceConnection
Agregue a eso necesitará analizar todos los descriptores USB usted mismo. Puede llegar a ellos, nuevamente desde el USBDeviceConnection. Saltar del descriptor al descriptor es simple, encontrar la documentación de lo que significa cada descriptor es un dolor de cabeza MASIVO, pero puede encontrar la mayoría de la documentación en www.usb.org.
He escrito la mayor parte del código que se requiere para hacer el análisis sintáctico para dispositivos de audio y llegué hasta intentar enviar una transferencia isócrona y luego empecé a recibir errores.
Después de cambiar a libusb descubrí que el problema, en mi caso, era porque el dispositivo de audio también tenía controladores HID y el controlador predeterminado atacaba a esos y robaba todo el ancho de banda de la transferencia isócrona. Si hubiera sabido esto antes, podría haber perseverado con el método no raíz no libusb. Como era me hizo llegar las transferencias isócronas de trabajo a través del USB lib pero requiere un dispositivo arraigada :(
En algún momento voy a volver a ella.
En resumen, estoy bastante seguro de su posible pero su no va a ser fácil !!
Wou ¿Desea compartir su código, por incompleto que sea? – JellicleCat