i am developing an Application that uses libusb via jni. this application is currently targeted only to rooted, usb-host Android 3+ machines.
the scenario is as follows:
<java Activity>
loads <jni_wrapper.so>
which wraps <my_main_lib.so>
that uses <libusb.so>
that needs rw access to: /dev/bus/usb/<device>
all the .so native libraries are part of an infrastructure that i install (as root) on /system/lib, which then can be used by java Activities, run by the simple users.
that means that the whole usb communication must be done from the native side.
i got everything to work fine, except for one issue - the usb permissions: the default permissions of /dev/bus/usb/ entries are (0660, uid= root, gid= usb).
obviously, a standard java process running a native code does not meet any of the above requirements, forcing me to "chmod 666" the corresponding /dev entry, to get this working.
this solution is not so good, though, because it does not survive reboot, or unplugging/replugging of the device (permissions go back to 0660).
the solution i'm looking for needs to:
directions i thought of:
any ideas? :-)
thanks!
I've same problem and I solve it doing this in the ndk, changing /proc/bus/usb for where usb is mounted in your case. Hope it helps.
r = system("su -c \"chmod -R 777 /proc/bus/usb/\"");
if(r!=0) {
LOGD("Could not grant permissions to USB\n");
eturn CANT_GRAN_PERMISSION_USB;
}