El caso que pasaré a describir, es uno de los que personalmente más trabajo me ha costado solucionar, pero también en el que más combinación de herramientas he utilizado; por estas razones, quiero compartirlo para otros que a lo mejor se vean en el mismo escenario que yo, y no sepan cómo proceder. Como siempre, lo dividiré en problema, causa y solución.
El problema y su causa
Hace unos días recibí un equipo que tenía un problema bastante preocupante; cada vez que se reiniciaba, justo antes de iniciar sesión, daba un escalofriante pantallazo azul:
No importa cuántas veces reiniciara, siempre recibía el BSOD. Por otro lado, no tenía puntos de restauración funcionales el equipo, así que no había cómo devolverlo a un estado donde todo estuviese corriendo bien.
Como el equipo ya llevaba un buen tiempo desde que se instaló, opté por ser práctico e instalar nuevamente el sistema operativo desde cero, pues consideré que perdería más tiempo si me ponía a indagar en el problema. El verdadero dilema empezó cuando terminé de instalar, pues mientras estaba actualizando Windows nuevamente explotó el pantallazo azul, pero la primera vez pude ingresar otra vez a Windows.
Lo primero que hice, fue extraer el Minidump ubicado en C:WindowsMinidump y lo abrí en otro equipo con Windbg para realizar un análisis.
Ejecutando !Analyze –v en Windbg, me arrojó este resultado en el stack:
Como ven, había incluso múltiples repetisiones del athwbx, correspondiente a athwbx.sys:
El controlador, creado en Octubre del 2013, pertenecía a Qualcomm Atheros Wireless Network Adapter, o en palabras más humanas, al controlador inalámbrico del equipo:
Lo más normal en este tipo de casos, es simplemente buscar en la página web del fabricante una versión del controlador más actual, así que bajé uno de Toshiba, que era la marca del portátil y procedí a actualizar… lamentablemente, apenas Windows utilizaba el controlador de alguna forma, volvía a estallar el BSOD.
Lo que hice entonces fue desinstalar todo el controlador, y dejar que Windows lo reconociera desde su propia base de datos, y en efecto, se instaló uno que parecía más actual:
Para mi mala fortuna, no solo volvió a dar el pantallazo azul, sino que se quedó idefinidamente estallando en cada reinicio, ¡otra vez!
Tenía mucho sentido que diera el pantallazo apenas en el logon, pues ahí es donde el sistema operativo carga servicios y controladores; ¿Pero, cómo detener el inicio del controlador en cuestión, cuando ni siquiera tengo acceso a Windows?
Como he mostrado en otros artículos enfocados a implementación, utilizando el ADK es posible generar un Windows PE; pequeño sistema operativo Windows que carga en memoria RAM, con algunas funciones limitadas, pero que al ser sistema operativo, tiene ventajas notables como las de ejecutar algunos tipos de aplicaciones. Autoruns de Sysinternals, es una de ellas y desde Autoruns se puede ver todo lo que inicie en Windows, para todos los usuarios y empezar a deshabilitar según sea necesario.
Lo que hice entonces fue crear un Windows PE desde otro equipo, preparé una USB y arranqué el equipo desde allí. Una vez iniciado, busqué la unidad del PE y ejecuté Autoruns desde allí para luego ir al menú File > Analyze Offline System. Aquí símplemente indiqué la unidad que contenía la instalación de Windows y la ruta de ProgramData para referenciar a todos los perfiles:
Al hacer clic en OK, Autoruns cargó nuevamente todos los datos, pero esta vez del sistema local. Con esto, bastaba ir ahora a la pestaña de Drivers, buscar el correspondiente al controlador inalámbrico, es decir, athwbx.sys y deshabilitar la entrada:
*Nota: Técnicamente, se podría hacer esto mismo cargando el Hive de System en el Registro de Windows, pero es un procedimiento un poco más complejo.
Cerré Autoruns, la consola del Windows PE y al reiniciar, ya estaba nuevamente en Windows, con el controlador deshabilitado:
Ya sabía que no podía habilitarlo ni usar la WiFi, porque volvería a causar el BSOD, así que conecté el equipo por cable y procedí a buscar nuevamente actualizaciones de Windows.
Revisando los resultados, me encontré con una en particular muy interesante:
Era justamente una actualización al controlador inalámbrico que me estaba causando el pantallazo, con fecha de este mes, lo que sugería que corregía el problema que estaba causando en Windows.
Lamentablemente, al intentar instalarlo, Windows internamente debía manipular el controlador anterior, así que volví a recibir una vez más el dichoso pantallazo azul. Intenté desinstalando previamente el controlador desde el administrador de dispositivos, pero si hacía eso, Windows Update no me ofrecía la actualización y si lo dejaba, me regalaba un BSOD al intentar desplegarlo.
Como podrán imaginarse, estaba bastante atascado, pues aunque estaba casi seguro que esa actualización solucionaba el problema, Windows no me la iba a dejar fácil para actualizar… ¿Qué podía hacer, entonces?
La solución
Tal cual he expuesto en más de un caso, las técnicas y herramientas de implementación pueden llegar a ayudar en muchos casos para solución de problemas en Windows. Estaba claro que no podría instalar el controlador online, así que lo único que me quedaba era hacerlo offline, y para esto necesitaría acudir al argumento de /Add-Driver de DISM.
Básicamente, tendría que montar una imagen de Windows 8.1 con DISM, inyectarle el controlador manual, guardar la imagen, preparar la instalación en un .ISO o USB y proceder a instalar Windows nuevamente. Esto no lo podía hacer en la instalación que ya tenía, porque el parámetro de /Add-Driver solo funciona sobre imágenes offline.
Lo primero que tenía que hacer, era encontrar el controlador que ofrecía Windows Update, pues seguramente ese era el unico que solucionaría el problema, así que procedí a utilizar un servicio muy interesante en la página de Windows Update, y es poder consultar sobre un catálogo de controladores la descarga. Como ya tenía el nombre, bastaba con realizar lo siguiente:
1. Navegar hasta la página: http://catalog.update.microsoft.com/v7/site/Home.aspx
2. Instalar el complemento que pide la página.
3. Buscar por el nombre específico del driver, tal cual aparece en Windows Update:
Qualcomm Atheros AR9002WB-1NG Wireless Network Adapter
4. Hacer clic en el botón Agregar.
5. Clic en el enlace de Ver cesta en la parte superior.
6. Clic en el botón Descargar:
Después de esto, procedí a inyectarlo con DISM a la imagen de instalación de Windows para que una vez instalado, ya estuviese el controlador actualizado y que no generaba BSOD.
*Nota: Como inyectar controladores requiere un procedimiento, escribí un artículo aparte donde pueden ver el paso a paso:
Inyectar controladores a una imagen offline de Windows 8.1 utilizando DISM.
Después de instalado, el Wi-Fi estaba funcionando y para mi gran fortuna, ¡el problema se había ido! Recordemos que no bastaba con instalar nuevamente Windows.
Al revisar el controlador, pude verificar que se había instalado con Windows por la fecha de creación:
Solo restaba configurar nuevamente Windows para que se pudiera continuar trabajando con el equipo.
Espero sea de utilidad para los que presenten un problema similar.
PD: No olviden que pueden consultar con la comunidad por sus problema con Windows en los foros de Windows 8.1 de Microsoft Community.
Saludos.
Checho