Hi everybody,

I have a compass attached to my prototype phone via the
USB interface. I also have a shared library (provided by the
vendor of the compass), that communicates with the compass.

There is a function  "connect()"  in the shared library that,
as I traced via the "strace" command, makes the system call :
open(“/dev/ttyUSB0”, O_RDWR | O_NONBLOCK | O_NOCTTY | O_LARGEFILE).

The Linux permissions for the device file "/dev/ttyUSB0" are 777,
so that anybody can read and write to this file.


I have a native test application "qsnsrtest", that calls
this function "connect()".
-  When run as  uid=0(root) gid=0(root),  the function SUCCEEDES.
   I used adb shell to launched qsnsrtest.
-  When run as  uid=10018(app_18) gid=10018(app_18),
   the function SUCCEEDES.
   I used adb shell, then su app_18, and then launched qsnsrtest.


I have another java test application HelloCompass. It gets an
instance of SensorManager, and the constructor calls some
native methods (via JNI), and that native methods finally call
the same function "connect()".
-  It runs as  uid=10018(app_18) gid=10018(app_18),
   and the function FAILS.


There is a process  "system_server"  that starts at bootup.
It is part of Android, and is written in Java. It also does
the same functon calls as HelloCompass.
-   It runs as uid=1000(system) gid=1000(system),
    and the function SUCCEEDES.


What I conclude from this is :
====================
The device file is having permissions to be read/written by anyone,
and "qsnsrtest" when run as uid=10018, is able to access the device.
So, the Linux kernel is, for sure, not creating the problem.

The Android application, HelloCompass  isn’t being permitted to
access that file.  May be it needs some permissions to be granted
to it, to access device files.
Also, FYI, it is able to read/write to the file  "/data/compass.log".


Anyone having any idea about how to solve the problem ?
If  "Android permissions" is the issue, then what permissions
need to be given to the application ?

I have tried granting the following permissions, but not successful.

android.permission.HARDWARE_TEST
android.permission.READ_LOGS
android.permission.READ_OWNER_DATA
android.permission.WRITE_OWNER_DATA
android.permission.WRITE_SECURE_SETTINGS
android.permission.WRITE_SECURE_SETTINGS
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
android.permission.ACCESS_MOCK_LOCATION
android.permission.CONTROL_LOCATION_UPDATES


Thanks,
Puneet Jindal

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"android-framework" group.
To post to this group, send email to android-framework@googlegroups.com
To unsubscribe from this group, send email to 
android-framework+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/android-framework?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to