jun 10 2010

Yo y mis juguetes 3G

Es verdad, hay que confesarlo. Tengo un problema con los aparatos… No puedo estar quieto con ellos.

Hace menos de un mes acabó cayendo en mis manos un lector de tinta electrónica Sony PRS.900. El aparato en sí está bastante bien. Una pantalla de 7′, pantalla táctil (aunque admito todo tipo de críticas acerca de los reflejos que produce) e incluso 3G que permanece el 99,999% del tiempo desactivado porque no sirve para nada excepto para comprar libros en la tienda online de Sony. Para más INRI, el aparato es “Sold in USA”, por lo que el 3G sólo funciona en el país yankee.

Para hablar acerca de editoriales, libros, precios, gobiernos o de por qué hay bestsellers en Amazon Reino Unido que cuestan un 40% lo que cuestan en la Fnac, ya hay otras páginas. Yo he venido aquí a hablar de mi libro… o sea, de mi problema… o sea, de dejar quieto un aparato sin meterle la zarpa, actualización, firmware, flash, update o una sarta de bits que le provoquen convulsiones y deje de funcionar como debía.

Desde el principio el tema que más me picó fue el tema del 3G. Tener un aparato que funciona al 99% está bien, pero saber que nunca vas a poder usar ese 1% es terrible. Eso sí, conseguir que funcione ese 1% aunque jamás necesites utilizarlo es la bomba. Por tanto, había que conseguir que funcionase el 3G.

Como primer paso, busqué lo que había disponible sobre el aparato. Encontré unos firmwares de unos rusos muy listos (o desesperados) que habían traducido el interfaz a la lengua de las muñecas Matroskas. Genial, la parte dificil estaba hecha. Más si habían metido fuentes cirílicas. Para lo que me interesaba: la gente ya sabía “flashear” un dispositivo de estos.

El Sony PRS-900 contiene un sistema Linux (LinuxLink) de TimeSys. El sistema contiene un sistema de ficheros de tipo cramfs y con algunos pequeños tutoriales, es razonablemente sencillo cambiarlo. El mayor problema es que para flashearlo es necesario un equipo con windows (hay que hacer llamadas a una DLL de windows para entrar en modo recovery).

Pim Pam Pum, lector flasheado. Si había funcionado la primera vez con un firmware ruso, la siguiente podía funcionar con un firmware Made in Spain. Así, descomprimí la imagen cramfs y me puse a mirarle las tripas al aparato. Por dentro del directorio /opt/sony/ebook/application… se encuentra la mayor parte del software que ve el usuario. Parece una aplicación bastante flexible, que supongo que será la piedra angular de Sony para sus lectores. Muy probablemente, un sólo software podrán utilizarlo para el PRS-300, PRS-500, PRS-505, etc ya que afecta a todo el dispositivo; desde el cambio de hora, hasta las características soportadas por el dispositivo, pasando por la configuración del APN del 3G (uhmmm :-) ).

Me propuse cambiar ese valor para “esquivar” el APN que tienen en consorcio Sony y AT&T en Estados Unidos, y lo cambié por el de movistar (junto con una SIM). Además, quité la configuración del proxy que también estaba presente, ya que parece que la tienda que muestra el PRS-900 es a través de un navegador web reducido.

Hechos los cambios, nueva imagen, y a flashear. Fracaso total. El lector no conectaba y lloraba pidiendo que le quitase esa SIM del infierno.

Los rusos listos también habían encontrado el modo de pruebas de hardware del equipo. Gracias a una pequeña combinación de botones, se puede acceder a todo un menu interno del aparato para probar pantalla, calibrarla, y/o acceder a otra información o configuraciones. Lo mejor de todo es que algunas de las opciones mostraban un volcado de los registros del aparato. Click. Volcado a la SD. A investigar…

En los logs del sistema (nada parecido a un log Unix), aparecen 3 tipos de archivos. Los que están en formato binario puro (ya si eso les voy pidiendo el manual a Sony…), los que traducen el formato binario a un formato legible, aunque mediante códigos (o llamo a un egiptólogo para que me lo descifre por asociaciones), y por último, los que muestran esos códigos traducidos a cosas más humanas.

Como ejemplo:

0, Wed 31 Dec 1969 19:00:08, 883687, CM, Call API, Create Instance, 0, 0, 0
1, Wed 31 Dec 1969 19:00:09, 36165, log, start, 0, 0, 0, 0
2, Wed 31 Dec 1969 19:00:09, 43897, pm, stateChangeLockReq, Run, 0, 0, 0
3, Wed 31 Dec 1969 19:00:09, 69969, pm, doStateChange, Off, Run, 0, 0
4, Wed 31 Dec 1969 19:00:09, 70066, pm, deviceStateChange, Start, Run, 0, 0
5, Wed 31 Dec 1969 19:00:09, 71506, pm, deviceStateChange, Finish, Run, 0, 0
6, Sat 10 Jan 2009 03:30:36, 116727, subCPU, send, system, bootFinish, 0, 0
7, Sat 10 Jan 2009 03:30:36, 124550, subCPU, send, key, onOff, 822083584, 0
8, Sat 10 Jan 2009 03:30:36, 134396, subCPU, send, touchpanel, onOff, 822083584, 0
9, Sat 10 Jan 2009 03:30:36, 144468, subCPU, send, touchpanel, sampling, 50331648, 0
10, Sat 10 Jan 2009 03:30:36, 154418, subCPU, send, touchpanel, breaktime, 16777216, 0
11, Sat 10 Jan 2009 03:30:36, 164455, subCPU, send, LED, LED, 0, 0
12, Sat 10 Jan 2009 03:30:36, 174444, subCPU, send, battery, queryLevel, 0, 0

Bastante aceptable…

Ahora era cuestión de investigar qué narices estaba pasando con el módulo 3G


CM, Received UR, [*EMRDY: 1]
CM, State, Radio Off, 0, 0, 0
CM, Sent ATCom, ATE0, OK, 0, 0
CM, Sent ATCom, AT+CMEE=1, OK, 0, 0
CM, Sent ATCom, AT+CPIN?, OK, 0, 0
CM, Info, Sleep Mode, Can Sleep, 0, 0
WAN, getInfo, 0, 0, 0, 0
WAN, stateChange, partialOn, 2, 2, 8
CM, Sent ATCom, AT+CGSN, OK, 0, 0
CM, Call API, Get Info, 0, 0, 0
WAN, getInfo, 0, 0, 0, 0
WAN, lock, 1, 0, 0, 0
CM, Sent ATCom, AT+CRSM=176,12258,0,0,10, OK, 0, 0
WAN, unlock, 0, 0, 0, 0
WAN, lock, 1, 0, 0, 0
Call API, Stop, 0, 0, 0
WAN, stop, 0, 0, 0, 0
WAN, stateChange, waitStop, 2, 2, 7
CM, Sent ATCom, AT+CFUN=0, OK, 0, 0

A grosso modo, lo que se ve es que el dispositivo despierta (*EMRDY: 1), oculta el eco local (ATE0), activa los errores numéricos del módulo (AT+CMEE=1) y consulta si necesita PIN (como lo tenía desactivado, todo sin problemas). Después, solicita el número de serie del aparato (normalmente se hace para mostrarlo en algún menú para información del usuario), y llega a un punto en el que lee de forma binaria la SIM, haciendo:

AT+CRSM=176,12258,0,0,10

comando que lee el número de identificación de la SIM (ICCID). Tras esta lectura (teoricamente fructuosa), se ve mucho “Stop” y un AT+CFUN=0 que acaba apagando el módulo de telefonía.

Hasta este punto, es común tanto para la SIM de Movistar como para la de AT&T.

Si seguimos indagando, parece que con la SIM de AT&T, el módulo ya no sigue progresando. Recibe notificaciones para intentar despertarse de nuevo y seguir conectando, pero no hay más comandos AT, sino sólo estos intentos en vano. Sin embargo, con la SIM de Movistar, se puede ver:


CM, Received UR, [*EMRDY: 1]
CM, State, Radio Off, 0, 0, 0
CM, Sent ATCom, ATE0, OK, 0, 0
CM, Sent ATCom, AT+CMEE=1, OK, 0, 0
CM, Sent ATCom, AT+CPIN?, OK, 0, 0
CM, Sent ATCom, AT+CREG=1, OK, 0, 0
CM, Sent ATCom, AT+CGREG=1, OK, 0, 0
CM, Sent ATCom, AT*E2CFUN=1, OK, 0, 0
CM, Sent ATCom, AT+CFUN=1, OK, 0, 0
CM, Received UR, [*E2CFUN: 1, 1, 0
CM, State, No Service, 0, 0, 0
CM, Sent ATCom, AT*EIAD=0, OK, 0, 0
CM, Sent ATCom, AT*EIAC=1, OK, 0, 0
CM, Sent ATCom, AT+CSCS=IRA, OK, 0, 0
CM, Sent ATCom, AT*EIAPSW=1,1, OK, 0, 0
CM, Sent ATCom, AT*EIAAUW=1,1, OK, 0, 0
WAN, stateChange, on, 2, 2, 4
CM, Received UR, [*ESTKSMENU: mo
CM, Received UR, [+CREG: 1]
CM, Received UR, [+CGREG: 1]
CM, State, Attached, 0, 0, 0
WAN, notifyState, registered, 0, 0, 0
CM, Received UR, [*EMWI: 1, 0]
CM, Received UR, [+PACSP0]
CM, Sent ATCom, AT*E2OTR=1, OK, 0, 0
CM, Sent ATCom, AT+CIND?, ERROR, 100, 0
CM, Sent ATCom, AT+CIND?, ERROR, 100, 0
CM, Sent ATCom, AT+CIND?, ERROR, 100, 0
CM, Info, Sleep Mode, Can Sleep, 0, 0
CM, Sent ATCom, AT*ERINFO=1, OK, 0, 0
CM, Sent ATCom, AT*ERINFO?, OK, 0, 0
CM, Sent ATCom, AT*E2NAP=1, OK, 0, 0
CM, Sent ATCom, AT*ENAP=1,1, OK, 0, 0
CM, Info, Sleep Mode, Can not Sleep, 0, 0
WAN, notifyState, error, 0, 0, 0
CM, Received UR, [*E2NAP: 2]
CM, Sent ATCom, AT*E2CFUN=1, OK, 0, 0
WAN, stateChange, waitOff, 7, 2, 6
CM, Sent ATCom, AT+CFUN=4, OK, 0, 0
CM, Sent ATCom, AT*E2OTR=0, OK, 0, 0
WAN, unlock, 0, 0, 0, 0
CM, Sent ATCom, AT*ERINFO=0, OK, 0, 0
CM, Received UR, [*E2NAP: 0]
CM, Error, Connection, 0, 0, 0
CM, Received UR, [+CREG: 4]
CM, Received UR, [*E2CFUN: 1, 4, 0
CM, State, Radio Off, 0, 0, 0
CM, Sent ATCom, AT+CFUN=0, OK, 0, 0
CM, Info, Adjust State, Radio Off, 0, 0
CM, State, Module Off, 0, 0, 0

Se puede analizar con calma todos los comandos. Aproximadamente el formato es:

accion,comando,parametros_recibidos
o
accion,comando,respuesta,codigo_de_error

Básicamente, se activan notificaciones, sensores de temperatura, se reinician los contextos de conexión a internet, se crean nuevos (incluso con mis datos cambiados del APN), así todo correcto hasta que se llega al a línea:
CM, Sent ATCom, AT+CIND?, ERROR, 100, 0
La cual quiere decir: AT+CIND Indicator control (ver. 5) – Check the current status of indicators and states in the phone, for example, check if a charger is connected, check the current state for a call setup, and so on. Comprueba ciertos estados internos del teléfono y ¿como respuesta?, da un ERROR. Cagada. Como error CME asociado a esta respuesta el número 100… Miramos la tabla de errores, y ¿qué encontramos? Error 100: Unknown. Doble cagada con tirabuzón.

En resumen, cabe la posibilidad de que el dispositivo esté bloqueado para SIMs de AT&T. Puede que incluso esté bloqueado para que sólo funcione con la SIM que venía con el lector. Puede que se hagan comprobaciones en el software, además de en el módulo de telefonía, para saber si el aparato debe funcionar en España… Al menos hay una cosa a agradecer, el módulo no es CDMA, lo cual sería posible que funcionase en redes GSM europeas (de hecho, eso dice en las hojas de especificación, aunque la página de Sony diga lo contrario). Pero ahora… pueden ser tantas cosas que el siguiente paso es incierto. Una opción podría ser tratar de conseguir un módulo Ericsson F3507G liberado de operadoras, para ver si únicamente está bloqueado. No es una locura, pero tampoco es barato. También se podría intentar colocar otro módulo distinto de otro fabricante, aunque entonces implicaría perder toda la integración del software (y tener que compilar un módulo del kernel como mínimo, o un kernel nuevo)… muy arriesgado.

Quizá también podría estar quietecito por una vez con estos aparatos, pero… entonces no tendría el problema que me ha hecho escribir el post :)

Referencias: Información sobre el módulo del lector, una pequeña introducción sobre los comandos soportados, Manual de comandos AT GX64 y la lista de comandos AT para teléfonos Sony Ericsson

may 11 2010

GNOME Marketing Hackfest en Zaragoza

Tal y como contábamos, se celebró la semana pasada en Zaragoza el GNOME Marketing Hackfest. Gracias a los sponsors, un grupo de GNOME Marketing se reunió en la Biblioteca del Agua de Zaragoza para preparar el lanzamiento de GNOME 3.

Primero se definió una campaña de marketing, con muchas actuaciones a atacar. Todo está planificado con fechas concretas y gente a la que perseguir, lo que ayudará a que se vayan cumpliendo todos los puntos.

También se comenzó el diseño de la página web de presentación de GNOME 3. Ya salieron unos cuantos bocetos, y realmente puede quedar muy limpia y ordenada. Genial! :)

Otra de las iniciativas interesantes fue la preparación de los vídeos para la web. La idea es preparar unos pequeños spots mostrando las novedades que traerá GNOME 3. Además, se ha preparado un how-to para que cualquiera que quiera ayudar o localizar los vídeos, pueda hacerlo de manera sencilla (aunque requieren bastante material :P )

Hubo más temas a tratar e ideas geniales, pero alguna sorpresa hay que guardar… Os invito a que entréis a las páginas del wiki para descubrir todo lo que se habló.

Y aquí está la foto de la gente que estuvo en el Hackfest

GNOME Marketing Hackfest

GNOME Marketing Hackfest

Además de lo que fue trabajo 100% GNOME, también hubo presentaciones de casos de éxito tanto de la Administración local como de la regional, así como de las empresas de aquí. Mención especial a las empresas del sur (Yaco y Emergya) que se vinieron a pasar un ventoso día con nosotros. Éstas, junto con Onirica, Warp y con el Consorcio Fernando de los Ríos son quienes ahora mismo quieren darle un empujón a la Accesibilidad de GNOME. ¡A ver hasta donde se llega!

may 08 2010

Cumpleaños feliz!

Esta canción es la que hace unas horas le he cantado a mi parche sobre el código de Android.

Tras un año completo, sigo esperando una revisión efectiva del parche y que lo acepten (o se quejen) por parte de Google. Entiendo que los ingenieros estén ocupados, pero no sé hasta qué punto a la comunidad que están creando alrededor de Android se le permite colaborar con el proyecto principal.

Es una sensación rara… en otros proyectos parece que hay más facilidades de cara a las colaboraciones externas… Habrá que meditar con cuidado sobre el tema

WordPress Themes