Adb: failed to check server version: protocol fault

Hi,

I set following in my NixOS configuration:

  programs.adb.enable = true;
  users.users.imincik.extraGroups = ["adbusers"];

and when I try to run adb devices I get following error message:

ADB_TRACE=all adb devices
adb D 08-21 12:07:03 29147 29147 adb_trace.cpp:187] Android Debug Bridge version 1.0.41
adb D 08-21 12:07:03 29147 29147 adb_trace.cpp:187] Version 34.0.1-android-tools
adb D 08-21 12:07:03 29147 29147 adb_trace.cpp:187] Installed as /nix/store/b0w8p5pvdbiva53vf7cn9g9sm1zilpwa-android-tools-34.0.1/bin/adb
adb D 08-21 12:07:03 29147 29147 adb_trace.cpp:187]
adb D 08-21 12:07:03 29147 29147 adb_client.cpp:160] _adb_connect: host:version
adb D 08-21 12:07:03 29147 29147 adb_io.cpp:107] writex: fd=3 len=16 30303063686f73743a76657273696f6e 000chost:version
adb D 08-21 12:07:03 29147 29147 adb_io.cpp:81] readx: fd=3 wanted=4
adb D 08-21 12:07:03 29147 29147 adb_io.cpp:97] readx: fd=3 wanted=4 got=4 5353482d SSH-
adb: failed to check server version: protocol fault (status 53 53 48 2d?!)

Attempt to start server ends on the same error:

ADB_TRACE=all adb start-server
adb D 08-21 12:07:44 29196 29196 adb_trace.cpp:187] Android Debug Bridge version 1.0.41
adb D 08-21 12:07:44 29196 29196 adb_trace.cpp:187] Version 34.0.1-android-tools
adb D 08-21 12:07:44 29196 29196 adb_trace.cpp:187] Installed as /nix/store/b0w8p5pvdbiva53vf7cn9g9sm1zilpwa-android-tools-34.0.1/bin/adb
adb D 08-21 12:07:44 29196 29196 adb_trace.cpp:187]
adb D 08-21 12:07:44 29196 29196 adb_client.cpp:351] adb_connect: service: host:start-server
adb D 08-21 12:07:44 29196 29196 adb_client.cpp:160] _adb_connect: host:version
adb D 08-21 12:07:44 29196 29196 adb_io.cpp:107] writex: fd=3 len=16 30303063686f73743a76657273696f6e 000chost:version
adb D 08-21 12:07:44 29196 29196 adb_io.cpp:81] readx: fd=3 wanted=4
adb D 08-21 12:07:44 29196 29196 adb_io.cpp:97] readx: fd=3 wanted=4 got=4 5353482d SSH-
error: protocol fault (status 53 53 48 2d?!)

Is somebody successfully using adb on NixOS ? Any suggestions how can I get adb to work properly ?

I am on NixOS 23.5.

nixos-version
23.05.2835.b30c68669df7 (Stoat)

Thanks

Hi,

I successfully use adb on NixOS 23.05. I’ve basically the same settings as you have. See also Android - NixOS Wiki. My invocation (Device has enabled USB debugging mode) looks like this:

$ adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
650dfbc3	device

Could you try to reboot your machine and then try again adb devices?

Cheers

Thank you very much for confirmation @bwolf . I get this error after reboot. But at least I know that it should work.

I can’t find the issue.

One suspicious thing I found is that if I run strace, there are many “no such file or directory” errors like this:

$ strace adb devices

...
openat(AT_FDCWD, "/nix/store/rkqghw7cc27qxf6iiqgg95rlzvf22s05-protobuf-3.21.12/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/69jpyha5zbll6ppqzhbihhp51lac1hrp-zlib-1.2.13/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/2av8x1ipwfm5n8nrx1i18bygza6v8b6g-brotli-1.0.9-lib/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/fdcvffhq0l302r41xvs1idxi4bpria5j-lz4-1.9.4/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/jwvvq9nyfrjvj10pl533my6d3gpn9nq0-zstd-1.5.5/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/igjn1jlnf82facxjgvc06if1mllra29h-libusb-1.0.26/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/glibc-hwcaps/x86-64-v3/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/glibc-hwcaps/x86-64-v3", 0x7ffe5ba45c80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/glibc-hwcaps/x86-64-v2/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/glibc-hwcaps/x86-64-v2", 0x7ffe5ba45c80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3

...

but ldd output looks good.

ldd $(readlink $(which adb))
	linux-vdso.so.1 (0x00007ffcdb3f4000)
	libprotobuf.so.32 => /nix/store/rkqghw7cc27qxf6iiqgg95rlzvf22s05-protobuf-3.21.12/lib/libprotobuf.so.32 (0x00007f581f800000)
	libz.so.1 => /nix/store/69jpyha5zbll6ppqzhbihhp51lac1hrp-zlib-1.2.13/lib/libz.so.1 (0x00007f581fc6b000)
	libpthread.so.0 => /nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/libpthread.so.0 (0x00007f581fc66000)
	libbrotlicommon.so.1 => /nix/store/2av8x1ipwfm5n8nrx1i18bygza6v8b6g-brotli-1.0.9-lib/lib/libbrotlicommon.so.1 (0x00007f581fc43000)
	libbrotlidec.so.1 => /nix/store/2av8x1ipwfm5n8nrx1i18bygza6v8b6g-brotli-1.0.9-lib/lib/libbrotlidec.so.1 (0x00007f581fc33000)
	libbrotlienc.so.1 => /nix/store/2av8x1ipwfm5n8nrx1i18bygza6v8b6g-brotli-1.0.9-lib/lib/libbrotlienc.so.1 (0x00007f581fb94000)
	liblz4.so.1 => /nix/store/fdcvffhq0l302r41xvs1idxi4bpria5j-lz4-1.9.4/lib/liblz4.so.1 (0x00007f581fb5b000)
	libusb-1.0.so.0 => /nix/store/igjn1jlnf82facxjgvc06if1mllra29h-libusb-1.0.26/lib/libusb-1.0.so.0 (0x00007f581fb3d000)
	libzstd.so.1 => /nix/store/jwvvq9nyfrjvj10pl533my6d3gpn9nq0-zstd-1.5.5/lib/libzstd.so.1 (0x00007f581f733000)
	libstdc++.so.6 => /nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/libstdc++.so.6 (0x00007f581f400000)
	libm.so.6 => /nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/libm.so.6 (0x00007f581f653000)
	libgcc_s.so.1 => /nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/libgcc_s.so.1 (0x00007f581fb1a000)
	libc.so.6 => /nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/libc.so.6 (0x00007f581f21a000)
	/nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/ld-linux-x86-64.so.2 => /nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib64/ld-linux-x86-64.so.2 (0x00007f581fc8c000)
	libudev.so.1 => /nix/store/m2arm589159w6z3pk89p88damciyzwqv-systemd-minimal-253.6/lib/libudev.so.1 (0x00007f581f1dc000)
	libatomic.so.1 => /nix/store/843dqq10jdkalr2yazaz6drx334visrb-gcc-12.2.0-lib/lib/libatomic.so.1 (0x00007f581fb0d000)
	libcap.so.2 => /nix/store/pc72sd5hazqgichmy0fhzq85z5l5hj5q-libcap-2.68-lib/lib/libcap.so.2 (0x00007f581fb01000)

Looks like it is missing path to libstdc++.so.6.

Any ideas ?

Issue created - android-tools: adb: failed to check server version: protocol fault · Issue #253093 · NixOS/nixpkgs · GitHub