"Después del juego es antes del juego"
Sepp Herberger

lunes, 15 de junio de 2015

Funny SIM y las APN Perdidas.

No, el título de esta entrada es el nombre de un grupo de tontipop de los 90. Bueno, no se que hago que siempre acabo en líos como gato en un ovillo de lana. Mi ultima aventurilla: como todavía no he entrado en el mundo de los móviles octacore (usados preferentemente para whatsapp) sigo con un LG Optimus Hub E510 que me funciona bien para lo que lo quiero (que consuma su p**a madre). Hace varios días petó el Android Gingerbread que lo movía, así que me puse a reinstalar el sistema con ayuda de los foros de htcmania y esta lista de ROMs.

Una vez puesto el CWM Recovery me dispuse a flashear una de esas ROM basadas en Cyanogenmod, arranqué y todo parecía ir bien: cámara, sonido, wifi, ... carajo: no hay conexión de datos. Me voy a la configuración de APNs y, vaya por Cthulhu, esta vacia. Bueno, intento añadir la APN de mi operador (Vodafone) a mano... sin resultado: relleno todos los campos y cuando le doy a guardar la APN no se guarda. Probando todas las ROMs de esa página pasaba eso, excepto en ésta basada en la ROM Stock (vamos, la ROM oficial de LG) con algún tuneo.

Para mas desconcierto me encuentro con que si pongo una SIM de Pepephone las APN aparecen bien con cualquier ROM y se dejan añadir y modificar.

Intentando averiguar la causa de esto, pues las ROMs probadas eran mucho mas ligeras y limpias que la Stock ROM, me meto en un lío en el que aprendo un montón de cosas nuevas que voy a dejar aquí como referencia.

Muchos android traen una lista con la configuración completa de posibles APNs ubicadas en el fichero /system/etc/apns-conf.xml. La finalidad de esta lista es configurar automáticamente el APN en función del país y operador. Para acceder a dicho fichero lo mas sencillo es activar la depuración USB del móvil, instalar las adb-tools y conectar el android a nuestro PC con su cable usb.

# apt-get install android-tools-adb
# adb devices

...mostrara el móvil....

# adb pull /system/etc/apns-conf.xml

Con esto tenemos el fichero apns-conf.xml en el directorio actual. Podemos husmear en el para ver que aparecen las definiciones de APN de un montón de operadores mundiales, de tal forma que el usuario del teléfono no tenga que teclear los datos de la APN. Entre ellas están las de Vodafone en España, que son:


  <apn carrier="Vodafone ES"
       mcc="214"
       mnc="01"
       apn="airtelwap.es"
       user="wap@wap"
       password="wap125"
       server=""
       mmsc="null"
       type="default"
  />

por lo que en teoría el móvil debería reconocerla y configurarse automáticamente, pero no lo hacia.

Por otro lado, las APN definidas a mano por el usuario se guardan en

/data/data/com.android.providers.telephony/databases/telephony.db
/data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 

Las podemos obtener con:

# adb pull /data/data/com.android.providers.telephony/databases/telephony.db

El fichero telephony.db es una base de datos sqlite3, que examinaremos con esa herramienta:

# apt-get install sqlite3
# sqlite3 telephoy.db
sqlite> select * from carriers;
.....listado de APN de operadores................
.....listado de APN de operadores................
.....listado de APN de operadores................

Veo que dentro está la lista de APN que he intentado meter a mano y que parecían perderse al dar a Save. Resulta que si se guardan, pero luego no se muestran. En cuanto al otro fichero:

# adb pull /data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 
# cat preferred-apn.xml 
<? Xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Map>
    <Long name="apn_id" value="218"/>
</Map>

El APN de telephony.db usado por defecto por nuestro Android para realizar la conexión de datos sería el apn_id que definimos en preferred-apn.xml.

¿Por qué no se muestran los APN definidos a mano?, aún mas misterioro: ¿cómo averigua android el APN correcto para nuestra tarjeta?. Investigando en Internet descubro que el método que tiene el móvil para saber que APN es el correcto es con los campos MCC (código de pais) y MNC (código de operadora): 214/01 para el caso de Vodafone España. ¿De dónde se obtiene estos números?: de la tarjeta SIM del móvil.

Buscando en foros vi que recomendaban una aplicación para leer dicha información: Network Info II que en la pestaña Device nos da el MCC+MNC de la SIM. Bueno, pues aqui la primera pista: con las ROMs cocinadas aparece el mensaje "SIM locked" y no muestra ese dato, mientras que con la Stock ROM si que se muestra un 214/01. Es decir, que la ROM cocinada es incapaz de leer el campo MCC+MNC de la SIM y como consecuencia:

1) No puede identificar automaticamente un APN en /system/etc/apns-conf.xml
2) Cualquier APN que metamos a mano se guarda en /data/data/com.android.providers.telephony/databases/telephony.db, pero al no coincidir su MCC+MNC con el de la tarjeta SIM (que no pueden ser leídos) son filtradas y como consecuencia no aparecen en la lista de APN y no pueden ser seleccionados.
3) Por tanto, al no encontrar APN válido según la SIM que tenemos, nuestro móvil no tiene conexión de datos.

Buscando ahora mejor informado el problema con los datos que tengo veo que la causa de todo es un problema con la SIM, llamado jocosamente en el foro xda-developers "problema de la Funny SIM" (yo no le veo el funny por anywhere). La historia está en que en determinadas SIM de 128Kb las ROMs cocinadas de Cyanogen no pueden acceder al MCC+MNC, mientras que con la SIM es de 64Kb "si se puede". Información detallada aquí.

En determinados sitios se hablan de soluciones, como aquí, donde se consigue arreglar usando una aplicación del Google Play llamada GetRIL. Esta aplicación se ejecuta con la Stock ROM y hace una copia de los datos del RIL (Radio Interface Layer), copia que luego se restaura con la ROM cocinada. Esto hace que mágicamente el APN pueda activarse. Por desgracia, la aplicación GetRIL funciona en varios modelos de LG y Samsung, pero no en mi Optimus Hub E510.

¿Y cual es la solución que queda?, pues como dicen aquí: hacer que tu operador te cambie la SIM de 128Kb por una de 64Kb. Pregunté en Vodafone y me dijeron que de eso ya tenían ellos, que son muy "in" y sus SIMs tienen mucha memoria para el 4G y para que el Estado y las Corporaciones puedan espiarte mediante el NFC.

Bueno, como está claro que el mundo se mueve y yo me quedo rezagado (*) así que he decidido entrar en 2013 y comprarme un Xiaomi Hongmi 1S de segunda mano por cuatro duros. Fin de la cita.

(*)Espero no llegar al nivel de aquel alcalde de la PPSOE que ante la presencia de los de Graba tu Pleno en su Ayuntamiento con sus equipos de grabación exclamaba: "apaguen los magnetófonos y los tomavistas o llamo a la Guardia Civil".

Este país me hacer llorar de risa y reir de llanto. Por cierto, Je suis Zapata.

No hay comentarios:

Publicar un comentario