Вы "можете" сделать это без рута, я считаю.
Вам нужно будет сделать все это с помощью некоторого собственного кода C, взаимодействующего с устройством USB с помощью USBFS.Большая проблема связана с отсутствием документации по Linux Linux usbfs.В основном все должно быть сделано через ioctls.Тем не менее, вы открываете устройство, как обычно с Java.Затем вы передаете файловый дескриптор из USBDeviceConnection
Добавьте к этому вам потребуется самостоятельно проанализировать все дескрипторы USB.Вы можете получить к ним, снова от USBDeviceConnection .Переход от дескриптора к дескриптору - это просто найти документацию о том, что означает каждый дескриптор, это БОЛЬШАЯ головная боль, но вы можете найти большую часть документации на www.usb.org.
Я написал большую часть кода, которыйМне нужно было выполнить синтаксический анализ аудиоустройств, и я попытался передать изохронную передачу, а затем начал получать ошибки.
После перехода на libusb я обнаружил, что проблема в моем случае была в том, чтоаудиоустройство также имело контроллеры HID, и драйвер по умолчанию следил за ними и крал всю пропускную способность от изохронной передачи.Если бы я знал это раньше, я мог бы продолжить с не-root-не-libusb метод.Как и раньше, я получал изохронные передачи, работающие через lib usb, но для этого требовалось рутированное устройство: (
В какой-то момент я вернусь к нему.
В целом, я довольноконечно, это возможно, но это не будет легко !!