Página 1 de 1

Wifi integrada en acer travelmate 250, CDlive y compilador

Publicado: 16 Mar 2009, 22:12
por des_enrique.garciasimon
Hola a todos
Este es mi primer post, y es la derivación de un post del curso "MAX: La distribución GNU/Linux para la educación de la Comunidad de Madrid" que estoy realizando.

Este es el link al post original, que no sé si es visible para cualquier usuario de educamadrid
http://formacion.educa.madrid.org/mod/f ... php?d=9906

Así que pongo aquí un "resumen" (quito todo lo referente a poner operativa una wifi usb que ya me permite descargar paquetes y que incluí en el mismo post), a ver si me podéis ayudar.
Gracias por anticipado

-------------------
Tengo un portátil algo antiguo (acer travelmate 254LMi_DT, pentium IV , 512RAM, 40GB HD), que empieza a tener sus achaques, pero es funcional para un uso normal.
El tema es que
- tiene un botoncillo que activa/desactiva el wifi, y que en windows aparece inicialmente encendido. Cuando instalas un linux, reconoce la tarjeta, pero el botoncito está apagado inicialmente y por mucho que lo pulses dice que nones. Tras sufrir lo indecible hace años, localicé http://www.cakey.de/acerhk/, que tras compilarlo hizo que linux reconociera las pulsaciones y activara el hardware (me funciona en suse y debian)
- mi lector de dvd está achacoso, y a día de hoy sólo lee cd: me he bajado el CDlive y lo he instalado, y me reconoce la tarjeta, pero se me da la situación conocida de que el botón no hace nada

-¿Hay algo distinto a acerhk que valga? He visto esto googleando:
http://www.ubuntu-es.org/index.php?q=node/87310

Me iba a poner a compilar, pero resulta que, igual por haber instalado desde CD, creo que no está instalado el compilador (sudo make no hace nada)
Tras darle unas vueltas he descargado e instalado con apt-get sin errores los paquetes make, gcc, linux-headers-2.6.24-23-generic, libc6-dev

Con esos paquetes lanzo el make que es lo que dicen las instrucciones de acerhk en el fichero INSTALL y me da este error

madrid@max40:~/acerhk-0.5.35$ sudo make
make -C /lib/modules/`uname -r`/build SUBDIRS= modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.24-23-generic'
CHK include/linux/version.h
CHK include/linux/utsrelease.h
make[2]: *** No hay ninguna regla para construir el objetivo `arch/x86/kernel/asm-offsets.c', necesario para `arch/x86/kernel/asm-offsets.s'. Alto.
make[1]: *** [prepare0] Error 2
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.24-23-generic'
make: *** [acerhk.ko] Error 2

En /usr/src/linux-headers-2.6.24-23-generic/arch/x86/kernel/ no tengo ese fichero asm-offsets.c

Creo que me he topado con un bug identificado
https://bugs.launchpad.net/ubuntu/+sour ... bug/233950
Pero aquí me empiezo a perder ... he probado cosas que comentan
sudo apt-get install linux-source
y descomprimirlo
sudo apt-get install module-assistant
sudo m-a prepare
pero tampoco va, y me da el mismo error, aunque ahora sí que veo el fichero asm-offsets.c en /usr/src/linux-source-2.6.24/arch/x86/kernel

Así que he leyendo más he creado
madrid@max40:/usr/src$ sudo ln -s linux-source-2.6.24 linux
y editado Kbuild para poner ../linux/arch y parece que avanza más pero me da un nuevo error

madrid@max40:~/acerhk-0.5.35$ sudo make
make -C /lib/modules/`uname -r`/build SUBDIRS= modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.24-23-generic'
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CC ../linux/arch/x86/kernel/asm-offsets.s
GEN include/asm-x86/asm-offsets.h
CALL scripts/checksyscalls.sh
HOSTCC scripts/genksyms/genksyms.o
HOSTCC scripts/genksyms/lex.o
HOSTCC scripts/genksyms/parse.o
HOSTLD scripts/genksyms/genksyms
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
HOSTCC scripts/kallsyms
HOSTCC scripts/conmakehash
make[2]: *** No hay ninguna regla para construir el objetivo `arch/x86/kernel/msr.c', necesario para `arch/x86/kernel/msr.o'. Alto.
make[1]: *** [arch/x86/kernel] Error 2
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.24-23-generic'
make: *** [acerhk.ko] Error 2

Alguna idea? Llevo ya un buen rato y me desespero de probar cosas.
Me gustaría utilizar la wifi integrada, que es lo que hago desde Windows
....
la tarjeta wifi que aparece con lspci
02:05.0 Network controller: Intersil Corporation Prism 2.5 Wavelan chipset (rev 01)
y también que al encender siempre aparece el botón apagado, sea cual sea el estado antes de reiniciar. No he localizado ninguna opción en la bios para que arranque con el botón y el hw de wifi encendido, y de hecho este dichoso botoncito es el que fundamentalmente me ha hecho usar windows.
....

Me he levantado con la idea "¿y si en lugar de estarme liando con el compilador resultase que ya hubiera un paquete listo para ponerlo operativo, y me estoy liando ?", así que no he resistido la tentación de encender un rato el ordenador y echarle un vistazo, y me he encontrado esto, que tiene buena pinta

http://insidethebrackets.blogspot.com/2 ... buntu.html

que me ha confirmado que el paquete existía, como he visto en el repositorio oficial, aunque como fuentes y para otras versiones de ubuntu distintas de "hardy" que es en la que está basado MAX 4.0

http://packages.ubuntu.com/search?keywo ... ection=all

Al ver el nombre acerhk-source_0.5.35-4_all.deb lo he instalado asumiendo que valdría para hardy, pero he seguido los pasos del primer enlace, y acerhk no me aparece en la lista de sudo m-a para seleccionarlo"

¿Has instalado module-assitant sin problemas y ahora no lo puedes arrancar?

Respecto a instalar "sin problemas", no lo tengo claro: sé que me ha dado algún mensaje referenciando que faltaban cosas como debhelper y que tenía que hacer sudo apt-get -f install, que he lanzado luego y me ha instalado unos cuantos paquetes más.

Pongo lo que me dicen ahora mismo los pasos de http://insidethebrackets.blogspot.com/2 ... buntu.html por si a alguien le dan alguna pista

madrid@max40:~$ sudo apt-get update
Obj http://max.educa.madrid.org max Release.gpg
Ign http://max.educa.madrid.org max/main Translation-es
Obj http://archive.ubuntu.com hardy Release.gpg
Obj http://archive.ubuntu.com hardy/main Translation-es
Obj http://max.educa.madrid.org max Release
Obj http://security.ubuntu.com hardy-security Release.gpg
Ign http://security.ubuntu.com hardy-security/main Translation-es
Obj http://archive.ubuntu.com hardy/restricted Translation-es
Obj http://archive.ubuntu.com hardy/universe Translation-es
Obj http://archive.ubuntu.com hardy/multiverse Translation-es
Obj http://archive.ubuntu.com hardy-updates Release.gpg
Ign http://archive.ubuntu.com hardy-updates/main Translation-es
Ign http://archive.ubuntu.com hardy-updates/restricted Translation-es
Ign http://archive.ubuntu.com hardy-updates/universe Translation-es
Ign http://archive.ubuntu.com hardy-updates/multiverse Translation-es
Ign http://security.ubuntu.com hardy-security/restricted Translation-es
Ign http://security.ubuntu.com hardy-security/universe Translation-es
Ign http://security.ubuntu.com hardy-security/multiverse Translation-es
Obj http://archive.ubuntu.com hardy Release
Obj http://security.ubuntu.com hardy-security Release
Ign http://max.educa.madrid.org max/main Packages
Obj http://archive.ubuntu.com hardy-updates Release
Obj http://max.educa.madrid.org max/main Packages
Obj http://security.ubuntu.com hardy-security/main Packages
Obj http://archive.ubuntu.com hardy/main Packages
Obj http://archive.ubuntu.com hardy/restricted Packages
Obj http://archive.ubuntu.com hardy/universe Packages
Obj http://archive.ubuntu.com hardy/multiverse Packages
Obj http://security.ubuntu.com hardy-security/restricted Packages
Obj http://security.ubuntu.com hardy-security/main Sources
Obj http://security.ubuntu.com hardy-security/restricted Sources
Obj http://security.ubuntu.com hardy-security/universe Packages
Obj http://archive.ubuntu.com hardy-updates/main Packages
Obj http://archive.ubuntu.com hardy-updates/restricted Packages
Obj http://archive.ubuntu.com hardy-updates/universe Packages
Obj http://security.ubuntu.com hardy-security/universe Sources
Obj http://security.ubuntu.com hardy-security/multiverse Packages
Obj http://security.ubuntu.com hardy-security/multiverse Sources
Obj http://archive.ubuntu.com hardy-updates/multiverse Packages
Leyendo lista de paquetes... Hecho

madrid@max40:~$ sudo apt-get install module-assistant
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
module-assistant ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 51 no actualizados.

sudo m-a, aparece pantalla gris y azul
--- Al seleccionar PREPARE

madrid@max40:~$ sudo m-a
Iniciando la interfáz Dialog...
Obteniendo los fuentes de la versión del núcleo: 2.6.24-23-generic
apt-get install linux-headers-2.6.24-23-generic
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
linux-headers-2.6.24-23-generic ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 51 no actualizados.
apt-get install build-essential
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
build-essential ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 51 no actualizados.

¡Hecho!


Presione Intro para continuar...

--- Al seleccionar UPDATE

Actualizado los ficheros infos de los paquetes 85

--- Al selectionar SELECT no me aparece acerhk (aparecen por orden alfabético, incluyo pantallazo)

--------------------------------------

Ideas bienvenidas: su día el make sin más como root (lo que indica el INSTALL de acerhk) en suse y debian me funcionó, pero aquí en MAX se resiste.

Publicado: 17 Mar 2009, 11:38
por des_ezequiel
También estoy en el curso. Asi que un saludo.

Y perdona que no te haya contestado en el foro del curso pero es que está demasiado liado. Somos muchos a la vez y abriendo hilos repetidos.

Dices que en debian te funciona.

¿Has probado a instalar el paquete Debian en MAX?

Editado: No había leído el post entero. Veo que has probado un paquete para Ubuntu pero para versiones superiores. Prueba con la Debian. Seguro que el paquete de ubuntu tiene problemas de dependencias.

Publicado: 17 Mar 2009, 18:35
por des_enrique.garciasimon
Hola Ezequiel
Como comento en el "resumen", realmente no es un paquete debian, sino que son fuentes.
En el post comento que he localizado un paquete .deb en ubuntu que simplemente son los fuentes.
Hace ya años en suse (creo que v9) y debian (creo que v3) me funcionó, y lo único que hice fue descomprimir los fuentes y hacer lo que indica el fichero INSTALL de los fuentes, que es básicamente el make y luego un make install
Sin embargo en MAX me falla el make...

Publicado: 18 Mar 2009, 15:02
por des_ezequiel
¿Has probado con el acrhk GUI?

Mira este enlace:

http://ubuntuforums.org/showthread.php?t=1059704

Suerte

Publicado: 19 Mar 2009, 00:00
por des_enrique.garciasimon
Buenas noticias, tras dedicarle un buen rato, lo conseguí !!
Comparto mis averiguaciones

Creo que la clave del problema es que el compilador ha cambiado y el paquete acerhk es antiguo.
La clave me la dió ver que en el acerhk que bajaba el paquete .deb y el de acerhk había Makefiles distintos, aunque ninguno funcionaba, y tras googlear encontré esto
https://bugs.launchpad.net/ubuntu/+sour ... +bug/53953

Así que cambié el Makefile del paquete original de http://www.cakey.de/acerhk/

Estos son los cambios

madrid@max40:~/acerhk-0.5.35$ diff Makefile Makefile.original
17c17
< EXTRA_CFLAGS+=-c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe
---
> CFLAGS+=-c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe
19d18
< V?=0
42c41
< $(MAKE) -C $(KERNELSRC) SUBDIRS=$(PWD) M=$(CURDIR) V=$(V) modules
---
> $(MAKE) -C $(KERNELSRC) SUBDIRS=$(PWD) modules


Y con este makefile, ya "va como la seda", el make no falla

Código: Seleccionar todo

madrid@max40:~/acerhk-0.5.35$ sudo make
make -C /lib/modules/`uname -r`/build SUBDIRS= M=/home/madrid/acerhk-0.5.35 V=0 modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.24-23-generic'
  CC [M]  /home/madrid/acerhk-0.5.35/acerhk.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/madrid/acerhk-0.5.35/acerhk.mod.o
  LD [M]  /home/madrid/acerhk-0.5.35/acerhk.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.24-23-generic'
Como el make no falla, sigo con el siguiente paso que indica INSTALL

Código: Seleccionar todo

madrid@max40:~/acerhk-0.5.35$ sudo make install
mkdir -p /lib/modules/2.6.24.6/extra
cp -v acerhk.ko /lib/modules/2.6.24.6/extra/
«acerhk.ko» -> «/lib/modules/2.6.24.6/extra/acerhk.ko»
depmod -a
Me despista lo de 2.6.24.6 (uname -r dice 2.6.24-23-generic), pero sigo con los pasos
que indica INSTALL

Código: Seleccionar todo

sudo depmod -a
sudo modprobe acerhk
Con dmesg veo

[ 1264.008352] input: Acer hotkey driver as /devices/virtual/input/input8
[ 1264.008352] Acer Travelmate hotkey driver v0.5.34

¿como es posible si he compilado v0.5.35?
Con sudo modprobe -a acerhk veo de dónde lo coge
insmod /lib/modules/2.6.24-23-generic/ubuntu/misc/acerhk.ko

y confirmo que ya venía con ubuntu, no lo he instalado y no tiene que ver con el paquete acerhk-source
-rw-r--r-- 1 root root 49676 2009-01-29 14:39 /lib/modules/2.6.24-23-generic/ubuntu/misc/acerhk.ko

Así que, ya que tengo la versión 0.5.35 compilada con el sudor de mi frente, la pongo
en esa ruta, y compruebo que la coge ok
Ya le pongo las opciones completas al módulo: información detalle y autowlan=1, para que el botón active el wifi

Código: Seleccionar todo

sudo modprobe acerhk verbose=4  autowlan=1
y en dmesg

Código: Seleccionar todo

[  389.394069] acerhk: area from 0xf000 to 0xffff mapped to c00f0000
[  389.394076] acerhk: area from 0xe000 to 0xffff mapped to c00e0000
[  389.394083] acerhk: area from 0x400 to 0x13ff mapped to dfcc4400
[  389.394089] acerhk: key mapping:
[  389.394091] acerhk: help     0x8a
[  389.394093] acerhk: setup    0xab
[  389.394095] acerhk: p1       0x94
[  389.394097] acerhk: p2       0x95
[  389.394099] acerhk: p3       0xca
[  389.394101] acerhk: www      0x96
[  389.394103] acerhk: mail     0x9b
[  389.394105] acerhk: wireless 0x93
[  389.394107] acerhk: power    0x74
[  389.394109] acerhk: mute     0x71
[  389.394110] acerhk: volup    0x73
[  389.394112] acerhk: voldn    0x72
[  389.394114] acerhk: res      0xab
[  389.394116] acerhk: close    0xce
[  389.394118] acerhk: open     0x86
[  389.394120] acerhk: wireless2 0x98
[  389.394122] acerhk: play     0xa4
[  389.394124] acerhk: stop     0xa6
[  389.394126] acerhk: prev     0xa5
[  389.394128] acerhk: next     0xa3
[  389.394130] acerhk: display  0xe2
[  389.394132] acerhk: registered input device
[  389.396776] input: Acer hotkey driver as /devices/virtual/input/input9
[  389.421918] acerhk: start search for model string at c00f0000
[  389.421973] acerhk: found model string 'TravelMate 250 ' at c00f28d5
[  389.421976] acerhk: offset from model string to function address: 0xb36b
[  389.421979] acerhk: model string indicates TM 250 series
[  389.421982] acerhk: using call_bios_6xx mode
[  389.421984] acerhk: supported keys: help setup power mute p1 p2 wireless mail www wireless2
[  389.421995] acerhk: mail led is supported
[  389.421997] acerhk: supported functions: wbutton
[  389.422180] acerhk: cmos index set to 0x60
[  389.422183] acerhk: bios routine found at 0xc00fdc40
[  389.422185] Acer Travelmate hotkey driver v0.5.35
[  389.422194] acerhk: starting key polling, every 50 ms
con esto pulsando el botón se enciende!

Código: Seleccionar todo

[  629.407863] acerhk: received key code 0x30
[  629.407871] acerhk: translated acer key code 0x30 to key name 0x8
[  629.408060] acerhk: wbutton2 = 0x1
[  629.408062] acerhk: translated acer key name 0x8 to input key 0x93
[  629.487843] wifi0: LinkStatus=8 (Unknown)
[  629.488152] wifi0: LinkStatus: BSSID=44:44:44:44:44:44
[  630.043643] wifi0: LinkStatus=1 (Connected)
[  630.043945] wifi0: LinkStatus: BSSID=00:60:b3:26:85:b3
[  630.044286] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[  630.044641] ADDRCONF(NETDEV_CHANGE): wifi0: link becomes ready
[  640.898971] wlan0: no IPv6 routers present
En el icono del escritorio de NetworkManager ya aparece una lista de redes, y en dmesg empieza a aparecer continuamente

Código: Seleccionar todo

[  760.239850] wifi0: LinkStatus=2 (Disconnected)
[  760.240214] wifi0: LinkStatus: BSSID=00:60:b3:26:85:b3
[  760.884021] wifi0: LinkStatus=2 (Disconnected)
[  760.884346] wifi0: LinkStatus: BSSID=44:44:44:44:44:44
[  760.896998] wifi0: LinkStatus=2 (Disconnected)
[  760.897219] wifi0: LinkStatus: BSSID=44:44:44:44:44:44
[  760.909573] wlan0: Trying to join BSSID 00:60:b3:26:85:b3
[  760.933575] wifi0: LinkStatus=6 (Association failed)
[  760.933796] wifi0: LinkStatus: BSSID=44:44:44:44:44:44
[  771.291151] wifi0: LinkStatus=2 (Disconnected)
[  771.291602] wifi0: LinkStatus: BSSID=44:44:44:44:44:44
[  771.304252] wifi0: LinkStatus=2 (Disconnected)
[  771.306164] wifi0: LinkStatus: BSSID=44:44:44:44:44:44
Gráficamente eligo la red y aparece el icono de dos esferas como si estuviera cogiendo ip en dhcp, que al rato funcionaba con otra tarjeta de red
No funciona... y en /var/log/messages veo esto

Código: Seleccionar todo

Mar 18 19:05:48 max40 dhcdbd: message_handler: message handler not found under /com/redhat/dhcp/wlan0 for sub-path wlan0.dbus.get.reason
Alucinando de ver mensajes de redhat, de nuevo googleando (bendito San Google), encuentro esto
https://bugs.launchpad.net/ubuntu/+sour ... +bug/93360

Así que se me ocurre usar sin más dhclient desde línea de comandos

Código: Seleccionar todo

d@max40:~$ sudo dhclient
Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

wifi0: unknown hardware address type 801
wifi0: unknown hardware address type 801
Listening on LPF/wlan0/00:02:8a:d8:90:a3
Sending on   LPF/wlan0/00:02:8a:d8:90:a3
Sending on   Socket/fallback
DHCPREQUEST of 192.168.1.34 on wlan0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.34 from 192.168.1.1
bound to 192.168.1.34 -- renewal in 112507 seconds.
En el escritorio el icono de NetworkManager sigue indicando que no hay conexión, pero mirando con ifconfig confirmo que tengo IP, y la wifi funciona, puedo navegar!!!
Aunque no lo veáis, aquí me caen unas lagrimillas de emoción....

Así que toca recapitular y poner esto operativo para que funcione en el arranque:

-------------------
RECAPITULACION
- El driver acerhk viene en ubuntu hardy ya compilado en v0.5.34
- Para compilar acerhk hay que retocar el makefile (relacionado bug https://bugs.launchpad.net/ubuntu/+sour ... bug/233950 y https://bugs.launchpad.net/ubuntu/+sour ... +bug/53953)
- Para compilar acerhk parece que no funciona usar m-a tras descargar el paquete acerhk-source
- Para utilizar el acerhk compilado hay que colocarlo en una ruta distinta a la que usa el make install
- El NetworkManager no gestiona bien, y hay que usar dhclient

Para ponerlo operativo en el arranque
- Añadir en /etc/modules la línea
acerhk verbose=4 autowlan=1
- Cambiar /etc/network/interfaces que queda

Código: Seleccionar todo

auto lo wlan0
iface lo inet loopback
post-up echo on >  /proc/driver/acerhk/wirelessled
post-up iwconfig wlan0 essid "Wireless"
post-up dhclient wlan0
El echo simula pulsar el botón automaticamente para hacer que en el arranque esté encendido

Por último he quitado NetworkManager, que no funciona:
La versión que aparece en escritorio pone "n-m applet 0.6.6"
Al quitar NetworkManager han desaparecido al tiempo todas las interfaces de red salvo lo y he tenido que reiniciar, y todo ha ido bien.
En el post mencionan como alaternativa wifi-radar; parece sencillo pero al menos permite ver las redes disponibles en alcance y nivel intensidad

Respecto a acerhkgui, es un añadido a acerhk, y no funciona sin acerhk, no una opción.
Por hacer una analogía, es como NetworkManager que necesita tarjetas de red presentes y operativas.
La verdad es que para mi acerhkgui es poco útil, porque lo que hace es poner una interfaz gráfica a comandos "echo xx > /proc/driver/acerhk ..." y parece matar pulgas a cañonazos, porque me ha exigido descargarme paquetes que ocupaban 14M