# Manual de despliegue — TV boxes H313 (clonacion identica al piloto)

Este manual replica **exactamente** la configuracion del box piloto. Requiere portatil Windows, ADB y **modo desarrollador + depuracion ADB** activados.

---

## 1. Requisitos en el portatil

| Herramienta | Comprobacion |
|-------------|--------------|
| ADB | `adb version` |
| PowerShell 5.1+ | `$PSVersionTable.PSVersion` |
| Proyecto | `c:\xampp\htdocs\Android-super-accelerar-rom` |
| APKs | `pkg\ojo.apk`, `pkg\cctv-kiosk-boot.apk` |

---

## 2. Preparar cada TV box (una sola vez)

### 2.1 Modo desarrollador
1. Ajustes → Acerca → Version de compilacion × 7
2. Opciones de desarrollador: Depuracion USB ON, Depuracion inalambrica ON

### 2.2 ADB
```powershell
adb connect IP:5555
adb -s IP:5555 root
adb -s IP:5555 shell id   # debe ser uid=0(root)
```

---

## 3. Despliegue automatico (un comando)

```powershell
cd c:\xampp\htdocs\Android-super-accelerar-rom
.\deploy\Deploy-CctvBox.ps1 -DeviceIp 192.168.1.15:5555
```

Variantes:
```powershell
.\deploy\Deploy-CctvBox.ps1 -DeviceIp IP:5555                    # Ojo 9 cam (default)
.\deploy\Deploy-CctvBox.ps1 -DeviceIp IP:5555 -CctvApp Ojo       # mosaico 3x3
.\deploy\Deploy-CctvBox.ps1 -DeviceIp IP:5555 -WallMode rotate   # 4 cam paginadas (mas fluido)
.\deploy\Deploy-CctvBox.ps1 -DeviceIp IP:5555 -CctvApp DMSS      # solo si necesitas app oficial
.\deploy\Deploy-CctvBox.ps1 -DeviceIp IP:5555 -SkipLaunch        # solo scripts + boot
```

---

## 4. Que instala el deploy (persistente tras reinicio)

### Arranque automatico (CRITICO)
El kiosco **NO** se lanza con `nohup` temporal. Sobrevive reinicios asi:

1. Libera espacio en `/` borrando apps sistema no usadas (Traceur, Music, Miracast…)
2. Escribe `/system/bin/appsdisable` con el script de kiosco
3. Init ya ejecuta `appsdisable` al `sys.boot_completed=1` (mecanismo de fabrica)
4. Ademas instala APK `com.cctv.kioskboot` como respaldo BOOT_COMPLETED

### Scripts en `/data/local/tmp/`
| Archivo | Funcion |
|---------|---------|
| `boot-kiosk.sh` | Kiosco + menu + guardia 50s |
| `boot-menu.sh` | Menu 15s: tecla 1/2/3 |
| `dmss-play-16.sh` | Mosaico 16 camaras DMSS |
| `launch-ojo.sh` / `launch-vesta.sh` | Alternativas |
| `accel-cctv-*.sh` | Tune CPU/WiFi/pantalla |
| `cctv-app.conf` | App por defecto |

### Apps
| App | Paquete | Estado |
|-----|---------|--------|
| DMSS | `com.mm.android.DMSS` | Oficial Dahua — **recomendada** |
| Ojo RTSP | `it.danieleverducci.ojo` | Ligera (~30 MB) — URLs en `ojo-cameras.txt` |
| Vesta | `com.vesta.vestaadvanced` | Ligera; license Google puede bloquear |
| CCTV Kiosk Boot | `com.cctv.kioskboot` | Receptor BOOT_COMPLETED |

---

## 5. Menu de arranque (mando)

Tras reinicio (~15 s, brillo parpadea):

| Tecla | App |
|-------|-----|
| **1** o **OK** | DMSS mosaico 16 |
| **2** | Vesta |
| **3** | Ojo RTSP |
| *(nada)* | Valor en `cctv-app.conf` |

---

## 6. Checklist de validacion (por box)

Tras deploy + **reinicio**:

```powershell
adb -s IP:5555 root
# Esperar ~2 minutos tras reinicio
adb -s IP:5555 shell "logcat -d -s cctv_boot cctv_kiosk | tail -10"
# Debe aparecer:
#   cctv_boot: appsdisable-kiosk ejecutado
#   cctv_kiosk: boot-kiosk inicio APP=DMSS
#   cctv_kiosk: DMSS mosaico 16 (celdas=16)
```

- [ ] `appsdisable-kiosk ejecutado` en log tras reboot
- [ ] `celdas=16` en log
- [ ] Pantalla density 160 / 1280×720
- [ ] Reinicio → mosaico vuelve solo
- [ ] Streams cargan (solo en red cliente)

---

## 7. Apps alternativas

### Ojo RTSP (ligera)
- APK: `pkg\ojo.apk` (F-Droid 0.1.4)
- URLs: `deploy\ojo-cameras.txt` (16 RTSP Dahua subtype=1)
- Fuera de red cliente: se abre mosaico pero streams timeout (normal)
- Probar: `adb shell "echo CCTV_APP=Ojo > /data/local/tmp/cctv-app.conf; sh /data/local/tmp/launch-ojo.sh"`

### Vesta
- Ya instalada en piloto; license Google Play a veces bloquea
- Bypass: `MainActivity` directa (`launch-vesta.sh`)
- Menos fiable que DMSS para NVR Dahua

### EZ Vision
- **No compatible** con NVR Dahua (Hikvision/EZVIZ)

---

## 8. Aceleracion

Tope hardware H313: **1296 MHz**. Ya aplicado: governor performance, GPU 600, animaciones off, WiFi sleep off, bloat disabled. No hay overclock real fiable.

---

## 9. Streaming

| Condicion | Expectativa |
|-----------|-------------|
| Fuera de red cliente | Loading/timeout — normal |
| Red 192.168.1.x + sub-streams H.265 | Viable WiFi 5 GHz |
| 16 main streams | No viable en H313 |

---

## 10. Rollback

```powershell
adb -s IP:5555 shell "pkill -f boot-kiosk.sh"
# Restaurar appsdisable original (si hay backup)
# O dejar appsdisable vacio / sin kiosco:
adb -s IP:5555 shell "mount -o rw,remount /; echo '#!/system/bin/sh' > /system/bin/appsdisable"
adb -s IP:5555 uninstall com.cctv.kioskboot
```

---

## 11. Orden de clonacion (7 boxes)

1. Piloto validado (reinicio OK + celdas=16)
2. Boxes 2–7: mismo `Deploy-CctvBox.ps1 -DeviceIp IP:5555`
3. Registrar IPs en `DISPOSITIVOS.md`

**Comando unico por box:**
```powershell
.\deploy\Deploy-CctvBox.ps1 -DeviceIp IP:5555
```
