Introducción

El HALO TOUCH V2 es un hub USB de escritorio con pantalla táctil circular, encoder rotativo y capacidades avanzadas de monitoreo de sistema. Diseñado para estaciones de trabajo, permite integrar controles físicos con información en tiempo real, reproducción de medios y automatización mediante microSD. Este tutorial cubre su configuración en Linux, desde la conexión física hasta la personalización de su firmware embebido.

> Nota clave: El dispositivo no expone su firmware como código abierto, pero permite modificar su comportamiento mediante archivos en la microSD. Esto lo hace ideal para integraciones personalizadas sin alterar el hardware.

Qué es y para qué sirve

El HALO TOUCH V2 combina:

  • Hub USB 2.0: 2x Tipo A, 1x Tipo C, 2x lectores microSD, Ethernet 100Mbps.
  • Pantalla táctil IPS 360×360: Ejecuta apps como Pomodoro, visualizador de audio, reproductor MP3 y dashboard de AIDA64.
  • Encoder rotativo: Emula Microsoft Surface Dial (requiere firmware ≥1.3.0) para controles en Windows/Linux.
  • Monitoreo de hardware: Muestra métricas de CPU, GPU, temperatura y red via AIDA64 (accesible por red local).
  • Personalización: Archivos en microSD para temas, imágenes, animaciones, música y configuraciones de red.
Casos de uso típicos:
  • Mostrar métricas de monitoreo en tiempo real (ej: htop, nvidia-smi).
  • Controlar reproducción de música o podcasts sin tocar el teclado.
  • Automatizar tareas con scripts en Bash al girar el encoder (ej: cambiar perfiles de red, apagar servicios).

Prerequisitos

Hardware y software

ComponenteRequisito
**HALO TOUCH V2**Firmware ≥1.3.0 (verificar en pantalla al encender: *Settings → Firmware*).
**Sistema operativo**Linux (probado en Ubuntu 22.04 LTS, Fedora 38, Debian 12). Kernel ≥5.15.
**Herramientas**BLOCK29, BLOCK30, BLOCK31 (para conversión de imágenes), BLOCK32/BLOCK33 (descargas).
**Permisos**Acceso a BLOCK34 (para microSD) y usuario en grupo BLOCK35 (para serial USB).
**Red**DHCP en la interfaz de red del HALO TOUCH (o configuración estática manual).
**Tarjeta microSD**Clase 10 o superior (mínimo 4GB, recomendado 16GB). Formateada en FAT32.
### Accesos necesarios
  • Root o sudo: Para montar la microSD y editar archivos de configuración.
  • Red local: El HALO TOUCH emite un dashboard de AIDA64 en http://<IP_LOCAL>:8080 (verificar en pantalla táctil).
  • Serial USB (opcional): Para debug (conector interno, requiere cable USB TTL 3.3V).

> ⚠️ Advertencia crítica:

> – No conectar un cargador USB-C directamente al puerto USB-PC (puede inyectar 12V-20V y dañar el dispositivo). Usar solo el puerto PWR-PD para alimentación USB PD.

> – El puerto Ethernet no es PoE. Usar un switch con alimentación externa.

Guía paso a paso

1. Conectar y verificar el dispositivo

  1. Conectar la alimentación:
– Usar un cargador USB PD 5V/3A (o 9V/2A) en el puerto PWR-PD (identificar con la documentación del fabricante).

– Verificar que la pantalla encienda y muestre el logo de Innoelement.

  1. Identificar el dispositivo en Linux:
   lsusb | grep -i "innoelement\|halo"
   
Resultado esperado:
   Bus 001 Device 003: ID 2e8a:0001 Innoelement HALO TOUCH V2
   

– Si no aparece, probar desconectar/reconectar o reiniciar el sistema.

  1. Montar la microSD:
– Insertar la tarjeta en la ranura inferior.

– Montar en Linux:

     sudo mkdir -p /mnt/halo
     sudo mount /dev/sdX1 /mnt/halo  # Reemplazar sdX1 con tu dispositivo (ej: sdb1)
     

Verificar estructura:

     ls /mnt/halo/
     
Resultado esperado:
     aida64  mjpeg  music  pic  wifi.txt  boot.ini
     

2. Configurar red y acceso a AIDA64

  1. Configurar Wi-Fi (opcional):
– Editar el archivo wifi.txt en la microSD:
     sudo nano /mnt/halo/wifi.txt
     

Formato:

     SSID=TuRedWiFi
     PASSWORD=TuContraseña
     

Guardar (Ctrl+O, Enter, Ctrl+X).

  1. Obtener la IP del HALO TOUCH:
– En la pantalla táctil, ir a Settings → Network y anotar la dirección IP (ej: 192.168.1.100).

Verificar conectividad desde Linux:

     ping 192.168.1.100
     
Resultado esperado: Respuestas sin pérdida de paquetes.
  1. Acceder al dashboard de AIDA64:
– Abrir un navegador en Linux:
     http://192.168.1.100:8080
     

Resultado esperado: Visualizar métricas como temperatura de CPU, uso de RAM, GPU, etc.

> 🔍 Debug: Si el dashboard no carga, revisar el firewall:

>

> sudo ufw allow 8080/tcp
> 

3. Personalizar contenido en la microSD

A. Cambiar fondos de AIDA64

  1. Reemplazar imágenes:
– Copiar imágenes .jpg o .png en /mnt/halo/aida64/ (máx. 360×360px).

Reiniciar el HALO TOUCH para aplicar cambios.

  1. Ejemplo con ffmpeg (redimensionar imágenes):
   ffmpeg -i fondo_original.jpg -vf "scale=360:360:force_original_aspect_ratio=decrease,pad=360:360:(ow-iw)/2:(oh-ih)/2" fondo_halo.jpg
   

Copiar a la microSD:

     sudo cp fondo_halo.jpg /mnt/halo/aida64/
     

B. Agregar música para el reproductor MP3

  1. Formato soportado: MP3, bitrate ≤320kbps.
  2. Carpeta destino:
   sudo cp cancion.mp3 /mnt/halo/music/
   
  1. Verificar en el dispositivo: Navegar a Media Player en la pantalla táctil.

C. Configurar animaciones MJPEG

  1. Requisitos:
– Secuencia de imágenes .jpg (360×360px).

Herramienta recomendada: ffmpeg para generar MJPEG.

     ffmpeg -framerate 24 -i imagen_%04d.jpg -c:v mjpeg -q:v 2 animacion.mjpeg
     
  1. Copiar a la microSD:
   sudo cp animacion.mjpeg /mnt/halo/mjpeg/
   

4. Automatizar con scripts de Bash (opcional)

A. Control del encoder rotativo

El HALO TOUCH emite eventos via HID en Linux. Usar evtest para capturar eventos:

  1. Instalar evtest:
   sudo apt install evtest  # Debian/Ubuntu
   sudo dnf install evtest  # Fedora
   
  1. Identificar el dispositivo de entrada:
   ls /dev/input/by-id/
   
Resultado esperado (ejemplo):
   usb-Innoelement_HALO_TOUCH_V2-event-if00
   
  1. Capturar eventos del encoder:
   sudo evtest /dev/input/by-id/usb-Innoelement_HALO_TOUCH_V2-event-if00
   

Girar el encoder: Observar eventos EV_REL (código REL_X o REL_Y).

Presionar el encoder: Evento EV_KEY con código BTN_LEFT.

  1. Ejemplo de script para cambiar perfiles de red:
   #!/bin/bash
   # Script: /usr/local/bin/halo_encoder.sh
   # Asume que el encoder genera REL_Y con +1/-1 al girar

   while true; do
     EVENT=$(sudo evtest /dev/input/by-id/usb-Innoelement_HALO_TOUCH_V2-event-if00 2>/dev/null | grep "Event: EV_REL")
     if [[ $EVENT == *"REL_Y"* ]]; then
       DIR=$(echo $EVENT | awk '{print $7}' | tr -d ',')
       if [[ $DIR -eq 1 ]]; then
         echo "Cambiando a perfil 'Oficina'..."
         nmcli connection up "Oficina"  # Reemplazar con tu perfil
       elif [[ $DIR -eq -1 ]]; then
         echo "Cambiando a perfil 'Casa'..."
         nmcli connection up "Casa"  # Reemplazar con tu perfil
       fi
     fi
     sleep 0.1
   done
   

Hacer ejecutable:

     sudo chmod +x /usr/local/bin/halo_encoder.sh
     

Ejecutar en segundo plano:

     nohup /usr/local/bin/halo_encoder.sh > /var/log/halo_encoder.log 2>&1 &
     

5. Monitoreo avanzado con AIDA64 y herramientas externas

A. Exportar métricas a Prometheus/Grafana

  1. Configurar AIDA64 para exponer datos en JSON:
– Editar /mnt/halo/aida64/background.ini (crear si no existe):
     [Network]
     Enable=1
     Port=8080
     Format=JSON
     

Reiniciar el dispositivo.

  1. Script en Bash para extraer métricas:
   #!/bin/bash
   # Script: /usr/local/bin/halo_aida64_metrics.sh

   IP="192.168.1.100"
   ENDPOINT="http://$IP:8080/api/system"

   while true; do
     METRICS=$(curl -s $ENDPOINT)
     if [[ -n $METRICS ]]; then
       echo "$METRICS" | jq -r '.cpu.usage' > /tmp/halo_cpu_usage
       echo "$METRICS" | jq -r '.memory.used' > /tmp/halo_memory_used
       # Enviar a Prometheus (ejemplo con curl a Pushgateway)
       curl -X POST -H "Content-Type: text/plain" --data-binary @/tmp/halo_cpu_usage http://prometheus-pushgateway:9091/metrics/job/halo_touch
     fi
     sleep 10
   done
   

Requisitos: Instalar jq y configurar un Pushgateway de Prometheus.

Consideraciones y buenas prácticas

Limitaciones conocidas

  1. Firmware no abierto: No es posible modificar el comportamiento del encoder o la pantalla sin archivos en la microSD. Alternativas:
– Usar el dispositivo como pantalla secundaria para scripts personalizados (ej: conky + HALO TOUCH como salida).

Emular Surface Dial en Linux con evdev (requiere desarrollo adicional).

  1. Latencia en eventos HID:
– El HALO TOUCH tiene un delay de ~200ms en la respuesta del encoder. Para aplicaciones críticas (ej: control de DAW), considerar:

– Usar un Arduino como puente entre el encoder y el sistema (via USB Serial).

– Configurar scripts en Bash con timeout para evitar bloqueos:

       timeout 0.1s /usr/local/bin/halo_encoder.sh
       
  1. Alimentación USB PD:
No usar puertos USB estándar para alimentar el dispositivo. Riesgo de daño:

– Usar cargadores certificados (ej: Anker, UGreen).

– Verificar voltaje con un multímetro antes de conectar.

Buenas prácticas

  • Backup de la microSD: Copiar el contenido antes de modificar archivos críticos:
  sudo cp -r /mnt/halo /mnt/halo_backup_$(date +%Y%m%d)
  
  • Actualizaciones OTA: Verificar en Tindie o AliExpress para firmware ≥1.3.0.
  • Seguridad en red:
– Cambiar la contraseña de Wi-Fi por defecto (si se usa).

– Bloquear el puerto 8080 en el firewall para acceso externo:

    sudo ufw deny 8080
    

Conclusión

El HALO TOUCH V2 es una herramienta versátil para integrar controles físicos y monitoreo en entornos Linux, ideal para estaciones de trabajo con necesidades de automatización básica. Su mayor valor radica en la personalización via microSD, permitiendo adaptarlo a flujos de trabajo específicos sin modificar hardware.

Próximos pasos:
  1. Experimentar con la configuración de red y el dashboard de AIDA64.
  2. Automatizar tareas comunes (ej: cambiar perfiles de red, notificaciones) usando scripts en Bash.
  3. Explorar integraciones con herramientas como conky o Prometheus para métricas avanzadas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *