Abrimos la sección técnica post-veraniega con un problemilla y su solución. Estoy estrenando portatil en mi nuevo trabajo (¿qué no sabíais que me cambiaba de trabajo? Bueno, ya os contaré más cosas en unos días) y mi Linux no es capaz de manejar correctamente la conexión inalámbrica. Reconoce el dispositivo como Broadcom Corporation Dell Wireless 1390 pero no es capaz siquiera de mostrarme las redes disponibles. El portatil en cuestión es un HP Compaq nx7300, un modelo baratito pero bastante resultón y con una buena relación calidad/precio.
Bien, lo primero que vamos a hacer, más por culturilla que por otra cosa, es aprender algunos comandos que nos resultaran útiles para recoger información de lo que está pasando:
josemaria@penique:/etc/modprobe.d$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 IEEE 802.11b/g ESSID:"" Nickname:"Broadcom 4311"
Mode:Managed Access Point: Invalid
RTS thr:off Fragment thr:off
Link Quality=0/100 Signal level=-256 dBm Noise level=-256 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
vmnet8 no wireless extensions.
vmnet1 no wireless extensions.
josemaria@penique:/etc/modprobe.d$ lspci -nn | grep Broadcom
02:0e.0 Ethernet controller [0200]: Broadcom Corporation BCM4401-B0 100Base-TX [14e4:170c] (rev 02)
10:00.0 Network controller [0280]: Broadcom Corporation Dell Wireless 1390 WLAN Mini-PCI Card [14e4:4311] (rev 01)
Gracias a Google nos enteramos, además de que mucha gente tiene problemas con este dispositivo, que el módulo que carga el kernel de Linux para su gestión se llama bcm43xx. En la web de berlios nos dicen además que el driver se ha desarrollado mediante ingeniería inversa porque Broadcom no da detalle alguno de sus chips (ya sabeis chicos: si la decisión de compra es vuestra y teneis alternativas nada de comprar productos de Broadcom). Vamos a comprobar que, efectivamente, estemos cargando ese módulo:
josemaria@penique:/etc/modprobe.d$ lsmod | grep bcm43xx
bcm43xx 126824 0
ieee80211softmac 31360 1 bcm43xx
ieee80211 34760 2 bcm43xx,ieee80211softmac
Vamos bien. Ahora descargamos el módulo y comprobamos que ya no está en uso:
josemaria@penique:/etc/modprobe.d$ sudo modprobe -r bcm43xx
Password:
josemaria@penique:/etc/modprobe.d$ lsmod | grep bcm43xx
josemaria@penique:/etc/modprobe.d$
Para evitar que este módulo se carge en sucesivos arranques de nuestro sistema tenemos que ir al directorio /etc/modprobe.d
y allí editar el fichero blacklist
y añadir al final esta línea:
# deshabilita la carga de bcm43xx
blacklist bcm43xx
Ahora necesitamos los drivers para windows del dispositivo. Para esto no debería de haber ningún problema: yo me los he bajado de la web de soporte de hp. Lo único que debemos de tener en cuenta es que deben de estar descomprimidos. Si los tenemos en un .zip, o un .exe debemos de extraerlos antes y guardarlos así en un directorio de nuestra máquina. A continuación instalamos ndiswrapper y, si estamos aburridos por hoy de la línea de comandos, ndisgtk (una interfaz gráfica para este).
Ejecutamos ndisgtk (en los menús suele situarse como «Windows Wireless Driver»), pulsamos el botón de «Install new driver» y navegamos hasta el directorio dónde hemos dejado los drivers windows del dispositivo. Debemos de seleccionar el archivo .inf que acompaña a los mismos (en mi caso bcmwl5.inf
).
Como veis aparece que el hardware no está presente… no tengo ni idea de porqué pero el caso es que funciona. Si queremos hacerlo desde la línea de comandos:
josemaria@penique:/opt/driverswifi.d$ sudo ndiswrapper -i bcmwl5.inf
installing bcmwl5 ...
josemaria@penique:/opt/driverswifi.d$ ndiswrapper -l
bcmwl5 : driver installed
device (14E4:4311) present (alternate driver: bcm43xx)
josemaria@penique:/opt/driverswifi.d$ sudo ndiswrapper -m
adding "alias wlan0 ndiswrapper" to /etc/modprobe.d/ndiswrapper ...
Y ya. No olvidemos activar el wifi desde el portatil (si posee algún botón o interruptor para ello como es el caso de este modelo) y, si usamos kde y knetworkmanager, veremos que ya nos está localizando las redes próximas y que podemos conectarnos a ellas.