879

I am attempting to debug an application on a Motorola Droid, but I am having some difficulty connecting to the device via USB. My development server is a Windows 7 64-bit VM running in Hyper-V, and so I cannot connect directly via USB in the guest or from the host.

I installed a couple of different USB-over-TCP solutions, but the connection appears to have issues since the ADB monitor reports "devicemonitor failed to start monitoring" repeatedly. Is there a way to connect directly from the client on the development machine to the daemon on the device using the network instead of the USB connection or possibly another viable options?

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
JDM
  • 9,777
  • 4
  • 20
  • 22
  • 75
    When connected via USB: `adb tcpip 5555`. Disconnect USB, view phone IP from `Settings > About Phone > Status`. Now `adb connect 192.168.x.x` and that's it. No tools, no software. Just Works. – andreszs Feb 16 '15 at 18:06
  • 1
    What Andrew said - these are the official instructions from Google's [android developer website](http://developer.android.com/tools/help/adb.html#wireless), no root necessary. Just worked on my non-rooted HTC One m8 (requires enabling developer options, of course.). – Jeff Ward Apr 30 '15 at 06:32
  • If adb service runs at port 5037 then why does it locate devices in the range 5555 to 5585 ? – Shivam Aggarwal Dec 03 '15 at 16:09
  • @Andrew Could I use an app such as [this](https://play.google.com/store/apps/details?id=at.bherbst.net&hl=en) to open and close the port without a computer on a Nexus 6 with no root access? I am concerned with the security issues that could arise from leaving port 5555 open when I am on a public network and not using my phone for developing. – DaveTheMinion Apr 06 '16 at 18:23
  • @Alex Wait, so you need a USB connection to begin with or it won't work? I was looking for a solution while I wait for a new USB cable... – Michael Jun 27 '17 at 00:35
  • Unless you can find a way to execute adb commands on the phone itself, you will need the cable to run the adb command to change the port. Surely there is some kind of rooted command line app to run adb commands. – andreszs Jun 29 '17 at 15:09
  • This blog help me to connect wireless : http://codetheory.in/android-debug-bridge-adb-wireless-debugging-over-wi-fi/ – Khurshid Ansari Mar 15 '18 at 18:15
  • you can check the file at https://gist.github.com/kamleshkarwande/fe3edd5d13757fcedd457ac4c0953a97 – Kamlesh Karwande May 29 '18 at 14:48
  • 3
    [2 methods - how to run android app over wifi - Simple tutorial](https://androidride.com/how-to-run-android-app-over-wifi-android-studio/) – Athira Reddy May 02 '19 at 14:08
  • FYI https://developer.android.com/studio/command-line/adb – Ashok Kumar Jul 03 '19 at 02:24
  • Here is the shell script which I have written which can be used to connect to wifi.https://github.com/saifsms91/Shell-script-for-debugging-Android-Application-in-Wifi-mode/blob/master/wifi_debug.sh : Run this script when your device is connected to USB and remove the usb once scripts runs to connect it to wifi – Saif Siddiqui Aug 27 '19 at 08:36

37 Answers37

1205

Manual Process

From your device, if it is rooted

According to a post on xda-developers, you can enable ADB over Wi-Fi from the device with the commands:

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

And you can disable it and return ADB to listening on USB with

setprop service.adb.tcp.port -1
stop adbd
start adbd

From a computer, if you have USB access already (no root required)

It is even easier to switch to using Wi-Fi, if you already have USB. From a command line on the computer that has the device connected via USB, issue the commands

adb tcpip 5555
adb connect 192.168.0.101:5555

Be sure to replace 192.168.0.101 with the IP address that is actually assigned to your device. Once you are done, you can disconnect from the adb tcp session by running:

adb disconnect 192.168.0.101:5555

You can find the IP address of a tablet in two ways:

Manual IP Discovery:

Go into Android's WiFi settings, click the menu button in the action bar (the vertical ellipsis), hit Advanced and see the IP address at the bottom of the screen.

Use ADB to discover IP:

Execute the following command via adb:

adb shell ip -f inet addr show wlan0

To tell the ADB daemon return to listening over USB

adb usb

Apps to automate the process

There are also several apps on Google Play that automate this process. A quick search suggests adbWireless, WiFi ADB and ADB WiFi. All of these require root access, but adbWireless requires fewer permissions.

Community
  • 1
  • 1
Brian
  • 16,136
  • 3
  • 25
  • 26
  • 3
    Do you need root access to do this? I seem to be able to run the commands using terminal, but it doesn't actually seem to work... – J J Jun 11 '11 at 04:28
  • 6
    @ J J - Unfortunately, yes. Root required. – Kingsolmn Jun 11 '11 at 19:38
  • 1
    Also, check your firewall. I had to reconfigure my firewall. – yingted Oct 08 '11 at 01:55
  • 178
    For the second solution (`adb tcipip 5555` and `adb connect ...` there's no root necessary. – Ridcully Feb 22 '12 at 06:58
  • 1
    there are small free apps on the market that launch adb into tcpip mode. – John Jul 13 '12 at 21:55
  • 11
    `adb tcpip ` still requires either `ro.kernel.qemu` property to be set (running in emulator mode), `ro.secure` to be 0 (i.e. a rooted device), or `ro.debuggable` and `service.adb.root` to be set to 1. `adbd` simply won't open a TCP/IP connection if none of the above is met. See http://www.netmite.com/android/mydroid/system/core/adb/adb.c `adb_main` parts about the `secure` variable. `adbd` on my unrooted 2.3.7 Android does not enter TCP/IP mode at all. – soulseekah Oct 22 '12 at 09:03
  • 1
    One additional comment: If you're using Windows, you'll need to change the "adb connect 192.168.0.101:5555" line to "adb connect 192.168.0.101". Also, don't close the terminal window, just leave it alone (at least, for Windows). – Rich Oct 23 '12 at 12:42
  • Thanks for the very good example, can you please tell me the reqiurement of the device to be rooted, is it mandatory. – Rohit Sangal Jan 16 '13 at 06:02
  • 2
    Great! Second solution really doesn't require root! – Grzegorz D. May 30 '13 at 20:43
  • BTW: the first app (the one that "requires fewer permissions") seems to exist no more. – lapo Jun 17 '13 at 15:49
  • 1
    @lapo Here is a link to an F-Droid archive of the app http://f-droid.org/repository/browse/?fdid=siir.es.adbWireless – Brian Jun 17 '13 at 15:59
  • 1
    You can use `restart` instead of `stop` and `start` – KrisWebDev Aug 18 '13 at 07:17
  • Note that adb server locates emulator/device instances (ie adbd aka the daemon) by scanning odd-numbered ports in the range 5555 to 5585. So use **ODD** numbers in that range for your TCP ports otherwise you will have to manually connect, which is a pain (doable but not recommended: `adb connect :`). – KrisWebDev Aug 18 '13 at 07:33
  • Here's a couple aliases I whipped up to automate the second solution. However I haven't been able to get it to work unrooted. alias adbip='adb shell ip -f inet addr show wlan0 | sed -En "s/.*inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/p"' alias adbwifi='ADB_IP=`adbip`; adb tcpip 5555 && adb connect $ADB_IP' – Jay Bobzin May 10 '14 at 16:40
  • @JayBobzin, your aliases didn't quite work for me, I had to change 'ADB_IP=adbip; ...' to 'ADB_IP=$(ADB_IP); ...'. Could be a bash thing. – CoatedMoose May 27 '14 at 14:39
  • 1
    Worked on my Mac only when leaving out the port number when connecting: "adb connect 192.168.0.101" – no rooting necessary. Great! – Philipp Rieber Feb 09 '15 at 20:14
  • 2
    All of this is already on http://developer.android.com/tools/help/adb.html#wireless make sure you are on the same subnet too. 196.168.0.* usually cannot access 196.168.1.* ;) – Bron Davies Apr 23 '15 at 14:18
  • I confirm with Philipp : for the non-root option, it was necessary to leave out the port number - in my case using Windows. "adb tcpip 5555" + "adb connect 192.168.0.101" – JM Lord Jun 15 '15 at 15:06
  • You're a hero.. By the way, i did it without root.. :-) Thank you – Abdul Saleem Sep 05 '15 at 14:24
  • For some reason, when I'm trying to execute `adb tcpip 5555`, I always need to: `re plug the USB`; `switch device mode`, `turn the WiFi on and off again`; `restart adb`. Repeat those until it work. Don't wait if the `adb tcpip 5555` command hangs, it just doesn't work. Good answer btw. – mr5 Sep 18 '15 at 05:38
  • Great!! One question can I add multiple devices through tcpip? – IronBlossom Oct 12 '15 at 10:08
  • Getting this error on Asus Zenfone 2: `unable to connect to 192.168.0.173:5555: cannot connect to 192.168.0.173:5555: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060)` Reasons? Workaround? – azizbekian Oct 21 '15 at 05:19
  • If adb service runs at port 5037 then why does it locate devices in the range 5555 to 5585 ? Can anyone please explain me – Shivam Aggarwal Dec 03 '15 at 16:10
  • Thanks so much! I was being dumb and my phone was connected to a different wifi network than my computer. But got it working now – Script Kitty Jan 05 '16 at 03:38
  • 1
    I would just like to add that before you type adb connect : you should take out the usb cable, because when you connect over wifi you will start authorization dialog, and because you are authorized over the cable, you will not be able to authorize wifi connection also. – aleksamarkoni Jan 05 '16 at 17:48
  • This is one of the most useful answers in SO ever. I am a heavy duty developer and usb cables would fail after a few months, and my device would no longer be detected by android studio. I just connected my device with a good usb cable once, ran tcpip 5555, and then connect command ...afterwards, I used no cable and used only the adb connect... command to test my apps over wifi. SWEET! – Josh Aug 31 '16 at 09:40
  • can I use device public IP (4G) e.g. adb -d connect 85.36.1.184:5555 how can I aceive such thing after I open the port ? – Diaa Saada Jul 31 '18 at 09:07
  • correct from above question: adb tcip 5555 and adb connect your_android_ip_address you can find your android's ip in settings->about system – tngotran Apr 02 '19 at 09:01
  • If you don't know the device's IP after you execute `adb tcpip`, here's a useful shortcut: `adb shell ip --brief addr` – Zaffy Jul 04 '19 at 11:40
  • Without root: disable and enable again the usb debug. – e-info128 Jul 14 '19 at 20:03
  • Is it possible to prevent the phone from resetting the `adb tcpip 5555`? When I don't connect wirelessly to the phone via `adb connect` for a few days using the method you said, I'm unable to connect until I repeat the steps again, i.e, `adb tcpip 5555` – Spikatrix Dec 20 '19 at 09:03
132

This is really simple if your phone is rooted.

Download a terminal emulator from Google Play (there are lots that are free). Make sure that your Android device is connected to your Wi-Fi and get the Wi-Fi IP address. Open the terminal program and type:

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

Now go to your computer (assuming that you are using Windows) and create a shortcut on the desktop for "cmd.exe" (without the quotations).

Right click on the cmd shortcut and choose "Run as Administrator"

Change to your android-sdk-windows\tools folder

Type:

adb connect ***wifi.ip.address***:5555

(example: adb connect 192.168.0.105:5555)

adb should now say that you are connected.

Note: if you are too fast to give the connect command it may fail. So try at least two times five seconds apart before you say this doesn't work.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
norman
  • 1,321
  • 1
  • 8
  • 3
  • 6
    This answer was better for me because it explained that which part should be performed on the device and which on the computer. – Eduardo Jul 14 '12 at 17:14
  • 5
    **BEFORE** "adb tcpip 5555" **DO** "adb kill-server". **AFTER** "adb connect 192.168.0.101:5555" **DO** "adb devices" **OR** "adb shell" (connect doesn't start shell). – samis Jul 25 '13 at 15:30
  • I tried `adb tcpip 5555` and then the other person executed `adb connect myIP:5555` on their PC. He could install an app to my phone but he could not debug it remotely. Is it possible to debug remotely? On my phone there was a dialog `waiting for debugger` forever. – Angelina May 02 '19 at 11:37
  • Does this make the settings persistent across reboots ? – Hritik Jul 20 '19 at 14:12
  • Does this work with ipv6 address via mobile internet? – CaptainFreedom Nov 27 '19 at 06:26
94
  1. Connect device via USB and make sure debugging is working, then run:

    adb tcpip 5555
    adb connect <DEVICE_IP_ADDRESS>:5555
    
  2. Disconnect USB and proceed with wireless debugging.

  3. When you're done and want to switch back to USB debugging, run:

    adb -s <DEVICE_IP_ADDRESS>:5555
    

To find the IP address of your device, go to Settings > Wi-Fi > Advanced > IP Address on your device or run adb shell netcfg.

No root required. Only one device can be debugged at a time.

See this XDA post.

The adb command is located in the platform-tools folder of the Android SDK.

davidweitzenfeld
  • 983
  • 1
  • 12
  • 36
Ribin Haridas
  • 1,630
  • 11
  • 17
  • 2
    Actually, you can connect many devices at a time, if you follow the right order. Just set the tcpip to 5555 individually for each phone, then issue the connect command for each phone and voilá, they are all connected to adb. – andreszs Feb 16 '15 at 18:53
  • Debugging is a bit slower if my phone is connected this way. Also, sometimes it falls asleep and that causes an immediate disconnect. – Aron Lorincz Jul 21 '15 at 13:33
  • On some devices, the delay between _adb tcpip_ command and _adb connect_ command has to be very low otherwise it does not work. Also, for me it worked by doing `adb tcpip 5555 && adb connect :5555` – vhamon Jul 24 '18 at 09:49
61

Assume you saved adb path into your Windows environment path

  1. Activate debug mode in Android

  2. Connect to PC via USB

  3. Open command prompt type: adb tcpip 5555

  4. Disconnect your tablet or smartphone from pc

  5. Open command prompt type: adb connect IPADDRESS (IPADDRESS is the DHCP/IP address of your tablet or smartphone, which you can find by Wi-Fi -> current connected network)

Now in command prompt you should see the result like: connected to xxx.xxx.xxx.xxx:5555

Shashank Agrawal
  • 21,660
  • 9
  • 71
  • 105
MapleLover
  • 665
  • 5
  • 7
53

From adb --help:

connect <host>:<port>         - Connect to a device via TCP/IP

That's a command-line option by the way.

You should try connecting the phone to your Wi-Fi, and then get its IP address from your router. It's not going to work on the cell network.

The port is 5554.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
Nathan
  • 5,747
  • 9
  • 43
  • 54
  • 1
    I had tried that with 5555-5558 and now 5554 and it it does not work for some reason. Basically from a command line: adb kill-server adb connect 10.10.10.100:5554 with the result being * daemon not running. starting it now * * daemon started successfully * unable to connect to 10.10.10.100:5554 I can ping the ip of the device from the dev workstation. When the output states "daemon started successfully" shouldn't it be referring to the daemon on the device? Is it attempting to use the emulator possibly? How do I ensure/validate the daemon is running on the device? thanks – JDM Apr 09 '10 at 21:00
  • 2
    you should first `adb tcpip port` as the default is debugging over usb. After the latter you can connect `connect host:port` and it should work – Aiden Strydom Mar 13 '13 at 10:27
  • "adb tcpip port" literally? that just returns the string "error: device not found" -- is there a typo? Or should I replace something here? – BrainSlugs83 Aug 08 '13 at 17:46
  • 3
    AHHH!! Figured it out, the default port number for CyanogenMod is 5555! NICE. :D – BrainSlugs83 Aug 08 '13 at 17:48
  • @Michael it might work on some cell networks, but their network configurations are basically black boxes -- you don't know when/if you're behind a firewall, if ports are being blocked, if NAT translation is going on, etc. – BrainSlugs83 Sep 02 '13 at 22:21
  • OK, this IS the correct answer. You can view the IP from the phone, go to Settings > About Phone > Status. Just set the port with `adb tcpip 5555` first when connected via USB. Finally, no more USB cable for deployment, beautiful. – andreszs Feb 16 '15 at 18:02
  • How do I connect to an emulator on another computer over network ? – Anil GR Dec 02 '19 at 05:27
45

For Windows users:

Step 1:
You have to enable Developer options in your Android phone.
You can enable Developer options using this way.
• Open Settings> About> Software Information> More.
• Then tap “Build number” seven times to enable Developer options.
• Go back to Settings menu and now you'll be able to see “Developer options” there.
• Tap it and turn on USB Debugging from the menu on the next screen.

Step 2:

Open cmd and type adb.
if you find that adb is not valid command then you have to add a path to the environment variable.

•First go to you SDK installed folder
Follow this path and this path is just for an example. D:\softwares\Development\Andoird\SDK\sdk\platform-tools\; D:\softwares\Development\Andoird\SDK\sdk\tools;
• Now search on windows system advanced setting

enter image description here

Open the Environment variable.

enter image description here

then open path and paste the following path this is an example.
You SDK path is different from mine please use yours. D:\softwares\Development\Andoird\SDK\sdk\platform-tools\;
D:\softwares\Development\Andoird\SDK\sdk\tools;

enter image description here

Step 3:

Open cmd and type adb. if you still see that adb is not valid command then your path has not set properly follow above steps.

enter image description here

Now you can connect your android phone to PC.

Open cmd and type adb devices and you can see your device. Find you phone ip address.

enter image description here

Type:- adb tcpip 5555

enter image description here

Get the IP address of your phone

adb shell netcfg

Now,

adb connect "IP address of your phone"

Now run your android project and if not see you device then type again adb connect IP address of your phone

enter image description here

enter image description here

For Linux and macOS users:

Step 1: open terminal and install adb using

sudo apt-get install android-tools-adb android-tools-fastboot

Connect your phone via USB cable to PC. Type following command in terminal

adb tcpip 5555

Using adb, connect your android phone ip address.

Remove your phone.

tuxayo
  • 894
  • 1
  • 11
  • 20
Raghav Thakkar
  • 301
  • 5
  • 11
36

From a computer on a non-rooted device

(Note that this can be done using a rooted device as well, but you can use a shell on a rooted device which doesn't require a USB connection)

Firstly, open command prompt (CMD). If you use Android Studio or IntelliJ there is a console included in there you can use.

If you have adb added to the path, you can skip the cd part.


If possible, open the SDK location, right click, and press "start command prompt here". Not all have this option so you have to do this (/these) commands as well:

Windows: change the drive (if applicable)

D: 

And access the sdk and platform tools. Replace this path with your SDK location:

cd /sdk/path/here/platform-tools

Now you have access to the Android debug bridge.


With the device connected to the computer, do:

adb tcpip <port> 
adb connect <ip>:<port>

Where <port> is the port you want to connect to (default is 5555) and <ip> is the IP of the device you want to connect to.

Please note: 5555 is the default port and just writing the IP address connects it. If you use a custom port you can at least improve the security a bit. USB debugging over Wi-Fi can be abused, but only if the device is connected to the computer who wants to abuse the device. Using a non-default port at least makes it a bit harder to connect.

If you use a custom port, make sure to add it after the IP. Writing no port connects to 5555 and if you didn't use that the connection will fail.

You can find the IP address of a device in two ways:

  • Depending on your device, the exact names may vary. Open settings and go to About device -> Status -> IP address

  • Use ADB to get the IP

From the console, do:

adb shell ip -f inet addr show wlan0

And once you are finished with the connection, you can disconnect the device from your computer by doing:

adb disconnect <ip>:<port>

Or no IP to disconnect all devices. If you used a custom port, you must specify which port to disconnect from. The default is 5555 here as well.

To disable the port (if that is something you want to do) you do this command with the device connected:

adb usb

Or you can restart the device to remove the tcpip connection

From a computer on a rooted device

Firstly, you need access to the shell. You either connect the device using a usb cable and use adb shell or download an app from Google Play, FDroid, or some other source.

Then you do:

su
setprop service.adb.tcp.port <port>
stop adbd
start adbd

And to connect the device, you do as in the non-rooted version by doing adb connect <ip>:<port>.

And if you want to disable the port and go back to USB listening:

setprop service.adb.tcp.port -1
stop adbd
start adbd

You can also use an Android Studio plugin to do it for you (don't remember the name right now), and for rooted users there's also the option of downloading an Android app to set up the phone connection (adb connect is probably still required).

Some phones have a setting in developer options (this applies to some unrooted phones, though probably some rooted phones too) that allows for toggling ADB over Wi-Fi from the device itself without root or a computer connection to start it. Though there are few phones that have that

Zoe
  • 23,712
  • 16
  • 99
  • 132
  • `adb shell ip -f inet addr show wlan0` Is the IP address and port support to be substituted in somewhere therE? – Michael Jun 27 '17 at 00:38
  • not in that line. That is the shell-way to get the IP. Nothing in there should be replaced in that line – Zoe Jul 25 '17 at 10:19
33

I needed to get both USB and TCPIP working for ADB (don't ask), so I did the following (using directions others have posted from xda-developers)

Using adb shell:

su
#Set the port number for adbd
setprop service.adb.tcp.port 5555

#Run the adbd daemon *again* instead of doing stop/start, so there
#are two instances of adbd running.
adbd &

#Set the port back to USB, so the next time ADB is started it's
#on USB again.
setprop service.adb.tcp.port -1

exit
Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
transistor1
  • 2,805
  • 23
  • 42
  • Doesn't work: adbd not found. adbd is normally launched via start adbd. But maybe there's a script/executable in some folder? – KrisWebDev Aug 18 '13 at 08:30
  • 1
    On my gnex, it's `/sbin/adbd`. That may vary by phone. Of course, you must be rooted... If you're not rooted, you won't be able to access /sbin. – transistor1 Aug 18 '13 at 13:12
32

To connect your tablet using TCP port. Make sure your system and device is connected to same network.

  1. Open console cmd.exe
  2. Type adb tcpip 5555
  3. Go to System -> Development option -> USB debugging --> Uncheck it for TCPIP connection
  4. Type adb connect 192.168.1.2 this is your device IP address
  5. Connected to 192.168.1.2

Connected using port forward Try to do port forwarding,

adb forward tcp:<PC port> tcp:<device port>

like:

adb forward tcp:5555 tcp:5555.

C:\Users\abc>adb forward tcp:7612 tcp:7612

C:\Users\abc>adb tcpip 7612 restarting in TCP mode port: 7612

C:\Users\abc>adb connect 10.0.0.1:7612

connected to 10.0.0.1:7612

If you get message error: device not found connect a usb device to system then follow same procedure.
for a rooted device

setprop service.adb.tcp.port 5555
stop adbd
start adbd
Community
  • 1
  • 1
rinkesh
  • 2,852
  • 23
  • 30
30

I do not know how to connect the device without any USB connection at all, but if you manage to connect it maybe at another computer you can switch the adbd to TCP mode by issuing

adb tcpip <port>

from a terminal and connect to your device over wifi from any PC on the network by:

adb connect <ip>:<port>

Maybe it is also possible to switch to TCP mode from a terminal on the device.

Christoph
  • 301
  • 3
  • 2
  • Of all the complicated answers that received massive upvotes, this 8 year old answer his the simplest and works No rooting required. Just type 'adb connect :5555' and it will be available to be deployed to. – RogerW Sep 09 '18 at 14:34
29

First you must connect your device via USB

Then connect your device to WIFI and get the IP address. While still connect via usb type this in command line or via Android Studio Terminal

adb tcpip 5555
adb connect <device IP>:5555

You will see these messages:

restarting in TCP mode port: 5555
connected to 172.11.0.16:5555

Now remove the USB cable and you will still see your logcat as normal

Done. Enjoy

Thiago
  • 9,554
  • 11
  • 68
  • 97
21

If you want to easily connect your device to run, debug or deploy your Android apps over WiFi you can use an open source IntelliJ Plugin I've developed. Here is the code and here the plugin ready to be used.

The usage is quite simple. Here you have a gif:

enter image description here

  • This error occures: "'adb'command not found. Review your Android SDK installation. – rostamiani Oct 21 '15 at 06:44
  • 1
    You have to declare a environment variable with name ANDROID_HOME. But I have a PR pending to review to avoid this. With the version 1.2 I'm going to publish next week the plugin will work just with IntelliJ installed :) – Pedro Vicente Gómez Sánchez Oct 21 '15 at 19:36
  • Im using mac, don't see an icon in AS? Do I need to do something manual first? – powder366 Oct 27 '15 at 19:20
  • 1
    I've already published a new version where the ANDROID_HOME environment variable is not needed anymore. @powder366 you need to install the plugin from the IntelliJ plugins store of installing it manually. All the instructions needed to install and use the plugin are in the project readme, take a look https://github.com/pedrovgs/AndroidWiFiADB – Pedro Vicente Gómez Sánchez Nov 02 '15 at 20:03
  • @PedroVicenteGómezSánchez Thanks. I picked the wrong plugin, there exist another plugin with similar name... – powder366 Nov 02 '15 at 20:19
  • this plugin is really great and easy to use :) – Chris623 Aug 18 '16 at 16:18
  • moto g play connect successfully, but when remove usb, both the connection terminate, FYI- i am already connected with other device. – RaRa Jun 14 '17 at 11:05
11

As Brian said:

According to a post on xda-developers, you can enable ADB over WiFi from the device with the commands

setprop service.adb.tcp.port 5555

stop adbd

start adbd

And you can disable it and return ADB to listening on USB with

setprop service.adb.tcp.port -1

stop adbd

start adbd

If you have USB access already, it is even easier to switch to using WiFi. From a command line on the computer that has the device connected via USB, issue the commands

adb tcpip 5555

adb connect 192.168.0.101:5555

To tell the ADB daemon return to listening over USB

adb usb

There are also several apps on the Android Market that automate this process.

It works.You just need to access the android shell and type those commands...

One other (easier) solution is on the Market: adbWireless, it will automatically set your phone.

Root is required! for both...

Community
  • 1
  • 1
offcourse
  • 316
  • 3
  • 11
9
adb tcpip 5555

Weird, but this only works for me if I have the USB cable connected, then I can unplug the usb and go for it with everything else adb.

and the same when returning to usb,

adb usb

will only work if usb is connected.

It doesn't matter if I issue the

setprop service.adb.tcp.port 5555

or

setprop service.adb.tcp.port -1

then stop & start adbd, I still need the usb cable in or it doesn't work.

So, if my ADB over usb wasn't working, I bet I wouldn't be able to enable ADB over WiFi either.

Chris
  • 99
  • 1
  • 1
8

To switch between TCP and USB modes with just one command, you can add this to /init.rc:

on property:service.adb.tcp.port=*
    restart adbd

on property:service.adb.tcp.enable=1
    setprop service.adb.tcp.port 5555

on property:service.adb.tcp.enable=0
    setprop service.adb.tcp.port -1

And now you can use property service.adb.tcp.enable to enable or disable listening on port 5555. Run netstat to check whether it's listening. As you can see it will also trigger if you do wish to change service.adb.tcp.port manually.

errordeveloper
  • 6,044
  • 6
  • 37
  • 50
8

Bash util function:

function adb-connect-to-wifi {
    ip="$(adb shell ip route | awk '{print $9}')"
    port=5555
    adb tcpip ${port}
    adb connect ${ip}:${port}
}
eleven
  • 6,464
  • 2
  • 28
  • 45
7

STEP 1.

Make sure both your adb host computer and Android device are on the same Wifi network.

STEP 2.

Connect the Android device with the computer using your USB cable. As soon as you do that, your host computer will detect your device and adb will start running in the USB mode on the computer. You can check the attached devices with adb devices whereas ensure that adb is running in the USB mode by executing adb usb.

$ adb usb
restarting in USB mode
$ adb devices
List of devices attached
ZX1D63HX9R  device


STEP 3.

Restart adb in tcpip mode with this command:

$ adb tcpip 5556
restarting in TCP mode port: 5556


STEP 4.

Find out the IP address of the Android device. There are several ways to do that:

  • WAY: 1 Go to Settings -> About phone/tablet -> Status -> IP address.
  • WAY: 2 Go to the list of Wi-fi networks available. The one to which you’re connected, tap on that and get to know your IP.
  • WAY: 3 Try $ adb shell netcfg.

Now that you know the IP address of your device, connect your adb host to it.

$ adb connect 192.168.0.102:5556
already connected to 192.168.0.102:5556
$ adb devices
List of devices attached
ZX1D63HX9R  device
192.168.0.102:5556  device


STEP 5.

Remove the USB cable and you should be connected to your device. If you don’t see it in adb devices then just reconnect using the previous step’s command:

$ adb connect 192.168.0.102:5556
connected to 192.168.0.102:5556
$ adb devices
List of devices attached
192.168.0.102:5556  device

Either you’re good to go now or you’ll need to kill your adb server by executing adb kill-server and go through all the steps again once more.

Hope that helps!


Reference:

Eddy
  • 2,839
  • 31
  • 37
  • Additionally, you can get the IP of your device with this script on Unix: adb shell ip -f inet addr show wlan0 | grep inet | echo -n $(grep -Eo '[0-9\.\/]') | echo -n $(grep -Eo '^[^\/]*') | sed 's/ //g' – ahsan.dev Apr 13 '16 at 15:11
  • @Eddy One doubt that both system and mobile/Tablet must connected via WiFi or else system connected through LAN and tablet connected using of WIFi router of same network. Please Clarify it – iSrinivasan27 Apr 25 '16 at 12:36
  • @i-Droid I don't know why both have to connect in the same network. maybe ADB use special net routing protocol. I have no idea and no deep research about it. If you have interest in it, welcome to clarify it and share it with me, thanks! – Eddy Apr 26 '16 at 02:33
6

These are the steps I followed and it worked for me,

  1. adb shell ifconfig (get the ip address of the device from here)

  2. adb tcpip 7777 (connect adb to some port)

  3. adb connect "ipaddress":7777

Community
  • 1
  • 1
Tom Taylor
  • 2,378
  • 1
  • 27
  • 48
5

You can also use SSH local port forwarding. But it still involves a USB cable. Connect your phone using USB to a computer (host) with an sshd running. On a remote (guest) pc start an SSH client capable of portforwarding/tunneling. Example:

plink -L 5037:localhost:5037 <host_IP_address>

I use this construction to connect my device to a virtual machine. Eltima USB to Ethernet wasn't stable enough (timeouts during debug).

SSH tunneling works for free and is more reliable.

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
Ron
  • 51
  • 1
  • 1
4

I find the other answers confusing. Far simpler to use adbWireless:

http://ppareit.github.com/AdbConnect/

Simply install an app on your phone to toggle debugging over wifi, install an eclipse plug-in and you're done.

3

I put together a batch file for automatic enabling and connecting ADB via TCP, to a device connected via USB. With it you don't have to put in the IP manually.

@echo off
setlocal

REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools

REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off

REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0

REM Enable TCP
adb -d wait-for-device tcpip %port%

REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i

REM Connect ADB to device
adb connect %IP%:%port%

goto end

:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end

:off
adb wait-for-device usb

:end
Felizk
  • 31
  • 1
3

Here's an extension to Brian's answer using Bluetooth:

  1. On Linux, use Blueman to share PC internet with your device via Bluetooth:

    $ sudo apt-get install blueman
    $ blueman-manager
    Pair them: Search devices after enabling Bluetooth
    on your phone and making it visible
    $ blueman-services
    Network > [X] Network Access Point (NAP)
    Your Phone > Settings > Bluetooth > Paired Device > [X] Internet access
    
  2. Use the Bluetooth network for ADB commands:

    $ adb tcpip 5555
    $ adb connect $(adb shell ip -f inet addr show bt-pan | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n1):5555
    

Once done to return to USB mode:

$ adb disconnect
$ adb usb

Note: Bluetooth 3.0 and 4.0 can go up to 24 Mbit/s.

Wernight
  • 32,087
  • 22
  • 110
  • 128
3

Steps :

  1. su -- To switch to super user.
  2. setprop service.adb.tcp.port 5555 - To specify the tcp Port - 5555 is the port number here
  3. stop adbd - To stop the adbd service.
  4. start adbd - To start adbd service.

this works perfectly with ssh from my windows PC

I try to do this on the boot on my cyanogen mobile or launch this with plink. With plink I can't launch shell with su right ... sudo or su command not works. On boot I don't know how it's works! My shell program works from ssh with su -c "sh /storage/sdcard1/start_adb.sh" with the last 3 commands (without su --)

Thanks

venkatvb
  • 673
  • 1
  • 9
  • 23
beguinner
  • 31
  • 2
2

One additional note (learned the hard way): You should not have your company VPN-connection active at the same time...

TuomasG
  • 63
  • 4
2

You Need to do following things:

  • First, Add ADB to your environment path.
  • From your CLI type this command adb connect YOUR_DEVICE_IP:PORT_NUMBER (example adb connect 192.168.100.100:5555)
noman404
  • 856
  • 8
  • 22
2

There are two ways to connect your Android device with ADB over TCP?

First way

Follow this steps

First use below command to get your device IP Address

adb shell ifconfig

OUTPUT of above command

wlan0     Link encap:UNSPEC    Driver icnss
          inet addr:XXX.XXX.X.XX  Bcast:XXX.XXX.X.XXX

With the help you above command you will find the IP Address of connected device

Now use below command

adb tcpip 5555

The above command will restart this TCP port: 5555

Now use below command to connect your device

adb connect XXX.XXX.X.XXX:5555
            ^^^ ^^^ ^ ^^^
        IP Address of device

Second way

You can use Android Studio Plugin Android device with ADB

Android WiFi ADB - IntelliJ/Android Studio Plugin

IntelliJ and Android Studio plugin created to quickly connect your Android device over WiFi to install, run and debug your applications without a USB connected. Press one button and forget about your USB cable

Please check this article for more information

Connect Android Device with Wifi within Android Studio

AskNilesh
  • 58,437
  • 15
  • 99
  • 129
2

I'm struct at the same issue but a simple hack adb reverse tcp:<PORT> tcp:<PORT> worked for me. It allows the system to accept tcp requests.

Thank You for reading

Radha Manohar
  • 377
  • 1
  • 13
1

I just followed following steps and it started working, so that i can connect to my android device.

Step 1: Open the terminal Window in Android Devices and execute the following command.

  1. su -- To switch to super user.
  2. setprop service.adb.tcp.port 5555 - To specify the tcp Port - 5555 is the port number here
  3. stop adbd - To stop the adbb service.
  4. start adbd - To start adbd service.

Step 2: Through ADB, Execute the bellow command.(From the path where ADB is configured)

adb connect 10.10.10.50:5555 - Here 10.10.10.50 is the IP address of the android device and 5555 is the port number.

Avinash M
  • 11
  • 1
1

I've found a convenient method that i would like to share.

For Windows

Having USB Access Once

No root required

Connect your phone and pc to a hotspot or run portable hotspot from your phone and connect your pc to it.

Get the ip of your phone as prescribed by brian (Wont need if you're making hotspot from your phone)

adb shell ip -f inet addr show wlan0

Open Notepad

Write these

@echo off
cd C:\android\android-sdk\platform-tools
adb tcpip 5555
adb connect 192.168.43.1:5555

Change the location given above to where your pc contains the abd.exe file

Change the ip to your phone ip.

Note : The IP given above is the basic IP of an android device when it makes a hotspot. If you are connecting to a wifi network and if your device's IP keeps on changing while connecting to a hotspot every time, you can make it static by configuring within the wifi settings. Google it.

Now save the file as ABD_Connect.bat (MS-DOS batch file).

Save it somewhere and refer a shortcut to Desktop or Start button.

Connect through USB once, and try running some application. After that whenever you want to connect wirelessly, double click the shortcut.

Note : Sometimes you need to open the shortcut each time you debug the application. So making a shortcut key for the shortcut in desktop will be more convenient. I've made a shortcut key like Ctrl+Alt+S. So whenever i wish to debug, i'll press Shift+F9 and Ctrl+Alt+S

Note : If you find device=null error on cmd window, check your IP, it might have changed.

Abdul Saleem
  • 7,999
  • 4
  • 35
  • 37
1

adb can communicate with adb server over tcp socket. you can verify this by telnet.

$ telnet 127.0.0.1 5037
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
000chost:version
OKAY00040020

generally, command has the format %04x%s with <message.length><msg> the following is the ruby command witch sends adb command cmd against tcp socket socket

def send_to_adb(socket, cmd)
  socket.printf("%04x%s", cmd.length, cmd)
end

the first example sends the command host:version which length is 12(000c in hex). you can enjoy more exciting command like framebuffer: which takes screenshot from framebuffer as you can guess from its name.

9re
  • 2,320
  • 25
  • 26
  • This is cool info but it doesn't address the question. The adb server is host-side, and the question is asking how to communicate with the device wirelessly. (The reason adb server exists is to multiplex adb host sessions over a single host-to-device transport, usually a USB endpoint.) – Ian Ni-Lewis Jan 18 '16 at 17:43
1

If you want to be able to do it on a button click then:

  1. In Android Studio -> Settings/Preferences -> Plugins -> Browse Repositories
  2. Search 'ADB wifi'
  3. Install and restart android studio
  4. Connect your device (with USB Debugging enabled) to your computer with USB (you will need to do this just once per session)
  5. Tools -> Android -> ADB WIFI -> ADB USB TO WIFI (Or use the key combination mentioned. For MacOS: ctrl + shift + w)

Note: If it did not work:

  1. Your wifi router firewall may be blocking the connection.
  2. ABD may not be installed on your computer.
Abdul Wasae
  • 3,430
  • 2
  • 27
  • 54
1

Just in case it helps anyone, i have written a .bat file to do the work for me.

I'm using Visual Studio / Xamarin - Simply connect the phone to USB, run the batch file, select 'C' for connect and when done, disconnect phone from usb cable. You'll be connected via Wifi from there.

NOTE: Change the directory in the script to wherever adb.exe exists on your PC and edit the IP address of your phone.

@echo off
cls
c:
cd\
cd C:\Program Files (x86)\Android\android-sdk\platform-tools\

:choice
set /P c=Do you want to connect or disconnect[C/D]?
if /I "%c%" EQU "C" goto :connect
if /I "%c%" EQU "D" goto :disconnect
goto :choice


:connect
echo plug phone in via USB. Make sure emulator is switched off
pause
adb tcpip 5555
adb connect 192.168.0.32:5555
echo finished - unplug USB
pause
exit

:disconnect
adb usb
echo finished - ADB is reset to USB mode
pause

Hope it helps someone!

Mark G
  • 284
  • 3
  • 9
1

I did get this working. Didn't use any usb cable.

  • app adb wireless.
  • Run it. That will set ip and port; Then in dos

    cd C:\Program Files\Android\android-sdk\platform-tools adb connect "192.168.2.22:8000 "enter"
    

Connected.

Bruno Vieira
  • 3,794
  • 1
  • 21
  • 35
lee
  • 21
  • 1
1

Use the adbwireless app to enable the phone, then use adb connect from the Windows machine to talk to it. The adbwireless app on the phone tells you how to connect to it, giving the IP address and everything.

The much less fun alternative is to connect via USB, tell the phone to use TCPIP via adb tcpip 5555, then disconnect USB, then use adb connect. This is much harder because this way you have to figure out the IP address of the phone yourself (adbwireless tells you the IP), you have to connect via USB, and you have to run adb tcpip (adbwireless takes care of that too).

So: install adbwireless on your phone. Use it. It is possible, I do it routinely on Linux and on Windows.

1

On my system it went like this:

On my Android device in my Linux shell, a simple "ifconfig" did not give me my IP address. I had to type:

ifconfig eth0

-or-

netcfg

to get my IP address. (I knew eth0 was configured because I saw it in my dmesg.) Then I did the :

setprop service.adb.tcp.port -1

stop adbd

start adbd

Then on my Win7 box (the one running Eclipse 3.7.1). I opened a command prompt to

\android-sdk\platform-tools>

without running as admin. Then I did a

adb connect 12.345.678.90

I never put a port. If I did a

adb tcpip 5555

it said it couldn't find the device then nothing appeared in my "adb devices" list. I.e. it only works if I DON'T do the tcpip command above.

I can do an "adb shell" and mess with my Android Device. But my Android Device does not appear in my Run->Run Configurations->Target tab right now. On the other hand, if I keep the Target Tab set to automatic. Then when I run my app via Run->Run it does run on my Android device even though my Android device is not even listed as one of my targets.

Joe C
  • 2,437
  • 4
  • 23
  • 34
0

Here is a one-liner for Mac/Linux to connect to an Android device over Wi-Fi, but first you must connect to the device via USB.

# sleep 5 is to wait for the device to restart listening.
adb kill-server && adb tcpip 5555 && sleep 5 && adb shell ip route | awk '{print $9}' | xargs adb connect
-34

I ended up getting the Eltima USB to Ethernet software working after finally giving up on the possibility of a direct to device connection over TCP. I have pretty much decided that it is not possible to connect to a device across the network only an emulator.

bjb568
  • 9,826
  • 11
  • 45
  • 66
JDM
  • 9,777
  • 4
  • 20
  • 22