lunes, 27 de julio de 2009

Servidor Multimedia uPnP para PlayStation 3 en Debian GNU / Linux

El servidor uPnP que vamos a configurar es MediaTomb, ya que está incluido en Debian. Con él podremos usar desde la PlayStation 3 toda la música, fotos y videos contenidos en nuestro ordenador.

Para su instalación debemos instalar el paquete "mediatomb" y todas sus dependencias, que se instalarán automáticamente.

Los ficheros de configuración que utiliza son los siguientes:
  • /etc/mediatomb/config.xml
  • /etc/default/mediatomb
En el primero de estos ficheros vamos a configurar la etiqueta "protocolInfo" con el parámetro "extend" al valor "true", para que los MP3 y MPEG4 funcionen correctamente en la PlayStation 3. También, con la misma finalidad, deberemos descomentar en este fichero una etiqueta "map" para que el tipo mime asociado a los fichero con extensión "avi" sea "video/divx".

Para añadir los contenidos multimedia al servidor debemos acceder a la siguiente URL:

http://localhost:49152/

En ella podemos ver el sistema de ficheros y añadir los directorios o ficheros que queramos compartir.

Ya solo queda acceder a los contenidos desde la PlayStation 3. Hay que que tener en cuenta, que los videos solo se mostrarán desde el menú de videos de la consola, la música desde el menú de música, y las imágenes desde el menú imágenes.

jueves, 26 de marzo de 2009

Instalando Debian GNU / Linux en un MacBook

Los pasos para la instalación que explico a continuación son para un MacBook de finales del 2006 y se va a intalar Debian 5.0 (Lenny).

Los pasos de instalación son los siguientes:

1. Particionando el disco
2. Configurando el gestor de arranque dual
3. Realizando la instalación
4. Configurando X Windows
5. Configurando la red Wifi
6. Configurando las teclas de función
7. Configurando la hibernación
8. Configurando la webcam

A continuación se detallan cada uno de estos pasos:

1. Particionando el disco

El primer paso es dejar espacio para la instalación de Debian. Para ello usamos la herramienta "diskutil" que viene en Mac OS X. Por ejemplo, para dejar una partición de Mac OS X de 40 GB ejecutamos el siguiente comando:

sudo diskutil resizevolume disk0s2 40G

Este comando está disponible a partir de la versión 10.4.6 de Mac OS X.

2. Configurando el gestor de arranque dual

Para el arranque dual podemos usar el programa rEFIt. En su página web se descargar y también está toda la documentación para su instalación.

Otra opción es usar el gestor de arranque por defecto del MacBook. Para ello solo hay que pulsar la tecla "Alt / Option" durante el arranque y nos mostrará los dispositivos desde los que se puede arrancar: Mac OS X, Windows, o un CD de arranque, si hay alguno en el lector. Para Poner por defecto el arranque en Linux se debe pulsar la tecla "Control" y seleccionar la opción de Windows. Terminada la instalación de Debian, la opción "Windows" será la que lo arranque ... que le vamos a hacer :-(

3. Realizando la instalación

El CD de instalación de Debian GNU /Linux 5.0 Lenny contiene todas las herramientas preparadas para que funcionen correctamente en el MacBook. Lo más importante es que incluye la nueva versión de Grub por defecto que es compatible con el sistema de particiones de disco de Apple. Por lo tanto, la instalación de realizará de forma normal. Eso sí, seleccionar que Grub se instale en la partición con Linux (/dev/sda3) y no en el MBR, ya que puede dar problemas como por ejemplo, que tarde mucho en aparecer la pantalla de Grub en el arranque.

A la hora de reparticionar el disco, hay que tener en cuenta el orden de las particiones para que el sistema funcione correctamente. Si no se utiliza un orden correcto el sistema de arranque de Apple puede que no las detecte correctamente. Por ejemplo, la tercera partición debe ser de tipo Linux, no podemos ponerla de tipo SWAP. El siguiente orden de particiones ha funcionado correctamente en mi caso:

Number Start End Size File system Name Flags 1 20,5kB 210MB 210MB fat32 EFI System Partition boot 2 210MB 54,4GB 54,2GB hfs+ Apple_HFS_Untitled_1 3 54,4GB 104GB 50,0GB ext3 linux 4 104GB 108GB 3601MB linux-swap swap 5 108GB 250GB 142GB ext3 data

El único paso adicional a realizar es sincronizar la tabla de particiones GPT usada por Mac con la tabla MBR. Para ello, una vez reparticionado el disco en la instalación, debemos acceder a la segunda consola presionando ctrl+alt+F2 y ejecutar los siguientes comandos:

chroot /target aptitude install refit /target/sbin/gptsync /dev/sda


4. Configurando X Windows

La configuración de la tarjeta gráfica la detecta automáticamente, lo único que he configurado el es touchpad a mi gusto y que la tecla "Alt-Gr" sea la tecla Apple de la derecha.

La configuración realizada al touchpad es para que con los dos dedos sobre el touchpad se haga scroll horizontal y vertical, y para que haciendo click con dos dedos equivalga al botón derecho del ratón.

Este es mi fichero "/etc/X11/xorg.conf" con la configuración:

# xorg.conf (X.Org X Window System server configuration file) # # This file was generated by dexconf, the Debian X Configuration tool, using # values from the debconf database. # # Edit this file with caution, and see the xorg.conf manual page. # (Type "man xorg.conf" at the shell prompt.) # # This file is automatically updated on xserver-xorg package upgrades *only* # if it has not been modified since the last upgrade of the xserver-xorg # package. # # If you have edited this file but would like it to be automatically updated # again, run the following command: # sudo dpkg-reconfigure -phigh xserver-xorg Section "InputDevice" Identifier "Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "es" Option "XkbOptions" "lv3:rwin_switch" EndSection Section "InputDevice" Identifier "Pointer" Driver "synaptics" Option "CorePointer" Option "SendCoreEvents" "true" Option "Device" "/dev/input/mouse2" Option "Protocol" "auto-dev" Option "SHMConfig" "true" Option "FingerLow" "20" Option "FingerHigh" "30" Option "FingerPress" "250" Option "MaxTapTime" "150" Option "MaxTapMove" "200" Option "SingleTapTimeout" "150" Option "MaxDoubleTapTime" "200" Option "ClickTime" "50" Option "FastTaps" "false" Option "VertEdgeScroll" "0" Option "HorizEdgeScroll" "0" Option "VertTwoFingerScroll" "1" Option "HorizTwoFingerScroll" "1" Option "VertScrollDelta" "20" Option "HorizScrollDelta" "100" Option "CornerCoasting" "0" Option "CoastingSpeed" "0" Option "MinSpeed" "0.50" Option "MaxSpeed" "0.95" Option "AccelFactor" "0.025" Option "LockedDrags" "1" Option "LockedDragTimeout" "500" Option "TapButton1" "1" Option "TapButton2" "3" Option "TapButton3" "0" Option "RTCornerButton" "0" Option "RBCornerButton" "0" Option "LTCornerButton" "0" Option "LBCornerButton" "0" Option "PalmDetect" "1" Option "PalmMinWidth" "10" Option "PalmMinZ" "200" EndSection Section "Device" Identifier "Configured Video Device" EndSection Section "Monitor" Identifier "Configured Monitor" EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" EndSection

Con el comando "synclient" se pueden modificar estos valores "en caliente" para ajustar sus valores óptimos.

Además, existe un comando para hacer que no funcione el touchpad cuando tecleamos. Para ello se debe ejecutar el siguiente comando:

/usr/bin/syndaemon -i 0.5s -d

Para que se ejecute este comando en el arranque del entorno visual podemos ponerlo en el fichero ".kde/Autostart/syndaemon.sh", si usamos KDE, en el fichero ".xinitrc", si usamos el comando "startx" para arrancar el entorno visual, o en otro fichero de inicio correspondiente al gestor de ventanas usado.

5. Configurando la red Wifi

La tarjeta de red puede funcionar con el driver MadWifi o compilando un kernel versión 2.6.27 o superior.

Para configurar la tarjeta Wifi con el driver de Madwifi ejecutamos los siguientes comandos:

aptitude install module-assistant m-a prepare m-a a-i madwifi modprobe madwifi

Una vez hecho esto ya debemos tener funcionando la tarjeta.

El driver MadWifi es un poco inestable, por lo que recomiendo instalar un kernel más moderno. Para ello tenemos dos opciones, bien compilar un nuevo kernel, o instalar un kernel de una versión de pruebas.

Para instalar un kernel de la versión de pruebas de Debian podemos obtenerlo de la siguiente dirección:

http://packages.qa.debian.org/l/linux-2.6.html

E instalarlo con el siguiente comando:

dpkg -i linux-image-2.6.30-2-686_2.6.30-8_i386.deb

Para realizar una compilación del kernel ejecutamos los siguientes comandos como usuario root:

cd /usr/src
wget -c http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.1.tar.bz2
tar jxvf linux-2.6.29.1.tar.bz2
cd linux-2.6.29.1
aptitude install build-essential pkg-config ncurses-dev kernel-package
make mrproper
cp /boot/config-2.6.26-1-amd64 .
make menuconfig

Se debe cargar la configuración del fichero "config-2.6.26-1-amd64" y activar las siguientes opciones:

-*- Networking support --->
<M> Bluetooth subsystem support --->
Bluetooth device drivers --->
<M> HCI USB driver

Device Drivers --->
[*] Network device support --->
Wireless LAN --->
<M> Atheros 802.11n wireless cards support (NEW)

Guardamos la configuración y ejecutamos lo siguiente:

make-kpkg clean make-kpkg --initrd kernel_image kernel_headers cd .. dpkg -i linux-image-2.6.29.1_2.6.29.1-10.00.Custom_amd64.deb

Una vez reiniciemos la máquina con el nuevo kernel detectará automáticamente la tarjeta de red Wifi.

Os recomiendo el uso de Network Manager para gestionar las redes si es un entorno de escritorio por su sencillez de configuración.

6. Configurando las teclas de función

Para que las teclas de función del teclado actúen correctamente debemos instalar el paquete "pommed". Se pueden realizar los ajustes necesarios en el fichero "/etc/pommed.conf".

7. Configurando la hibernación

Para que la suspensión en memoria funcione correctamente debemos editar el fichero "/etc/hibernate/ususpend-ram.conf" y descomentar la línea con el parámetro "USuspendRamForce" a "yes".

Para probar que la suspensión en memoria funciona correctamente, ejecutamos como usuario root el comando "hibernate-ram". Si este comando da problemas, podemos ejecutar el comando "s2ram -f" para ver que está ocurriendo.

Parece ser que la suspensión a disco, también llamada hibernación, da problemas con los kernel de 64 bits (amd64), por lo que debemos instalar un kernel para 686.

Para asegurarnos de que la hibernación está configurada correctamente editamos el fichero "/etc/initramfs-tools/conf.d/resume" y nos aseguramos de que apunta a la partición de SWAP correcta. Podemos ejecutar el comando "free" para asegurarnos de que el tamaño de SWAP activo es el correcto.

También debemos comprobar que el fichero "/etc/uswsusp.conf" tiene configurados los valores correctos. Si no es así podemos ejecutar el comando "dpkg-reconfigure uswsusp" y realizar la configuración correcta. Este comando también configurará automáticamente la imagen de arranque (initrd.img) del kernel en ejecución, aplicando el parámetro RESUME configurado previamente.

Por último, para que funcione desde el entorno gráfico, por ejemplo con kpowersave, debemos meter al usuario en el grupo "powerdev".

Para probar la suspensión a disco podemos ejecutar el comando "hibernate-disk", y si este falla, ejecutamos el comando "s2disk" para ver el problema.

8. Configurando la webcam

El primer paso es montar la partición de MacOS X, y localizar el firmware de la webcam. Para ello ejecutamos los siguientes comandos:

mount -t hfsplus /dev/sda2 /mnt/ ls /mnt/mac/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport

Instalamos el paquete necesario para extraer el firmware con el siguiente comando:

aptitude install isight-firmware-tools module-assistant

Durante la instalación deberemos especificar la ruta donde hemos localizado el firmware.

Se puede volver a configurar posteriormente ejecutando el comando:

dpkg-reconfigure -plow isight-firmware-tools

Instalamos el módulo del kernel con el siguiente comando:

modprobe uvcvideo

Y realizamos una prueba con este comando:

mplayer -tv driver=v4l2:input=1:width=640:height=480:device=/dev/video0:outfmt=uyvy:fps=24 tv://

Puede que sea necesario apagar (no reiniciar) y volver a arrancar el portatil para que funcione la cámara.

Editamos el fichero /etc/modules y añadimos la siguiente línea:

uvcvideo

Así se cargará el módulo automáticamente al arrancar el equipo.

lunes, 23 de marzo de 2009

Estrenando blog

Después de unos años creando pequeños artículos sobre Linux en mi propia página web, que no gustaba nada a mis amigos, he decidido crear este blog y entrar en la era moderna.

Un saludo a todos los lectores que se interesen por lo que aquí pueda aportar.

viernes, 23 de mayo de 2008

Sintonizador AVerMedia AverTV DVB-T USB 2.0 (A800) en Debian GNU / Linux

Para configurar el dispositivo se debe descargar el siguiente fichero:

http://www.linuxtv.org/download/firmware/dvb-usb-avertv-a800-02.fw

Este fichero se debe ubicar en el directorio "/usr/lib/hotplug/firmware/".

Una vez hecho esto se puede conectar el dispositivo al puerto USB y comprobar en el log del sistema (/var/log/messages) que ha sido detectado correctamente.

Para crear un fichero con la información de sintonización de los canales se puede usar el comando "scan", contenido en el paquete "dvb-utils". Por ejemplo, en Madrid se ejecutaría el siguiente comando:

scan /usr/share/doc/dvb-utils/examples/scan/dvb-t/es-Madrid > channels.conf

El fichero "channels.conf" se puede usar con los programas Xine y MPlayer copiándolo a "$HOME/.xine" y "$HOME/.mplayer" respectivamente. Una vez hecho esto se pueden ejecutar dichos programas de la siguiente forma:

xine --no-splash -f -g -V xxmc dvb://

mplayer -vc ffmpeg12mc -vo xvmc -fs -zoom dvb://

Estas líneas de ejecución de ejemplo están optimizadas para acelerar por hardware usando una placa base Via Epia, pero exiten otras opciones para acelerar por hardware en otros sistemas.

Una vez tenemos la sintonizadora de TV funcionando, el siguiente paso es configurar el mando a distancia. Cuando se conecta la sintonizadora, el kernel reconoce automáticamente el mando a distancia como un dispositivo de entrada. Para comprobarlo se puede ejecutar el siguiente comando:

cat /proc/bus/input/devices

Con el sistema de dispositivos "udev", el sistema reconoce los dispositivos de forma que el mapeo a ficheros de los mismos no es determinista. Así, el dispositivo del mando a distancia unas veces puede estar mapeado en el fichero "/dev/input/event0" y otras veces en el fichero "/dev/input/event1".
Para que esto no sea un problema a la hora de configurar Lirc, definimos una regla del sistema "udev" que creará una alias del dispositivo en "/dev/ir". Para ello debemos crear un fichero con el nombre "099-duplicate_devs.rules" y ubicarlo en la ruta "/etc/udev/rules.d/". El contenido de este fichero será el siguiente:

KERNEL=="event*", SYSFS{name}=="IR-receiver inside an USB DVB receiver", SYMLINK+="ir"

En esta regla se puede ver que hemos hecho coincidir el valor del campo "name" con el valor del mismo campo del fichero "/proc/bus/input/devices".

Para activar la regla y que se cree el dispositivo "/dev/ir" podemos reiniciar o podemos ejecutar el siguiente comando y después desconectar y volver a conectar el dispositivo.

/etc/init.d/udev restart

El siguiente paso es comprobar que el fichero "/dev/ir" se ha creado. Si es así, se puede ejecutar "cat /dev/ir" y al pulsar los botones en el mando a distancia debe aparecer basura en la pantalla.

En el fichero de configuración "/etc/lirc/hardware.conf" deben quedar las siguientes variables de configuración como sigue:

DRIVER="dev/input"
DEVICE="/dev/ir"

El siguiente paso es obtener el fichero "/etc/lirc/lircd.conf" con la configuración de las teclas de nuestro mando. Para obtener este fichero ejecutamos el siguiente comando y seguimos las instrucciones:

irrecord -H dev/input -d /dev/ir /etc/lirc/lircd.conf

El contenido del fichero "/etc/lirc/lircd.conf" generado será el siguiente:

begin remote
name AVerMedia_DVB-T_USB2
bits 32
begin codes
SOURCE 0x10094
POWER 0x10074
1 0x10002
2 0x10003
3 0x10004
4 0x10005
5 0x10006
6 0x10007
7 0x10008
8 0x10009
9 0x1000a
0 0x1000b
DISPLAY 0x10069
CH_RTN 0x1006a
SNAPSHOT 0x10095
16_CH_PREV 0x100ca
FULLSCREEN 0x10174
VOL_DOWN 0x10072
VOL_UP 0x10073
CH_DOWN 0x10193
CH_UP 0x10192
MUTE 0x10071
AUDIO 0x10188
RECORD 0x100a7
PLAY 0x100cf
STOP 0x10080
PAUSE 0x100a4
RED 0x1009e
YELLOW 0x1009f
TELETEXT 0x10184
GREEN 0x10194
BLUE 0x10195
EPG 0x1016d
MENU 0x1008b
end codes
end remote

Por último, debemos arrancar el demonio del Lirc con el siguiente comando:

/etc/init.d/lirc restart

domingo, 6 de abril de 2008

Sintonizador Avermedia AVerTV Analógica PCI (Chip Bt878) en Debian GNU / Linux

El sistema detecta automáticamente todos los módulos necesarios para el funcionamiento de este dispositivo.

Para ver la televisión se pueden usar los programa XawTV o TvTime.

Lo que sí tenemos que configurar es el mando a distancia de la tarjeta. Una vez tenemos la sintonizadora de TV funcionando, el siguiente paso es configurar el mando a distancia. El kernel reconoce automáticamente el mando a distancia como un dispositivo de entrada. Para comprobarlo se puede ejecutar el siguiente comando:

cat /proc/bus/input/devices

Con el sistema de dispositivos "udev", el sistema reconoce los dispositivos de forma que el mapeo a ficheros de los mismos no es determinista. Así, el dispositivo del mando a distancia unas veces puede estar mapeado en el fichero "/dev/input/event0" y otras veces en el fichero "/dev/input/event1".
Para que esto no sea un problema a la hora de configurar Lirc, definimos una regla del sistema "udev" que creará una alias del dispositivo en "/dev/ir". Para ello debemos crear un fichero con el nombre "099-duplicate_devs.rules" y ubicarlo en la ruta "/etc/udev/rules.d/". El contenido de este fichero será el siguiente:

KERNEL=="event*", SYSFS{name}=="bttv IR (card=13)", SYMLINK+="ir"

En esta regla se puede ver que hemos hecho coincidir el valor del campo "name" con el valor del mismo campo del fichero "/proc/bus/input/devices".

Para que se cree el dispositivo "/dev/ir" lo más cómodo es reiniciar el sistema. Para no reiniciar, se podría ejecutar el comando "/etc/init.d/udev restart", para que el sistema "udev" cargue la nueva regla, y después se podrían descargar y volver a cargar los módulos del kernel correspondientes a la tarjeta.

El siguiente paso es comprobar que el fichero "/dev/ir" se ha creado. Si es así, se puede ejecutar "cat /dev/ir" y al pulsar los botones en el mando a distancia debe aparecer basura en la pantalla.

En el fichero de configuración "/etc/lirc/hardware.conf" deben quedar las siguientes variables de configuración como sigue:

DRIVER="dev/input"
DEVICE="/dev/ir"

El siguiente paso es obtener el fichero "/etc/lirc/lircd.conf" con la configuración de las teclas de nuestro mando. Para obtener este fichero ejecutamos el siguiente comando y seguimos las instrucciones:

irrecord -H dev/input -d /dev/ir /etc/lirc/lircd.conf

El contenido del fichero "/etc/lirc/lircd.conf" generado será el siguiente:

begin remote

name AverTV
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8001
gap 135629
toggle_bit 0

begin codes
TV/FM 0x0179
CD 0x017F
TELETEXT 0x0184
POWER 0x0074
1 0x0002
2 0x0003
3 0x0004
VIDEO 0x0189
4 0x0005
5 0x0006
6 0x0007
AUDIO 0x0188
7 0x0008
8 0x0009
9 0x000A
FULLSCREEN 0x0174
0 0x000B
DISPLAY 0x0172
LOOP 0x00A8
PREVIEW 0x00D2
AUTOSCAN 0x00D9
FREEZE 0x008E
CAPTURE 0x019A
MUTE 0x0071
RECORD 0x00A7
PAUSE 0x0077
STOP 0x0080
PLAY 0x00CF
RED 0x018E
VOL_DOWN 0x0072
VOL_UP 0x0073
YELLOW 0x0190
GREEN 0x018F
CH_DOWN 0x0193
CH_UP 0x0192
BLUE 0x0191
end codes

end remote

Por último, debemos arrancar el demonio del Lirc con el siguiente comando:

/etc/init.d/lirc restart

sábado, 5 de abril de 2008

Tarjeta Wifi Comtrend CT-WN4320Z (Chip ZyDAS ZD1211) en Debian GNU / Linux

Lo primero que debemos hacer es instalar los paquetes necesarios para configurar la tarjeta. Son los siguientes:

wireless-tools
wpasupplicant
zd1211-firmware
resolvconf

Una vez instalados estos paquetes, podemos conectar la tarjeta USB y comprobar si ha sido detectada correctamente con el siguiente comando:

iwconfig

Este comando nos muestra los datos de los dispositivos WIFI detectados en el sistema.

Para detectar las redes inalámbricas, suponiendo que el dispositivo es "eth2", ejecutamos el siguiente comando:

iwlist eth2 scanning

Un vez conocidos el dispositivo detectado y la red a la que nos queremos conectar debemos configurar el fichero "/etc/network/interfaces". A continuación se muestra un ejemplo del contenido de este fichero para una red WPA:

auto eth2
iface eth2 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 62.36.225.150 62.37.228.20
wpa-driver wext
wpa-ssid <essid>
wpa-ap-scan 1
wpa-proto WPA
wpa-pairwise TKIP
wpa-group TKIP
wpa-key-mgmt WPA-PSK
wpa-psk <contraseña_wpa>

En el parámetro <essid> se debe poner el valor correspondiente a la red que se quiere configurar, y que ha sido obtenido con el comando "iwlist". Y el parámetro <contraseña_wpa> se obtiene ejecutando el siguiente comando:

wpa_passphrase <essid> <contraseña_wpa>

Se puede obtener más información en los siguientes enlaces:

enlace 1
enlace 2

domingo, 23 de septiembre de 2007

Webcam Sony Playstation Eye Toy (Chip ov519) en Debian GNU / Linux

El driver se puede encontrar en este enlace. Para su compilación abrimos una consola de root y ejecutamos los siguientes comandos:

cd /usr/src
tar zxvf ov51x-jpeg-0.5.4.tar.gz
cd ov51x-jpeg-0.5.4/
make
make install
mv /lib/modules/2.6.17-2-k7/kernel/drivers/media/video/ov511.ko /lib/modules/2.6.17-2-k7/kernel/drivers/media/video/ov511.ko.ORIGINAL
update-modules
modprobe ov51x
modprobe ov519_decomp force_palette=13

Para comprobar el correcto funcionamiento de la webcam se puede usar el programa XAWTV. Por ejemplo, si el dispositivo de video asociado a la webcam es el "/dev/video1", podemos ejecutar lo siguiente:

xawtv -c /dev/video1

También se puede obtener una captura de imagen con el siguiente comando:

v4lctl -c /dev/video1 snap jpeg 320x240 test.jpg

Para que el driver de la webcam se cargue en el arranque de la máquina se deben introducir la siguientes líneas en el fichero "/etc/modules":

ov51x
ov519_decomp force_palette=13

Para realizar videoconferencias con el Messenger se puede utilizar Kopete de KDE, aMsn o Mercury.