jueves, 3 de noviembre de 2011

[HT] Instalar KWorld PCI Analog TV Card Lite (aka pvr-tv 7134se {aka SAA7134})

UPDATE 1: GRAVAR y VER a la vez.

Desde que compre esta tarjeta para grabar los programas de cocina de mi mamá me vi en la penosa necesidad de usar windows por que no tenia ni idea de como configurar la grabación en Linux, de hecho, poder ver tv Linux con esa tarjeta ya era un reto. Después de meses procrastinando y leyendo le atine a como hacerlo y otra vez disfruto de no usar el otro OS.

Este how to es una pisca avanzado, pero procurare facilitarte la vida, pero ante todo:

¡LEE TODO ANTES DE EJECUTAR ALGO!

Un poco de teoría antes que todo
Lo primero que me percate en el proceso es que la tarjeta usa un chip genérico SAA7134, tal vez este HT sirva para otras tarjetas, Eso lo puedes ver por el comando lspci



Ahora bien, lo bueno de esto es que Linux ya tiene driver para este chip entonces ya tienes instalado el driver, lo no tan bueno es que tiene más de un driver (refiriéndome a la parte de sonido) y en el proceso esto nos entretendrá. Para entender el problema con el sonido hay que ver un poco el historial de los drivers de audio que Linux ha tenido, son 3: OSS (ubuntu ya no lo soporta), ALSA y PulseAudio (el más actual); el meollo del asunto, veremos, que los programas para usar la tarjeta apuntan al driver de OSS pero si no esta el driver pues no hay sonido.

... bueno empecemos

ALISTAR EL TV
Los fierros:
Buscando y probando encontré muchas opciones para tv en Linux pero al final solo 2 opciones me funcionaron una fue tvtime y otra mplayer, así que te recomiendo instalarlas.
si quieres por terminal:
sudo apt-get install tvtime mplayer


en este punto ya puedes usar tvtime configurar canales y escuchar... nada no hay sonido T.T

para usar el mplayer puedes usar este comando:
mplayer \
-tv driver=v4l2:device=/dev/video0:input=0:normid=0:width=496:height=371:chanlist=us-cable \
-vo xv tv://3


En español:

  1. Linea: El reproductor ¬¬

  2. Linea: Información para el programa de donde sacar el vídeo, en este caso -tv


    • driver=v4l2 (video for linux) El driver de vídeo que utiliza

    • device=/dev/video0 El lugar donde sale el vídeo (puede ser diferente a 0)

    • input=0 0:TV 1:Composite 2:S-Video

    • normid=0 0:NTSC 4:PAL 13:SECAM

    • width=496:height=371 Tamaño de la pantalla

    • chanlist=us-cable Para mi funciono como la opción cable... del manual: disponibles: europe-east, europe-west, us-bcast, us-cable, etc


  3. La salida


    • xv Usa xorg, otra es GL usa OpenGL (en mi caso uso más cpu ¬¬)

    • tv://3 El canal que quiera ver (si no pones canal iniciara en el ultimo canal o en el canal 0 {creo})


Con H y K podrás cambiar canales.

EL SONIDO

Ahora bien si no te sonó seguramente es por que usas un ubuntu con pulseAudio. Para solucionar esto primero debes de buscar donde está la tarjeta en el driver de sonido alsa
para eso usamos el comando de entradas de alsa y pedimos la lista de dispositivos:
arecord -L


Busca algo como:
hw:CARD=SAA7134,DEV=0
SAA7134, SAA7134 PCM
Direct hardware device without any conversions
la primera linea te dirá donde esta la tarjeta.

Para TVTime:
En este paso todavía estoy jugando, el problema aquí es un retraso de sonido pequeño.

Ármate un script con lo siguiente:

#!/bin/sh
arecord -D hw:SAA7134,0 -r 32000 -c 2 -f S16_LE | aplay - & tvtime -M;
wait 1 tvtime
killall arecord;
killall aplay;
killall tvtime

El script hace que escuche y a continuación reproduzca lo que la tarjeta envíe, arecord escucha el device (-D) hw:"card","dev" (que encontramos anteriormente), el resto son parámetros de como entra el audio, aplay reproduce el sonido y tvtime muestra la imagen.

Para MPlayer:
A diferencia de TVTime no hay retraso de sonido, pero no se como cambiar canales enviando el canal (pasar del 3 al 8 sin ver los canales intermedios), para agregar el sonido solo hay que agregar más parámetros a -tv:

mplayer \
-tv driver="mucho texto":alsa:adevice=hw.SAA7134:amode=1:audiorate=32000:immediatemode=0 \
-vo xv tv://22

Donde:

  • alsa le dice que use el driver de alsa (¬¬)

  • adevice=hw."card""dev" (alsadevice)

  • amode=1 1:Estereo 2y3:SAP (no me funciono)

  • audiorate=32000 La calidad de sonido que da la tarjeta

  • immediatemode=0 Suena conectado normalmente (1 el sonido sale por el conector verde de la tarjeta)


En este punto ya puedes ver tv sin problema...

ALISTAR LA GRABADORA


UPDATE1: Uno de los problemas que vi en el proceso fue que si grababa no reproducía, gracias a este script doy solución.
agrega justo al final de la linea la letra & y agrega:
mencoder "blablabla" &
sleep 1
mplayer $PATH1/${TODAY}_${NOW}_CH.mp4 -vo xv
killall mencoder


Una de las razones para comprar la tarjeta era grabar digitalmente y dejar atrás los cassettes (mi mamá tiene como 15). En Linux es hasta fácil grabar después de todo gracias a mplayer y si gemelo mencoder.

El comando estrella es:
mencoder \
-tv driver=v4l2:device=/dev/video0:input=0:normid=0:alsa:adevice=hw.2:amode=1:audiorate=32000:immediatemode=0:width=496:height=371:chanlist=us-cable \
-ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=600 \
-oac mp3lame -lameopts cbr:br=64 \
-endpos 15 -o tvchachi.avi tv://


Donde:
  • -tv "y el resto" es el driver del vídeo eso ya lo vimos
  • -ovc (Output Video Codec) el codec de vídeo a usar
  • -oac (Output Audio Codec) el codec de audio a usar
  • -endpos # tiempo que desea grabar (#:Segundos 02:05:0 2 horas 5 minutos 0 segundos) este es opcional
  • -o nombre-de-archivo.avi (Output) archivo de salida
  • tv://# Canal que desea grabar
La elección de los codecs es para usar poco espacio en disco con calidad suficiente para leer claro (la lista de recetas XD) usa 603 MB para 2 horas y 5 minutos

Para programar grabaciones es bueno usar cron y un script (mira un ejemplo), hay una practica interfaz gráfica llamada gnome-schedule para programar cuando grabar


ALISTAR EL CONTROL


Por ultimo el control de por si funciona sin necesidad de Driver... pero no como uno quiere. En Linux se puede configurar como uno quiera para esto primero instalamos ir-keytable

sudo apt-get install ir-keytable


al usar el comando inicialmente lista los sensores InfraRojos:
Found /sys/class/rc/rc0/ (/dev/input/event4) with:
Driver saa7134, table rc-kworld-plus-tv-analog
Supported protocols:
Enabled protocols:
Repeat delay = 500 ms, repeat period = 33 ms

La información que nos da es muy valiosa por ejemplo table rc-kworld-plus-tv-analog nos dice que configuración de botones está usando,Supported protocols: que protocolos soporta (no aparece ninguno entonces es desconocido UNKNOWN). En las carpetas /etc/rc_keymaps /lib/udev/rc_keymaps/ se alojan las posibles configuraciones a usar, selecciona la tabla que se este usando y la editas si quieres (mira la lista de opciones aquí )

mira mi configuración (para el control de la foto)

una cosa a tener en cuenta, hay unas teclas que se mezclan por ejemplo el 1, 2 y 3 y las direccionales, yo preferí el uso de las direccionales, igual para esto alguien me dijo que se puede parchear el kernel y ya, pero como no se ahora entonces lo dejo así (por el momento).

Para ver teclas => id usa sudo ir-keytable -t cuando ya tengas listo el archivo puedes probarlo con las siguientes lineas
sudo ir-keytable -c
sudo ir-keytable -w /etc/rc_keymaps/"tabla configurada"
sudo ir-keytable -t

Para fijar permanentemente la configuración edita el archivo /etc/rc_maps.cfg y saca de comentario la linea de la configuración que editaste guarda y listo

por ultimo como los botones que presionas son parte de un estandar, fácilmente puedes modificar su función en el gestor de atajos del teclado



FUENTES:
http://forum.xbmc.org/showthread.php?t=101151
linuxtv.org/wiki/index.php/Saa7134-alsa
https://patchwork.kernel.org/patch/888492/

jueves, 7 de julio de 2011

[HT] QuickList de carpeta personal en tu idioma



La semana pasada viendo un post en OMG ubuntu jugué con este útil quicklist pero presentaba un problema y es q' esta diseñado para un solo idioma en el caso q' intente en ingles. Mirando como funcionan los otros quicklist como el de FireFox (en /usr/share/applications) busque como mostraba las opciones en otro idioma y lo intente con el lanzador de carpeta personal.
Note que todavía no he podido lograr cambiar el acceso a Descargas y por otro lado imagen y vídeo esta en singular siendo debería estar en plural, si sabes como cambiarlo porfavor comentalo,Finalmente mira que el nombre de las carpetas es fijo y unas les he cambiado el nombre como documentos: Exec=nautilus %U Oficina/, cámbiale el nombre de la carpeta en la linea q' inicia con "Exec" por el nombre de tu carpeta correspondiente.

Primero editamos como administrado el archivo del lanzador:
(Alt+F2 y escribimos) gksu gedit /usr/share/applications/nautilus-home.desktop


luego remplazamos por:

[Desktop Entry]
Name=Home Folder
GenericName=Home Folder
X-GNOME-FullName=Home Folder
Comment=Open your favourite folders in Nautilus
Exec=nautilus %U
Icon=user-home
Terminal=false
Type=Application
Categories=GNOME;GTK;Core;
StartupNotify=true
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=nautilus
X-GNOME-Bugzilla-Component=general
X-Ubuntu-Gettext-Domain=nautilus
X-Ayatana-Desktop-Shortcuts=Computer;Documents;Downloads;Pictures;Music;Videos;Root;

[Computer Shortcut Group]
Name=Computer
GenericName=Computer
X-GNOME-FullName=Computer
Exec=nautilus %U computer:///
OnlyShowIn=Unity

[Documents Shortcut Group]
Name=Documents
GenericName=Documents
X-GNOME-FullName=Documents
Exec=nautilus %U Oficina/
OnlyShowIn=Unity

[Downloads Shortcut Group]
Name=Downloads
GenericName=Downloads
X-GNOME-FullName=Downloads
Exec=nautilus %U Descargas/
OnlyShowIn=Unity

[Pictures Shortcut Group]
Name=Image
GenericName=Image
X-GNOME-FullName=Image
Exec=nautilus %U Imágenes/
OnlyShowIn=Unity

[Music Shortcut Group]
Name=Music
GenericName=Music
X-GNOME-FullName=Music
Exec=nautilus %U Música/
OnlyShowIn=Unity

[Videos Shortcut Group]
Name=Video
GenericName=Video
X-GNOME-FullName=Video
Exec=nautilus %U Videos/
OnlyShowIn=Unity

[Root Shortcut Group]
Name=Root
GenericName=Root
X-GNOME-FullName=Root
Exec=gksu nautilus
OnlyShowIn=Unity


Guardamos cerramos sesión, la volvemos a abrir y listo ya tenemos nuestro quicklist en cualquier idioma.

Espero q' les guste.