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

martes, 29 de enero de 2019

Downgrade de impresoras HP

Las famosas impresoras HP Officejet x476dw que nos mandaron sin mesura nos han traído muchos momentos dificultosos. El principal problema está relacionado con trabas al uso de tinta genérica.

Ya sufrimos el bloqueo de cartuchos con aquella bomba de tiempo que metió HP en muchos de sus firmwares hace un par de años. Posteriormente los sucesivos firmwares provocan de alguna manera que los inyectores fallen o al menos eso nos parece.

En este escenario puede ser útil hacer un downgrade del firmware de la impresora para volver a una versión anterior del mismo. Seguramente cuanto más antiguo sea menos bichos tiene dentro.

El problema es que el actualizador oficial que viene con los firmwares no permite hacer downgrade y cargar un firmware mas antiguo que el que tiene instalado. Originalmente las impresoras venían con el firmware LWP1CN1502AR, que luego se fue actualizando en muchas de forma automática (ya que teníamos los "Servicios Web" activados en el menú de configuración web) hasta el LWP1CN1640AR e incluso hasta LWP1CN1819AR y LWP1CN1829BR (el mas reciente a fecha de escribir esto).

Afortunadamente, mi compañero Fernando nos puso en la pista con este enlace: Downgrade de impresora a version 1640AR, en el cual se describe como realizar el downgrade a la versión 1640 si tienes un firmware superior.

Luego encontré esta página en alemán donde cuenta como trucar el actualizador original para realizar un downgrade a cualquier versión. El problema es que el enlace que dan hacia un repositorio de firmwares ha sido vaciado por HP.

Enredando un poco me bajé un el EXE con un firmware antiguo OJPX476DW_CN1502BR.zip, y descomprimiendo el ZIP y luego el EXE que hay dentro llegué hasta un interesante archivo "lemansdw_vr5_pp1_LWP1CN1502BR_apps_signed.ful". Veamos que es esto:
# file lemansdw_vr5_pp1_LWP1CN1502BR_apps_signed.ful 
lemansdw_vr5_pp1_LWP1CN1502BR_apps_signed.ful: HP Printer Job Language data
Vaya, es un fichero de PJL, el lenguaje de los trabajos de impresión de HP.
# head lemansdw_vr5_pp1_LWP1CN1502BR_apps_signed.ful 
2345X@PJL COMMENT (null)
@PJL ENTER LANGUAGE=FWUPDATE

This device does not support FWUPDATE!
t16384sA16542Y+0Y16384VSA27020202A41D5900080100A2C359378CD1AD22A482D2BB797E683379D8F9648DBF89C9EB894F9E9C
SA27658A50D5BA358FC5BE1BB1FCE651DA793BF0FBD192E4E268A649612BDA1D6EC4D71BC568ED41C9
SA27FE3DCD0D5FCA270E926F5E7E520A13353113BA080A648ADBFE9478B6D55BF2B9137A67FCFB0184
SA273B41DC3BD7E683AD450E87640EED6179C3BBC1EB1809F5284280620F992C047EFFCA02CA8F8AB5
SA274F027A82F9A563CE96EF88C33DF8F53AD95EF9898C8B7B088CEE168921903881C45C7B9FA22CAA
SA2766BB292B82D570162BACA932E8AC0614517921DA5CAF088A51A9C45B338F04DDF8D634D0A00591
SA276609554863B5739DA6C8DDB7D66350E1A09D83378D1C86D4070724258D2FF0E9CF6E6162DE4C28
Por lo que vemos contiene dentro el blob de la actualización del firmware en forma de trabajo de impresión. También he visto luego que la extensión .rfu también se usa para este tipo de ficheros.

Estos ficheros PJL pueden ser enviados directamente a la impresora para que los interprete y ejecute. La pregunta es: ¿si enviamos este fichero a pelo lo ejecutará y realizará un downgrade del firmware sin quejarse?.

Bien, en este enlace hablan un poco sobre PJL y como enviarlo tal cual a una impresora HP. En Windows se usa un programita llamado PrintFile y en Linux seguramente se pueda usar el comando "lpr".

Por no complicarme usé el Windows, el programa PrintFile, la impresora conectada por USB con sus drivers instalados y envié el fichero lemansdw_vr5_pp1_LWP1CN1502BR_apps_signed.ful. El panel táctil de la impresora parpadeó, se reinició varias veces con un contador y una barra de progreso y...¡voilá! al reiniciar el firmware había bajado del 1640AR al 1502BR.

Esto en principio no soluciona los problemas que estamos teniendo con los cartuchos genéricos, pero es interesante conocer este método por si alguna vez nos hace falta volver a un firmware antiguo.

Como colofón, paso enlace hacia los dos firmwares mas antiguos que he podido encontrar:
  • Firmware 1502. Es un ZIP con ele ejecutable para Windows. Se debe ir descomprimiendo hasta llegar al .ful.
  • Firmware 1336. Este firmware es para instalar desde OSX, así que viene en un fichero .dmg. No es complicado encontrar herramientas para extraer su contenido.


Me despido con este divertido reportaje de Rocío Vidal, aka La gata de Schrödinger, en el primer congreso terraplanista de Barcelona:



No es broma, se empieza negando el cambio climático y la llegada del Apolo XI a la Luna y se termina defendiendo que la Tierra es plana:


sábado, 19 de enero de 2019

Ver y grabar canales de TV por Internet desde la línea de comandos.

Lo confieso: veo la TV nacional en algunas ocasiones en que me interesa. Lo ideal sería poder verla fácilmente desde una ventana del ordenador mientras hago alguna otra cosa, pero el problema es que las cadenas tienen en tan alta estima sus contenidos que no se molestan en ponerlo fácil.

Afortunadamente hay un puñado de voluntarios que consiguen ayudarnos: confeccionan listas de enlaces m3u que apuntan a la transmisión en vivo de uno o varios canales. Y además actualizan los enlaces cada vez que las cadenas sabotean la emisión. Hay muchas, pero mi página de referencia ahora es esta.

Una vez tenemos el enlace web al fichero m3u (por ejemplo: https://pull2c-i.akamaized.net/canal/master.m3u8) cogido de la página anterior, para poder visualizarlo nada tan sencillo como hacer:
# vlc https://pull2c-i.akamaized.net/canal/master.m3u8
Aquí vemos un ejemplo:


Por otro lado, puede suceder que queramos grabar un programa concreto para verlo luego. Eso lo haremos desde la línea de comandos con el programa "ffmpeg" y los siguientes parametros:
# fmpeg -i https://pull2c-i.akamaized.net/canal/master.m3u8 -c copy -bsf:a aac_adtstoasc grabacion.mp4 
El fichero resultante se guardará en "grabacion.mp4" para su posterior visionado.

Si además queremos programar el tiempo de grabación podemos usar el parámetro "-t " de ffmpeg, por ejemplo:
# fmpeg -i https://pull2c-i.akamaized.net/canal/master.m3u8 -c copy -bsf:a aac_adtstoasc -t 00:02:00 grabacion.mp4 
Grabará 2 minutos y finalizará. De esta manera no se nos escapará nada interesante. Es una lástima que no se pueda ir viendo el contenido mientras se graba, pero no he encontrado la forma de hacer timeshift en la emisión.



Así ya tengo todo preparado para ver y grabar las pruebas de vuelo de esta preciosidad durante los próximos meses:


Que bonito el prototipo de la Starship de SpaceX que acabará llevándonos a Marte. Eres grande, Elon Musk.

martes, 8 de enero de 2019

Integración de mapas descargados de IGN en app OsmAnd

Como aficionado al senderismo (lo que antes se llamaba "andar por el campo" y ahora para masmolar se le dice "trekking") me gusta tener siempre una aplicación con mapas en el móvil. Es importante que dichos mapas funcionen offline, ya que nunca sabemos si vamos a tener cobertura o no. Ya sabemos que la cobertura 3G cubre casi todo el país, pero yo no se que hago que siempre me meto en ese ínfimo % donde no la hay.

He pasado por varias aplicaciones Android a lo largo de los años: Oruxmaps, Mapas de España, MapsMe, Google Maps,... pero ahora estoy usando preferentemente OsmAnd, ya que integra muy bien las rutas GPX descargadas de Wikiloc y permite añadir como capas diversos tipos de mapas offline.

El único hándicap que le encuentro es que por defecto solo deja descargar unos cuantos mapas de su servidor, quedando desactivada la descarga en la versión gratuita al alcanzar el límite. Aun así, podemos descargar más mapas con el PC y posteriormente copiarlos a mano al móvil.

El problema que tienen para el senderismo los mapas del servidor de OsmAnd es que, al estar basados en OpenStreetMap, son detallados para sitios urbanos y carreteras pero no para recorridos por el campo. No aparecen muchos caminos rurales ni nombres de paraje, por lo que lo ideal es complementarlos con mapas del IGN (Instituto Geográfico Nacional).

Como ejemplo, aquí vemos una localización con mapas OpenStreeMap:


Y la misma con mapas de IGN:


Como se aprecia, en esta última aparecen caminos, parajes, edificios rurales y, si nos acercamos más, curvas de nivel u otros accidentes. Todo lo que necesitamos para movernos con seguridad. Como punto flaco tenemos que son mapas que ocupan bastante espacio: la provincia de Cáceres pesa mas de 1Gb. Eso quiere decir que o tenemos una tarjeta de memoria monstruosa o solo podremos llevar algunos mapas concretos en cada momento.

Los mapas de OpenStreetMap se descargan directamente con OsmAnd. Vienen en formato vectorial propio de OsmAnd, con la extensión .obf.

Los mapas de IGN (que no son vectoriales, son raster) pueden descargarse desde múltiples lugares:

No todo es sencillo: no basta con descargar y copiar a la memoria interna del móvil. El formato de los mapas de IGN es mbtiles (mas información sobre el formato aquí) y OsmAnd usa otro formato para los mapas raster.

No problem, la herramienta mbtiles2osmand convierte entre formatos. La descargamos de las páginas antes indicadas, luego descargamos un mapa en mbtiles (por ejemplo, caceres.mbtiles) y ejecutamos el comando:
# ./mbtiles2osmand.py caceres.mbtiles caceres.sqlitedb
Al acabar tenemos el fichero caceres.sqlitedb con el mapa raster de la provincia de Cáceres ya compatible con OsmAnd. Podemos hurgar en las interioridades tanto de mbtiles como de sqlitedb, ya que ambos son ficheros en formato sqlite. Además, los ficheros mbtiles pueden ser vistos y editados por multitud de herramientas, por ejemplo con QGIS (con el plugin adecuado) o Cartograph.

Bueno, volviendo a lo importante, una vez tenemos el fichero sqlitedb lo copiamos en la memoria del móvil, dentro de la carpeta android/data/net.osmand/files/tiles. En muchos sitios de la web dicen que hay que copiarlos a la carpeta osmand/tiles, pero no es así, actualmente la carpeta correcta es la que yo indico.

Una vez copiado, reiniciamos la aplicación y ponemos el mapa raster como mapa superpuesto, de manera que podremos ver a la vez el mapa OsmAnd y el mapa descargado del IGN usando una barra de transparencia para hacer mas visible uno u otro. Para ello entramos en configuración de OsmAnd y allí en "Configurar Mapa":


Luego en "Mapa Superpuesto":


Y de nuevo en "Mapa Superpuesto":


Nos saldrá una lista de los mapas detectados, entre ellos esta "caceres" que ya he copiado previamente a la memoria del móvil:


Lo seleccionamos y ya tenemos el mapa puesto de fondo. Listo para irnos a caminar.


Este cambio de año viene cargado de noticias astronáuticas, no doy abasto y los podcasts del tema están que arden:

1) La Chang'e 4 de nuestros amigos chinos en la cara oculta de la Luna, buscando la base de los Transformers o de los nazis.

2) El cometa Wirtane en diciembre.

3) La OSIRIS-REx en el asteroide tipo apolo llamado Bennu con esta hermosa fotografía del sistema Tierra-Luna:


4) Otro asteroide apolo, el Ryugu, está siendo visitado por la sonda Hayabusa 2, que ha aterrizado varios rovers parecidos a una Roomba y que traerá a la Tierra de vuelta muestras llenas de cosas interesantes.

5) Por último, la New Horizons una vez visitado Plutón ha pasado cerca de Ultima Thule, en lo que viene siendo el quinto pino del sistema solar:


Quizá la foto esta un poco movida, pero es que la New Horizons iba a 14km/s en ese momento.


Un apunte curioso y triste: la India ha sido el único país que ha mandado un orbitador a Marte y ha llegado a la primera sin fallos ni accidentes. La misión costó 74 millones de euros. En la abandonada Ciudad de la Justicia de Madrid se gastaron 95 millones de euros para construir un único edificio que se oxida bajo la lluvia. Ahora que alguien me diga donde está el gasto inútil.