Hace unas semanas confirmamos que los sensores de movimiento del iPhone 5s funcionan bastante mal. Desde entonces, algunos desarrolladores han estado investigando el problema y han dado con la raíz del mismo. Efectivamente, se trata de un defecto en el diseño del hardware que Apple o ignoró o se le pasó. Lo bueno: tiene solución, aunque de momento no vendrá de Apple.

El nivel del iPhone 5s lo establece el acelerómetro del móvil y, según desarrolladores de la firma RealityCap, la razón por la que hemos estado viendo problemas con el sensor es porque Apple ha cambiado al proveedor de este componente.

Advertisement

En un post, el consejero delegado de la compañía, Eagle Jones, comenta el despiece del iPhone 5s realizado por Chipworks, el cual revela un cambio interesante: mientras los anteriores iPhones utilizaron acelerómetros del fabricante STMicroelectronics, el iPhone 5s utiliza un componente Bosch Sensortech. Es una observación tremendamente nerd, pero importante, porque resulta que los acelerómetros de STMicroelectronics y Bosch Sensortech tienen diferentes especificaciones.

Jones explica que estos sensores se basan en dos mediciones clave que muestran si son precisos o no: variación y sesgo. La primera te dice cuán consistentes son las lecturas del acelerómetro; la segunda describe una imprecisión recurrente que proviene de un fabricante concreto. En un email, Jones nos ha dado más detalles:

Digamos que estamos midiendo la fuerza de la gravedad, que debería ser 9,81 m/s2.

Un sensor con sesgo bajo, pero variación elevada daría lecturas como 9,85 9,75 9,81 9,90 9,79 9,77

Un sensor con sesgo alto, pero variación baja daría 9,60 9,61 9,59 9,60 9,62 9,58

Según las mediciones realizadas por RealityCap, los acelerómetros de ST y Bosh tienen una variación similar, pero su sesgo varía:

Aquí es donde hemos encontrado el problema: el sesgo típico para un componente del fabricante ST es +/- 20 mg, mientras que para el de Bosh es de +/-95 mg. Esta medición está casi 5 veces por encima fuera de rango, la hemos confirmado en nuestras lecturas, y es absolutamente consistente con los fallos que se han venido reportando en los medios. Un error de +/- 20 mg se traduciría en aproximadamente +/- 1 grado en rango de exactitud en la detección del nivel, mientras que un error de +/- 95 mg se traduciría en +/- 5 grados.

El resultado, como vimos en nuestro anterior artículo, es que las mediciones del acelerómetro y el resto de sensores que lo usan están completamente desajustadas, afectando a todo, desde el nivel del móvil a juegos de carreras.

Jones nos ha confirmado que Apple podría haberse dado cuenta de este problema en la fábrica con una calibración pero, por algún motivo (error puntual, fallo en la cadena...), parece que no lo hizo. Eso no significa que se tenga que recomponer el iPhone 5s de arriba a abajo. Los desarrolladores pueden compensar el cambio en las especificaciones del acelerómetro con calibración adicional.

Advertisement

Es posible salvar el problema incorporando un procedimiento de calibración en las apps. Este procedimiento pediría al usuario ubicar el móvil en una orientación diferente para determinar el sesgo del acelerómetro. Las aplicaciones pueden luego descontar este sesgo en la información proporcionada por el acelerómetro y obtener así una lectura más precisa.

Sin embargo, hacer esto para cada app sería una enorme molestia. Mientras, RealityCap está trabajando en crear un código para que los desarrolladores puedan corregir el problema de forma más sencilla. La compañía tiene pensado liberarlo durante las próximas semanas en un post en su blog.

De momento Apple no ha dicho absolutamente nada sobre el tema. Según Jones, la compañía podría aplicar una calibración en cada móvil e incluir el sesgo en el firmware, pero el hecho que de momento no lo haya hecho significa que, o aún no lo consideran importante o están pensando alguna otra medida.

Lo que resulta más decepcionante es que en Cupertino parecen haber optado por un componente de peor calidad sin compensar por las consecuencias. En teoría, podrían publicar una calibración adicional para sus aplicaciones, y ofrecer el mismo código a los desarrolladores. Es lo mínimo que deberían hacer. Pero si no lo han hecho ya, no parece probable que lo vayamos a ver próximamente. [RealityCap y Chipworks]