Intel 4965 bug: Microcode SW error (causas y corrección)

Tengo una tarjeta inalámbrica Intel 4965 Kendron a/g/n (soporta draft N a 150Mbps), como pueden observar acá:

03:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)

La cual, al actualizar al último kernel de Squeeze y al último firmware de la misma:

aptitude install firmware-iwlwifi

Me he encontrado con el siguiente error  (cuando estoy muy saturado, descargando archivos muy grandes, etc).

El error …

[ 3132.694878] iwlagn 0000:03:00.0: Microcode SW error detected.  Restarting 0x82000000.

Unas líneas más abajo, el log del kernel muestra un lindo segmentation fault:

[ 3717.241958] Pid: 10, comm: events/1 Not tainted 2.6.32-5-amd64 #1
[ 3717.241963] Call Trace:
[ 3717.241981]  [<ffffffffa01b54f7>] ? wdev_cleanup_work+0x49/0xb3 [cfg80211]
[ 3717.241997]  [<ffffffffa01b54f7>] ? wdev_cleanup_work+0x49/0xb3 [cfg80211]
[ 3717.242009]  [<ffffffff8104c9ac>] ? warn_slowpath_common+0x77/0xa3
[ 3717.242025]  [<ffffffffa01b54f7>] ? wdev_cleanup_work+0x49/0xb3 [cfg80211]
[ 3717.242035]  [<ffffffff8106023b>] ? worker_thread+0x188/0x21d
[ 3717.242051]  [<ffffffffa01b54ae>] ? wdev_cleanup_work+0x0/0xb3 [cfg80211]
[ 3717.242060]  [<ffffffff81063866>] ? autoremove_wake_function+0x0/0x2e
[ 3717.242068]  [<ffffffff810600b3>] ? worker_thread+0x0/0x21d
[ 3717.242077]  [<ffffffff81063599>] ? kthread+0x79/0x81
[ 3717.242086]  [<ffffffff81011baa>] ? child_rip+0xa/0x20
[ 3717.242095]  [<ffffffff81063520>] ? kthread+0x0/0x81
[ 3717.242102]  [<ffffffff81011ba0>] ? child_rip+0x0/0x20
[ 3717.242107] —[ end trace 085861f520049468 ]—
[ 3722.117608] iwlagn 0000:03:00.0: PCI INT A disabled

Desactivando el hardware, la única forma de rescatarlo, es desmontando el módulo, volviendolo a montar, levantar la inalámbrica y hacer un escaneo de prueba:

rmmod iwlagn && sleep 1 && modprobe iwlagn && sleep 1 && ifconfig wlan0 up

Después escaneamos:

iwlist wlan0 scan

Y la tarjeta “parece” que volvió a la vida, para caerse en un rato, si se me ocurre “usar intensivamente” la conexión.

Este es un bug declarado ya en Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=533133

Y en Ubuntu: https://bugs.launchpad.net/linux/+bug/200509

Motivo?

Luego de revisar el debug del driver, el *microcode* (firmware en forma de binario privativo que se encuentra en: /lib/firmware/iwlwifi-4965-2.ucode) falla en los procesos de alta carga siempre y cuando tengamos habilitada la opción draft-N, por alguna razón “desconocida” (puesto que no hay un código fuente que mirar) el microcode colapsa y hace colapsar al hardware, la única cosa que le queda entonces al Kernel Linux (-tainted-) es desactivar el dispositivo PCI y nos toca, *reiniciar el dispositivo*.

Afecta a:

Solución?

Ciertamente NO HAY solución efectiva y definitiva al problema, puesto que al ser un binario privativo, dependemos a que Intel alguna vez revise el caso y postule los correctivos, sin embargo y en vista que el binario no ha sido corregido desde el 5 de Julio del 2009, no caben muchas esperanzas de que esto ocurra.

Solución Temporal a lo Phenobarbital

La única solución que “parcialmente” calma el problema, es deshabilitar el draft-N de la misma, solución “no muy elegante” puesto que yo mismo tengo un Access Point Wireless-N a 150Mbps y tuve que poner la red a 54Mbps.

Para desactivar draft-N en la tarjeta creamos un archivo:

/etc/modprobe.d/iwlagn

Y en ese archivo colocamos:

options iwlagn fw_restart4965=1 11n_disable=1

La primera opción le pide al módulo iwlagn que en caso de falla, reinicie automáticamente el controlador (y no que se quede “congelado”), la segunda deshabilita 11n.

Guardamos, desmontamos el módulo y lo volvemos a cargar:

rmmod iwlagn && modprobe iwlagn

No es lo más cómodo del mundo, pero es una solución para eliminar ese molesto cuelgue del microcode de Intel.

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 17 agosto 2010 en Cultura Libre, Linux, PlanetaLinux, Software Libre. Añade a favoritos el enlace permanente. 2 comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: