Genymobile / scrcpy

Display and control your Android device
Apache License 2.0
104.36k stars 10.15k forks source link

adb server version (41) doesn't match this client (40) #527

Closed fabriziocacicia closed 5 years ago

fabriziocacicia commented 5 years ago

I'm facing this error starting from today:

adb server version (41) doesn't match this client (40); killing...
ADB server didn't ACK
Full server startup log: /var/folders/0q/jh77wwcx1cs989k89kv79mqr0000gn/T//adb.501.log
Server had pid: 34316
--- adb starting (pid 34316) ---
adb I 05-09 21:30:11 34316 4407796 main.cpp:56] Android Debug Bridge version 1.0.40
adb I 05-09 21:30:11 34316 4407796 main.cpp:56] Version 28.0.2-5303910
adb I 05-09 21:30:11 34316 4407796 main.cpp:56] Installed as /usr/local/bin/adb
adb I 05-09 21:30:11 34316 4407796 main.cpp:56] 
adb I 05-09 21:30:11 34316 4407799 usb_osx.cpp:308] reported max packet size for ce061716d90b602a027e is 512
adb I 05-09 21:30:11 34316 4407796 auth.cpp:405] adb_auth_init...
adb I 05-09 21:30:11 34316 4407802 transport.cpp:283] ce061716d90b602a027e: read thread spawning
adb I 05-09 21:30:11 34316 4407803 transport.cpp:296] ce061716d90b602a027e: write thread spawning
adb I 05-09 21:30:11 34316 4407796 transport.cpp:1334] fetching keys for transport ce061716d90b602a027e
adb I 05-09 21:30:11 34316 4407796 auth.cpp:457] Calling send_auth_response
adb I 05-09 21:30:11 34316 4407796 adb.cpp:114] ce061716d90b602a027e: offline
adb server killed by remote request
adb I 05-09 21:30:14 34316 4407796 transport.cpp:339] BlockingConnectionAdapter(ce061716d90b602a027e): stopping
adb I 05-09 21:30:14 34316 4407796 usb_osx.cpp:561] Kicking handle
adb E 05-09 21:30:14 34316 4407802 usb_osx.cpp:541] usb_read failed with status: e00002eb
adb I 05-09 21:30:14 34316 4407802 transport.cpp:287] ce061716d90b602a027e: read failed: Undefined error: 0
adb I 05-09 21:30:14 34316 4407802 transport.cpp:676] ce061716d90b602a027e: connection terminated: read failed
adb I 05-09 21:30:14 34316 4407796 transport.cpp:357] BlockingConnectionAdapter(ce061716d90b602a027e): stopped

* failed to start daemon
adb: error: failed to get feature set: cannot connect to daemon
2019-05-09 21:30:14.285 scrcpy[34314:4407786] ERROR: "adb push" returned with value 1

I attached the content of /var/folders/0q/jh77wwcx1cs989k89kv79mqr0000gn/T//adb.501.log adb.501.log

rom1v commented 5 years ago

adb server version (41) doesn't match this client (40); killing...

A priori, you just upgraded your platform-tools. Once the server is killed and it started the adb server 41, it should work.

Does it happen again if you start scrcpy once again?

fabriziocacicia commented 5 years ago

adb server version (41) doesn't match this client (40); killing...

A priori, you just upgraded your platform-tools. Once the server is killed and it started the adb server 41, it should work.

Does it happen again if you start scrcpy once again?

Yes, sure. I tried many many times before posting here. But I just tried to execute the command "scrcpy" again and again. There is some other command to let scrcpy use the new version of the server?

rom1v commented 5 years ago

So you have several adb versions running. Something on your system starts (and seems to restart when it dies) the server with adb 41.

And scrcpy uses your adb 40.

What is the result of adb version? Find where your adb 41 binary is, and you can force it:

ADB=/path/to/some/adb scrcpy

A better way would be to change your PATH so that it always finds the right adb.

fabriziocacicia commented 5 years ago

Ok, thank you for your help. I had two different versions of adb: one at /usr/local/bin and one in a custom path. The shell was using the /usr/local/bin, Android Studio instead was using the one in the custom path.

Now everything si fine.

bao1410227 commented 5 years ago

Capture Capture2

Hi all, replace 3 files in "scrcpy" folder by their version in "platform-tools" maybe work.

I hope this will be useful !!!

francyfre commented 4 years ago

Ok, thank you for your help. I had two different versions of adb: one at /usr/local/bin and one in a custom path. The shell was using the /usr/local/bin, Android Studio instead was using the one in the custom path.

Now everything si fine.

excuseMe... i have exact this problem... i have Android Debug Bridge version 1.0.41 but when i start it telle me: adb server version (40) doesn't match this client (41); killing... exact like your.... you write some version in: /usr/local/bin that is different from: /usr/local/bin (that i have)! i dont find usr/local/bin........ and i cannot understand where is versione 40 of the server.... can somobody can help me; because i dont understand the solutions of that problem!! thanYouVeryMuch francesco

francyfre commented 4 years ago

@rom1v can you explain me better how to use this command: ADB=/path/to/some/adb scrcpy

rom1v commented 4 years ago

The idea is to set the environment variable ADB (which is read by scrcpy).

In a shell (typically on linux), you can set the variable for a single command:

VAR=value command

On Windows, you can set it globally in Windows preferenced, but you can also set it locally:

set VAR=value
command

So:

set ADB=C:\path\to\adb.exe
scrcpy
francyfre commented 4 years ago

thank... @rom1v i exec: set ADB=C:\...\AppData\Local\Android\Sdk because i understand this! all my software is update to last version, all path of environment variable is set on windows.... adb on cmd GO! but... when i want to play project on Android Studio tell me:

Unable to connect to ADB. Check the Event Log for possible issues. Verify that your localhost entry is pointing to 127.0.0.1 or ::1 for IPv4 or IPv6, rispectively.

now i try to do that i understand of your suggest; but i cannot understand why dont go! i check and i havent any other version of ADB! is only in one place!

thanYou Francesco

rom1v commented 4 years ago

i exec: set ADB=C:...\AppData\Local\Android\Sdk

You must use the full path to the binary:

set ADB=C:\...\AppData\Local\Android\Sdk\platform-tools\adb.exe
francyfre commented 4 years ago

ok true, i set this but have same problem :(

francyfre commented 4 years ago

@rom1v i make that you suggest! but there is always same problem :( :( i dont know what i can do.... is second time that i delete and re-intall all android platform... and always always same problem for ADB in cmd adb funtions!!!!!!!

rom1v commented 4 years ago

What are the results of:

adb version

and

C:\...\AppData\Local\Android\Sdk\platform-tools\adb.exe version

?

also:

echo %PATH%
francyfre commented 4 years ago

adb version: Android Debug Bridge version 1.0.41 Version 29.0.1-5644136 Installed as C:\Users...\AppData\Local\Android\Sdk\platform-tools\adb.exe

C:\Users...\AppData\Local\Android\Sdk\platform-tools\adb.exe version Android Debug Bridge version 1.0.41 Version 29.0.1-5644136 Installed as C:\Users...\AppData\Local\Android\Sdk\platform-tools\adb.exe IS THE SAME!!!

echo %PATH%: here i see that platform-tools is inside 4 time... with same address! i dont know why platform-tools there is more times... some are system variables anb others are user variables; i think now i will go to check!

thankYouuu for now Francesco

rom1v commented 4 years ago

Oh, but your problem is the reverse:

adb server version (40) doesn't match this client (41);

You correctly uses v41, but some app on your computer executes adb commands with adb v40. You must find this app and stop it :wink:

francyfre commented 4 years ago

yes, when i use adb devices on cmd i have this error... who use other adv v40??????? i think visual studio code... but no! it dont find phone for the same problem like Android studio!

ehmmmmm yes probably yess... i cannot understand why; when i start to play emulator on Android Studio; and if there is my phone on usbCable... all process go in error!!!!

francyfre commented 4 years ago

who uses ADB version 40? i cannot understand :( :( :(

rom1v commented 4 years ago

Check in your process list (in your taskmanager or something).

francyfre commented 4 years ago

@rom1v https://stackoverflow.com/questions/43837621/how-to-terminate-adb-exe-on-windows-what-keeps-restarting-it

i have exact this problem... i dont know who restart adb.exe every time i stop and delete process on Task Manager (windows)....

francyfre commented 4 years ago

i follow the process!!! i understand!!!!!!!!!!!!!!!! probably is app that i use for view windows on android tablet to start every time ADB!!!! thankYouForHelp.... without your help i cannot understand! i will alert you when i resolve this problem!!!!

francyfre commented 4 years ago

@rom1v ThankYouVeryMuch Romain... i solve all my problem... with your help i understand that i have installed one software to deploy screen of windows over android tablet (https://www.splashtop.com/wiredxdisplay).... this software turn on his version of ADB and make "casino" with androdiStudio version!! thank..... i need to upgrade my capacity to understand ;)

elafefy11 commented 4 years ago

fixed this by doing the following:

going into GenyMotion settings -> ADB tab, instead of Use Genymotion Android tools (default), I chose Use custom Android SDK Tools and then browsed to my installed SDK.

tekle12 commented 4 years ago

thanks very much it works correctly!! it takes me a minute

yish-mael commented 4 years ago

still doesnt work for me on ubuntu.

rom1v commented 4 years ago

@toles04 What is your exact error message?

adb version
which adb
echo $PATH
echo $ADB

?

tavareshenrique commented 4 years ago

@rom1v the same happens to me. I have the emulator on genymotion running, and when I give adb start-server this happens:

adb server version (41) doesn't match this client (39); killing...
ADB server didn't ACK
Full server startup log: /tmp/adb.1000.log
Server had pid: 30319
--- adb starting (pid 30319) ---
adb I 09-28 01:13:58 30319 30319 main.cpp:57] Android Debug Bridge version 1.0.39
adb I 09-28 01:13:58 30319 30319 main.cpp:57] Version 1:8.1.0+r23-5~18.04
adb I 09-28 01:13:58 30319 30319 main.cpp:57] Installed as /usr/lib/android-sdk/platform-tools/adb
adb I 09-28 01:13:58 30319 30319 main.cpp:57] 
adb I 09-28 01:13:58 30319 30319 adb_auth_host.cpp:416] adb_auth_init...
adb I 09-28 01:13:58 30319 30319 adb_auth_host.cpp:174] read_key_file '/home/henrique/.android/adbkey'...
adb I 09-28 01:13:58 30319 30319 adb_auth_host.cpp:391] adb_auth_inotify_init...
adb server killed by remote request
--- adb starting (pid 30324) ---
adb I 09-28 01:13:58 30324 30324 main.cpp:60] Android Debug Bridge version 1.0.41
adb I 09-28 01:13:58 30324 30324 main.cpp:60] Version 28.0.3-5475833
adb I 09-28 01:13:58 30324 30324 main.cpp:60] Installed as /home/henrique/Android/Sdk/platform-tools/adb
adb I 09-28 01:13:58 30324 30324 main.cpp:60] 

* failed to start daemon
error: cannot connect to daemon
rom1v commented 4 years ago

@tavareshenrique https://github.com/Genymobile/scrcpy/issues/527#issuecomment-517138314

You must use the same adb version everywhere.

tavareshenrique commented 4 years ago

@rom1v how I do this pls?

ghost commented 4 years ago

I've tried @elafefy11 's suggetion but when I choose the SDK folder (/usr/lib/android-sdk/), Genymotion says the folder doesn't contain any Android-SDK.

Any ideas? I'm also getting adb server version (40) doesn't match this client (39)

EDIT: SOLVED

All I did was to follow @elafefy11 suggestion and ignore the error msg Genymotion was showing.
In Genymotion, I went to Settings, ADB, checked "Use custom Android SDK Tools" and chose the path /usr/lib/android-sdk/platform-tools

namrata2202 commented 4 years ago

Just close all the applications & restart your system. Sometimes by doing so the address in use previously becomes free. This worked for me.

sudhirkhanger commented 4 years ago

I also encountered this issue because the Android SDK platform tools had a different version of adb then scrcpy.

$ scrcpy.adb version
Android Debug Bridge version 1.0.39
Version 1:8.1.0+r23-5~18.04
Installed as /snap/scrcpy/174/usr/lib/android-sdk/platform-tools/adb
$ adb version
Android Debug Bridge version 1.0.41
Version 29.0.5-5949299

I added the environmental variable for ADB and it resolved the issue.

~/.bashrc
export ADB=/home/sudhir/Documents/Android/android-sdk/platform-tools/adb

source ~/.bashrc or logout/login and the error go away.

uzairleo commented 4 years ago

/home/uzairleo/Pictures/error.png

reevrm commented 4 years ago

Help me. I try installing scrcpy on Deepin Linux when i run scrcpy it show

INFO: scrcpy 1.12.1 <https://github.com/Genymobile/scrcpy>
 [100%] /data/local/tmp/scrcpy-server.jar
 [server] ERROR: Exception on thread Thread[main,5,main]
 java.lang.IllegalArgumentException: The server version (1.12.1) does not match the client (1.12)
    at com.genymobile.scrcpy.Server.createOptions(Server.java:78)
    at com.genymobile.scrcpy.Server.main(Server.java:162)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:388)

Is there something I did wrong while installing it? i am using 1.12.1 prebuild server

rom1v commented 4 years ago

i am using 1.12.1 prebuild server

But you're using v1.12 client.

Just git pull.

fsevenm commented 4 years ago

I also encountered this issue because the Android SDK platform tools had a different version of adb then scrcpy.

$ scrcpy.adb version
Android Debug Bridge version 1.0.39
Version 1:8.1.0+r23-5~18.04
Installed as /snap/scrcpy/174/usr/lib/android-sdk/platform-tools/adb
$ adb version
Android Debug Bridge version 1.0.41
Version 29.0.5-5949299

I added the environmental variable for ADB and it resolved the issue.

~/.bashrc
export ADB=/home/sudhir/Documents/Android/android-sdk/platform-tools/adb

source ~/.bashrc or logout/login and the error go away.

Thanks a lot. This saves my hours.

ebarlotta commented 4 years ago

It work for me 1) adb version Android Debug Bridge version 1.0.39 Version 1:8.1.0+r23-5 Installed as /usr/lib/android-sdk/platform-tools/adb 2) adb kill-server 3) ps ax | grep adb 12290 ? S 0:00 /home/usuario/Android/Sdk/platform-tools/adb devices -l 12291 ? Ssl 0:00 adb -L tcp:5037 fork-server server --reply-fd 7 12332 pts/1 S+ 0:00 grep --color=auto adb 4) cd /home/usuario/Android/Sdk/platform-tools 5) mv adb adbxxx 6) ln -s /usr/lib/android-sdk/platform-tools/adb adb 7) Restart Android Studio

jonnimoura commented 4 years ago

Hi, what worked for me.

My Android Studio has an adb file inside /home/myuser/Android/Sdk/platform-tools/ and with the version 1.0.41.

Note where I put myuser could be your name, whatever, just locate your Android path.

My error was: adb server version (41) doesn't match this client (39)

When you type just adb in terminal, this command will be related with the adb archive inside /usr/bin.

So, I did these steps inside terminal:

  1. adb version Android Debug Bridge version 1.0.39
  2. cd /usr/bin
  3. sudo rm adb
  4. cd /home/myuser/Android/Sdk/platform-tools/
  5. Please check if there is an adb file inside your path
  6. Now copy to /usr/bin sudo cp adb /usr/bin
  7. adb version again Android Debug Bridge version 1.0.41

With this done, right now I have the same adb file to both of them, so, if in the future the SDK Manager ask to upgrade platform-tools, remember to do it again if the error back to appear.

ebarlotta commented 4 years ago

It's ok. But is better to do simlink to the folder directly and then, when sdk upgrade is'nt to make changes. 

Enviado desde Yahoo Mail para Android

El sáb., 11 de abr. de 2020 a la(s) 12:41, jonnimouranotifications@github.com escribió:

Hi, what worked for me.

My Android Studio has an adb file inside /home/myuser/Android/Sdk/platform-tools/ and with the version 1.0.41.

Note where I put myuser could be your name, whatever, just locate your Android path.

My error was: adb server version (41) doesn't match this client (39)

When you type just adb in terminal, this command will be related with the adb archive inside /usr/bin.

So, I did these steps inside terminal:

With this done, right now I have the same adb file to both of them, so, if in the future the SDK Manager ask to upgrade platform-tools, remember to do it again if the error back to appear.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

vishalv4476 commented 4 years ago

Hi, I am getting the same issue

adb server version (31) doesn't match this client (41); killing...

Android Debug Bridge version 1.0.31 I am using linux based system please help

rom1v commented 4 years ago

https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#conflicts-between-adb-versions

Fohsap commented 4 years ago

I'm facing this error starting from today:

Hello. The solution for this issue is like this:

  1. Click Start. Type "path" and press {ENTER}. Press {SPACE} to open "environmental variables".
  2. Double-click "path" under User Variables.
  3. Go over all of the path entries and look for "platform-tools" directories and delete those keys.
  4. Repeat step 2 and 3 for System Variables.
  5. Restart PowerShell/cmd (this will not work in previously-opened instances, I promise). 5b. You're probably FINISHED and can run ADB, now. But if ADB.exe is not in your path, follow the next step.
  6. Be sure that a new path has been added for whichever program has the newer version of ADB (you've probably already added a path entry). For example, if you are trying to run scrcpy, you should add the scrcpy).
  7. Thank Reptar, love thy neighbor, pay it forward, be a good guy, and remember we're all special and unique. <3
chrsrns commented 4 years ago

Hi, I am getting the same issue

adb server version (31) doesn't match this client (41); killing...

Android Debug Bridge version 1.0.31 I am using linux based system please help

For Ubuntu users, the problem may be because the Snap installation method has another version of ADB different from the custom one on your machine. I had the same problem.

I would suggest building the project yourself (its not that hard trust me) after removing the Snap version from your machine. It worked for me.

RishabhRyber commented 4 years ago

Even I am facing the same problem of scrcpy using the adb version 39 from /snap/scrcpy/221/usr/lib/android-sdk And my flutter is using adb version 41 from /home/rishabh/Android/Sdk/platform-tools The problem is I can't use both scrcpy and flutter at the same time, as starting one kills the other process

INFO: scrcpy 1.13 https://github.com/Genymobile/scrcpy adb server version (41) doesn't match this client (39); killing...

What i want is a way to let me work on both flutter and scrcpy togather. Thanks :)

rom1v commented 4 years ago

When you encounter this problem, I suggest to use a non-snap version. For example, you could build the client: https://github.com/Genymobile/scrcpy/blob/master/BUILD.md#prebuilt-server

chrsrns commented 4 years ago

I second the non-snap installation suggestion. It worked for me previously.

ronymesquita commented 3 years ago

On Linux with GNOME, is possible to edit the .desktop file and set the ADB environment variable in that. Example:

Exec=env ADB=$(which adb) guiscrcpy

Another option is use the Alacarte to do this. In this case the Exec part can be omitted.

env ADB=$(which adb) guiscrcpy

scrcpy

stari4ek commented 3 years ago

I'd like to confirm, that the adb bundled in snap (scrcpy.adb) with scrcpy is the problem. forcing to use system-wide adb with ADB=$(which adb) solves the issue.

I'd expect that proper implementation should prefer adb available from PATH if any, and otherwise fallback to bundled one

rom1v commented 3 years ago

I'd expect that proper implementation should prefer adb available from PATH if any, and otherwise fallback to bundled one

That's what scrcpy does (it just calls adb, so it ends up using the one in PATH).

The problem is that snap runs scrcpy in some "container", where the PATH is different.

So by setting ADB=$(which adb), you force a specific adb path, calculated from the shell (without snap "containerization").

stari4ek commented 3 years ago

It makes sense. Most probably, container grabs system wide variables, while my PATH is extended for current user only (using ~/.profile)

I'd expect that Linux/Mac devs install SDK using Android Studio and it's SDK Manager, which installs Platform Tools for current user. So, they update PATH for their own user. Obviously snap knows nothing about it.

Maybe this is worth mentioning in README for installation using snap?

ronymesquita commented 3 years ago

Yes, this can be many useful because this error is recurrent. Even exists an opened issue about it.