Rooteando mi Sony Xperia Z Ultra

Habiendo transcurrido ya un tiempo prudencial desde que me compré mi Sony Xperia Z Ultra, en el cuál he podido comprobar cuál es su rendimiento y cómo se comporta en general con la configuración de fábrica, llegó el momento de hacer cambios…

Si aquí os hablaba sobre el rooteo y cambio de roms en uno de mis primeros móviles Android, hoy haré lo propio con éste.

Lo primero que quería era rootearlo para, sobre todo, quitar varias de las apps que vienen de fábrica y que no uso nunca. Investigando por internet no encontraba un método claro para hacerlo en la versión concreta del sistema que tenía mi móvil.

Durante la investigación me llamó la atención una aplicación de rooteo universal (es decir, válida para multitud de teléfonos) cuya reseña aparecía en varios blogs importantes en el mundo de Android, como El Androide Libre. Dado que no encontraba ningún método de rooteo de mi móvil que me convenciera y que, todo sea dicho, me picaba mucho la curiosidad por tal aplicación, decidí probarla. Así pues, me descargué el apk y la instalé.

Es una aplicación china, donde incluso algún que otro mensaje aparece en dicha lengua. Aún así, es muy sencilla de usar. No hay mucho donde tocar y es un proceso sencillo y directo que, tras unos instantes realiza todos los pasos necesarios y nos muestra el esperado mensaje que indica que nuestro teléfono está completamente rooteado. De hecho, hablo desde la propia experiencia con mi móvil, ya que lo pude rootear sin problemas.

Dicho esto, también hay que tener en cuenta quue es una aplicación que tiene que estar siempre residente en memoria, no puedes quitarla. Esto, teniendo la procedencia que tiene es algo, como mínimo, mosqueante. Con bastante recelo me puse ahora a investigar si había indicios de problemas de seguridad con dicha aplicación, lo cuál es un poco estúpido, porque permitir a una aplicación china prácticamente desconocida y que tiene el “poder” de hacer lo que quiera en mi móvil y esperaer que el móvil esté 100% a salvo de miradas no autorizadas es una contradición en sí misma.

Como no estaba conforme decidí quitar la aplicación, pero como indicaba antes, no puedes. Sí, tiene una opción dentro de la aplicación para eliminarla pero a mí no me funcionó. Dado que la aplicación se instala en /system de nuestro móvil, cualquier intento de borrarla con un reset del móvil es totalmente infructuoso.

El caso es que tras los intentos de eliminarla (sin éxito, como decía) llegué a un punto en el que ni me funcionaba bien: el teléfono ya no estaba rooteaado a pesar de estar la aplicación en funcionamiento y de intentar aplicar el proceso una y otra vez. La única solución que se me ocurrió era “cepillarme” la versión instalada en el móvil y cambiarla por una ROM cocinada que funcionara bien.

Llegados a este punto, comencé otra búsqueda en internet para ver cómo estaba el “estado del arte” del cocineo para mi móvil. Como no terminaba de convencerme ninguna de las ROMs que ví de distintos usuarios de xda-developers, fui a la opción que considero de las más estables y evolucionadas en este mundillo, hablo de Cyanogenmod.

Esta ROM la he probado en otras ocasiones con otros terminales y me ha resultado siempre bien. Así pues, seguí los pasos que explican perfectamente en la wiki de este proyecto, en concreto me refiero a esto. Aquí está la página de descargas de la ROM para mi móvil (*).

Desde entonces (hace dos meses aproximadamente) estoy usando Cyanogenmod 12.1 (versiones nightly), que está basada en Android 5.1. En general diré que va bastante bien. Hablando de rendimiento, con Antutu da más de 40.000, mientras que con la flash original era de unos 32.000.

¿Recomiendo hacer esto en vuestros Xperia Z Ultra? Sí y no, me explico. Sí, si queréis tener el control total de vuestro y asumís, por un lado, que al usar las últimas versiones Android puede que experimentéis algún que otro bug típico de versiones software sin pulir 100%. Por otro lado, hay que sumarle que las versiones nightly de Cyanogenmod no son las estables, sino las que incorporan nuevas funcionalidades y parches y sus publicaciones son diarias.

No lo recomiendo si queréis un teléfono más estable (al menos todo lo estable que puede estar con la versión instalada de fábrica por parte de Sony) y, sobre todo, si no necesitáis hacer nada como root. De hecho, si ni siquiera sabéis lo que significa esto y tampoco os quita el sueño, os recomiendo encarecidamente que no os metáis en estos fregados.

A mí personalmente sí que me compensa rootear el móvil por las posibilidades que permite a la hora de hacer ciertas operaciones que no están permitidas al usuario normal y limitado con el que viene configurado de fábrica un teléfono Android. Por otra parte, me gusta probar y experimentar con versiones nuevas del sistema asumiendo que esto puede acarrear algún que otro efecto colateral no deseado.

(*) En Cyanogenmod se refieren al móvil como “togari” ya que es el nombre con el que, al parecer, se bautizó en los primeros momentos. Togari es un manga japonés, para más señas.

Escuchando artículos en tu dispositivo Android

En el anterior artículo os hablé de un método para reproducir artículos sin tener que leerlos, lo cuál es útil en momentos y lugares donde no quieres o no puedes usar la vista para estos menesteres, como por ejemplo sucede cuando vas conduciendo.

Entonces os hablé de usar comandos de voz para reproducir cada artículo y que se fuera reproduciendo en el móvil. Pues bien, aquí os muestro otra solución que es más cómoda aún y que es la que uso actualmente (y cuando digo actualmente me refiero a que he empezado a usarla hace un par de semanas, que es cuando encontré esta solución).

Existe un programa genial llamado @Voice Aloud Reader, el cuál podéis encontrar, como siempre, en google play.

Este programa permite reproducir cualquier texto que le insertes. Además tiene la posibilidad de crear una lista de reproducción, lo cuál es muy útil ya que no tienes que estar pasando de un artículo a otro “a mano”, sino que lo hace automáticamente, de la misma forma que cuando terminas de reproducir una canción en tu mp3 automáticamente suena la siguiente.

Aunque ésta puedes crearla desde la propia aplicación, lo más práctico es insertar los artículos y textos desde otras aplicaciones del móvil/tablet mediante la opción de Compartir. Aquí tenemos dos opciones, la opción de que directamente lo reproduzca Aloud Reader o bien añadirlo a la lista de reproducción.

Pero lo que a mí me parece más interesante es la opción de sincronizar la lista de reproducción con Pocket. Esto es genial, porque tú puedes ir añadiendo los artículos a Pocket como siempre (desde el teléfono/tablet o desde el PC) y cuando quieres escucharlos simplemente te vas a la lista de reproducción (*) y le das a la opción de “Sincronizar con Pocket”.

Para mí, que uso el dispositivo sobre todo para consumir artículos y textos varios, es de las aplicaciones más interesantes y productivas que existen.

 

(*) Para mostrar la lista de reproducción, simplemente usáis al botón de la esquina superior izquierda y os aparecerá.

Automatizando en Android con Tasker

Existe una aplicación para Android (existen más, pero a mí me gusta ésta) que permite automatizar todo tipo de eventos, ajustes, aplicaciones, etc. en tu dispositivo Android.

No es una aplicación sencilla de configurar, pero una vez entiendes cómo funciona, ya pasa directamente a formar parte de las aplicaciones imprescindibles en tu móvil.

La función de Tasker es ejecutar ciertas “tareas” cuando se dan ciertas condiciones que tú previamente le has configurado. Por ejemplo, le puedes decir que cuando estés conectado a la wifi de tu casa que baje el sonido del móvil, aumente el tiempo de espera de la pantalla y que desconecte el GPS (por decir algo).

Otro ejemplo, Tasker puede hacer que cuando tú le digas una palabra clave, por ejemplo “leer”, te lea un artículo de pocket usando el TTS correspondiente.

De hecho, éste último ejemplo es el motivo por el que me compré dicha aplicación (es de pago, pero el precio es irrisorio). Cuando me monto en el coche y quiero escuchar un artículo, no tengo que mirar la pantalla del móvil, de hecho, ni siquiera tengo que tocar nada, sólo decir la palabra “leer” y, automáticamente, comienza a sonar el artículo por el audio de mi coche (vía Bluetooth, claro).

Para hacer esto (que Tasker lance una tarea tras darle un comando de voz), es necesario tener un complemento llamado “Autovoice”. También os recomiendo el complemento “Autoinput”. Todos son del mismo desarrollador, quien, dicho sea de paso, siempre contesta -y muy rápidamente- a cualquier duda/problema que surja a la hora de usar y configurar su aplicación (doy fe).

La configuración es algo ardua al principio pero básicamente es crear una tarea con todas sus acciones (ej: abre aplicación pocket, abre primer artículo, reprodúcelo por TTS) y luego asignarla a un perfil, que es el que especifica el evento que “dispara” la tarea (puede ser una hora, una posición del gps, un estado del teléfono -wifi conectada a tal essid-, un comando de voz…).

Para sacarle más provecho a los comandos de voz hay que configurar Tasker para que funcione con “Ok Google”. Si no habéis probado “Ok google” os recomiendo que lo hagáis (es el homólogo en Android del “Siri” de IOS).

Un pequeño cambio en la web

Hola a todos.

Sé que sois miles y miles los seguidores de ésta, mi humilde web 😛 y que os tengo acostumbrados a un artículo por semana el cuál, lo sé, esperáis ansiosos. En concreto, todos los domingos aproximadamente a las 22:00 sale a la luz uno nuevo (viene siendo así desde casi el comienzo).

Dado que las ocupaciones, ajetreos y vaivenes cotidianos me dejan cada vez menos tiempo del que quisiera para escribir nuevos artículos, voy a cambiar la periodicidad de publicación de artículos, que a partir de ahora ya no será de uno por semana, si no cuando tenga un hueco para escribiros.

En otras palabras, seguiré publicando pero de vez en cuando, no cada semana (al menos de momento).

Gracias a todos por leerme.

Chequear la batería del portátil desde línea de comandos

Aunque todas las distribuciones actuales tienen entornos gráficos con aplicaciones que controlan en todo momento el estado de la batería del portátil y nos muestran avisos cuando queda poca batería, si usáis un entorno más liviano (tipo openbox) y/o queréis comprobarlo por vuestra cuenta, aquí os indico cómo podéis hacerlo.

Para chequear el nivel de la batería podéis usar este script:

REMAINING=`cat /proc/acpi/battery/BAT0/state | awk '/remaining/ {print $3}'`
TOTAL=`cat /proc/acpi/battery/BAT0/state | awk '/present rate/ {print $3}'`
echo "$REMAINING * 100 / $TOTAL" |bc

Y con este otro script podéis controlar también el adaptador para ver cuándo está online y cuándo offline. Este script hace uso del anterior y así, si está sin cable de corriente y la batería baja de un nivel que especificamos se apaga el equipo (es el comando “h” que se ve ahí). El script sería éste:

BAT=`/usr/local/bin/show_bat.sh`
MIN_BAT=10
AC_ADAPTER=`cat /proc/acpi/ac_adapter/ADP0/state | awk '{print $2}'`
if [ $AC_ADAPTER = "off-line" ]; then
        if [ $BAT -lt $MIN_BAT ]; then
                if [ $BAT -lt 3 ]; then
                        echo "El equipo se quedón sin batería" > $HOME/LEEME.txt
                        /usr/local/bin/h
                else
                        zenity --warning --text="Batería baja" --display=:0.0
                fi
        fi
fi
Espero que os resulte útil.

Bookmarks en la línea de comandos

Si con los anteriores artículos sobre zsh ya os he convencido y lo usáis cotidianamente como yo, este plugin para zsh os va a gustar.

A veces tenemos que entrar en largas rutas de directorios. Esto implica escribirlos (aunque sea usando las abreviaciones y tabulador igualmente lleva un tiempo) cada vez que queramos entrar en ellos.

Cuando esa operación la tenemos que hacer asiduamente, conviene agilizarlo. Para ello, podríamos usar los comandos push pop, como vimos en este artículo. Sin embargo, hay una forma más versátil y es haciendo uso de un plugin para zsh llamado zshmarks, creado por el usuario de github .

Para activarlo lo podemos hacer fácilmente tanto si usamos oh-my-zsh, como vimos aquí, o antigen, como vimos aquí.

Con este plugin podemos usar ciertos comandos rápidos para guardar y acceder a rutas de directorios de forma muy cómoda e intuitiva (*). Veamos unos ejemplos, que es la forma más sencilla de ver cómo funciona.

  • bookmark NOMBRE_BOOKMARK–> Añade como bookmark “NOMBRE_BOOKMARK” el directorio actual.
  • showmarks  –> Muestra los bookmarks que tenemos guardados.
  • deletemark NOMBRE_BOOKMARK –> Elimina el bookmark en cuestión.
  • jump NOMBRE_BOOKMARK –> Va a la ruta a la que apunta dicho bookmark.

Como vemos, para guardar un bookmark, accedemos primero a la ruta que deseamos guardar y luego escribimos bookmark NOMBRE_BOOKMARK, donde NOMBRE_BOOKMARK es el nombre que le queremos dar al bookmark.

Todos los bookmarks se guardan en un simple archivo de texto plano cuyo nombre se especifica en la variable BOOKMARKS_FILE, por lo que podéis copiar vuestros bookmarks a todos vuestros PCs muy fácilmente.

Para agilizar aún más la escritura, podéis crear alias para dichos comandos, tal y como propone el creador de este plugin en su web:

alias g="jump"
alias s="bookmark"
alias d="deletemark"
alias p="showmarks"

También podéis crear directamente alias para un comando y bookmark. Ejemplo:

alias l=”jump logs”

De esta forma simplemente tecleando l + INTRO ya iríamos a la ruta que queremos.

Espero que os resulte útil.

 

(*) Es similar al manejo de bookmarks en otras aplicaciones, como en el explorador de archivos (Dolphin, por ejemplo) o el navegador web.

OCR usando Google Drive

En el anterior artículo hablábamos de una aplicación para GNU/Linux que realiza OCR sobre imágenes.

Existen muchas webs que realizan este tipo de procesado (tenemos que subir la imagen y nos devuelven un archivo de texto). Normalmente tienen limitaciones de texto, de peso de imagen, de número de páginas, de formatos de salida aceptados, de tiempo…

Otra opción -que es la que os quería comentar en este pequeño post-, es usar Google Drive.

Para esto último tenemos que activar, dentro de Google Drive, las dos opciones que véis en la siguiente imagen (*):

Opción OCR Google Drive

Una vez hecho esto, cada vez que subamos un archivo de imagen o pdf nos preguntará si queremos convertirlo a texto.

Una vez hecho, cuando abramos el archivo aparecerá la imagen y a continuación todo el texto.

Hay una limitación de 10 hojas si se trata de un pdf. Para mejores resultados, y al igual que dijimos en el anterior artículo, tened en cuenta:

  • Mejor cuando mayor contraste (blanco y negro mejor que escala de grises)
  • Mejor cuanta más calidad tenga la imagen (sin pasarnos de peso en la imaegn, eso sí, que creo que es de 2 MB)
  • Mejor si el formato es sencillo (negrita, cursiva, tamaño de letra). Si incluye tablas, múltiples columnas, etc., el resultado no será muy fiable.

 

(*) Si le habéis dado a “probar la nueva versión de Google Drive” esta opción no aparece y tendréis que volver a esta versión para poder usarla (es posible que esté ya en la nueva versión pero yo no la ví en su momento).

OCR usando GNU/Linux

En la actual “era digital”, todo resulta mucho más sencillo -la mayoría de las veces-, trabajando con los archivos en formato electrónico en lugar de en papel.

Además, para archivarlos es mucho más cómodo, no ocupan espacio físico en el despacho y además es todo más versátil (por ejemplo, puedes hacer búsquedas rápidamente en grandes cantidades de ficheros).

Dicho esto, está claro que además de tener archivos en formato electrónico, también nos encontramos con archivos en formato impreso (en papel, vaya). Estos últimos podemos escanearlos para guardarlos en el ordenador.

La “pega” es que si necesitamos editarlos esto no es posible porque, una vez escaneados, son una imagen -no son texto-. En cualquier caso, a estas alturas esto es algo que se soluciona fácilmente, existiendo aplicaciones que además de escanear realizan un reconocimiento óptico de caracteres (lo que se conoce como “OCR”, por sus siglas en inglés: Optic Character Recognition).

Estas aplicaciones analizan la imagen en cuestión en busca de patrones que puedan parecerse a las letras de un idioma y signos de puntuación.

Si el documento tiene imágenes entre el texto y/o el formato no es sencillo (tiene tablas, columnas, etc.), el OCR no será todo lo preciso que podría, pero para la mayoría de documentos, cartas, informes, etc., nos hará un buen trabajo (quitándonos muchas horas de pasarlo de nuevo a ordenador tecleándolo entero).

Interesa que la imagen escaneada esté en una calidad aceptable. Cuando mayor contraste mejor (es decir, mejor escanear en blanco y negro que en escala de grises o color normalmente).

Lo que nos interesa a nosotros es, por tanto, encontrar un software que realice ocr en nuestro sistema operativo (GNU/Linux, claro). Yo os recomiendo la aplicación tesseract, la cuál fue desarrollada en su momento por HP y ahora es continuada por Google. Existe para la mayoría de las distros y es gratuita bajo la licencia Apache 2.0. Si vuestra distro no la trae en los repositorios oficiales (no será una distro muy conocida entonces), Podéis descargarla aquí:

Usar la aplicación es sencillo:

tesseract IMAGEN.png SALIDA -l spa

donde:

  • IMAGEN.png es nuestra imagen escaneada (acepta varios formatos, entre ellos png)
  • SALIDA es el fichero de salida que se genera con el texto
  • con -l spa indicamos que el texto está en español (admite muchos más idiomas (*))

(*) Para ver qué idiomas tenemos instalados escribimos: tesseract –list-langs.

 

Paralelizando tareas en la línea de comandos

Los procesadores actuales, como bien sabéis, tienen varios cores. Esto significa que en teoría pueden ejecutar varias cosas en paralelo. Así, si tienen 4 cores, podrían ejecutar 4 procesos al mismo tiempo.

El problema es que normalmente las aplicaciones no están diseñadas para sacar todo el rendimiento a nuestros procesadores con todos sus cores, de forma que a veces está trabajando un core mientras los otros apenas hacen nada.

En GNU/Linux tenemos un comando (desarrollado por la propia fundación GNU) que permite ejecutar varias tareas en paralelo. Se llama parallelSe encuentra disponible para todas las distros más importantes directamente desde los repositorios.

El ejemplo más sencillo es el de comprimir varios archivos. Veamos cómo lo haríamos normalmente:

gzip *

Vamos a ejecutar este comando con el comando time delante para que al finalizar nos diga cuánto ha tardado (así podremos luego comparar más fácilmente). Además, le pondremos la opción -1, que hará que comprima más y tardará un poquito más:

[ user ] [~/a] > time gzip -1 * 
gzip -1 * 10,80s user 0,40s system 96% cpu 11,622 total

En mi PC obtengo un uso de sistema del 96% y 11,6 segundos de tiempo en ejecutarlo.

Se obtiene un 96% de uso de CPU porque para el comando time, 100% es el máximo uso de un core. Como tenemos 4 cores (en el caso de mi CPU), el total sería 400%, por lo que se están desperdiciando aproximadamente(*) 3/4 partes de procesador.

Para llevar a cabo esta tarea con parallel tendríamos que hacerlo así:

[ user ] [~/a] > ls | time parallel gzip -1
[... información sobre parallel ...]

parallel gzip -1 10,93s user 0,53s system 317% cpu 3,605 total

Lo que da como resultado un 317% de uso de CPU y un total de 3,6 segundos de ejecución.

El hecho de que se obtenga 317% de uso de CPU se explica por lo que decíamos antes. time tiene en cuenta 100% por cada core. Por tanto, aquí se está aprovechando mucho mejor la CPU. En nuestro ejemplo hemos comprimido sólo 4 archivos de 66 megas cada uno. Si comprimiéramos más y durara más el proceso, poco a poco el % de uso aumentaría aprovechando aún más todos los cores, es decir, cuanto más dure el proceso más partido sacará.

Si queréis comprobar de una manera más visual qué porcentaje de cada core se está usando en cada momento podéis usar la utilidad htop.

Parallel tiene muchas más opciones. Podéis incluso usarlo para usar no sólo los cores de un equipo, sino las cpus de varios equipos en red. Un parámetro interesante es el que permite especificar qué capacidad de cpu queremos usar para la tarea. Es el parámetro -j. Siguiendo con el ejemplo anterior, podríamos poner esto:

[ user ] [~/a] > ls | time parallel -j 50% gzip -1
[ ... información sobre parallel ... ]

parallel -j 50% gzip -1 10,84s user 0,46s system 188% cpu 6,005 total

Con esto indicamos que se use la mitad de la CPU. En este caso el resultado ha sido 164% de ocupación de CPU y unos 6 segundos, es decir, como usamos la mitad, tardamos el doble -aproximadamente- que antes.

Aquí tenéis el tutorial de GNU por si le queréis sacar todo el pringue a este comando.

Más info aquí.

(*) Decimos aproximadamente porque el sistema operativo está ejecutando más cosas aparte de nuestro comando gzip.

Obteniendo información del hardware con dmidecode

A veces uno necesita (o simplemente quiere) saber qué componentes tiene su PC exactamente. Una forma de saberlo es abrir el equipo y observar estos datos viendo los componentes directamente.

Sin embargo, si queremos saber esto sin necesidad de abrir el equipo podemos usar dmidecode.

dmidecode es una aplicación para GNU/Linux que permite obtener información sobre el hardware y que está almacenada en la BIOS. Hace uso de DMI (Desktop Management Interface), que no es más que un framework para obtener información sobre los componentes de un ordenador.

Así pues, con dmidecode podemos conocer, entre otros, la marca de la placa base, el modelo, la revisión, la cantidad de memoria RAM instalada, bancos de memoria ocupados y libres, etc., etc.

Lo primero que necesitamos es instalar el paquete dmidecode usando el sistema de paquetería de la propia distribución. En el caso de openSUSE:

zypper in dmidecode

En el caso de ubuntu

aptitude install dmidecode

y así sucesivamente.

Aunque tiene varios parámetros (ya que la información que se puede recopilar es bastante completa), la forma más sencilla de usarla es pasándole una cadena que especifica qué parámetro queremos saber. Por ejemplo, para saber el fabricante de la placa base ejecutaremos esto:

dmidecode -s baseboard-manufacturer

En el caso de mi portátil, el resultado es: Dell Inc.

Para ver todos los parámetros de este tipo ejecutamos esto:

dmidecode -s

Ahí se listan todos, pero podemos obtener aún más información usando otros parámetros.

Si queremos obtener toda la información referente a la memoria, por ejemplo, usaríamos el parámetro -t:

dmidecode -t memory

Esto ofrece mucha información. Si buscamos algo más concreto, como por ejemplo, saber cuál es la capacidad máxima de memoria que admite nuestro equipo pondremos:

dmidecode t16 | grep -i "maximum capacity"

Como siempre, con man podéis obtener toda la información que podéis necesitar para sacarle más partido al comando.