Soluciona los problemas de conectividad WiFi/3G en HTC Desire

A estas alturas pocas HTC Desire seguirán en uso, ya que es un modelo de segunda generación que lleva tiempo en el mercado, y que ha sido ampliamente superado por la avalancha de dispositivos Android que ha venido después.

Si como yo aun conservas una HTC Desire, es muy probable que hayas probado ROMs cocinadas para tratar de estirarla en el tiempo. Si has instalado alguna ROM basada en Ice Cream Sandwich o Jelly Bean, o te has decantado por una ROM estable y limpia como CyanogenMod 7, es posible que estés sufriendo problemas de conectividad 3G después de estar mucho tiempo conectado por WiFi.

Los foros están llenos de gente comentando el mismo problema. Estás en tu casa conectado por WiFi y todo va bien, pero cuando sales a la calle, a la Desire le cuesta varios minutos darse cuenta de que ya no tiene la WiFi a su alcance, y no conmuta a 3G. En el indicador de cobertura se indica que tienes señal, pero en pantalla no aparece el símbolo de conexión G, E o H, y al abrir un navegador se comprueba que efectivamente no hay conectividad.

En algunas ocasiones es suficiente con desactivar y reactivar los datos, o con entrar y salir  del modo avión. Pero la mayor parte de las veces es necesario reiniciar el teléfono.

Si has instalado Chromium, ICS for Desire, o simplemente la CyanogenMod 7.2.0.1, habrás notado este molesto problema. ¿Qué es lo que ocurre? Ocurre que el RIL es incorrecto.

El RIL es el Radio Interface Layer. Es decir, es un componente software que hace de intermediario entre Android y el hardware de radio del teléfono, encargado de controlar todas las comunicaciones de radio: GSM, WCDMA, WiFi, Bluetooth, GPS.

Si el RIL es incorrecto, la gestión del hardware de radio no funcionará bien y nos provocará problemas. ¿Cómo lo solucionamos? Instalando un RIL correcto en nuestra ROM.

Enlace: Listado de RILs para HTC Desire en XDA

En el enlace indicado tenemos el listado completo de RILs para nuestra Desire. La CyanogenMod 7.1 viene con el HTC-RIL 1.6.1062G (Apr 23 2010,17:35:06) y funciona bastante bien, aunque de vez en cuando sufre algún corte. La CyanogenMod 7.2.0.1 en cambio incluye el HTC-RIL 2.2.0028HM (Sep 20 2010,22:33:44) y sufre muchísimos problemas de conectividad.

¿Cómo puedo saber qué versión de RIL tengo en mi ROM? Lanza Terminal en el teléfono y ejecuta lo siguiente:

$ su
# getprop «gsm.version.ril-impl»

El RIL recomendado para no tener problemas con CyanogenMod 7.2.0.1 es el HTC-RIL 2.2.1003G (Nov 2 2010,17:17:45). Varios usuarios en diversos foros han declarado haber solucionado el problema al flashear el teléfono con este RIL.

El procedimiento para flashear el RIL es el siguiente:

  1. Copiar el RIL sin descomprimir (formato ZIP) en la raíz de la tarjeta SD
  2. Reiniciar en modo Recovery
  3. Si queremos poder volver atrás, este es el momento de hacer un Nandroid Backup
  4. Montar «/system»
  5. Elegir «Flash from SD» y elegir el archivo del RIL
  6. Esperar a que termine y reiniciar

(Se asume que se tiene el teléfono rooteado y con un custom recovery. Si no es así, aconsejamos leer otras guías para conocer el procedimiento. Aprender a rootear el teléfono queda fuera del alcance de esta guía.)

El RIL forma parte de la ROM, por lo que si flasheamos otra ROM deberemos repetir el proceso. El flasheo del RIL no es un procedimiento crítico como sí lo es flashear el firmware de la radio, que puede dañar el teléfono. Si ocurre algún problema con el flasheo del RIL, podemos volver a probar de nuevo con el mismo archivo, probar con otro RIL, o flashear directamente otra ROM.

Con este nuevo RIL, mi HTC Desire conecta en modo HDPA nada más encender, y conmuta entre WiFi y 3G al instante. No he vuelto a sufrir problemas de conectividad 3G desde que hice el cambio. Si lo probáis, espero que os funcione tan bien como a mí.