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 disabledDesactivando 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.











Pingback: Tweets that mention Intel 4965 bug: Microcode SW error (causas y corrección) | Phenobarbital con Soda! -- Topsy.com
Buena investigación, buena propuesta para “solucionar” el problema.