Solución al Error 'Connection reset by peer' de ADB

El error "Connection reset by peer" en ADB (Android Debug Bridge) es un problema común que puede impedir la comunicación entre el entorno de desarrollo y los dispositivos o emuladores Android. Este fallo suele manifestarse con mensajes como los siguientse al intentar interactuar con ADB:

adb devices
error: protocol fault (couldn't read status): Connection reset by peer

adb shell
error: protocol fault (couldn't read status): Connection reset by peer

adb start-server
adb: failed to check server version: protocol fault (couldn't read status): Connection reset by peer

Pasos para Resolver el Problema

A continuación, se detalla una serie de pasos que han demostrado ser efectivos para solucionar este tipo de error de conexión con ADB:

  1. Mover o Renombrar la Configuración de ADB

    A menudo, la corrupción de los archivos de configuración de ADB o Android Studio puede causar estos problemas. Para descartarlo, mueva temporalmente el directorio de configuración .android:

    mv ~/.android ~/Descargas/backup_config_android
    

    Esto creará un nuevo directorio .android con una configuración limpia cuando ADB o Android Studio se reinicien.

  2. Desactivar mDNS para Depuración Inalámbrica en Android Studio

    El servicio mDNS (Multicast DNS) puede interferir con la comunicación de ADB, especialmente en ciertas configuraciones de red.

    • En Android Studio, acceda a File / Settings (o Android Studio / Preferences en macOS).
    • Navegue a Build, Execution, Deployment / Debugger.
    • Dentro de la sección Android Debug Bridge (adb), desmarque la opción "Enable adb mDNS for wireless debugging".
  3. Reiniciar Android Studio

    Después de realizar los cambios en la configuración, es crucial reiniciar Android Studio para que se apliquen correctamente.

  4. Reiniciar el Sistema Operativo

    Un reinicio completo del ordenador puede ayudar a liberar puertos, resetear servicios y resolver conflictos subyacentes del sistema que podrían estar afectando a ADB.

  5. Reiniciar el Servidor ADB

    Finalmente, una vez que el sistema se ha reiniciado, fuerce el cierre y el inicio del servidor ADB:

    adb kill-server
    adb start-server
    
    

    Ahora, intente ejecutar adb devices nuevamente para verificar si la conexión se ha restablecido.

Proceso de Diagnóstico

Durante la investigación de este tipo de problemas, pueden realizarse varias comprobaciones útiles:

Verificación de Puertos Ocupados

Los errores de conexión de ADB a menudo pueden estar relacionados con conflictos de puertos. ADB utiliza principalmente el puerto 5037 para su servidor y, si la depuración inalámbrica está activa, puede involucrar el puerto 5353 para mDNS.

Para comprobar si algún proceso está ocupando estos puertos, puede ejecutar los siguientes comandos:

# Intentar iniciar el servidor ADB en modo no-daemon para ver la salida directa
adb nodaemon start-server

# Verificar el puerto mDNS (UDP)
netstat -tuln | grep 5353

# Verificar el puerto del servidor ADB (TCP)
netstat -tuln | grep 5037

Si estos comandos muestran procesos escuchando en dichos puertos y no corresponden a ADB, podría ser la causa del problema. Es posible que deba identificar y detener esos procesos.

Activación del Trazado Detallado de ADB

Para obtener una visión más profunda de lo que está sucediendo cuando ADB falla, se puede activar el registro de traza detallado:

export ADB_TRACE=all
adb start-server

Al analizar la salida detallada del servidor ADB, es posible identificar el punto exacto de la falla, como se muestra en este fragmento:

adb D 08-09 09:08:44 64447 64447 adb_io.cpp:88] readx: fd=3 error 104: Connection reset by peer

Este mensaje indica que, al intentar leer datos del socket (fd=3), la conexión fue reiniciada por el par (el cliente o el sistema operativo), confirmando la naturaleza del error.

Referencia útil: Linux Mint Forums - adb Connection reset by peer

Etiquetas: ADB android-debug-bridge connection-reset-by-peer android-studio debugging

Publicado el 6-19 18:12