sysfs read/write permission for an android app - Android Q&A, Help & Troubleshooting

Hi,
I have been writing a simple application where I want to toggle GPIO pin.
I am trying to export a gpio pin and then set direction and value.
But I am getting following error.
java.io.FileNotFoundException: /sys/class/gpio/export: open failed: EACCES (Permission denied)
Can any one tell me, how would I provide the required permission ?
Note that, with adb commands I am able to export the gpio pin and set the direction or values.
From app level its not working.
Thanks

I think you need root for that, and use Process with native applets

As stated you will have to have root to make that work. Candidates with Google making root harder to get. You might want to keep that in mind as well

Hi there !
What about if I can not root ?

Related

Problems with Transparent Proxy.

Hi, i have a folio 100 rooted with SuperOneClick, but when i try to connect me to a proxy with Transparent Proxy it says:
failed to start redirect.sh
permission denied
i find a solution and now i have root access with the app, but when I try to turn the proxy on, I get this error:
"Failed to start redirect.sh (FIX ME! implement
getprotobyname() bionic/libc/bionic/stubs.c:378
iptabels v1.3.7: can't initialize iptables table 'nat':iptables
who? (do you need to insmod?)
Perhaps iptables or your kernel need to be upgraded"
the message repeats.
Nobody has a solution?
gilms said:
Nobody has a solution?
Click to expand...
Click to collapse
I don't have a 'solution' but you can diagnose the problem more easily if you have the file /proc/config.gz on your device... copy it off and unzip, open and look for:
Code:
#
# IP: Netfilter Configuration
#
These are the ones that probably matter?
Code:
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REDIRECT=y
I have a lot more set to =y on my device (Atrix)
You probably also need to have the 'iptables' binary in /sbin
You'd probably do best to start from a newer kernel that some dev modded for your device, and already enabled netfilter... then all you need is iptables

android app: network access for external programs

Dear All,
I am trying to develop an app which calls a external program (written in C) using Runtime.getRuntime().exec method. This program is basically an gstreamer based rtsp server and it works good if I run from the android command prompt. However, when I run the program from the app, I am getting the following error.
Failed to bind socket (Permission denied)
I had given the network access in my AndroidManifest.xml file.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
I also tried this
String cmd = "ping localhost";
Runtime.getRuntime().exec(cmd);
for which I got
ping: icmp open socket: Operation not permitted
I also tried to run an another program from an app (which shows an image on the android screen - surfaceflinger sink). So, I included android.permission.ACCESS_SURFACE_FLINGER in the manifest file. However, it wasn't able to display on surfaceflinger sink.
So, I have a feeling that these permissions are not passed on to these external programs. Is there a way to achieve this? I don't want to convert these 'C' based programs to Java. Can anyone please help me out.
Thanks,
Krishnan

Auto Keystore Unlocker

Hey Guys,
I know there is an app in the market already Keystore Unlocker, but it doesnt seem to work with the latest su binary. Does anyone know if there is a way to disable the password requirement for stored certificates. It would be a useful feature to bake into some roms or even a new app that works with latest su.
I decomplied the apk for Keystore Unlocker but it was no help. I emailed the developer and asked if he would either update the app and make it paid (99 cents wouldnt be too much) or release the source for us to use for future projects.
Let me know if you guys have any ideas.
Same issue on HTC Incredible, Stock + Root ROM 2.3.4. Really annoying, anyone know a fix? My initial thinking is it's at kernel layer, as Hot Reboot doesn't cause issue but a "full" reboot does. Anybody have a suggestion on fix or workaround?
+1
Would love to bypass the credential storage. It literally decimates the battery trying to log into a credentialed WiFi (try/fail/try/fail) if you don't happen to notice that you haven't done the credential yet.
+1
I have mailed to the app's author, perhaps he has a solution.
Does anybody knows what exactly the app does? Is there a way by command line to activate the credential storage? (so it could be done in autostart)?
There are two possibilities to unlock the keystore. Both need to be run under UID=1000!
1) You have an AOSP based ROM, like Cyanogen:
There is a tool called "keystore_cli", which provides basic access to the keystore by commandline.
Simply run
Code:
su -c 'keystore_cli u <password>' 1000
to unlock it.
Other options are can be found in keystore.c:
Code:
static struct action {
int8_t (*run)();
int8_t code;
int8_t state;
uint32_t perm;
int lengths[MAX_PARAM];
} actions[] = {
{test, 't', 0, TEST, {0}},
{get, 'g', NO_ERROR, GET, {KEY_SIZE}},
{insert, 'i', NO_ERROR, INSERT, {KEY_SIZE, VALUE_SIZE}},
{delete, 'd', 0, DELETE, {KEY_SIZE}},
{exist, 'e', 0, EXIST, {KEY_SIZE}},
{saw, 's', 0, SAW, {KEY_SIZE}},
{reset, 'r', 0, RESET, {0}},
{password, 'p', 0, PASSWORD, {PASSWORD_SIZE, PASSWORD_SIZE}},
{lock, 'l', NO_ERROR, LOCK, {0}},
{unlock, 'u', LOCKED, UNLOCK, {PASSWORD_SIZE}},
{NULL, 0 , 0, 0, {0}},
};
I guess you can figure them out, if you want to.
2) You don't have the keystore_cli tool:
a) You might be able to use a keystore_cli binary from another rom
b) Use unix domain sockets to communicate with the keystore.
The socket is under /dev/socket/keystore.
To access this, you'd have to write a small c programm and use the socket(), write() syscalls.
Luckily. this is exactly what that "keystore unlocker" from the market does.
It comes with a small native executable located at
Code:
/data/data/ru.chunky.AutoKeystore/lib/libkeystorecmd-executable.so
which reads input to send to the socket from stdin.
The format is:
Code:
<code><length1><message1>...
Where <code> would be 'u' to unlock
<length> would be the length of the password as 16bit unsigned int
<message> would be the string representation of the password
In this example the password is "password", which is 8 characters long.
So the length would have to be \0000\0008 and the message to send to the socket
Code:
u\0000\0008password
Running
Code:
su -c "echo -e 'u\0000\0008password' | /data/data/ru.chunky.AutoKeystore/lib/libkeystorecmd-executable.so" 1000
should show a result of
Code:
1
in the commandline, if successful and the keystore should be unlocked.
it sounds brilliant!
Do you have any idea what is the problem with the app and actual su versions?
Awesome find man, shame is ICS fixed this bug. It just requires a pattern lock or pin lock. I wish we could find a workaround for this....
Sent from my HTC Rezound
stm999999999 said:
it sounds brilliant!
Do you have any idea what is the problem with the app and actual su versions?
Click to expand...
Click to collapse
Nope, no idea.
I worked around it like this (cyanogenmod):
In /data/local/userinit.sh I put
Code:
#!/system/bin/sh
nohup /data/local/keystoreunlock_delayed.sh > /dev/null 2> /dev/null &
and the file /data/local/keystoreunlock_delayed.sh contains:
Code:
#!/system/bin/sh
sleep 60
su -c 'keystore_cli u <password>' 1000
The 60 second delay makes sure the phone has already initialized the keystore.
It's a bit of a diry way to do it, but this way it works without any android app.
To test this on my device, I made a file /data/keystoreunlock_delayed.sh
#!/system/bin/sh
su -c 'keystore_cli u <password>' 1000
and execute it within root explorer. But nothing happens!?
I tried su -c 'keystore_cli u <password>' 1000 in terminal Emulator, I got permission denied. I have to do a "su" before, without any parameters, then superuser asks for permission, and then the long command worked.
stm999999999 said:
To test this on my device, I made a file /data/keystoreunlock_delayed.sh
#!/system/bin/sh
su -c 'keystore_cli u <password>' 1000
and execute it within root explorer. But nothing happens!?
Click to expand...
Click to collapse
I forgot the permission 0755. It was 0555.
Can I download keystore_cli somewhere so I can use this script?
I have /system/bin/keystore but not keystore_cli on the rooted 2.3.4 OTA. Using HTC Incredible and would like to use this workaround script.
EDIT: I now realize this is in the Rezound forum. I found this thread by Google search but couldn't find much else on keystore_cli other than zip extract logs.
hm, I do not use a Rezound, too. I have a Desire.
Are you sure, this file is not an integral part of android?
I found one version on dropbox: https://www2.dropbox.com/s/cuu6hm8dvi3jxh5/BI/system/bin/keystore_cli
but I cannot say anything about this file. If it is genuine and ok.
What about asking in an Incredible subforum?
AutoKeystore fixed
I've just resolved "newer su" issue with ru.chunky.AutoKeystore and added password-less VPN Wizard there.

Is there a way to root new OTA 45.4.13.MB855?

Is there a way to root the new 45.4.13 OTA that rolled out? I have tried all the root methods listed on: http://forum.xda-developers.com/showpost.php?p=20331601&postcount=5
Without any luck!
I want to add that I was rooted before applying the OTA.
stevetrooper said:
Is there a way to root the new 45.4.13 OTA that rolled out? I have tried all the root methods listed on: http://forum.xda-developers.com/showpost.php?p=20331601&postcount=5
Without any luck!
Click to expand...
Click to collapse
Wait, what? Even photon-torpedo didn't work?
any updated status with this yet?
I'm curious too...
Please keep us apprised and a system dump would be helpful from someone who has the update.
Sent from my MB855 using xda app-developers app
Shad0wguy said:
Wait, what? Even photon-torpedo didn't work?
Click to expand...
Click to collapse
Nope, tried it multiple times.
Torpedo worked for me this evening.
Sent from my MB855 using Tapatalk 2
Torpedo worked for me, AIO did not.
I still laugh when ppl are still using the AIO root when its been so unreliable in the past. The photon-torpedo method has ALWAYS worked and I don't know why people aren't using the torpedo method to root by default.
OP you must be doing something wrong because the torpedo method still works any many folks have confirmed that.
Glad to hear its still working, here is the error I get:
$ ./photon-torpedo.sh
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error:
Cannot establish any listening sockets - Make sure an X server isn't already running
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional information.
ddxSigGiveUp: Closing log
./photon-torpedo.sh: line 5: /lib/libphoton-torpedo.so: Permission denied
ERROR: ld.so: object 'libphoton-torpedo.so' cannot be loaded as audit interface: invalid ELF header; ignored.
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error:
Cannot establish any listening sockets - Make sure an X server isn't already running
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional information.
ddxSigGiveUp: Closing log
Then looking at the log:
$ cat /var/log/Xorg.0.log
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error:
Cannot establish any listening sockets - Make sure an X server isn't already running
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(WW) xf86CloseConsole: KDSETMODE failed: Bad file descriptor
(WW) xf86CloseConsole: VT_GETMODE failed: Bad file descriptor
(WW) xf86OpenConsole: VT_GETSTATE failed: Bad file descriptor
ddxSigGiveUp: Closing log
following for further developments..
Reboot has changed the message slightly...
$ /data/tmp/photon-torpedo.sh
/data/tmp/photon-torpedo.sh
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock
and start again.
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
ddxSigGiveUp: Closing log
/data/tmp/photon-torpedo.sh: line 5: /lib/libphoton-torpedo.so: Permission denied
ERROR: ld.so: object 'libphoton-torpedo.so' cannot be loaded as audit interface:
invalid ELF header; ignored.
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock
and start again.
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
ddxSigGiveUp: Closing log
stevetrooper said:
Reboot has changed the message slightly...
$ /data/tmp/photon-torpedo.sh
/data/tmp/photon-torpedo.sh
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock
and start again.
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
ddxSigGiveUp: Closing log
/data/tmp/photon-torpedo.sh: line 5: /lib/libphoton-torpedo.so: Permission denied
ERROR: ld.so: object 'libphoton-torpedo.so' cannot be loaded as audit interface:
invalid ELF header; ignored.
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock
and start again.
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
ddxSigGiveUp: Closing log
Click to expand...
Click to collapse
You obviously have not done the root torpedo method before or else you would know that the big ole message you just copied is anticipated and you don't need to worry. You have root successfully.
Just follow this video
http://www.youtube.com/watch?v=zb3Yh_NmSBk
ericdabbs said:
You obviously have not done the root torpedo method before or else you would know that the big ole message you just copied is anticipated and you don't need to worry. You have root successfully.
Just follow this video
http://www.youtube.com/watch?v=zb3Yh_NmSBk
Click to expand...
Click to collapse
Unfortunately the script does not give me the # prompt. So when you run the install-su script it fails. I found others that had the same problem and they never figured out how to get it to work.
ERROR: ld.so: object 'libphoton-torpedo.so' cannot be loaded as audit interface: invalid ELF header; ignored.
Fatal server error: Server is already active for display 0 If this server is no longer running, remove /tmp/.X0-lock and start again.
Please consult the The X.Org Foundation support at http://wiki.x.org for help.
ddxSigGiveUp: Closing log
$ ./install-su.sh Usage: mount [-r] [-w] [-o options] [-t type] device directory cp: /system/bin/su: Read-only file system Unable to chmod /system/bin/su: Read-only file system Usage: mount [-r] [-w] [-o options] [-t type] device directory rm failed for /lib/libphoton-torpedo.so, Permission denied.
just a shot in the dark from a total NOOB are you using an terminal emulator on the phone or via computer??? I needed to do it via computer torpedo worked for me.... just trying to help...... sometimes the most obvious things are overlooked
tiny2nz said:
just a shot in the dark from a total NOOB are you using an terminal emulator on the phone or via computer??? I needed to do it via computer torpedo worked for me.... just trying to help...... sometimes the most obvious things are overlooked
Click to expand...
Click to collapse
Thanks, I have tried with Android Terminal Emulator and adb shell from my PC, neither worked.
tiny2nz said:
just a shot in the dark from a total NOOB are you using an terminal emulator on the phone or via computer??? I needed to do it via computer torpedo worked for me.... just trying to help...... sometimes the most obvious things are overlooked
Click to expand...
Click to collapse
That's a very valid point. After the first soak, many people they needed to use computer, not emulator, for it to work. Wonder is s/he has the right computer drivers?
---------- Post added at 12:59 PM ---------- Previous post was at 12:57 PM ----------
stevetrooper said:
Thanks, I have tried with Android Terminal Emulator and adb shell from my PC, neither worked.
Click to expand...
Click to collapse
Do you have the right drivers? i.e. - do other adb commands work?
willysp said:
That's a very valid point. After the first soak, many people they needed to use computer, not emulator, for it to work. Wonder is s/he has the right computer drivers?
---------- Post added at 12:59 PM ---------- Previous post was at 12:57 PM ----------
Do you have the right drivers? i.e. - do other adb commands work?
Click to expand...
Click to collapse
I downloaded the drivers from the photon torpedo thread. adb works just fine, can push the file to the photon, without any errors. I even tried adb on 2 different computers, Windows XP and the other Windows 7.
The photon-torpedo.sh is very simple:
#!/bin/bash
umask 0
LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/lib/libphoton-torpedo.so" /usr/bin/X
cat /data/tmp/libphoton-torpedo.so > /lib/libphoton-torpedo.so
LD_AUDIT="libphoton-torpedo.so" /usr/bin/X
When I look in /lib the file libphoton-torpedo.so exists and has a timestamp from when I ran, so its catting the file correctly.
I don't get the # prompt, so running install-su.sh does not work.
Found this in the photon-torpedo thread in Development:
Sparky_McBurning said:
I figured out the problem and a fix.
Problem:
If /lib/libphoton-torpedo.so was not removed from /lib before the OTA update, the permissions are updated to no longer be over-writable, so the /data/tmp/photon-torpedo.sh step that 'cat's libphoton-torpedo cannot re-write the file with new permissions.
Fix:
Update photon-torpedo.sh to use a different filename for libphoton-torpedo.so. I used libphoton-torpedo2.so. No problems. Just make sure you remove any versions of libphoton-torpedo.so from /lib/ after rooting, and you won't have this problem in the future.
Click to expand...
Click to collapse

[Q] MySQL on Webtop

Hi
I tried to install AMP(apache, mysql, php5) since I was interested on using Atrix as a web server.
Apache was success, but MySQL was failure. No MySQL, No PHP5(of course)
I tried force installing Busybox using dpkg expecting to be updated(version stayed same), removing and making directories that makes the problem, No luck.
I think it's related to my outdated Busybox(readlink?) There's too many problems here.
Lot of people just say "it's impossible" but why not? At least I want to know why it fails.
I have terminal log below. Sorry for bad, bad english.
Thanks
[email protected]:/$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
obconf leafpad lxde-common linux-libc-dev lxrandr pcmanfm lxde-core lxappearance gpicview libc6-dev lxpanel
lxde-settings-daemon xarchiver
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 120 not upgraded.
3 not fully installed or removed.
After this operation, 0B of additional disk space will be used.
Setting up mysql-server-5.0 (5.1.30really5.0.75-0ubuntu10.5) ...
* Stopping MySQL database server mysqld [ OK ]
mkdir: cannot create directory `/var/log/mysql': No such file or directory
dpkg: error processing mysql-server-5.0 (--configure):
subprocess post-installation script returned error exit status 1
Setting up libapache2-mod-php5 (5.2.6.dfsg.1-3ubuntu4.6) ...
readlink: invalid option -- 'q'
BusyBox v1.10.2 (Ubuntu 1:1.10.2-2ubuntu7) multi-call binary
Usage: readlink [-f] FILE
Display the value of a symlink
Options:
-f Canonicalize by following all symlinks
ucf: Unable to determine The new file
dpkg: error processing libapache2-mod-php5 (--configure):
subprocess post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of php5-mysql:
php5-mysql depends on phpapi-20060613+lfs; however:
Package phpapi-20060613+lfs is not installed.
Package libapache2-mod-php5 which provides phpapi-20060613+lfs is not configured yet.
dpkg: error processing php5-mysql (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
mysql-server-5.0
libapache2-mod-php5
php5-mysql
E: Sub-process /usr/bin/dpkg returned an error code (1)
Click to expand...
Click to collapse
vctshim said:
Hi
I tried to install AMP(apache, mysql, php5) since I was interested on using Atrix as a web server.
Apache was success, but MySQL was failure. No MySQL, No PHP5(of course)
I tried force installing Busybox using dpkg expecting to be updated(version stayed same), removing and making directories that makes the problem, No luck.
I think it's related to my outdated Busybox(readlink?) There's too many problems here.
Lot of people just say "it's impossible" but why not? At least I want to know why it fails.
I have terminal log below. Sorry for bad, bad english.
Thanks
Click to expand...
Click to collapse
Hi, could you solve the issue? I wan to install it too, for my work.
Thanks!
douglasroos said:
Hi, could you solve the issue? I wan to install it too, for my work.
Thanks!
Click to expand...
Click to collapse
I found out it is impossible. Many repos are dead and crucially Ubuntu in this is outdated (without LTS)
I sold the Atrix and bought ARM-based Open PCs (e.g. Raspberry Pi, Cubieboard, Beaglebone Black, Udoo, etc..)
If you want low-power web server, this might be the way to go
(Ubuntu Phone might work but I'm not sure YET)

Categories

Resources