rdp-cli
Controlar un teléfono Android con un agente de IA por USB o Wi-Fi
Conecta Android 12 o posterior, captura la pantalla, introduce texto, transfiere archivos y toma el control de la misma sesión rdp-cli.
La base de compatibilidad es Android 12 o posterior. El dispositivo verificado es un Google Pixel 3 con Android 12; no implica haber probado todos los fabricantes o versiones posteriores.
Preparar el teléfono
- Activa las opciones de desarrollador y la depuración USB, conecta un cable de datos y acepta la autorización con el teléfono desbloqueado.
- Para Wi-Fi, activa la depuración inalámbrica y usa el código y el puerto de emparejamiento del teléfono. El puerto de conexión es distinto; no hace falta cable USB.
- La conexión USB en Windows necesita un controlador WinUSB adecuado para el teléfono y la arquitectura del equipo, incluida ARM64. rdp-cli no instala controladores ni cierra otras herramientas de depuración. En Linux (x86_64 / ARM64), permite que tu usuario habitual acceda al dispositivo USB del teléfono mediante la regla udev o el grupo de dispositivos adecuado y ejecuta los siguientes comandos en Bash. Ejecuta rdp-cli sin sudo. macOS utiliza la interfaz USB del sistema.
Sustituye DEVICE_SERIAL, SESSION, OBSERVATION, PHONE_IP y ambos puertos por valores reales. Guarda data.session de connect y usa data.observation de cada captura. Sustituye wifi:PHONE_GUID por el ID wifi: devuelto. Elige un nombre para PHONE_REF para guardar el emparejamiento en este ordenador. Introduce el código actual de seis dígitos cuando se solicite; el comando lo envía por la entrada estándar.
Windows PowerShell: rdp-cli → .\rdp-cli.exe.
Detectar y conectar
Selecciona explícitamente el ID del dispositivo detectado. La conexión no abre una ventana ni activa el audio.
rdp-cli android devices
rdp-cli connect --protocol adb --device usb:DEVICE_SERIAL --transport usb
rdp-cli screenshot --session SESSION --out before.png
Completar una pequeña tarea
Abre una aplicación de notas en el teléfono autorizado y crea una nota vacía. Revisa before.png, sustituye X e Y por las coordenadas reales del campo y toca. Inspecciona focused.png y guarda su data.observation como NEW_OBSERVATION antes de pegar. Comprueba el texto en result.png. No necesitas abrir un visor en el ordenador.
rdp-cli android touch --session SESSION --kind tap --x X --y Y --observation OBSERVATION
rdp-cli screenshot --session SESSION --out focused.png
Usa el método explícito de portapapeles para Unicode o texto multilínea. Sustituye el portapapeles del teléfono, sin sincronizarlo con el ordenador. Cambia el texto del ejemplo por tu nota. Tras una rotación o un valor de observación caducado, captura e inspecciona de nuevo.
rdp-cli android text --session SESSION --method clipboard --text "Tarea remota completada." --observation NEW_OBSERVATION
rdp-cli screenshot --session SESSION --out result.png
Archivos y carpetas
Crea un note.txt local con texto de prueba. Súbelo, guarda data.transfer_id como UPLOAD_TRANSFER y espera a completed. Descárgalo a otro archivo local, guarda el nuevo ID como DOWNLOAD_TRANSFER y espera otra vez a completed antes de comparar. Las rutas pertenecen a la carpeta de sesión del teléfono, no a directorios privados de aplicaciones. Los nombres existentes no se sobrescriben por defecto.
rdp-cli files upload --session SESSION --local ./note.txt --path note.txt
rdp-cli files status --session SESSION --transfer-id UPLOAD_TRANSFER
rdp-cli files download --session SESSION --path note.txt --local ./note-returned.txt
rdp-cli files status --session SESSION --transfer-id DOWNLOAD_TRANSFER
Conectar por Wi-Fi
Wi-Fi es una alternativa a USB. Si el teléfono ya tiene una sesión USB, ejecuta primero disconnect --session SESSION. Empareja y conecta con el ID devuelto y el puerto de conexión actual. Guarda el nuevo data.session y captura otra imagen antes de enviar entradas.
Para Wi-Fi, activa la depuración inalámbrica y usa el código y el puerto de emparejamiento del teléfono. El puerto de conexión es distinto; no hace falta cable USB.
macOS / Linux · Bash
printf '%s' 'Código de emparejamiento: '
IFS= read -r -s rdp_pair_code
printf '\n'
printf '%s' "$rdp_pair_code" | rdp-cli android pair --host PHONE_IP --port PAIR_PORT --code-stdin --save-device-auth PHONE_REF
unset rdp_pair_code
rdp-cli connect --protocol adb --device wifi:PHONE_GUID --transport wifi --host PHONE_IP --port CONNECT_PORT --device-auth-ref PHONE_REF
Windows · PowerShell
$pairingCode = Read-Host 'Código de emparejamiento' -AsSecureString
try {
[System.Net.NetworkCredential]::new('', $pairingCode).Password |
.\rdp-cli.exe android pair --host PHONE_IP --port PAIR_PORT --code-stdin --save-device-auth PHONE_REF
} finally {
$pairingCode.Dispose()
}
.\rdp-cli.exe connect --protocol adb --device wifi:PHONE_GUID --transport wifi --host PHONE_IP --port CONNECT_PORT --device-auth-ref PHONE_REF
Compartir el control
El agente, la ventana nativa y los navegadores autorizados comparten una sesión persistente. Pausa o toma el control cuando lo necesites.
rdp-cli watch --session SESSION --viewer window
rdp-cli watch --session SESSION --viewer web
Alcance
Si USB no muestra dispositivos, comprueba el cable de datos y los permisos. ADB_DEVICE_BUSY indica que otra herramienta de depuración ocupa el teléfono; cierra esa conexión expresamente. En Wi-Fi comprueba el puerto de conexión actual y la identidad guardada, sin confundirlo con el puerto de emparejamiento. El éxito de una acción confirma su envío; verifica el resultado con una nueva captura o el archivo terminado.
- La sesión controla la pantalla existente del teléfono. Los toques físicos y otras herramientas de depuración también pueden afectarla.
- Pegar Unicode modifica explícitamente el portapapeles del teléfono. No lee ni sincroniza el portapapeles del ordenador.
- El audio de reproducción requiere confirmar el aviso de compartir del sistema y respeta las restricciones de captura de las aplicaciones. El micrófono del teléfono es otra fuente; no se inyecta el micrófono del ordenador en las aplicaciones.
- El audio empieza desactivado y no se reanuda al reconectar. Los componentes temporales se despliegan solo en el teléfono autorizado; no requieren root ni cambiar de teclado.
Finalizar
Desactiva el audio y desconecta. Los archivos terminados y las aplicaciones del usuario permanecen en el teléfono.
rdp-cli audio android --session SESSION --source off
rdp-cli disconnect --session SESSION