# MEmu ADB connect: puerto 21503 y conexión con MAS

> Conecta MEmu Play a Macro Automation Studio por ADB en el puerto 21503, añádelo como dispositivo, arregla el error offline y usa macros de MAS, no el grabador.

Source: https://automationmacro.com/es/docs/memu-setup-guide (Dispositivos, updated 2026-09-05)

Esta guía explica el proceso de MEmu ADB connect con Macro Automation Studio (MAS), y en qué se diferencian las macros de MAS del grabador de macros de MEmu. MEmu ADB connect es un proceso de Windows, porque MEmu se publica solo para Windows, así que todos los pasos de abajo son pasos de Windows.

## Antes de empezar

- MAS instalado y con sesión iniciada en Windows 10 u 11. MAS es una descarga gratuita para la prueba; consíguelo en la [página de descarga](/download).
- MEmu instalado desde [memuplay.com](https://www.memuplay.com/) y abierto al menos una vez.
- La instancia arrancada del todo hasta la pantalla de inicio de Android.
- La virtualización activada en la BIOS para una instancia estable.

## 1. Instalar MEmu

1. Descarga MEmu desde el sitio del fabricante y ejecuta el instalador.
2. Inicia MEmu y espera a la pantalla de inicio.
3. Inicia sesión en las apps que quieres automatizar antes de añadir el dispositivo a MAS.

## 2. Fijar una resolución

MAS compara las imágenes de plantilla píxel a píxel. Abre los ajustes de MEmu, elige una resolución fija y mantenla. Las macros escritas para la línea base de MAS esperan **540x960** en vertical a **240 DPI**; una macro que escribas tú espera la resolución que capturaste en Asset Lab. Reinicia la instancia si MEmu lo pide.

> [!WARNING]
> Cambiar la resolución después de capturar las plantillas desplaza todas las coincidencias. Elige una resolución una vez y mantenla.

## 3. Activar ADB en MEmu

La documentación oficial de MEmu no muestra ningún interruptor de ADB. Una instancia en marcha reenvía su puerto adb de Android al equipo anfitrión como `127.0.0.1:21503`, que es la dirección que usa la propia guía de línea de comandos de MEmu. Si tu versión de MEmu tiene una opción de ADB o de desarrollador en Configuración, déjala activada. Inicia la instancia y espera a la pantalla de inicio antes de continuar.

## 4. El puerto ADB de MEmu y cómo lo busca MAS

La instancia predeterminada de MEmu escucha en el **21503**. MAS no usa `adb devices` para descubrir emuladores. Recorre los procesos en ejecución y conserva los puertos que cumplen estas reglas:

- El nombre del proceso contiene `memuheadless` o `memuhyper`.
- El puerto es 21503 o superior, termina en 3 y está por debajo de 30000. Por tanto, puertos como 21513 y 21523 también coinciden.
- El socket escucha en `127.0.0.1`.

Los puertos que coinciden aparecen en el diálogo Añadir dispositivo con la etiqueta `MEmu`, por ejemplo `21503 - MEmu`. La búsqueda se ejecuta al abrir un grupo de dispositivos y cada vez que haces clic en **Actualizar**.

## 5. MEmu ADB connect: conectar MEmu Play en MAS

1. Abre **Grupos de dispositivos** en la barra lateral y abre un grupo, o crea uno.
2. Haz clic en **Añadir dispositivo**.
3. Escribe un **Nombre del dispositivo** de hasta 50 caracteres.
4. En **Puerto**, elige la entrada `MEmu` de esta instancia. Haz clic en **Actualizar** si la lista está vacía.
5. Si MEmu usa un puerto que no encaja en la regla de arriba, elige **Puerto personalizado** y escríbelo. MAS acepta de 1024 a 65535.
6. Opcionalmente elige una **Macro de inicio**.
7. Haz clic en **Añadir dispositivo** y luego en **Iniciar** en la tarjeta del dispositivo.

La tarjeta muestra **Conectando** y después **En ejecución**. MAS inicia su servidor adb, elimina cualquier entrada obsoleta de `127.0.0.1:<port>` y ejecuta `adb connect` contra ella.

## Macros en MEmu

El grabador de macros de MEmu captura toques y deslizamientos en coordenadas fijas y los repite, opcionalmente en bucle. No mira la pantalla, así que una carga lenta, un aviso emergente o un botón que se movió rompen la secuencia, y la rutina solo funciona dentro de MEmu.

Una macro de MAS es un script de Python que comprueba la pantalla antes de actuar. Encuentra un botón con coincidencia de plantillas, lee texto con OCR, espera con reintentos y se ramifica según lo que ve. El mismo script se ejecuta en MEmu, en otros emuladores y en un dispositivo en la nube sin cambios, porque MAS controla el dispositivo por adb.

- Para reconstruir una rutina grabada como una macro que mira la pantalla, sigue [Macros con reconocimiento de imagen](/docs/guides/image-recognition-macros).
- Para repetirla hasta que se cumpla una condición, o ejecutarla según un horario, lee [Bucles, condiciones de parada y programación](/docs/guides/loops-and-scheduling).
- Las macros del Marketplace se instalan como macros de MAS y se ejecutan en el dispositivo que les asignes.

> [!NOTE]
> Detén el grabador de MEmu antes de iniciar un dispositivo en MAS. Los dos envían entrada a la misma pantalla y se interferirán.

## Varias instancias de MEmu

Cada instancia del gestor de instancias múltiples de MEmu escucha en su propio puerto. Añade cada una como un dispositivo aparte en el mismo grupo de dispositivos, asigna una macro y un perfil de ajustes por dispositivo, y usa **Iniciar todos** y **Detener todos** en el grupo. Consulta [Grupos de dispositivos](/docs/device-groups) para argumentos y proxies por dispositivo.

## Solución de problemas

### MEmu ADB connect

La tarjeta del dispositivo muestra **Error** o "Failed to start device", o MAS no lista ninguna entrada `MEmu`. Revisa estas causas:

- La instancia sigue arrancando. Espera a la pantalla de inicio, haz clic en **Actualizar** e inicia de nuevo.
- El puerto no encaja en la regla de búsqueda, así que MAS lo omitió. Usa **Puerto personalizado** con el número que usa MEmu.
- El puerto pertenece a otra instancia. Corrígelo con **Editar dispositivo** en la tarjeta.
- La búsqueda informó de "Failed to scan emulator ports". Reinicia MAS y abre el diálogo de nuevo.
- adb imprimió "connection refused" o "cannot connect" en los logs del dispositivo. Nada escucha en ese puerto; reinicia la instancia y vuelve a comprobar el número.

### MEmu ADB device offline

adb marca un dispositivo como `offline` cuando el demonio adb dentro de la instancia deja de responder, lo que suele ocurrir tras una suspensión, una actualización o un segundo servidor adb en la máquina. Haz clic en **Detener** en la tarjeta, reinicia la instancia de MEmu, cierra cualquier otra herramienta que ejecute su propio servidor adb y haz clic en **Iniciar**. MAS desconecta la entrada obsoleta y vuelve a conectar en cada inicio. Si sigue offline, reinicia MAS para que su servidor adb arranque limpio.

### El grabador de macros de MEmu frente a MAS

Una rutina grabada en MEmu no se puede importar en MAS, porque MAS solo ejecuta macros en Python. Recréala: captura los botones como plantillas en Asset Lab, púlsalos con `find_object_retry` y haz un bucle con una condición de parada. El resultado sobrevive a avisos emergentes, cargas lentas y cambios de diseño que rompen una secuencia grabada, y se ejecuta en cualquier dispositivo que controle MAS. Si una macro de MAS se atasca, abre **Logs** en la tarjeta del dispositivo: `ImageNotFoundError` y `TimeoutError` nombran el paso que falló.

## Contrólalo desde Python

Con la tarjeta en **En ejecución**, el `src/app.py` de una macro controla la instancia a través del paquete `mas`. El puerto lo elige MAS, así que los scripts nunca lo mencionan.

```python
import mas

size = mas.get_screen_size()
mas.log(f"MEmu screen is {size.width}x{size.height}")

match = mas.find_object_retry(1234, total_tries=3, time_sleep=2.0)
if match:
    mas.click(match.x, match.y)
```

Lee la [introducción al SDK](/docs/sdk) para conocer todos los espacios de nombres y [Controlar un emulador Android desde Python](/docs/guides/control-an-emulator-from-python) para un primer script completo.
