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+0×49/0xb3 [cfg80211]
[ 3717.241997]  [<ffffffffa01b54f7>] ? wdev_cleanup_work+0×49/0xb3 [cfg80211]
[ 3717.242009]  [<ffffffff8104c9ac>] ? warn_slowpath_common+0×77/0xa3
[ 3717.242025]  [<ffffffffa01b54f7>] ? wdev_cleanup_work+0×49/0xb3 [cfg80211]
[ 3717.242035]  [<ffffffff8106023b>] ? worker_thread+0×188/0x21d
[ 3717.242051]  [<ffffffffa01b54ae>] ? wdev_cleanup_work+0×0/0xb3 [cfg80211]
[ 3717.242060]  [<ffffffff81063866>] ? autoremove_wake_function+0×0/0x2e
[ 3717.242068]  [<ffffffff810600b3>] ? worker_thread+0×0/0x21d
[ 3717.242077]  [<ffffffff81063599>] ? kthread+0×79/0×81
[ 3717.242086]  [<ffffffff81011baa>] ? child_rip+0xa/0×20
[ 3717.242095]  [<ffffffff81063520>] ? kthread+0×0/0×81
[ 3717.242102]  [<ffffffff81011ba0>] ? child_rip+0×0/0×20
[ 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.

Esta entrada fue publicada en Cultura Libre, Linux, PlanetaLinux, Software Libre. Guarda el enlace permanente.

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

  1. Pingback: Tweets that mention Intel 4965 bug: Microcode SW error (causas y corrección) | Phenobarbital con Soda! -- Topsy.com

  2. Buena investigación, buena propuesta para “solucionar” el problema.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s