Sunday, March 18, 2007

Mandriva 2007 en una Compaq nx6120 (EL170LA#ABM)



En un post anterior relaté como instalé Mandriva 2006.0 en esta Compaq nx6120. La laptop se portó de maravilla con esa distribución pero llegó la hora de actualizarla. La razón principal, el kernel de "cajita" de Mandriva 2006.0 no trae el módulo sdhci que es el que permite utilizar el memory card reader que trae la laptop. Aunque ya había hecho pruebas compilando un kernel a la medida, no tengo el tiempo ni las ganas de estar manteniendo, a mano, una laptop y un dekstop. Para eso están las personas encargadas de las distribuciones. La rueda no hay que inventarla, hay que usarla.

Para comenzar, coloco la salida de lspci

00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)
00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)
00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03)
02:04.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)
02:06.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
02:06.1 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller
02:06.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller
02:06.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller
02:06.4 Class 0805: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller
02:06.5 Communication controller: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Smart Card Controller (SMC)
02:0e.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705M_2 Gigabit Ethernet (rev 03)


Es exactamente el mismo del post anterior ( es la misma laptop ;) )

Tal y como pasó con Mandriva 2006.0, esta vez, la mayoría de las cosas quedaron configuradas correctamente después de la instalación sin necesidad de tocar nada. Veamos entonces las configuraciones que tuve que hacer manualmente:


Tarjeta wireless.
Es una Intel PRO/Wireless 2200BG que usa el módulo ipw2200. Sin embargo, es necesario bajar e instalar el firmware que no es GPL.

El firmware se puede conseguir en esta dirección
o en cualquier mirro de PLF.

Una vez instalado el firmware, se puede utilizar el drakroam que es el wizard de Mandriva para configurar la conexión inalámbrica.

Si se tienen problemas de desconexiones y reconexiones, mensajes de "Link beat lost",
aconsejan en los foros colocar la siguiente opción en el /etc/modprobe.conf
options ipw2200 hwcrypto=0

Si se quiere que se prenda el led del botón de la tarjeta wireless, entonces hay que agregar led=1 a la línea antes mencionada, por lo que al final quedaría
options ipw2200 led=1 hwcrypto=0

Con esta versión de ipw2200 he tenido algunos inconvenientes con lo del led, aveces tengo que presionar dos veces el botón para que se encienda el led, aunque la conexión siempre ha funcionado.

Algo importante. Esta laptop está fabricada para Latinoamérica, por lo que el chip de la tarjeta wireless solo se conecta a los canales 1-12 (USA). Ahora estoy en España y en Europa, los canales permitidos van desde el 1 hasta el 13. Yo tenía mi Access Point en el canal 13 y no podía conectarme, así que lo configuré para el canal 11 y ahora todo funciona correctamente.

Si no se puede cambiar el canal del AP, entonces hay dos modos de lidiar con esta "restricción" del chip, una es modificando el código fuente del módulo ipw2200 y la otra es modificar el ROM del chip. En google indican como hacerlo, menos mal que en mi caso no fue necesario.

Suspensión a RAM
Mandriva 2007 no trae hibernate, trae pmsuspend, así que tuve que configurar manualmente ciertas cosas.

Lo primero, la versión free de Mandriva 2007 no trae el paquete vbetool, así que tuve que bajarlo del contrib de la misma distribución.

Me parece un grave error, ya que pmsuspend utiliza este paquete para la suspensión del video.

En el /etc/X11/xorg.conf coloqué esta línea en la sección Device
Option "VBERestore" "true"

La sección completa es la siguiente:
Section "Device"
Identifier "device1"
VendorName "Intel Corp."
BoardName "Intel 915"
Driver "i810"
Option "DPMS"
Option "May_Need_ForceBIOS" "1"
Option "VBERestore" "true"
Option "XaaNoOffscreenPixmaps" "1"
Option "MonitorLayout" "NONE,CRT+LFP"
EndSection

El archivo /etc/sysconfig/suspend quedó de la siguiente manera (omito los comentarios).
RESTART_NFS="yes"
RESTART_NETWORK="yes"
RESTART_PCMCIA="no"
PCMCIA_BIOS_BUG="yes"
PCMCIA_WAIT="yes"
PCMCIA_TIMEOUT="10"
CHANGE_VT="7"
VBESTATESAVE="yes"
VBEPOST="yes"
VBEAUTO="yes"
CLOCK_SYNC="no"
RESTORE_SOUND="no"
SOUND_MODULES="sb uart401 sound soundcore maestro cs4281"
RELOAD_MODULES=
USB_RESTART="no"
TERMINAL_BEEP="no"
BEEP_LENGTH=2
LOGPERCENTCHANGE=10
WARNPERCENT=5
ADDPARAMS="-W"
AUTOWAKE="no"
AUTOWAKE_DELAY=20
AUTOWAKE_COMMAND="/usr/bin/pmsuspend disk"

Después de esto, el comando pmsuspend ram, suspende la laptop correctamente.


Lector de tarjetas (card reader).
Esta fué la causa principal del cambio de distribución. Con estas líneas que voy a colocar a continuación, puedo leer tarjetas MMC y SD.

setpci -s 02:06.3 4c.b=02
modprobe mmc_block
modprobe sdhci
mount -t vfat /dev/mmcblk0p1 /mnt/sd


Nota: Se supone que /mnt/sd existe ( this post isn't for winusers ;) )


Cosas que quedan sin funcionar:

- El botón de sleep (Fn+F3)
- Los botones de audio

Cosas que no he probado:

- Modem. Entiendo que funciona con el paquete slmodem.
- Firewire. Es detectado, los módulos suben pero no tengo ningún dispositivo Firewire


Update 2008-10-29

El firewire funciona correctamente. Me compré una cámara de video firewire y uso Kino para copiar los videos de la cinta al disco duro. Uso el siguiente script para cargar los módulos

#!/bin/bash
#Prompt user
echo -n “Turn on camera and plug it in. Press enter when ready.”
read dummyval

#Create the IEEE1394 device nodes used by Kino
mkdir -p /dev/ieee1394/dv/host0/NTSC
mknod -m 666 /dev/ieee1394/dv/host0/NTSC/in c 171 32
mknod -m 666 /dev/ieee1394/dv/host0/NTSC/out c 171 33
mkdir -p /dev/ieee1394/dv/host0/PAL
mknod -m 666 /dev/ieee1394/dv/host0/PAL/in c 171 34
mknod -m 666 /dev/ieee1394/dv/host0/PAL/out c 171 35

modprobe -r sbp2
modprobe -r raw1394
modprobe -r dv1394
modprobe -r ohci1394
modprobe -r ieee1394
modprobe ieee1394
sleep 3s
modprobe ohci1394
sleep 3s
modprobe raw1394
sleep 3s
#Not strictly needed but load anyway.
modprobe sbp2