¿Tu arduino Yun se ha bloqueado al instalarle el firmware 1.6.2?

Pues no eres el único al que le ha pasado. En mayo de 2016 se publicó el firmware v 1.6.2 para el Arduino Yun. Sin embargo, este firmware solo puede instalarse sin contratiempos en los Yun que tengan el bootloader adecuado, que resultan ser los que se fabricaron a partir del 2016.

Para todos los que hayan intentado la actualización del firmware a la version 1.6.2, y el resultado haya sido un Yun que no responde, que no cunda el pánico: hay una manera de reinstalar la versión 1.5.3.

Si tu Yun se ha brikeado al instalarle el firmware del yun, en la web oficial encontrarás dos tutoriales para recuperarlo:

  1. Restaurar la imagen del firmware 1.5.3 si has hecho un sysupgrade, y
  2. Flashear el U-Boot, el kernel, y la version 1.5.3.

La opción 1 en mi caso, no ha funcionado a pesar de intentarlo muchas veces, pero es la primera que deberías probar, porque la opción 2, y esto es importante, invalida la garantía de tu arduino Yun.

Este artículo cubre el segundo tutorial. Es una guía un poco mas detallada, con capturas de pantalla, y claro está, traducida al español. Si tienes un arduino Yun brickeado y te decides por solucionarlo con este proceso, que sepas que la garantía de tu Yun queda anulada (y yo no me hago responsable).

Vamos a ver como reflashear el U-Boot, el kernel, y finalmente el firmware 1.5.3

¿Que necesitamos?

  • Un Arduino Yun brickeado.
  • Un cable de red para el arduino Yun (no podemos hacer este proceso con el adaptador inalámbrico).
  • Los ficheros de Uboot, el kernel, y el rootfs. Los puedes descargar de aquí.
  • Un servidor TFTP. Usaremos TFTP Utility. Lo puedes descargar de aqui.
  • El Arduino IDE, que supongo ya lo tienes instalado.

 

Paso 1, preparar el software.

1.1.- Descomprime el fichero zip con el U-Boot, el kernel, y el Rootfs a una carpeta. Por simplicidad, yo los he descomprimido a la carpeta C:\descargas\YunImage_v1.5.3

Ficheros uboot-rootfs-y-kernel
Ficheros uboot-rootfs-y-kernel

1.2.- Instala la utilidad TFTP Utility. Cuando la hayas instalado, lanza el programa (TFT Util GUI).tftp-util-gui

Importante en este paso, es tomar nota de la dirección ip de nuestro ordenador, si es que no la conocemos. La utilidad TFTP Util GUI nos la muestra (marcada con el numero 1 en la imagen de arriba).

A continuación tenemos que hacer un ajuste en la configuración del servidor TFTP. Para ello pulsamos en el icono de la llave inglesa, y en la siguiente pantalla:

configuracion-tftp

Ajustamos la ruta en la que hemos guardado los ficheros uboot, kernel, etc. En mi caso la ruta es C:\descargas\YunImage_v1.5.3

Guardamos la configuracion pulsando en OK, y en la pantalla principal, paramos y arrancamos de nuevo el servidor TFTP (primero icono con unas ruedas dentadas).

Paso 2, preparar el Yun

1.- Conecta el yun a tu ordenador con un cable usb.

2.- Conecta el yun a tu router con un cable de red. Este detalle es importante. No se puede reflashear vía wifi.

3.- Abre el Arduino IDE, y abre el proyecto YunSerialTerminal. Lo encontrarás en el menú Archivo->Ejemplos->Bridge->YunSerialTerminal

4.- Asegurate de que has seleccionado el puerto adecuado en el Menú Herramientas->Puerto COM X (Arduino Yun). En mi caso era el Com 6, pero ya sabéis, esto va cambiando.

5.- Asegurate de que en Placa, has seleccionado Arduino Yun

6.- Envía el sketch al yun. Un par de segundos para compilar el sketch, y dos o tres segundos para transferirlo. Los leds Rx y Tx del Yun deberían parpadear durante la transferencia. Si no parpadean, mal asunto (revisa el cable usb y asegurate de que has seleccionado el puerto com correcto).

7.- En el Arduino IDE, ve al menú herramientas-> monitor serie. Se mostrará la consola serie.

consola-serie

En la caja de texto marcada con la flecha roja, es donde tendrás que escribir, pegar los comandos, y pulsar a enviar.

8.- El siguiente paso requiere de un poco de habilidad. Pulsa el botón que resetea el arduino yun. Este botón, no es el que resetea la wifi, y tampoco es el que resetea la parte del linux. En mi caso, se encuentra cerca de los leds.

Cuando lo pulses, la parte “arduino” se resetea, y se carga el u-boot, que viene a ser algo así como la “bios” del yun. Tienes 4 segundos para introducir unas letras, e interrumpir el proceso de carga.

Lo gracioso de este paso es que dependiendo del yun que tengas, puede que base con escribir una letra en el campo y pulsar enviar, o en otras versiones hay que escribir “ard” y pulsar enviar. Es posible que existan otras versiones, tendrás que estar atento.

Por lo tanto, pulsa el boton de reset, y fijate en lo que aparece en la consola serie:

ard-to-enter-uboot-console

He señalado con una flecha lo que hay que hacer en mi arduino. Por lo tanto, en mi caso tecleamos “ard” en la cajita de texto, y pulsamos enviar.

Con un poco de suerte lo habremos hecho a tiempo, y se nos muestra la consola de u-bootconsola-de-u-boot

Sabremos que estamos en la consola porque se nos muestra en la linea de comandos el prompt “ar7240>”.

Paso 3, comienza el reflasheo.

Más que nada por no hacer el paso 2 demasiado largo, he escrito un paso tres.

Gracias a la línea de comandos del u-boot, podemos configurar el arduino yun, y darle una ip, y darle la ip del servidor donde están los ficheros que queremos descargar y flashear.

1.- Configurar la ip del servidor en el yun. Escribimos el siguiente comando en la consola serie, y le damos a enviar (obviamente, tendras que usar la ip de tu pc, la que hemos obtenido en el paso 1.2:

[crayon-5bc60502ef003743605844/]

No debería haber respuesta por parte del yun. Si todo va bien, te devuelve al prompt ar7240>

Configura una ip para el arduino yun. Asegurate de que la ip esta libre en tu red, para evitar quebraderos de cabeza.

[crayon-5bc60502ef014773257081/]

Si todo ha ido bien, el yun ya tiene una ip. Puedes comprobarlo haciendo un ping a alguna direccion de tu red local. Por ejemplo:

[crayon-5bc60502ef017752771369/]

Como veis, nos dice que esta usando el adaptador eth0, y que puede contactar con la ip 192.168.2.1. Si en lugar de eso, ves un mensaje de error similar a:

[crayon-5bc60502ef019002600554/]

comprueba que el cable de red está bien conectado, que esta en buen estado, y que la ip que le has puesto al yun esta libre.

2.- Flashear el U-Boot: ahora es cuando anulamos la garantía 🙂

Enviamos el siguiente comando mediante la consola serie:

[crayon-5bc60502ef01b244643646/]

El yun se conecta a nuestro servidor tftp, y descarga el fichero que le hemos indicado. La salida por la consola es algo parecido a lo siguiente:

[crayon-5bc60502ef01c343096906/]

En este caso hemos tenido suerte y el fichero ha sido transferido al yun. No debería durar más de tres o cuatro segundos. Si no funciona, revisa la configuración de TFTP, es decir, si has puesto correctamente la carpeta de descarga. Me parece que si cierras TFTP GUI Utility y lo vuelves a abrir, se pierde cualquier personalización que hayas hecho.

Asegurate también de que el nombre del fichero es correcto. Si simplemente estas copiando y pegando los comandos de este articulo, es posible que el nombre de los ficheros haya cambiado desde que lo he escrito.

Continuamos con los siguientes comandos (vamos pegando cada uno en la consola, y pulsamos enviar):

[crayon-5bc60502ef01e107482531/]

y la salida por la consola debería ser tal que asi:

[crayon-5bc60502ef020788053510/]

3.- Flashear el kernel: transferimos el fichero con el kernel:

[crayon-5bc60502ef021507115614/]

y lo reflasheamos:

[crayon-5bc60502ef023847955343/]

Ya no os muestro el resultado de la consola, pues es análogo al anterior. En este caso tarda un poquito mas, porque el fichero es mas grande.

4.- Flashear la imagen de OpenWRT para Arduino Yun, v 1.5.3

Copiamos el archivo.

[crayon-5bc60502ef024923043116/]

Y Flasheamos (tarda algo más, porque es el fichero mas grande de todos):

[crayon-5bc60502ef026533932850/]

5.- Reiniciar el yun

Si todo ha ido bien, ya hemos arreglado el yun, y vuelve a tener el firmware v 1.5.3. Solo nos queda reiniciar el yun (supongo que tambien sirve con apagar y encender):

[crayon-5bc60502ef027911963447/]

Hay que tener paciencia, el primer arranque del Yun despues de flashear todo el firmware dura algo mas de lo habitual.

Al cabo de unos minutos, deberíamos ser capaces de encontrar el punto de Acceso Arduino YUN-XXXXXXX y a partir de aquí, la configuración es la de siempre.

Teóricamente, y por lo que he entendido en la página oficial de arduino, después de actualizar el bootloader con este proceso, debería ser posible instalar la version 1.6.2 del firmware. A mi NO me ha funcionado, y se me ha vuelto a brickear. Si lo conseguis no dejéis de contarmelo.

He abierto un hilo en el foro por si quereis escribir comentarios a este articulo o hacer preguntas.

Debate sobre este artículo en el foro.