dijous, 27 de setembre del 2007

Dell XPS m1330 i GNU/Linux

Buf, al primer missatge que vaig enviar vaig dir que intentaria difondre l'us de programri lliure, i encare no ho he fet, es més, els dos darrers missatges de la RLP podriem dir que inciten a l'us del programri privatiu, ossigui que intentaré desintoxicar un poc el bloc amb aquest missatge.
Aquest estiu vaig renovar el portàtil, abans tenia un Dell Latitude D610 que ara és propietat del meu germà, el portàtil que tinc ara es un Dell (en vaig quedar prou satisfet com per repetir) XPS m1330 amb les següets característiques:


  • Microprocessador Intel T7500 a 2.2Ghz (que degut a un error a la pagina web de DELL vaig aconseguir que me'l cobrassin al preu d'un T7300 [més barat])
  • 1 Gb de RAM (dos mòduls de 512) a 667Mhz
  • Targeta gràfica NVIDIA GeForce M 8400GS de 128Mb (no se per que el sistema operatiu em diu que en te 256) i GDDR3
  • Targeta inalàmbrica Intel PRO Wireless 3945 ABG
  • Disc dur de 120Gb a 5400 rpm
  • Lector de targeta SD (model exacte)
  • Webcam de 0.3 Mp (model exacte)
  • Lector de empremta dactilar (que no vaig comanar però varen incloure :-P)
El portàtil en si és una meravella sobretot si vos dic que funciona TOT el hardware perfectament Linux, si TOT, el lector de empremtes dactilars i la webcam també!!
Aqui teniu els lspci i lsusb:

compacte@debian:~$ lspci
00:00.0 Host bridge: Intel Corporation Mobile Memory Controller Hub (rev 0c)
00:01.0 PCI bridge: Intel Corporation Mobile PCI Express Root Port (rev 0c)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #5 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 02)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 02)
00:1c.5 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 6 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f2)
00:1f.0 ISA bridge: Intel Corporation Mobile LPC Interface Controller (rev 02)
00:1f.1 IDE interface: Intel Corporation Mobile IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation Mobile SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0427 (rev a1)
03:01.0 FireWire (IEEE 1394): Ricoh Co Ltd Unknown device 0832 (rev 05)
03:01.1 Generic system peripheral [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
03:01.2 System peripheral: Ricoh Co Ltd Unknown device 0843 (rev 12)
03:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
03:01.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)
09:00.0 Ethernet controller: Broadcom Corporation Unknown device 1713 (rev 02)
0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

compacte@debian:~$ lsusb
Bus 007 Device 003: ID 05a9:7670 OmniVision Technologies, Inc.
Bus 007 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 005 Device 002: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000

Be aquest missatge encare que no ho sembli no és per fardar de portatil sinó per explicar un poc per damunt com fer funcionar el hardware a Linux (ho si quina sorpresa me pensava que ensenyaries a fer truita amb patates), així si algú vol migrar del fantabulós Vista que porta de sèrie a alguna distribució de GNU/Linux sapiga que pot fer-ho sense desaprofitar cap component del seu hardware.

El Microprocessador
Com deveu saber els processadors Intel porten una tecnologia que és diu SpeedStep, bé de tots és sabut que esta suportada a Linux, si posau una distro flowerpower de l'estil de Ubuntu, OpenSuse, PClinuxOS (que es veu que esta molt de moda) etc... no haureu de fer res per que funcioni, en canvi si vos posau una Debian, Gentoo etc. segurament haureu de fer un poc més de feina, el que vaig fer jo (amb una Debian) va ser instalar el cpudyn (sudo aptitude install cpudyn) com a gestor de freqüència de la CPU i llestos, no record que necessites més configuració, tal vegada s'han de carregar els mòduls acpi_cpufreq cpufreq-powersave cpufreq-ondemand i posar los a /etc/modules .

La targeta gràfica
Bé la targeta gràfica no te secret, és una NVIDIA, per defecte funciona amb els mòduls "nv" o "vesa" però no té acceleració 3D i la targeta s'encalenteix com una mala cosa, assolint temperatures d'uns 74ºC sense tenir activitat (amb el mòdul privatiu de NVIDIA sol estar a uns 60-65 ºC) amés aquests excessos de temperatura solen venir acompanyats d'uun major consum elèctric per tant la bateria dura menys, bé tota aquesta llista d'inconvenents es per justificar l'us del mòdul privatiu de NVIDIA (sembla que no podre desintoxicar el bloc del tot...). Per posar-lo tot el que s'ha de fer és tenir les sources del kernel, normalement s'obtenen baixant el paquet linux-headers-el_kernel_que_empris. Després és necessari el GCC, la mateixa versió amb que el kernel i headers han estat compilats, per això sovint s'ha de fer un enllaç simbòlic de gcc-versio_necessria a gcc amb un (situant-nos a la carpeta de l'executable /usr/bin):
sudo ln -s gcc-versio_necessaria gcc
La versio necessaria del gcc ens la dira l'instalador de NVIDIA en cas que aquesta no sigui correcta.
Després entram en una TTY i matam les X i executam l'instalador de NVIDIA (versio 100.X.X o superior si no les targetes de la serie 8xxx no estan suportades), totes les opcions que dona l'instalador per defecte son correctes os sigui que no hi toca haver problemes.
A continuació s'ha de tocar el /etc/X11/xorg.conf afegint el modul de nvidia, cosa que l'instalador NVIDIA fa per defecte si no li especificau el contrari. Ara basta tornar a engegar les X, anau amb compte que si emprau una versió de l'xserver superiro a la 1.3 la cosa no funcionara per que els drivers de nvidia no donen suport per ABI (o no en donaven quan ho vaig fer jo) i heu de emprar la opció -ignoreABI per a llançar les X aquí podeu veure com es fa:
compacte@debian:/$ cat /etc/gdm/gdm.conf
# GDM Custom Configuration file.
/usr/share/gdm/defaults.conf


[daemon]

[security]

[xdmcp]

[gui]

[greeter]
Browser=true
GraphicalTheme=debblue-list

[chooser]

[debug]

[servers]

Els canvis a fer a /etc/share/gdm/defaults.conf son:
# Definition of the standard X server.
[server-Standard]
name=Standard server
command=/usr/bin/X -audit 0 -ignoreABI
flexible=true

Targeta de sò
La targeta de so que porta el portatil és una Intel HDA, no la he mencionat a les característiques tècniques perquè és la típia de la plataforma "Santa Rosa" aquesta targeta esta suportada per ALSA en la seva darrera versió però vaig experimentar molts de problemes quan vaig configurar el portàtil ja que nomes ho estava a la versió inestable i s'havia de aplicar un pegat per que funcionés, almenys a la Debian, a l'Ubuntu funcionava perfectament. Crec que el problema a hores d'ara ja esta arreglat.

Targeta inalàmbrica
La targeta inalàmbrica Intel 3945ABG esta més que soportada a Linux, en distros flowerpower funcionara sense haver de fer res, a Debian s'ha de instalar el paquets ipw3945d firmware-ipw3945 ipw3945-modules-$(uname -r) record que el firmware que és privatiu. També vaig afegir el modul ipw3945 als /etc/modules

Lector de targetes
El lector de targetes és el:
Generic system peripheral [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
System peripheral: Ricoh Co Ltd Unknown device 0843 (rev 12)
System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)

i va funcionar sense configuracions adicionals, be vaig instalar el hal i l'udev per no haver de muntar el dispositiu manualment, a distros flowerpower funcionara sense fer res.

La webcam
En teoria la ID 05a9:7670 OmniVision Technologies, Inc. esta suportada per V4L versio 2 però vaig haver de baixar el codi del mòdul uvc amb svn i compilar-lo amb un simple make && sudo make install. Així i tot no funciona amb tots els programes, a mi em funciona amb l'Ekiga i dos programes especifics per webcams amb chip uvc, el lucveiw (disponible a l'apt) i el uvc_streamer ,aquest ultim serveix per muntar un servidor que mostra les imatges per internet i es poden veure posant la vostre IP dos punts el port emprat.

Lector d'empremptes dactilars
Aquest hadware
ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader va ser el més mal de fer funcionar, a thinkfinger hi ha les instruccions pas per pas i ben detallades, si emprau un sistema de 64bits anau amb compte que segurament els paquets no us servidarn (sempre podeu provar un dpkg -i --force-architecture o --force-all) o compilar desde el codi font. Per poder logejar amb l'emprempta d'actilar haureu de emprar el gdm, ah! i recordau que heu de carregar el modul uinput cada cop, posau lo a /etc/modules .

Aquí teniu com m'ha quedat el /etc/modules després de configurar ho tot:
compacte@debian:~$ cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

loop
sbp2
acpi-cpufreq
cpufreq-powersave
cpufreq-ondemand
ipw3945
uvcvideo
uinput



Be esper que les explicacions serveixin a algú encare que sigui per fer li pedre uns minuts entretingut xD. Sort!

Enllaços utils (i fonts de inspiració per aquesta entrada):
Tuxmobile
Slackware on Dell XPS m1330
Alsa Intel hda patch
Thinkfinger
Thinfinger on Ubuntu
Thinkwiki Howto enable Thinkfinger
Fedora 7 on IBM T60

Edit: Per a solucionar el renou fluixet que fa el portatil, que es com un pito interminent i rapid que nomes es pot apreciar quan no hi ha gens de soroll a l'ambinet el que s'ha de fer es:

sudo -s
echo 2 > /sys/module/processor/parameters/max_cstate

Si voleu que s'executi cada vegada que enceneu el portatil heu de afegir la linia anterior (nomes la del echo 2 > /sys/m...) al fitxer /etc/rc.local just abans del "exit 0" per editar el fitxer ho podeu fer amb qualsevol editor de text i privilegis de super usuari:

sudo gedit /etc/rc.local # per usuaris de Gnome
sudo kate /etc/rc.local # per a usuaris de KDE

Els que els-hi agrada la consola ja sabran com fer-ho