REBELION_EN_LA_GRANJA/02_device_lab
s1to 7caa240c2e Ajustar al manual del M1000e, añadir diagramas y docs de operación
Especificaciones tomadas del manual del propietario del gabinete
PowerEdge M1000e (Dell, modelo BMX01, rev. A06, oct. 2019), que corrige
el spec sheet comercial usado hasta ahora.

Hardware:

- Peso máximo 200,5 kg, no 179. Profundidad 75,5 cm
- Seis fuentes y nueve ventiladores obligatorios, se usen 3 blades o 16.
  Toda bahía vacía necesita relleno
- Conector CEI/IEC C20 a 16 A. La fuente de 3.000 W exige 200-240 V
- Irrupción de 55 A por fuente durante 10 ms: un magnetotérmico de curva
  C salta, hace falta curva D
- Temperatura de funcionamiento continuo 10-35 °C
- ECM obligatorio con blades M630 de 120 W o más, o por encima de 30 °C

Red:

- Fabric A (ranuras A1/A2) es la Ethernet integrada de cada blade, así
  que no hacen falta tarjetas intermedias. Fabrics B y C sí las
  exigirían y no se usan
- Pendiente saber si en A1/A2 hay un switch o un módulo de paso a
  través: cambia el montaje de red por completo

Costes recalculados: el suelo fijo del chasis sube de 350 a ~500 W al
contar los nueve ventiladores, los módulos de I/O y las pérdidas de las
seis fuentes. 360 €/mes a 24/7, 59 €/mes por ventanas. Que las fuentes y
los ventiladores sean obligatorios convierte en hecho documentado lo que
antes era estimación: los pilotos parciales en el chasis son el peor
caso posible.

Documentación:

- assets/ con cuatro diagramas SVG propios: arquitectura, chasis, stack
  de software y modos de red
- docs/usabilidad.md: órdenes, flujos de trabajo, problemas conocidos y
  ergonomía del hardware
- Diagramas ASCII del panel frontal, el posterior y la topología de
  fabrics en hardware_m1000e.md
- Eliminada la parte de charla y divulgación, fuera del alcance del repo
2026-08-08 20:04:00 +02:00
..
ansible Ajustar al manual del M1000e, añadir diagramas y docs de operación 2026-08-08 20:04:00 +02:00
connect.sh Rebelión en la granja — investigación y laboratorio de dispositivos 2026-08-08 19:42:14 +02:00
docker-compose.yml Rebelión en la granja — investigación y laboratorio de dispositivos 2026-08-08 19:42:14 +02:00
hardware_m1000e.md Ajustar al manual del M1000e, añadir diagramas y docs de operación 2026-08-08 20:04:00 +02:00
install-apk.sh Rebelión en la granja — investigación y laboratorio de dispositivos 2026-08-08 19:42:14 +02:00
README.md Ajustar al manual del M1000e, añadir diagramas y docs de operación 2026-08-08 20:04:00 +02:00

Device lab con redroid

La vía 1: laboratorio de dispositivos Android propio sobre el rack. Legal, reutilizable, y el primer uso real es probar oasis_mobile a escala — incluido el escenario de dos APKs que se tienen que ver entre sí (el bloqueo de capa 1).

No hay móviles físicos. Cada "dispositivo" es un contenedor redroid: Android real sobre el kernel de una máquina Debian.

Dos caminos

Para qué
ansible/ Los 16 blades del M1000e, provisionados y controlados desde un sitio. Es la vía principal.
Este documento Un solo nodo, a mano. Sirve para entender las piezas y para trastear en el sobremesa.

El hardware está descrito en hardware_m1000e.md.

Host

Comprobado el 2026-08-08 sobre esta máquina:

CPU 16 cores
RAM 62 GB
SO Debian 12 bookworm, kernel 6.1.0-51-amd64
Docker no instalado
binder binder_linux.ko presente, pero CONFIG_ANDROID_BINDERFS no está activado

Con 2 GB por instancia y dejando margen al host, 1220 instancias redroid simultáneas es el rango realista aquí. No son las 3060 de un nodo de 32c/128 GB.

Prerrequisitos

1. binder — el punto donde esto se atasca

El kernel de Debian trae binder_linux como módulo pero sin binderfs, así que redroid no puede crear los devices por sí mismo. Hay que cargarlos a mano con los tres nombres que Android espera:

sudo modprobe binder_linux devices=binder,hwbinder,vndbinder
ls -l /dev/binder /dev/hwbinder /dev/vndbinder   # deben existir

Para que persista entre reinicios:

echo binder_linux | sudo tee /etc/modules-load.d/redroid.conf
echo "options binder_linux devices=binder,hwbinder,vndbinder" | sudo tee /etc/modprobe.d/redroid.conf

Si modprobe falla, la alternativa es el módulo DKMS de Waydroid (binder_linux-dkms), que sí aporta binderfs.

2. Docker

sudo apt install docker.io docker-compose-v2
sudo usermod -aG docker $USER   # requiere volver a entrar en sesión

3. adb

sudo apt install adb

Arrancar

docker compose up -d
./connect.sh          # conecta adb a las instancias levantadas
adb devices           # deben salir 127.0.0.1:5555 .. 5558

Instalar un APK en todas:

./install-apk.sh ~/COFRE/CODERS/OASIS_APK/<algo>.apk

Ver una instancia:

sudo apt install scrcpy
scrcpy -s 127.0.0.1:5555

Escalar

docker-compose.yml trae 4 instancias como punto de partida. Para más, replicar el bloque cambiando nombre y puerto. A partir de ~8 conviene generar el compose con un script en vez de mantenerlo a mano, o pasar a GADS.

Para la flota entera

Todo lo de arriba, pero en 16 blades y sin hacerlo a mano: ansible/. Ahí está el preflight que identifica el modelo de blade solo, el despliegue completo, y fleet para hablar con todos los Android desde un único sitio.

Siguiente capa: GADS

GADS da UI web, gestión de dispositivos y Appium integrado encima de esto. Merece la pena cuando el número de instancias pase de una decena o cuando haga falta lanzar tests automatizados en vez de trastear a mano.

Limitación que hay que tener presente

Estas instancias son detectables como emulador. Sirven para probar tu propia app, no para interactuar con plataformas que hacen atestación de dispositivo (ver ../01_investigacion/stack_tecnico.md).