ADB Inception - Android General

I decided to try some inter-device adb action today. I'm sure some people have tried this, but I thought it was interesting. So I began by connecting from my laptop to my Nexus 4. I set up the Nexus 4 to do adb wireless with:
Code:
setprop service.adb.tcp.port 5555
adbd &
On my laptop I connected to the Nexus 4 with:
Code:
adb connect 192.168.0.7 (Nexus 4's host)transfer files over telnet
adb shell
su
Then I set up my G4 to do adb wireless the same way. In the adb shell into my Nexus 4, I connected to my G4 with:
Code:
adb connect 192.168.0.11 (G4's host)
adb shell
su
I tested some file transfers betwen phones with "adb push" and "adb pull" which worked really well. I'll definitely be using adb in the future to transfer files from one phone to the other. ftp works well, but this is even easier.
I decided to take my adb connection even further. My adb shell is now from laptop -> Nexus 4 -> G4 now. I then connected back to the Nexus 4 with:
Code:
adb connect 192.168.0.7
adb shell
su
When adb connects to a device it connects to the abdb daemon, and multiple connections can be made. Now that I'm back in the Nexus 4, I could reconnect to the G4, but that would be pointless since I already connected from the Nexus 4 to the G4. I wanted to try some other things. In the Nexus 4, I dropped down into a chrooted ubuntu image. I retrieved adb like you do on a computer with ubuntu:
Code:
apt-get install android-tools-adb
In the ubuntu chroot on the Nexus 4, I connected back to the G4. I'm now running laptop -> Nexus 4 -> G4 -> (Nexus 4 -> ubuntu chroot) -> G4. At this point the connection was showing some lag. In the G4, I dropped down to a chrooted ubuntu image I have on that phone. I connected back to the Nexus 4. Dropped down into a chrooted Debian image I also have on that phone. At that point, I was able to connect back to the G4, but the device showed up as "offline", so I exited the chroot. In the Android environment, I found out I was still able to connect back and forth between phones, launching new adb processes each time. I ended up with an adb shell connection like this: laptop -> Nexus 4 -> G4 -> (Nexus 4 -> ubuntu chroot) -> (G4 -> ubuntu chroot) -> (Nexus 4 -> G4 ->)x20. You can see the processes for the connections with:
Code:
pgrep -fl adb
# You get something like:
>339 adb -s 192.168.0.7:5555 shell
>2869 adb -s 192.168.0.7:5555 shell
>4049 adb -s 192.168.0.7:5555 shell
>4933 adb -s 192.168.0.7:5555 shell
>5085 adb -s 192.168.0.7:5555 shell
>5772 adb -s 192.168.0.7:5555 shell
>5879 adb -s 192.168.0.7:5555 shell
>6027 adb -s 192.168.0.7:5555 shell
>6135 adb -s 192.168.0.7:5555 shell
>6236 adb -s 192.168.0.7:5555 shell
>6334 adb -s 192.168.0.7:5555 shell
>6447 adb -s 192.168.0.7:5555 shell
>6548 adb -s 192.168.0.7:5555 shell
>31220 /sbin/adbd --root_seclabel=u:r:su:s0
>31669 adb -P 5037 fork-server server
>31684 adb -P 5038 fork-server server
In the Android environment (not the chroot), I connected from phone to phone about 20 times until I got bored and the connection got too laggy. Unfortunately, the adbd daemon you can download in ubuntu gives a segmentation fault when you run it in Linux, so no connection between ubuntu's. Telnet and ssh work though. I was able to ssh back into my laptop with my ridiculous, laggy adb cascade and then adb back into the phones once again. Depending on which device you're currently in, you can kill the whole chain with:
Code:
pkill adbd
This was all kind of ridiculous, but the adb between phones is useful, so I guess I got something out of it.

This is pretty cool. Thanks for that.
Off topic, but if you do transfer files between phones a lot or if you enjoy streaming media from one phone to another, one solution I use is the Sambadroid app. Just hotspot one phone, connect to the wifi on the other, and use a file explorer app such as ES to map a network share.

Related

How do I install netflix patch

Hi,
I am rooted now (I guess/hope) I would like to fix it, I have the patch and have tried to copy the libnvomx.so to the lib dir n my TF using file manager HD, but it wont let me paste it, I dont have or seem to have access.
also, is the libnvomx.so the only one I need to copy from the patch?
does this mean I am not rooted?
Is there somewhere/link where I can learn how to, and what terms like adb, push, clear the cache sideload, quickboot, recovery, etc... mean? (search hasnt helped me much with the ones I have looked for, too many results or too few)
thanks for any help,
John
use the terminal emulator, and make sure you "su" before you try to copy.
Another option is Root Explorer: https://market.android.com/details?id=com.speedsoftware.rootexplorer
Root Explorer will allow you to establish write access to system files. It's what I used to get Netflix working on my Transformer
AustinMartin said:
use the terminal emulator, and make sure you "su" before you try to copy.
Click to expand...
Click to collapse
Hi,
Thanks, what is su?
I tried using adb (at dos prompt) I tried
adb push libnvomx.so /system/lib/
it said read only access
will the su give me access? how do I su?
I am not even sure what the terminal emu is?
thanks,
John
I don't know if your rooting added the terminal app to the tf101.
You need to run the su(superuser) command to gain access to the system files.
I think you can run it from adb as well, if you used adb to root, then you probably already used this command.
you can also just download the netflix patch zip to the microsd card, and install the zip from cwm recovery mode.
Xerravon said:
Hi,
Thanks, what is su?
I tried using adb (at dos prompt) I tried
adb push libnvomx.so /system/lib/
it said read only access
will the su give me access? how do I su?
I am not even sure what the terminal emu is?
thanks,
John
Click to expand...
Click to collapse
Close, no cigar:
try this:
adb remount
adb pull /system/lib/libnvomx.so libnvomx.so.orig
adb push libnvomx.so /system/lib/
adb chmod 644 /system/lib/libnvomx.so
adb remount
adb reboot
----
I'm not recalling if you can do an adb chmod, but probably you can so I'll add that in up there just in case it works: Also I added a bit where you get a copy of the original in case this all somehow goes bad.
hachamacha said:
Close, no cigar:
try this:
adb remount
adb pull /system/lib/libnvomx.so libnvomx.so.orig
adb push libnvomx.so /system/lib/
adb chmod 644 /system/lib/libnvomx.so
adb remount
adb reboot
----
I'm not recalling if you can do an adb chmod, but probably you can so I'll add that in up there just in case it works: Also I added a bit where you get a copy of the original in case this all somehow goes bad.
Click to expand...
Click to collapse
hI,
Thanks,
I havnt tried yet but will asap. Where did you learn this stuff? I was reading this thread (I finally looked in general)
http://forum.xda-developers.com/showthread.php?t=872128
It has some info but real detailed, like in your script, the "chmod 644" the 644 part. I guess it takes time, I ave only had this TF for a week or so and it is my first android OS.
thanks again, (I will let you know when I try,
John
edit
Just wondering before I try this, the pull command (Is that backing up the libnvomx file to the pc?
after reading the thread linked above, wont I have to be in adb shell to geet permission to copy the file to the lib dir?
AustinMartin said:
I don't know if your rooting added the terminal app to the tf101.
You need to run the su(superuser) command to gain access to the system files.
I think you can run it from adb as well, if you used adb to root, then you probably already used this command.
Click to expand...
Click to collapse
I used nvflash and adb to install busybox and superuser and su.
I dont know anything about su or superuser, I havent found any threads with info on them yet.
thanks,
It might sound confusing but this is just all basic linux.
when you're running the adb shell just enter su. This gives you permission to edit the /system files
Then pull(copy) the file from your tf101, to your local machine. this is a backup.
Then change the permissions on the file on your tf101.
Then push the new file from your local machine to your tf101.
AustinMartin said:
It might sound confusing but this is just all basic linux.
when you're running the adb shell just enter su. This gives you permission to edit the /system files
Then pull(copy) the file from your tf101, to your local machine. this is a backup.
Then change the permissions on the file on your tf101.
Then push the new file from your local machine to your tf101.
Click to expand...
Click to collapse
Hi,
I broke down and used your script, I tried doing it on my own but kept getting errors. I did seem to get one error in this line of yours
adb chmod 644 /system/lib/libnvomx.so
when I ran it (and I copy and pasted it to dos window)) it gave an error, well not an error but it listed commands and switches like if there is a typo. I dont know if it took the command or not here is a paste
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Kerr Avon>cd adb
The system cannot find the path specified.
C:\Users\Kerr Avon>
C:\Users\Kerr Avon>cd\adb
C:\ADB>adb remount
remount succeeded
C:\ADB>adb pull /system/lib/libnvomx.so libnvomx.so.orig
3429 KB/s (189660 bytes in 0.054s)
C:\ADB>adb push libnvomx.so /system/lib/
1174 KB/s (164764 bytes in 0.137s)
C:\ADB>adb chmod 644 /system/lib/libnvomx.so
Android Debug Bridge version 1.0.26
-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s <serial number> - directs command to the USB device or emulator with
the given serial number. Overrides ANDROID_SERIAL
environment variable.
-p <product name or path> - simple product name like 'sooner', or
a relative/absolute path to a product
out directory like 'out/target/product/sooner'.
If -p is not specified, the ANDROID_PRODUCT_OUT
environment variable is used, which must
be an absolute path.
devices - list all connected devices
connect <host>:<port> - connect to a device via TCP/IP
disconnect <host>:<port> - disconnect from a TCP/IP device
device commands:
adb push <local> <remote> - copy file/dir to device
adb pull <remote> [<local>] - copy file/dir from device
adb sync [ <directory> ] - copy host->device only if changed
(see 'adb help all')
adb shell - run remote shell interactively
adb shell <command> - run remote shell command
adb emu <command> - run emulator console command
adb logcat [ <filter-spec> ] - View device log
adb forward <local> <remote> - forward socket connections
forward specs are one of:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
adb jdwp - list PIDs of processes hosting a JDWP transport
adb install [-l] [-r] [-s] <file> - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
('-s' means install on SD card instead of internal storag
e)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
adb bugreport - return all information from the device
that should be included in a bug report.
adb help - show this help message
adb version - show version num
DATAOPTS:
(no option) - don't touch the data partition
-w - wipe the data partition
-d - flash the data partition
scripting:
adb wait-for-device - block until device is online
adb start-server - ensure that there is a server running
adb kill-server - kill the server if it is running
adb get-state - prints: offline | bootloader | device
adb get-serialno - prints: <serial-number>
adb status-window - continuously print device status for a specified device
adb remount - remounts the /system partition on the device read-write
adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or
recovery program
adb reboot-bootloader - reboots the device into the bootloader
adb root - restarts the adbd daemon with root permissions
adb usb - restarts the adbd daemon listening on USB
adb tcpip <port> - restarts the adbd daemon listening on TCP on the specifie
d port
networking:
adb ppp <tty> [parameters] - Run PPP over USB.
Note: you should not automatically start a PPP connection.
<tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns
adb sync notes: adb sync [ <directory> ]
<localdir> can be interpreted in several ways:
- If <directory> is not specified, both /system and /data partitions will be updated.
- If it is "system" or "data", only the corresponding partition
is updated.
C:\ADB>remount
'remount' is not recognized as an internal or external command,
operable program or batch file.
C:\ADB>adb remount
remount succeeded
C:\ADB>adb reboot
C:\ADB>adb reboot
Click to expand...
Click to collapse
Looks like it probably did work, anyway netflix is running.
some of the lines I tried that didnt work (and did) are here, not sure what was wrong.
adb push libnvomx.so /system/lib/
adb pull /system/lib/libnvomx.so libnvomx.so.orig
(I think push and pull wont work under shell)
*******************************************
cp /system/lib/libnvomx.so removable/microsd/isoa/libnvomx.so.orig
cp /system/lib/libnvomx.so removable/microsd/isoa/libnvomx.so.orig
cp isoa/libnvomx.so /system/lib/libnvomx.so
(dont know why these didnt work, I did su first)
***************************************************************
this worked!!!
cp /system/lib/libnvomx.so sdcard/isoa/libnvomx.so.orig
***************************************************************
cp sdcard/isoa/libnvomx.so system/lib/libnvomx.so
file exists error
********************************************************
Click to expand...
Click to collapse
Oh, so the android runs linux, or a version of it (like ubuntu, freebsd, etc...)? that should help me a lot. I installed ubuntu on one of my PC's a few years back but they didnt have drivers for sli and raid for my system at the time, I played with it a day or 2 and went back to MS. It has always been on the list to do. I am going to have to try it again.
I just looked, it looks like there are lots of new "distro's" (versions) now a day from back when I tried it.
anyway, thank you very much for the help,
John
once you did this:
C:\ADB>adb push libnvomx.so /system/lib/
1174 KB/s (164764 bytes in 0.137s)
you already copied it, so you must have already had permissions. Therefore this next command:
C:\ADB>adb chmod 644 /system/lib/libnvomx.so
Android Debug Bridge version 1.0.26
was redundant anyways. I suspect you needed to run
adb shell chmod 664 /system/lib/libnvomx.so
for adb to run the command on the transformer(shell) rather than in the dos directory.
AustinMartin said:
once you did this:
C:\ADB>adb push libnvomx.so /system/lib/
1174 KB/s (164764 bytes in 0.137s)
you already copied it, so you must have already had permissions. Therefore this next command:
C:\ADB>adb chmod 644 /system/lib/libnvomx.so
Android Debug Bridge version 1.0.26
was redundant anyways. I suspect you needed to run
adb shell chmod 664 /system/lib/libnvomx.so
for adb to run the command on the transformer(shell) rather than in the dos directory.
Click to expand...
Click to collapse
I see, so shell is like I am running it in/from the TF. I guess that is why push and pull doesn't work in shell, it could be confusing??
I downloaded/installed root explorer but I would rather learn it the harder way.
thanks again for your help!!
John
Cool. I wasn't sure about the "adb chmod" working since I'd only done that from a linux shell before this, but it was worth a shot. If you went into adb shell, then typed "mount -o rw,remount /system"; chmod 644 /system/lib/{whatever that file name was}; and mount -o remount,ro the thatt that would work", or I suspect he is right about how you can use "adb shell chmod 644 /../../.....".
Anyway, glad it worked out.
hachamacha said:
Cool. I wasn't sure about the "adb chmod" working since I'd only done that from a linux shell before this, but it was worth a shot. If you went into adb shell, then typed "mount -o rw,remount /system"; chmod 644 /system/lib/{whatever that file name was}; and mount -o remount,ro the thatt that would work", or I suspect he is right about how you can use "adb shell chmod 644 /../../.....".
Anyway, glad it worked out.
Click to expand...
Click to collapse
Hi,
If I shell, do su, then exit the shell (which I couldn't figure out how to do) do the su rights still apply, if I then use adb commands?
mount and remount, I see those are for mounting partitions, do the partitions each have different rights? and what does chmod do?
thanks again,
John
Xerravon said:
Hi,
If I shell, do su, then exit the shell (which I couldn't figure out how to do) do the su rights still apply, if I then use adb commands?
mount and remount, I see those are for mounting partitions, do the partitions each have different rights? and what does chmod do?
thanks again,
John
Click to expand...
Click to collapse
If you did an $su ; # inside the shell (adb shell), then when you typed in exit, that'd exit the shell, and cause any subshell's kicked off with a command (like "su" to pick one from a hat), to 'go away', So no, you wouldn't still be su.
But: There is a 'switch' or setting somewhere that brings up the adb shell in # su mode, but it escapes me right now.
Mount -o remount,rw||ro /{mountshare} (one command) will just remount some partition like system as you direct it to. It will 'outlast' the adb session. If you leave adb after doing a mount -o remount,rw /system, then you've left /system mounted rw. It doesn't hurt anything, but in theory you type in $sync; sync and $ mount -o remount,ro, and then the clean police will be happier.
chmod changes permissions. You could look up the man page on google, and it'll show you that you have 3 groups, owner, group and world. You could do the command in a couple forms, like #chmod {permission mask like 777} {filename} or chmod w+x {filename} where first one gave all permissions (rwe/rwe/rwe) to some file, 2nd gave the world execute permission.
hachamacha said:
If you did an $su ; # inside the shell (adb shell), then when you typed in exit, that'd exit the shell, and cause any subshell's kicked off with a command (like "su" to pick one from a hat), to 'go away', So no, you wouldn't still be su.
But: There is a 'switch' or setting somewhere that brings up the adb shell in # su mode, but it escapes me right now.
Mount -o remount,rw||ro /{mountshare} (one command) will just remount some partition like system as you direct it to. It will 'outlast' the adb session. If you leave adb after doing a mount -o remount,rw /system, then you've left /system mounted rw. It doesn't hurt anything, but in theory you type in $sync; sync and $ mount -o remount,ro, and then the clean police will be happier.
chmod changes permissions. You could look up the man page on google, and it'll show you that you have 3 groups, owner, group and world. You could do the command in a couple forms, like #chmod {permission mask like 777} {filename} or chmod w+x {filename} where first one gave all permissions (rwe/rwe/rwe) to some file, 2nd gave the world execute permission.
Click to expand...
Click to collapse
hI,
Thanks again, this is over my head right now, I am going to do like you say and search Google for a good beginners site. I am thinking about putting linux on my pc also, been wanting to for a while, I think that will help. I do know a lot more than I did when I started the thread
thank you,
John

The adb shell cd command doesn't change directories

When I use adb shell <cmd>, the commands work as expected, except for cd. If I run the following two commands, it shows I'm still in the root directory.
Code:
adb shell cd /any/valid/path
adb shell pwd
The cd command just doesn't ever change directories.
For completeness, I can not do abd shell ls ~/, as I have no HOME, but I assume this is normal?? I'm not concerned about HOME, it's fixable, but I really need to have the cd command working as I'm writing an IPython extension that wraps adb.
Cheers
Carl
I realise that this is a reply to an older question, but the answer might still be of use to some.
You first have to enter the shell before executing the 'cd' command.
STEP 1.
Code:
adb shell
STEP 2.
Code:
cd /any/valid/path
You don't use cd just type the directory you want to go to

adb shell OK yet 'adb logcat -s ...' freezes at "--------- beginning of main"

Code:
adb shell ls
Is OK and lists files. adb devices sees the phone no problem too.
Yet:
Code:
adb logcat -s (any input)
freezes at 'beginning of main'.
For example:
Code:
>adb logcat -s dirtysanta
- waiting for device -
--------- beginning of system
--------- beginning of main
(no more output. tried for hours)
What can I try next? This doesn't really seem like a v20 problem but the xdadevs forum needs me to post here afaik.
edit: I think it was Mcafee, bundled by default and preventing run-as com. After a OTA update I managed to get a temp root prompt.
Is there someone I can pay to help me with this?

Warning: any phone can listen to you

All apps that have been granted not only permanent, but also only potential access to the microphone can listen to everything, are a so-called wiretap, as long as they have not been closed and the phone is in operation.
German speaking users may watch
this video
with which it's shown.

			
				
Although your post is absolutely off-topic ...
The main rooting idea I posted in the mentioned thread is to get TEMPORARILY super-user rights on a Android device shell. Like a standard Linux shell, it allows you to interact with the device by executing commands from the shell. The Android shell can be accessed via ADB (Android Debug Bridge) command tool from every desktop computer.
Requirements:
A PC with ADB installed to interact with your Android device.
How-to:
A: To run Android shell commands with super-user right from within the shell on desktop computer you have to run within desktop computer shell
Code:
adb wait-for-device
adb push "<LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE>" /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the device temporary directory always available for the user.
B: Then, in desktop computer shell you type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
[code]
what makes the [b]su[/b] binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell you type
[code]
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of shell commands what require super-user rights ( e.g. mount ) you now would run in desktop computer shell
[/code]
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
[/code]
@xXx yYy , that helps tremendously.
and apologies for OT. post deleted.

HOW to root qubo big one

i got a new qubo big one and wanted to root it
Your phone's Android OS is rooted as soon as the cmdlet named su - what by default is left off - is present in Android's file system and executable.
Hence add a suitable version of su to Android OS: can be done via ADB.
Please can I get a step by step
xXx yYy said:
Your phone's Android OS is rooted as soon as the cmdlet named su - what by default is left off - is present in Android's file system and executable.
Hence add a suitable version of su to Android OS: can be done via ADB.
Click to expand...
Click to collapse
Instruction?
Please I need a step by step guide
A: To run Android shell commands with super-user right from within the shell on desktop computer ( AKA Command Prompt ) you have to run within desktop computer shell
Code:
adb devices
adb push <LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE> /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the Android device temporary directory always available for the user.
B: Then, in desktop computer shell type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
what makes the su binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell type
Code:
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of Android shell commands what require super-user rights you now would run
Code:
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
.
xXx yYy said:
A: To run Android shell commands with super-user right from within the shell on desktop computer ( AKA Command Prompt ) you have to run within desktop computer shell
Code:
adb devices
adb push <LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE> /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the Android device temporary directory always available for the user
xXx yYy said:
A: To run Android shell commands with super-user right from within the shell on desktop computer ( AKA Command Prompt ) you have to run within desktop computer shell
Code:
adb devices
adb push <LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE> /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the Android device temporary directory always available for the user.
B: Then, in desktop computer shell type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
what makes the su binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell type
Code:
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of Android shell commands what require super-user rights you now would run
Code:
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
Click to expand...
Click to collapse
B: Then, in desktop computer shell type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
what makes the su binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell type
Code:
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of Android shell commands what require super-user rights you now would run
Code:
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
Click to expand...
Click to collapse
Thanks

Categories

Resources