La telefonía y el éxtasis (pasando de iPhone a Milestone usando Claro)
Hace unos días compré un Motorola Milestone, para reemplazar mi iPhone. Como soy un usuario de Claro (Argentina), esto no fue lo simple y transparente como esperaba. Habiendo terminado mi proceso migratorio, les cuento un poco como hacerlo.
Es sabido (por quienes lo saben) que, a pesar de mi incondicional apoyo al Software Libre, tengo una cierta debilidad por los productos de Apple.
Durante mi vida he tenido tres iPods, un iPhone una iBook y una MacBook. Luego de este listado es comprensible que se suponga que mi opinión es algo tendenciosa.
Hasta hace un tiempo, salvo algunas molestias ocasionales, yo estaba mas que cómodo con mi iPhone y todo estuvo bien, hasta que no...
Con el pasar del tiempo me molestó mas y mas que no se puedan dejar aplicaciones conectadas, como jabber, irc, twitter, etc. Si bien Apple anunció que algún tipo de feature para poder dejar apps corriendo como servicios, la espera para que esto esté maduro es bastante. Enfrentado con este problema, opté por lo que durante toda mi vida ha funcionado, las cosas que son desarrolladas de un modo mas bazar.
Decidido a mudarme a Android y teniendo presente las fortalezas y debilidades del mismo, un Milestone me pareció la elección mas acertada. Comprar un smartphone que tu Telco no provee, si vas a querer usar todos los servicios (3g, AGPS, MMS) no siempre es algo tan simple. Así fue para mi:
La via fácil, pedirle al proveedor que lo configure:
Lograr que tu Telco configure tu teléfono, si no esta entre la lista de los que ellos venden/vendieron, requiere que te presentes (o el titular de la linea, en mi caso el titular de la cuenta corporativa) en una sucursal con el aparato y la factura del mismo. Mi teléfono fue adquirido usado, esta no esta a mi nombre y no quería joder al titular de la flota.
Encontrado este obstáculo, recurro a la segunda opción.
La via intermedia, preguntarle a alguien o mirar en internet:
Un conocido de twitter tuvo la amabilidad de dictarme los pasos para configurar el APN de mi teléfono para tener 3g, pero esto no funcionó.
Con un termo de mate listo y algo de tiempo, me dispuse a buscar en internet datos de APN de claro que funcionaran, por desgracia nadie tenia la combinación correcta.
Luego de probar varias combinaciones y sufrir la tortura visual de tener que leer varios posts en foros de móbiles, escritos con ortografía y redacción que no me habrían dejado aprobar 2do grado del primario, decidí que ya había sufrido demasiado, debía recurrir a algo un poco mas seguro y menos doloroso de leer.
La vía trabajosa, sacar datos de un teléfono andando:
A diferencia de Android, el OS del iPhone, se configura con un paquete de provisioning, que es instalado por iTunes y entra como una actualización. El sentido común me indicaba que allí se encontraría la información que me hacía falta, ya que mi teléfono tenía los servicios necesarios.
El archivo en cuestión tiene el nombre del Provider y extención '.ipcc', contiene algunos archivos '.plist' que son binarios con listas de propiedades (un xml compilado de alguna forma). El paquete es un simple zip, descomprimiéndolo se puede tener acceso a los archivos internos y utilizando algún editor plist (al menos para OSX se consigue 'PlistEdit Pro' gratuitamente de Apple).
El plist que nos interesa, se llama carrier.plist dentro de el podemos encontrar, entre otras cosas:
- El APN del proveedor de 3g/hsdpa.
- El APN del proveedor de MMS.
- El APN del proveedor de VoiceMail. (Un servicio de voicemail de los iPhones, que nos permite bajar los memos, no nos sirve)
La sección relevante, se ve así:
<array> <dict> <key>apn</key> <string>igprs.claro.com.ar</string> <key>password</key> <string>clarogprs999</string> <key>type-mask</key> <integer>1</integer> <key>username</key> <string>clarogprs</string> </dict> <dict> <key>apn</key> <string>vvm.claro.com.ar</string> <key>password</key> <string>vvmclaro</string> <key>type-mask</key> <integer>2</integer> <key>username</key> <string>vvm</string> </dict> <dict> <key>apn</key> <string>mms.ctimovil.com.ar</string> <key>password</key> <string>ctimms999</string> <key>type-mask</key> <integer>4</integer> <key>username</key> <string>ctimms</string> </dict> <dict> <key>apn</key> <string>igprs.claro.com.ar</string> <key>password</key> <string>clarogprs999</string> <key>type-mask</key> <integer>48</integer> <key>username</key> <string>clarogprs</string> </dict> </array>
En general el único que vamos a usar aqui, es el de 3g, los demás suele andar bien con la configuación que trae la SIM card. Su teléfono no tendrá un campo 'type-mask' sino uno type (si es que tiene) en cuyo caso 4 es mms y 1 es default los demás no se
La yapa, hacer andar bien el AGPS:
Luego de hacer andar todo lo relacionado a internet, noté que mi GPS solo funcionaba después de un largo período de espera, esto se debe a que parte de la detección se hace por A-GPS, el standard usado es SUPL, que requiere una conexión IP a un servidor. La mayoría de los Androids que tienen un firmware no provisto por la empresa telefónica que estamos usando van a tener configurado un proveedor de SUPL al que no tenemos acceso porque esta en la red interna del proveedor.
Para poder configurar esto, van a necesitar rootear el teléfono, esto es algo un poco distinto para cada versión del fw por lo que veo, así que les voy a dejar que averigüen como hacerlo ustedes mismos, hay mucha info dando vueltas al respecto.
La información de como hacer este proceso la obtuve de un foro, el mensaje relevante es este del señor Luis Manson.
El proceso consiste en reemplazar el contenido de los archivos /etc/gpsconfig.xml y /data/location/location.cfg por el siguiente (Mucho cuidado, en la variable DL_LCS_DEFAULT_DATA_PROFILE el valor debe ser el nombre de su APN activo:
[LCS FDB] DL_DB_FEATURE_ID_LOCATION_AVAILABLE = 1 DL_DB_FEATURE_ID_LOCATION_ON_OFF_AVAILABLE = 1 DL_DB_FEATURE_ID_LOCATION_STATE = 1 [LCS SEEM] DL_LCS_CAPABILITY_MSBASED_AGPS = 1 DL_LCS_CAPABILITY_MSASSIST_AGPS = 1 DL_LCS_CAPABILITY_CONV_AGPS = 1 DL_LCS_CAPABILITY_MSBASED_OTDOA = 0 DL_LCS_CAPABILITY_MSASSIST_OTDOA = 0 DL_LCS_CAPABILITY_CELLID = 1 DL_LCS_NETWORK_3GPP = 1 DL_LCS_NETWORK_X1 = 0 DL_LCS_NOTIFY_VERIFY_CAPABILITY = 1 DL_LCS_SS_MOLR_CAPABILITY = 0 DL_LCS_X1_ERROR_RETRY_PROVISIONING = 0 DL_LCS_NETWORK_SUPL = 1 DL_LCS_SUPL_SECURITY_ON = 1 DL_LCS_WHITELIST_ENABLED = 0 DL_LCS_SUPL_TRACK_ENH = 1 DL_LCS_PREF_POSMETHOD = 0 DL_LCS_SUPL_FALLBACK_TO_3GPP = 0 DL_LCS_SUPL_DEBUG_INDICATIONS = 0 DL_LCS_SUPL_MT_OFF = 1 DL_LCS_SUPL_CARRIER_INDEPENDENT = 1 DL_LCS_3GPP_USER_STATUS_OVERRIDE = 1 hslp_address = supl.google.com:7275 default_hslp_address = supl.google.com:7275 DL_LCS_DEFAULT_DATA_PROFILE = C DL_LCS_SUPL_SESSION_PREP_TIMER_LEN = 1 3GPP_LOG_FLEX_ENABLED = 1 SHIM_LOG_FLEX_ENABLED = 1 SUPL_LOG_FLEX_ENABLED = 1 DL_LCS_CAPABILITY_NOTVER_UPGRADE = 0 DL_LCS_SUPL_VERSION = 1 DL_LCS_CAPABILITY_MO_MSB_SUPL = 1 DL_LCS_CAPABILITY_MO_MSA_SUPL = 1 DL_LCS_SUPL2_DATA_INACTIVITY_CLOSE_TIMER = 300 DL_LCS_NMEA_HAL = 1 LOC_LEARNING = 1 [GPS DRV] leap_seconds = 15 ref_pos_unc_valid = 1 ref_pos_semi_major_unc = 83 ref_pos_semi_minor_unc = 83 ref_pos_altitude_unc = 47 ref_time_unc_valid = 1 ref_time_unc = 145 [CAIDL] ACTIVE_TRANS_OFFSET = 1000 MIN_WAKEUP_OFFSET = 3000 MAX_WAKEUP_OFFSET = 10000 WAKEUP_OFFSET_PCT = 10 DRV_RSP_INTERVAL = 1000 STOP_TIMEOUT = 2000 APP_REQ_GUARD_OFFSET = 1000 DRV_RSP_GUARD_OFFSET = 4000 SUPL_TRACK_ENH_TIMEOUT = 60000 ASSIST_GATE_TIMEOUT = 20000 IDLING_TIMEOUT = 5000 MIN_EARLY_RANGES = 5 LOC_LOG_LEVEL = 4 DRV_LOG_TO_SP = 0 DRV_LOG_LEVEL = 0 DISABLE_START_DRV_FROM_SP_BOOT = 1 IS_VALID_LAST_DRV_TCXO = 1 LAST_DRV_TCXO = 464 HW_AFC = 1 TTF_3GPP_LATENCY_OFFSET = 1000 INJECT_TCXO = 0 MIN_RANGES_USEFUL_COARSE = 4 LOC_LEARNING = 1 LOC_LEARNING_MAX_SIZE = 50 VCTXO_UNC_VALUE = 299 SHARED_TCXO_ENABLED = 0 NO_FIX_EARLY_WAKEUP = 60000 MIN_NAV_REQ_INTERVAL = 3600000
Espero que esto sea de utilidad para alguien mas, cualquier agregado de información de configuración para Claro será bienvenida.

