Setup final: Movistar Home convertido en tablet con AntiX Linux


Después de mucho probar, investigar y fallar, finalmente conseguí que el Movistar Home funcione como un dispositivo táctil completamente usable con AntiX Linux. Eso si, como vimos en post anteriores, en primer lugar tenemos que soldarle un conector USB ( lo cual variará segon el modelo de Movistar Home).

Desde ahí instalamos AntiX y lo mas importante seleccionamos pantalla horizontal y lo ajustemos para que salve la hora y le recupere desde internet en caso de fallo de alimentación. Como la conexión del USB puede fallar y además no es cómodo tener que estar usando ratón y teclado lo ideal es usar la pantalla capacitiva con un teclado virtual.

Aquí está el resumen de todo el proceso: lo que falló, lo que funcionó y cómo dejé el sistema estable y funcional.

Antes de empezar para una mayor comodidad todos los comandos ejecutados desde la consola se hacen en remota , para ello el acceso a Movistar Home se hizo a traves de vnc. Para ello usamos desde el pc vncviewer64-1.16.0 y desde Movistar Home el servidor instalado previamente de vncserver . Hecho esto debemos averiguar la IP previamente usando el comando ifconfig .

Veamos detenidamente los pasos seguidos:

Acceso remoto por VNC

Antes de empezar, para una mayor comodidad, todos los comandos ejecutados desde la consola se hacen en remoto. Para ello, el acceso al Movistar Home se hizo a través de VNC.

Configuración desde el PC (cliente):

  • Usamos desde el PC el cliente VNC: vncviewer64-1.16.0 (o cualquier otro cliente VNC como TigerVNC, Remmina, etc.)

Configuración desde el Movistar Home (servidor):

  1. Primero, averiguamos la IP del Movistar Home en la red local:
ifconfig

O también:

ip addr show

Buscamos la dirección IP en la interfaz wlan0 o eth0 (ej. 192.168.1.xxx).

  1. Instalamos el servidor VNC en AntiX:
sudo apt update
sudo apt install tigervnc-standalone-server
  1. Configuramos la contraseña de acceso VNC:
vncpasswd

Nos pedirá introducir una contraseña (y opcionalmente una de solo vista). La guardará en ~/.vnc/passwd.

  1. Iniciamos el servidor VNC en el puerto 5901 (display :1):
vncserver :1 -geometry 1024x600 -depth 24
  • :1 es el display número 1 (puerto 5901)
  • -geometry 1024x600 ajusta la resolución a la pantalla del Movistar Home
  • -depth 24 establece la profundidad de color
  1. Desde el PC, nos conectamos al Movistar Home:
vncviewer 192.168.1.xxx:1

(O usar la interfaz gráfica de vncviewer64-1.16.0)

Para que el servidor VNC se inicie automáticamente:

# Crear script de inicio
nano ~/.vnc/xstartup

Contenido:

#!/bin/bash
xrdb $HOME/.Xresources
icewm-session &

Hacerlo ejecutable:

chmod +x ~/.vnc/xstartup

Para detener el servidor VNC cuando no se necesite:

vncserver -kill :1

Pasos previos

Ahora sí, con acceso remoto establecido, para dar con la solución definitiva, pasé por varios métodos que no funcionaron hasta encontrar la configuración correcta.

Lo primero es conseguir calibrar el touch, para lo cual necesitamos un comando manual para calibrar el touch. Vomo en antix , dado que tu Goodix Capacitive TouchScreen ya funciona con libinput, el comando y que funciona manualmente es:

xinput set-prop "pointer:Goodix Capacitive TouchScreen" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1

Qué hace este comando

  1. xinput set-prop → modifica una propiedad de un dispositivo de entrada Xorg.
  2. "pointer:Goodix Capacitive TouchScreen" → selecciona el dispositivo correcto (el prefijo pointer: evita conflictos, porque hay varios dispositivos Goodix en tu sistema).
  3. "Coordinate Transformation Matrix" → propiedad que define cómo se traducen las coordenadas del touch a la pantalla.
  4. 0 1 0 -1 0 1 0 0 1 → matriz que:
    • Rota la entrada 90°
    • Ajusta el eje X e Y para que coincida con la orientación de la pantalla
    • Hace que el touch responda correctamente según la orientación física

Qué conseguimos al ejecutarlo

  • La pantalla táctil responde correctamente al tacto.
  • Los movimientos y pulsaciones corresponden a la orientación física de la pantalla.
  • Puedes usar la pantalla con precisión, escribir con teclado virtual, arrastrar, tocar iconos, etc.

Nota importante: Este comando solo aplica temporalmente mientras la sesión X está activa.Se pierde al reiniciar, por eso la solución permanente fue crear el archivo /etc/X11/xorg.conf.d/99-touchscreen.conf con la misma matriz.

Ahora si , para dar con la solución definitiva, pasé por varios métodos que parecían prometedores pero que finalmente no resolvieron el problema de forma permanente:

xinput_calibrator
No funcionaba porque el controlador del táctil era libinput, no evdev. Error: no calibratable devices found.

❌ Archivo en /etc/X11/xorg.conf.d/99-goodix.conf
Se creó correctamente con la matriz de transformación, pero nunca se aplicó al inicio.

❌ Script en ~/.config/autostart-scripts/
Aunque se creó con permisos correctos, AntiX no lo ejecutaba automáticamente.

❌ Archivo .desktop en ~/.config/autostart/
Tampoco se ejecutó al iniciar sesión.

❌ Modificación de ~/.profile
Causó pantalla negra al inicio (afortunadamente se pudo recuperar).

❌ Servicio systemd
No se llegó a implementar completamente por ser un enfoque más complejo y menos adecuado para AntiX.

❌ Scripts en ~/.icewm/startup y ~/.xinitrc manuales
Funcionaban manualmente, pero no persistían después de reiniciar.

Lo que finalmente funcionó

La solución definitiva fue configurar la calibración directamente en Xorg a través de libinput, sin depender de scripts de usuario ni de gestores de ventanas.

1- Calibración permanente del táctil (Goodix Capacitive TouchScreen)

Problema:
La pantalla táctil funcionaba solo con comandos manuales y perdía la calibración al reiniciar.

Solución:

  1. Crear el archivo de configuración de Xorg:
sudo nano /etc/X11/xorg.conf.d/99-touchscreen.conf
  1. Contenido del archivo:
Section "InputClass"
Identifier "calibration"
MatchProduct "Goodix Capacitive TouchScreen"
Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"
EndSection
  1. Guardar y reiniciar.
  2. Verificar que se aplicó correctamente:
xinput list-props "pointer:Goodix Capacitive TouchScreen"

Resultado: la matriz de calibración aparece correctamente y el táctil funciona de forma permanente tras cada reinicio.

2- Instalación del teclado virtual (Onboard)

Problema:
Necesitaba un teclado en pantalla para usar el dispositivo como tablet, sin depender de teclado físico.

Solución:

  1. Instalar Onboard:
sudo apt install onboard
  1. Crear script de toggle para abrir/cerrar el teclado:
nano ~/toggle_osk.sh

Contenido:

#!/bin/sh
if pgrep -x onboard > /dev/null; then
killall onboard
else
onboard &
fi
  1. Hacerlo ejecutable:
chmod +x ~/toggle_osk.sh

Onboard se abre y cierra correctamente con un solo comando.

3- Acceso rápido al teclado desde IceWM

Problema:
Los atajos de teclado (Ctrl+Alt+K) no funcionaban de forma fiable en esta versión de AntiX.

Solución:
Agregar un botón en la barra de tareas de IceWM.

  1. Editar el archivo de la barra:
nano ~/.icewm/toolbar
  1. Añadir al final:
prog "Teclado Táctil" /home/carlos/toggle_osk.sh
  1. Cerrar sesión y volver a iniciar IceWM.

Aparece un botón en la barra que abre y cierra el teclado virtual al hacer clic.

Resultado final

El resultado es un Movistar Home completamente transformado: ahora funciona como una tablet estable y funcional con AntiX Linux. La pantalla táctil responde con precisión tras cada reinicio gracias a la calibración permanente mediante libinput en Xorg, evitando así la fragilidad de los scripts de inicio.

El teclado virtual Onboard está instalado y listo para usarse, con un botón en la barra de IceWM que resulta mucho más fiable que los atajos de teclado. Todo el sistema arranca sin intervención manual, manteniendo la compatibilidad con VNC y ofreciendo un entorno ligero, ideal para navegación ocasional, acceso remoto o incluso como reloj inteligente.

La clave del éxito estuvo en prescindir de soluciones temporales y apostar por una configuración sólida desde la capa más baja del sistema, logrando así un dispositivo reutilizado que funciona con la misma solidez que un equipo diseñado para ello.

WiFi DensePose: «Ve» a través de las paredes usando solo el router de casa


Imagina poder saber exactamente dónde está una persona, qué postura tiene, si respira o si se ha caído, sin usar ni una sola cámara. Esto ya es una realidad gracias a WiFi DensePose: la capacidad de «ver» a través de las paredes utilizando únicamente las ondas de radio de los routers WiFi convencionales.

Este proyecto de código abierto (bajo licencia MIT) combina inteligencia artificial, procesamiento de señales y hardware asequible para crear un sistema de monitorización que respeta la privacidad como ninguna cámara podría hacerlo. Basado en el innovador sistema InvisPose, convierte los routers WiFi en potentes sensores de presencia y movimiento, reconstruyendo poses 2D y 3D en tiempo real, incluso a través de obstáculos.

¿Cómo funciona? La magia de la CSI

En esencia, WiFi DensePose utiliza la Información del Estado del Canal (CSI) de tu red WiFi. Cuando una persona se mueve, altera sutilmente la amplitud y fase de las señales de radio. El sistema captura, procesa e interpreta estas alteraciones para:

  • Reconstruir la postura corporal: Genera puntos clave de articulaciones o un mapa denso de la superficie del cuerpo (DensePose).
  • Monitorear signos vitales: Detecta la frecuencia respiratoria y el ritmo cardíaco sin ningún contacto.
  • Funcionar a través de paredes: Las señales WiFi penetran la mayoría de los materiales de construcción.
  • Ofrecer datos en tiempo real: Provee la información a través de una API REST y WebSockets para integrarla con otras aplicaciones.

Principales Características Técnicas

  • Visión por radiofrecuencia: Utiliza redes neuronales para lograr resultados comparables a los sistemas ópticos, pero sin capturar imágenes.
  • Seguimiento multi-persona: Identifica y sigue a múltiples individuos, manteniendo su identidad incluso cuando se cruzan.
  • Hardware estándar y asequible: Funciona con chips WiFi convencionales como el ESP32-S3 (~$8) y routers comerciales. Nada de equipos militares.
  • API completa para integración: Incluye endpoints REST y streaming WebSocket para conectar con cualquier plataforma SaaS, smart home o app de fitness.
  • Despliegue flexible: Compatible con Docker, Kubernetes y Ansible, con documentación exhaustiva para llevarlo a producción.

¿Qué necesitas para probarlo?

El proyecto está pensado para ser «production-ready» y se despliega fácilmente con Docker:

docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest

Opciones de hardware:

  • Opción Profesional (CSI completa): Necesitas hardware que exponga la CSI. La opción más recomendada y económica es usar una malla de 3 a 6 placas ESP32-S3. También funcionan tarjetas de investigación como la Intel 5300.
  • Opción Básica (Solo presencia): Si solo tienes un portátil con WiFi estándar, el sistema puede funcionar con datos RSSI, limitado a detección de presencia y movimientos gruesos.

La configuración física típica recomienda colocar los routers/ESP32 a 2-3 metros de altura, separados entre 5 y 10 metros.

Casos de Uso Reales

Las aplicaciones son enormes y abarcan múltiples campos:

  • Salud y Teleasistencia: Monitorización no intrusiva de ancianos, detección de caídas y análisis de patrones de sueño, garantizando la privacidad total al no usar cámaras.
  • Hogar Inteligente (Smart Home): Control de presencia para automatizar luces, detección de gestos para comandos y monitorización de la calidad del sueño.
  • Realidad Virtual/Aumentada (VR/AR): Seguimiento corporal para experiencias inmersivas sin necesidad de sensores en el cuerpo.
  • Respuesta a Desastres (WiFi-Mat): El proyecto incluye un módulo específico para equipos de búsqueda y rescate que puede detectar supervivientes atrapados bajo escombros.

Conectando con tu Aplicación desde Python

Acceder a los datos es muy sencillo, ya sea vía REST o WebSocket.

Ejemplo básico con REST (python):

import requests

response = requests.get("http://localhost:3000/api/v1/sensing")
data = response.json()
print(f"Personas detectadas: {len(data.get('persons', []))}")

Ejemplo de Streaming WebSocket en Tiempo Real (python):

import asyncio
import websockets
import json

async def escuchar_poses():
    uri = "ws://localhost:3001/ws/sensing"
    async with websockets.connect(uri) as websocket:
        while True:
            mensaje = await websocket.recv()
            data = json.loads(mensaje)
            print(f"Poses en vivo: {len(data.get('persons', []))}")

asyncio.run(escuchar_poses())

Privacidad: La Ventaja Estratégica

En un mundo donde cada vez más personas desconfían de las cámaras, WiFi DensePose ofrece una alternativa ética y técnicamente superior:

  • No graba imágenes: No hay rostros, ropa ni identificación visual. Solo datos de pose y presencia.
  • Permite despliegues donde las cámaras son inviables: Hospitales psiquiátricos, baños, vestuarios, habitaciones de ancianos.
  • Cumple normativas de privacidad: Al no tratar datos biométricos visuales, el marco regulatorio (GDPR, CCPA) es mucho más sencillo de navegar.

En Resumen

WiFi DensePose no es solo una librería interesante; es una plataforma tecnológica que cambia las reglas del juego en monitorización humana. Representa una oportunidad única para startups que buscan diferenciarse con soluciones técnicamente sólidas y éticamente responsables.

El futuro de la monitorización no se ve, se siente. Y se siente a través del WiFi que ya nos rodea. ¿Te animas a probarlo?

Enlaces de interés:

Documentación oficial

Repositorio en GitHub