jueves, 30 de septiembre de 2010

Kubuntu y el Sony Vaio VPCF12S1E (1/2)

Recientemente he renovado el ordenador del trabajo y he sustituido mi viejo Acer TravelMate 4152LMi por un Sony Vaio VPCF12S1E.

Lo primero ha sido reparticionar el disco para arrinconar al fantabuloso Windows 7 frente a mi querido Kubuntu 10.04 Lucid Lynx (Ubuntu + KDE). Resulta que el disco tenía ya 3 particiones primarias, una para el W7 propiamente dicho, otra para sus copias de seguridad y una última para el arranque. Como un disco duro sólo acepta hasta 4 particiones primarias pues la cuarta necesitaba que fuera extendida. Así dentro de ella he alojado 3 particiones lógicas, una para el sistema operativo propiamente dicho (/root), otra para la carpeta personal (/home) y una última para el espacio de intercambio (swap, es como una RAM adicional en el disco duro), que en gnu-linux puede ser una partición en lugar de un archivo como así es en windows.

Tras el primer arranque de windows me encuentro que éste debe ser reparado tras el redimensionamiento de su partición, así que a tirar del cd de recuperación de W7 que cree antes de nada. No ha habido más problemas con el enemigo de los niños.

Volvamos a la agridulce sensación de instalar linux en un ordenador reciente y recapitulemos qué es lo que no funciona correctamente.
  1. El touchpad multitoque no funciona en absoluto.
  2. El sonido tampoco.
  3. Se produce un molesto y completo bloqueo en alguna de las ocasiones en las que sube el uso de la CPU. Me huelo que es debido al driver libre Nouveau de la tarjeta gráfica, una Nvidia GeForce GT 330M.
  4. No se puede modificar el nivel de retroiluminación, con lo bien que viene bajarla cuando hay batería baja.
  5. Los botones especiales funcionan, pero hay tres botones programables para ajustar.

Bien, veamos ahora qué podemos hacer por que todo funcione.
  1. La mejor solución que he encontrado para que funcione el touchpad ha sido en . Pasa por añadir la opción i8042.nopnp a la carga del kernel en el grub. La cosa cambia si hemos instalado el vetusto grub1 o el flagrante grub2.

    Para el grub2 debemos editar el archivo de configuración /etc/default/grub.
    Para ello podemos utilizar nano, gedit, vim, kate,...
    sudo nano /etc/default/grub
    
    En él editamos la siguiente línea para que contenga i8042.nopnp:
    GRUB_CMDLINE_LINUX="i8042.nopnp"
    
    Después generamos el grub a partir de él escribiendo en consola:
    sudo update-grub2
    
    También podríamos haberlo añadido directamente en el archivo /boot/grub/grub.cfg, pero éste se genera cada vez que actualicemos el kernel, perdiendo las modificaciones que hayamos hecho. La forma correcta es la que hemos utilizado.

    Para el grub1 hay que modificar, en el archivo /boot/grub/menu.lst, la siguiente línea de cada kernel:
    kernel /boot/vmlinuz-2.6.12-9-386 root=/dev/hda3 ro single i8042.nopnp
    
    Reiniciamos y ya debe funcionar el touchpad.

  2. Iniciar las salidas de audio no es muy complicado. En el archivo de configuración /etc/modprobe.d/alsa-base hay que añadir una línea que nos identifica el fabricante:

    options snd-hda-intel vaio
    
    Después reiniciamos el sonido y ya está:
    sudo alsa force-reload
    
    Con ésto hemos conectado las salidas, ahora tocan las entradas de audio. Por ahí me he encontrado que debemos parchear el kernel; para la versión 2.6.34, y para 2.6.35. Parece ser que el kernel 2.6.36 ya arregla este bug y no necesita ningún parche, creo que esperaré hasta su salida en los repositorios estables de Ubuntu o verdaderamente lo necesite.

  3. Bien, llegamos a la tarjeta gráfica. Estoy utilizando el driver abierto Nouveau, que funciona bien, pero el rendimiento ofrecido es bajo. Así que he ido a cambiarlo por el driver propietario de nVidia, pero me he encontrado con numerosos problemas en relación al EDID de la pantalla. En teoría vale con crear un archivo con la información en hexadecimal y apuntar en el archivo de configuración de las X, /etc/X11/xorg.conf, que lo lea de allí. Pero como no me funciona la cuestión y no se me ocurre ni encuentro nada más, pues esperaré a que salga el próximo driver de nVidia (160.x) y volveré a intentarlo.

  4. Para solucionar el problema de la retroiluminación de la pantalla debemos crear un par de archivos para que nos configuren apropiadamente el ACPI. Lo primero es comprobar cual es la dirección asociada a cada tecla, para lo cual utilizamos el comando "acpi_listen" y una vez que esté corriendo apretamos las combinaciones de teclas de aumentar y de disminuir la retroiluminación de la pantalla. En mi caso obtenemos "sony/hotkey SNC 00000001 00000011" y "sony/hotkey SNC 00000001 00000010" respectivamente.

    Ahora creamos el archivo /etc/acpi/events/sony-brightness-down:
    # /etc/acpi/events/sony-brightness-down
    event=sony/hotkey SNC 00000001 00000010
    action=/etc/acpi/sony-brightness.sh down
    
    También el archivo /etc/acpi/events/sony-brightness-up:
    # /etc/acpi/events/sony-brightness-up
    event=sony/hotkey SNC 00000001 00000011
    action=/etc/acpi/sony-brightness.sh up
    
    Por supuesto en ambos archivos pondremos las direcciones obtenidas anteriormente.
    Finalmente creamos el script de sistema /etc/acpi/sony-brightness.sh
    #!/bin/dash
    
    BR_CTLFILE=/sys/devices/virtual/backlight/acpi_video0/brightness
    
    ACTUAL_BR=$(cat /sys/devices/virtual/backlight/acpi_video0/actual_brightness)
    MAX_BR=$(cat /sys/devices/virtual/backlight/acpi_video0/max_brightness)
    MIN_BR=0
    
    case $1 in
      up)
        [ $ACTUAL_BR -lt $MAX_BR ] && BR=$(( $ACTUAL_BR + 1 ))
        ;;
      down)
        [ $ACTUAL_BR -gt $MIN_BR ] && BR=$(( $ACTUAL_BR - 1 ))
        ;;
    esac
    
    echo $BR > $BR_CTLFILE
    exit 0
    
    Le damos capacidad de ejecución con
    sudo chmod +x /etc/acpi/sony-brightness.sh
    
    Y ya sólo nos queda reiniciar el servicio acpi para poder disfrutar del control de retroiluminación:
    sudo /etc/init.d/acpid restart
    

  5. La utilización de los botones programables pasa por parchear el kernel del sistema con este parche. No me gusta lo de parchear el kernel, así que he intentado hecerlo mediante llamadas a los events del acpi de una forma similar al de las teclas de retroiluminación, pero no me ha salido a la primera, ya miraré un día que me aburra. Una de las 3 teclas (S1) sí que funciona, la he enlazado con mi querido Synaptic.

Bien, y con esto terminamos la primera parte de la configuración del sistema. Cuando le haga algún arreglillo más, en especial en los drivers, ya sacaré la segunda parte.

Vía Ubuntu On Sony Vaio FW Series y vaio-f11-linux.
El touchpad en vagos.es.
El sonido en ubuntuforums.
Los micrófonos en vaio-f11-linux.
La retroiluminación en vaio-f11-linux.

5 comentarios:

Chemi dijo...

Que sepas que pensaba probar Ubuntu en mi portatil... hasta que he leído esto :-p

Silvano dijo...

¿En qué portátil?

Chemi dijo...

Cómo odio esto de que los blogs no te avisen por correo cuando te responden... :-p

Es un portátil HP de casi dos años, no creo que tenga ese tipo de problemas. Así que tranquilo que sigo con mi idea de probarlo ;-)

Chemi dijo...

Bueno, ya lo he probado. Mis impresiones aqui: http://blog.chemi2g.com/2010/10/primeras-impresiones-de-ubuntu.html :)

Silvano dijo...

Vaya, aunque parece ser que en el driver de nVidia 260.19.12 ya han arreglado el problema con el EDID, y efectivamente es capaz de leerlo, sigo sin ser capaz de que funcione. Durante el arranque de las X, justo cuando va a cargar el driver se bloquea totalmente. Por más cosas que he probado sigo sin ser capaz de solucionarlo...

Publicar un comentario

Escribe, no es tu opinión, es tu derecho.