Ubuntu al meu portàtil
Darrera actualització: 01/09/2007
Vicent Cubells i Peña <vicent@vcubells.net>
- Introducció
Fa uns dies, em vaig comprar un portàtil amb un munt de maquinari modern, amb la idea de tenir una màquina el més potent possible que em dure mooolt de temps.
Però ja sabem que quan en sistemes GNU/Linux parlem de maquinari modern, això vol dir maquinari no suportat. I si el maquinari no està suportat, això suposa molts problemes.
Encete aquesta pàgina com una mena de diari amb dues intencions:
- que puga recordar què he fet per configurar-lo, per si ho he de fer en un altre moment,
- i que li puga servir a algun altre que es trobe en la mateixa situació que estic jo ara.
La distribució lliure triada per a gestionar el meu maquinari i les meues dades és Ubuntu Feisty (CD Alternate), la actual versió estable d’Ubuntu. El per què he triat aquesta distribució i no altra és, entre altres coses, perquè tinc alguns projectes de programari que necessiten executar-se en aquest sistema, i perquè forme part del Catalan Ubuntu Team.
Malgrat els problemes que estic tenint, puc dir que és una experiència encisadora. Estic aprenent molt.
- Contingut
Ací teniu tot un seguit de dades sobre el maquinari del meu portàtil.
Dispositius PCI
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 03)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 03)
00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 03)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 03)
00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 03)
00:1c.5 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 6 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f3)
00:1f.0 ISA bridge: Intel Corporation Mobile LPC Interface Controller (rev 03)
00:1f.1 IDE interface: Intel Corporation Mobile IDE Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation Mobile SATA AHCI Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 03)
01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0407 (rev a1)
04:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express (rev 02)
0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
0e:06.0 FireWire (IEEE 1394): Ricoh Co Ltd Unknown device 0832 (rev 05)
0e:06.1 Generic system peripheral [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
0e:06.2 System peripheral: Ricoh Co Ltd Unknown device 0843 (rev 12)
0e:06.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
Dispositius USB
Bus 007 Device 001: ID 0000:0000
Bus 006 Device 003: ID 04f2:b018 Chicony Electronics Co., Ltd
Bus 006 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 147e:2016
Bus 002 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
| Maquinari | Estat acabat d’instal·lar | Solució | Estat actual |
| Intel Core 2 Duo T7300 @ 2.0 | Funciona! | Funciona! | |
| 15.4″ WSXGA Glare Type 1280 x 800 | Funciona! | Funciona! | |
| nVidia GeForce 8600M 512M | No funciona! | Reconfigurar el servidor gràfic… | Funciona! |
| 2 GB DDR2 667/800MHz SDRAM (2×1024MB) | Funciona! | Funciona! | |
| 160 GB HDD (FUJITSU MHW2160B) | Funciona! | Funciona! | |
| DVD ± RW (TSSTcorp CDDVDW SN-S082H) | No funciona! | Carregar el mòdul adient | Funciona! |
| BROADCOM NetLink BCM5787M Gigabit Ethernet | No funciona! | Instal·lar una versió més actualitzada del network-manager | Funciona! |
| Targeta de so Intel 82801H (ICH8) | No funciona! | Compilar una versió més moderna d’Alsa i aplicar un pedaç | Funciona! |
| CHICONY USB WEBCAM 2.0MB | No funciona! | Instal·lar el paquet luvcview | Funciona! |
- Solucions als problemes trobats
Reconfigurar el servidor gràfic
Símptomes
La targeta és una nVidia GeForce 8600M com ja sabeu, i el programa d’instal·lació no l’ha detectat correctament.
Els símptomes són clars: Una vegada instal·lat el sistema i reinicialitzat no es pot iniciatiltzar el servidor gràfic i, per tant, no tinc escriptori.
Solució
$ sudo dpkg-reconfigure xserver-xorg
A l’assistent, cal triar el driver vesa en lloc del nv o nvidia.
Una vegada fet això cal baixar-se el paquet deb envy d’Alberto Milone i instal·lar-lo:
$ sudo dpkg -i envy*.deb
El funcionament de la targeta ara és perfecte:
$ glxgears
61456 frames in 5.0 seconds = 12291.148 FPS
62387 frames in 5.0 seconds = 12477.358 FPS
62382 frames in 5.0 seconds = 12476.340 FPS
62382 frames in 5.0 seconds = 12476.355 FPS
62387 frames in 5.0 seconds = 12477.241 FPS
$ glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: GeForce 8600M GT/PCI/SSE2
Sense gravadora: carregar el mòdul adient
Símptomes
De manera inexplicable
, la unitat de cdrom/dvd no existeix.
El dispositiu efectivament no existeix:
$ ls /dev/hd*
ls: /dev/hd*: No such file or directory
I encara que la unitat de cdrom està a la carpeta de l’ordinador, no podem muntar-lo, com era d’esperar:
Solució
En adonar-me que no estava carregat el mòdul libata, ni tampoc piix, vaig pensar que aquest era el problema.
Així que vaig afegir la línia piix al final del fitxer /etc/modules i en reiniciar l’ordinador ja tenia cdrom/dvd:
$ 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.
lp
sbp2
piix
La càrrega obligada del mòdul piix fa que es carreguen la resta necessària perquè la unitat de cdrom/dvd funciona (almenys al meu ordinador).
Instal·lar una versió més actualitzada del network-manager
Símptomes
M’era impossible connectar a Internet mitjançant la tarjeta Ethernet. Però semblava tot correcte:
La targeta correctament detectada:
$ lscpi -vv
04:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express (rev 02)
Subsystem: COMPAL Electronics Inc Unknown device 0025
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR+ <PERR-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 20
Region 0: Memory at f4000000 (64-bit, non-prefetchable) [size=64K]
Capabilities: <access denied>
El mòdul tg3 correctament carregat:
$ dmesg | grep tg3
[ 6.076000] tg3.c:v3.72 (January 8, 2007)
[ 24.620000] tg3: eth0: Link is up at 100 Mbps, full duplex.
[ 24.620000] tg3: eth0: Flow control is on for TX and on for RX.
però no hi havia manera.
Em vaig adonar que en intentar aixecar la interfície de xarxa el programa avahi en creava una virtual eth0:avahi:
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:D4:DC:D0:3B
inet6 addr: fe80::216:d4ff:fedc:d03b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:77 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26653 (26.0 KiB) TX bytes:5360 (5.2 KiB)
Interrupt:17
eth0:avah Link encap:Ethernet HWaddr 00:16:D4:DC:D0:3B
inet addr:169.254.8.186 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:17
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:828 (828.0 b) TX bytes:828 (828.0 b)
Això em va fer sospitar que podia ser un bug.
Efectívament hi ha almenys un obert al respecte a ca Ubuntu: #78078
Solució
La solució d’en omingo, porgar i reinstal·lar el programa avahi-autoipd, a mi no em va funcionar.
Si mirem el bug, podem comprovar que afecta al network-manager, que està marcat com a solucionat, i menciona un pedaç però sembla que van a tardar una mica en aplicar-lo a l’actual versió Feisty.
Així que he pensat que potser sí estiga aplicat en una versió més moderna del network-manager de Debian.
He cercat les versions del programa en qüestió.
Impossible instal·lar la versió 0.6.4-8 (unstable) perquè hi ha dependències amb libiw29 i aquest a la vegada amb libc6.
El que sí he pogut instal·lar és la versió 0.6.4-7 (testing).
En concret he hagut d’instal·lar els paquets network-manager_0.6.4-7_i386.deb i network-manager-gnome_0.6.4-7_i386.deb.
Una vegada instal·lats els paquets, en entrar de nou al Gnome obtenia la següent pantalla:
Executant des de finestra de comandaments, obtenia els següents missatges:
$ nm-applet
** (nm-applet:6857): WARNING **: Icon nm-vpn-lock missing: La icona «nm-vpn-lock» no es troba al tema
(nm-applet:6857): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
Després de fer una cerca per Internet, i seguint les instruccions del següent informe d’errada, per evitar la finestra tan sols he hagut d’executar:
$ sudo gtk-update-icon-cache -f /usr/share/icons/hicolor/
i ja està!! La targeta de xarxa funciona correctament al meu portàtil… Ja puc navegar.
Compilar una versió més moderna d’Alsa i aplicar un pedaç
Símptomes
No hi ha cap tipus de so.
Comprovats tots els volums amb el gnome-alsa-mixer:
Solució
Després de cercar molt per la xarxa i provar distintes solucions solament m’ha funcionat compilar una versió més moderna dels drivers d’Alsa i aplicar un pedaç amb un truc molt especial. Us explique com…
M’he baixat els drivers, llibreries i utilitats d’Alsa.
En concret la versió 1.0.14rc4.
Podeu trobar els paquets en les següents adreces:
ftp://ftp.alsa-project.org/pub/driver/
ftp://ftp.alsa-project.org/pub/lib/
ftp://ftp.alsa-project.org/pub/utils/
He descomprimit els paquets amb:
$ tar xjf alsa-driver-1.0.14rc4.tar.bz2
$ tar xjf alsa-lib-1.0.14rc4.tar.bz2
$ tar xjf alsa-utils-1.0.14rc4.tar.bz2
M’he baixa’t un pedaç per a les targes Realtek de la següent adreça:
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3104
En concret el fitxer realtek10.tar.gz.
He descomprimit el fitxer amb
$ tar xzf realtek10.tar.gz
Això ha desempaquetat dos fitxers: hda_proc.c i patch_realtek.c.
He editat el fitxer patch_realtek.c:
$ gedit patch_realtek.c
Més o menys per la línia 8274 hi ha una funció anomenada patch_acl268.
He canviat el tros de codi:
board_config = snd_hda_check_board_config(codec, ALC268_MODEL_LAST,
alc268_models,
alc268_cfg_tbl);
if (board_config < 0 || board_config >= ALC268_MODEL_LAST) {
printk(KERN_INFO “hda_codec: Unknown model for ALC268, ”
“trying auto-probe from BIOS…\n”);
board_config = ALC268_AUTO;
}
if (board_config == ALC268_AUTO) {
/* automatic parse from the BIOS config */
err = alc268_parse_auto_config(codec);
if (err < 0) {
alc_free(codec);
return err;
} else if (!err) {
printk(KERN_INFO
"hda_codec: Cannot set up configuration "
"from BIOS. Using base mode...\n");
board_config = ALC268_3ST;
}
}
pel següent:
board_config = ALC268_TOSHIBA;
He copiat els dos fitxers del pedaç al directori alsa-driver-1.0.14rc4/pci/hda/ amb:
$ mv *.c alsa-driver-1.0.14rc4/pci/hda/
També he instal·lat els paquets necessaris per a poder compilar alsa:
$ sudo aptitude install build-essential ncurses-dev gettext linux-headers-`uname -r`
A més d’alguns altres que he hagut d’esbrinar que calien per compilar alsa-lib i alsa-utils:
$ sudo aptitude install libasound2-dev libalsaplayer-dev libg++2.8.1.3-glibc2.2
I ja m’he dedicat a compilar Alsa. Primer el driver:
$ cd alsa-driver-1.0.14rc4
$ ./configure --with-cards=hda-intel
$ make
$ sudo make install
Després la llibreria:
$ ../cd alsa-lib-1.0.14rc4
$ configure
$ make
$ sudo make install
I finalment les utilitats:
$ ../cd alsa-utils-1.0.14rc4
$ configure
$ make
$ sudo make install
I ja està. La targeta funciona!!
En algun lloc recomanen afegir una línia al final del fitxer /etc/modprobe/alsa-base. En concret la següent:
options snd-hda-intel index=0 model=toshiba
però a mi no m’ha calgut.
Més info:
http://ubuntuforums.org/showthread.php?p=3200377
https://help.ubuntu.com/community/HdaIntelSoundHowto
Símptomes
La càmera no funciona de cap manera.
No es crea el dispositiu de vídeo:
$ ls /dev/video*
ls: /dev/video*: No such file or directory
i per tant, cap programa (camorama, webcam, gqcam, etc…) funciona.
És estrany perquè la càmera està perfectament detectada:
$ lsusb
Bus 007 Device 001: ID 0000:0000
Bus 006 Device 002: ID 04f2:b018 Chicony Electronics Co., Ltd
...
A la pàgina on es desenvolupa el driver, consta com a dispositiu suportat (mireu el dispositiu amb id 04f2:b018):
http://linux-uvc.berlios.de/#devices
Però el kernel sempre em diu sempre el mateix:
$ dmesg | grep uvc
[ 17.804000] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (04f2:b018)
[ 17.804000] uvcvideo: <3>uvcvideo: Failed to initialize the device (-22).
[ 17.804000] usbcore: registered new interface driver uvcvideo
encara que he compilat la revisió més moderna del driver, la 125 (a hores d’ara):
http://svn.berlios.de/svnroot/repos/linux-uvc/linux-uvc/trunk/
El cas és que el mateix dispositiu, amb mateix id, sí funciona en un Toshiba A200 d’un amic…
Solució
1) Primera solució possible que a mi no m’ha funcionat: Compilar el mòdul uvcvideo més modern
Ens baixem la versió més moderna:
$ svn checkout svn://svn.berlios.de/linux-uvc/linux-uvc/trunk
$ cd trunk
Editem el fitxer Makefile que trobarem a la carpeta i modifiquem la línia on posa:
INSTALL_MOD_DIR := usb/media
per la següent:
INSTALL_MOD_DIR := drivers/media/video/usbvideo/
I ja solament creem el binari i l’instal·lem:
$ make
$ sudo make install
2) Segona solució que sí m’ha funcionat: Instal·lar el paquet luvcview
Me’l baixe:
$ wget http://mxhaard.free.fr/spca50x/Investigation/uvc/luvcview-20070512.tar.gz
Extrec el seu contingut:
$ tar xfv luvcview-20070512.tar.gz
$ cd luvcview-20070512/
I faig el binari i l’instal·le:
$ make
$ sudo make install
I ja està! Solament cal executar el programa amb les següents opcions, per exemple:
$ luvcview -f yuv -s 640x480
i a funcionar.


