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:
-
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_androidEsto creará un nuevo directorio
.androidcon una configuración limpia cuando ADB o Android Studio se reinicien. -
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".
-
Reiniciar Android Studio
Después de realizar los cambios en la configuración, es crucial reiniciar Android Studio para que se apliquen correctamente.
-
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.
-
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-serverAhora, intente ejecutar
adb devicesnuevamente 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