Transmitir video al TV (Chromecast / Xiaomi Mi TV) con catt desde Linux

Guía para hacer casting de archivos locales al TV por la red sin copiar nada al TV. Funciona con cualquier dispositivo con Chromecast integrado (Mi TV / Google TV / Chromecast / Smart TV con ex: SWTV-20SA).


1. ¿Qué es catt?

catt es un cliente de Chromecast por línea de comandos (usa el protocolo Cast / DIAL). Sirve el archivo local automáticamente (levanta un mini servidor HTTP con soporte de Range/seek) y se lo “empuja” a la app media receiver del TV.

  • El TV debe estar encendido y en la misma red.
  • No requiere root.
  • No instala nada en el TV.

2. Instalación

Opción A: pip (usuario, no hace falta root)

pip3 install --user --break-system-packages catt
# si ~/.local/bin no está en el PATH:
export PATH="$PATH:$HOME/.local/bin"

Opción B: pipx (entorno aislado, recomendado en Arch)

sudo pacman -S python-pipx
pipx install catt

3. Verificar

catt --version

Descubrir dispositivos en la red:

catt scan

Salida esperada:

Scanning Chromecasts...
192.168.0.230 - SWTV-20SA - skyworth SWTV-20SA

Anotá el nombre del dispositivo (ej: SWTV-20SA).


4. Transmitir un archivo al TV

catt -d "SWTV-20SA" cast "/ruta/al/archivo.mkv"
  • -d "NOMBRE" selecciona el dispositivo (si solo hay uno se puede omitir).
  • Con catt cast, el proceso se queda corriendo (sirve el archivo). Dejá la terminal abierta, o usalo en background para poder cerrar:
    nohup catt -d "SWTV-20SA" cast "/ruta/al/archivo.mkv" > /tmp/catt.log 2>&1 &
    
  • Para transmitir una URL (en vez de archivo local):
    catt -d "SWTV-20SA" cast "http://192.168.0.143:8090/mivideo.mp4"
    

Ejemplo con el F1 que usamos

catt -d "SWTV-20SA" cast \
  "/mnt/linux2/torrents/Formula.1.2026x73.R13.ItalianGP.Qualifying.MULTi.4K.HLG.2160p.SS/Formula.1.2026x73.R13.ItalianGP.Qualifying.MULTi.4K.HLG.2160p.SS.mkv"

5. Controles

catt -d "SWTV-20SA" status      # estado de reproducción
catt -d "SWTV-20SA" pause       # pausa
catt -d "SWTV-20SA" play        # reanuda
catt -d "SWTV-20SA" seek 120    # salta a 2:00
catt -d "SWTV-20SA" volumeup    # subir volumen
catt -d "SWTV-20SA" volumedown  # bajar volumen
catt -d "SWTV-20SA" stop        # detener y cerrar la sesión

6. Limitaciones importantes

  • El receptor de Cast del TV NO es un reproductor universal. Sirve bien MP4/H.264 y resoluciones normales, pero puede fallar con MKV 4K HEVC 10-bit / HDR (HLG): suele mostrar el título y el primer frame pero el video no arranca (“loading” eterno).
  • Si el video no arranca, primero hacé catt stop (quedó una sesión vieja colgada) y reintentá:
    catt stop
    catt -d "SWTV-20SA" cast "archivo.mkv"
    
  • Si aún así no reproduce (códecs 4K/10-bit/HDR), usá la vía DLNA (reproductor nativo del TV), que decodifica estos remux sin problema.

7. Alternativa DLNA (la usamos para el 4K HLG)

minidlna (servidor UPnP/DLNA) para que el TV reproduzca con su reproductor nativo, que sí decodifica HEVC 4K 10-bit HLG:

sudo pacman -S minidlna        # Arch
sudo systemctl enable --now minidlna

Editar /etc/minidlna.conf:

media_dir=V,/mnt/linux2/torrents
friendly_name=PC-Torrent
port=8200
notify_interval=60
sudo systemctl restart minidlna

En el TV: abrí el Media Center → video en red / “PC-Torrent” → reproducí.

Nota: si el archivo es 4K HLG de alto bitrate y rebota por WiFi, conviene una copia 1080p H.264 (~5 Mbps), que el TV carga sin cortarse.


Resumen de comandos

Acción Comando
Instalar pip3 install --user --break-system-packages catt
Ver dispositivos catt scan
Cast local catt -d "SWTV-20SA" cast archivo.mkv
Cast en background nohup catt -d "SWTV-20SA" cast archivo.mkv &
Estado / pausa catt status / catt pause
Detener sesión catt stop
DLNA sudo systemctl restart minidlna