30-09-2017, 10:53 AM
Primero, para los no iniciados, explicar lo que son estos dos conceptos.
El firmware es el software que controla la impresora y que está grabado en una memoria flash, de 128 KiB de capacidad, que lleva incorporada la placa. Es el que tiene programado todo lo necesario para interpretar los comandos en Gcode, que definen la pieza que queremos imprimir y para controlar el hardware de la máquina para conseguir la pieza terminada.
El bootloader es el software que controla el programador interno de la placa (ISP, por sus iniciales en inglés: In-System Programmer) y también se almacena en la memoria flash, junto con el firmware. Es el que permite reprogramar las memorias internas de la placa, mediante la conexión USB. Aparte de la flash anterior, hay una EEPROM de 4 KiB, para almacenar los parámetros de configuración.
Ahora que ya sabemos lo que son, pasemos al meollo del asunto.
Hay muchos usuarios que antes de instalar otro firmware (como el de Skynet, por ejemplo), quieren hacer una copia de seguridad del que trae la máquina de fábrica para que, si no les convence el cambio, poder volver de nuevo al original sin tener que cargar alguno de los que circulan por ahí (Skynet trae uno) y que puede que sea de una versión anterior al que tenemos instalado en la máquina al comprarla.
El proceso no es muy complicado, pero hay que tener cuidado de no cometer ningún error, ya que podría hacer que nos carguemos el bootloader (dado que se encuentra en la misma memoria), lo que puede ser difícil de solucionar para un usuario sin experiencia en estos temas. Sin el bootloader, ya no se puede cargar nada en la placa mediante la conexión USB.
Es lo que comúnmente se denomina “brickear” la placa (sí, eso, convertirla en un “ladrillo”) y para solucionarlo hay que utilizar un programador externo (normalmente, otro Arduino). Más adelante explicaré el proceso.
Los requisitos para poder realizar una copia de seguridad del firmware de la máquina o para restaurar dicha copia, son los siguientes (todo lo que indico es para Windows):
1º- Tener conectada la impresora por USB al ordenador e instalado el driver CH340. Si no se instala automáticamente al conectar y encender la impresora, se puede hacer manualmente utilizando el driver que se encuentra en la tarjeta de memoria que viene con ella.
Una vez instalado el driver y conectada la impresora, al encenderla se le asigna un puerto COMx (donde x es un número). Hay que mirar cual es este número, ya que se utilizará posteriormente. Se puede ver en el Administrador de Dispositivos, en el apartado Puertos COM y LPT:
2º- Tener la aplicación AvrDude.
Dentro de la carpeta de Skynet, en la ruta \Documentation\Troubleshoot\Troubleshoot\firmware_Rest\AvrDudes + Stock Firmware hex\, en la carpeta Avrdudess tenemos la aplicación.
En las carpetas A8stock y A6stock están los archivos del firmware original para cada modelo, aunque es muy posible que estos archivos sean más antiguos que la versión que traiga instalada la impresora, por lo que puede ser mejor extraerlo primero en lugar de utilizar estos.
AvrDude es una aplicación que corre en línea de comandos. Para facilitar su uso, junto con ella viene un GUI en el que gráficamente se pueden configurar todos los parámetros y realizar el proceso. Se llama AvrDudeSS y, simplemente, lo que hace es generar y lanzar la línea de comandos, en función de la configuración que hagamos en los distintos controles de la ventana.
La aplicación AvrDude necesita una librería de enlace dinámico (las famosas dll’s) que se llama libUSB.dll y que tiene que estar en la carpeta de la aplicación.
En el archivo readme.txt (en inglés) que se encuentra en la carpeta AvrDudess, se explica cómo conseguirla. Se puede descargar de aquí. Hay que extraer del zip el archivo libusb_x86.dll que se encuentra en la ruta libusb-win32-bin-1.2.6.0/bin/x86/ del zip y renombrarlo como libusb0.dll (ojo, el readme.txt está equivocado y no pone el 0. Si no se pone así, no la encuentra).
La ventana de la aplicación es la siguiente:
En ella los controles se encuentran agrupados por apartados. Para realizar las copias y restaurarlas utilizaremos Programmer, MCU, Flash y Options.
Los dos primeros se configuran, tanto para copiar como para restaurar, siempre así:
En Programmer hay que indicar con el desplegable que es Arduino, poner el puerto COMx en el que tengamos la impresora y la velocidad de conexión a 57600 baudios.
En MCU hay que seleccionar en el desplegable ATmega1284P. Quedaría algo así (en todos los ejemplos, hay que cambiar el puerto por el que corresponda):
¡ATENCIÓN! Todos los procesos que siguen los he probado y funcionan correctamente. En todo caso, si decidís hacerlos, será por vuestra propia cuenta y riesgo.
Crear la copia de seguridad
En el apartado Flash, en el cuadro de diálogo tenemos que poner donde y con qué nombre queremos guardar la copia del firmware. Para ello, pulsamos en el botón de la derecha (con los tres puntos), seleccionamos la carpeta donde queremos guardarlo e indicamos el nombre para el archivo.
Seleccionamos la opción Read y en Format, seleccionamos en el desplegable Intel hex.
Quedaría algo así:
Pulsamos en el botón GO de este apartado. Comienza la copia y al terminar tendremos un archivo con extensión .hex, con el nombre y en la carpeta que le hemos indicado. Este archivo, que contiene el firmware original que estaba cargado actualmente en la máquina, es el que se utilizará para restaurarla en caso necesario.
Restaurar la copia de seguridad
Este es el proceso en el que hay que tener más cuidado, ya que vamos a escribir en la memoria flash.
Para hacer la restauración de la copia que tengamos guardada, en el cuadro de diálogo del apartado Flash, pulsamos en el botón de la derecha (con los tres puntos) y seleccionamos el archivo (con extensión .hex) que contiene el firmware que queremos restaurar.
Seleccionamos la opción Write y en Format dejamos la opción por defecto Auto (writing only).
¡ATENCIÓN! Hay que marcar, en el apartado Options, la opción Disable flash erase (-D). Si no se marca, antes de grabar se borra toda la memoria (incluído el bootloader) y como el firmware de la copia de seguridad no lo lleva incorporado, puede que nos quede operativa la impresora, pero no podremos volver a cargar nada por USB hasta que restauremos de nuevo el bootloader.
Quedaría tal que así:
Pulsamos en el botón GO. Comienza la carga y cuando termina, tendremos la impresora de nuevo con el firmware original (o el que estemos restaurando).
Restaurar el bootloader
Si hemos tenido algún problema y hemos “enladrillado” la placa, tendremos que restaurar el bootloader.
Como indicaba al principio, hay que utilizar un programador externo, ya que el interno no tiene software que lo controle y por lo tanto, no funciona.
Se suele utilizar un Arduino (UNO o MEGA, vale cualquiera de los dos) programado como ISP. Para hacer esto, lo conectamos al ordenador por USB. Abrimos el IDE de Arduino, cargamos el sketch de ejemplo ArduinoISP:
seleccionamos como placa el tipo de Arduino que tengamos, como puerto el COMx que tenga asignado y dejamos como programador USBasp.
Por ejemplo, podría quedar así:
Le damos a la flecha de subir:
Ya podemos desconectar el USB. Tendremos ese Arduino programado como ISP externo.
Ahora tenemos que conectarlo con la placa Anet, utilizando el que corresponda al modelo que utilicemos, siguiendo uno de estos dos esquemas:
Para hacer las conexiones hay que tener desconectado todo en ambas placas. Lo mejor es conectar, antes que nada, el cable USB en el Arduino (¡ojo!, sin conectarlo al ordenador aún), así no se nos moverá nada al conectarlo después.
Fijaos también que hay que conectar un condensador (por ejemplo, uno electrolítico como el que indica el esquema) de 10uF-25V, con el positivo en el conector RESET y el negativo en GND.
¡ATENCIÓN! Hay que revisar varias veces las conexiones, para estar completamente seguros de que están bien, antes de seguir con el proceso. Una conexión errónea, puede arruinar cualquiera de las placas o ambas.
Con todo correctamente instalado, conectamos el cable USB al ordenador. Abrimos el IDE de Arduino, seleccionamos como placa Anet 1.0, como puerto el COMx correspondiente y como programador Arduino as ISP. Quedaría algo así:
Le damos a Quemar bootloader:
Cuando termine, desconectamos el cable USB del ordenador y después todo lo demás.
Con esto ya tendremos de nuevo el bootloader cargado en la placa. Ya la podemos instalar de nuevo en la impresora.
Ahora, seguramente la impresora no tendrá firmware operativo (la pantalla se queda con las dos líneas blancas al encenderla), por lo que primero tendremos que cargar uno.
Pero ya podremos hacerlo por USB como siempre.
El firmware es el software que controla la impresora y que está grabado en una memoria flash, de 128 KiB de capacidad, que lleva incorporada la placa. Es el que tiene programado todo lo necesario para interpretar los comandos en Gcode, que definen la pieza que queremos imprimir y para controlar el hardware de la máquina para conseguir la pieza terminada.
El bootloader es el software que controla el programador interno de la placa (ISP, por sus iniciales en inglés: In-System Programmer) y también se almacena en la memoria flash, junto con el firmware. Es el que permite reprogramar las memorias internas de la placa, mediante la conexión USB. Aparte de la flash anterior, hay una EEPROM de 4 KiB, para almacenar los parámetros de configuración.
Ahora que ya sabemos lo que son, pasemos al meollo del asunto.
Hay muchos usuarios que antes de instalar otro firmware (como el de Skynet, por ejemplo), quieren hacer una copia de seguridad del que trae la máquina de fábrica para que, si no les convence el cambio, poder volver de nuevo al original sin tener que cargar alguno de los que circulan por ahí (Skynet trae uno) y que puede que sea de una versión anterior al que tenemos instalado en la máquina al comprarla.
El proceso no es muy complicado, pero hay que tener cuidado de no cometer ningún error, ya que podría hacer que nos carguemos el bootloader (dado que se encuentra en la misma memoria), lo que puede ser difícil de solucionar para un usuario sin experiencia en estos temas. Sin el bootloader, ya no se puede cargar nada en la placa mediante la conexión USB.
Es lo que comúnmente se denomina “brickear” la placa (sí, eso, convertirla en un “ladrillo”) y para solucionarlo hay que utilizar un programador externo (normalmente, otro Arduino). Más adelante explicaré el proceso.
Los requisitos para poder realizar una copia de seguridad del firmware de la máquina o para restaurar dicha copia, son los siguientes (todo lo que indico es para Windows):
1º- Tener conectada la impresora por USB al ordenador e instalado el driver CH340. Si no se instala automáticamente al conectar y encender la impresora, se puede hacer manualmente utilizando el driver que se encuentra en la tarjeta de memoria que viene con ella.
Una vez instalado el driver y conectada la impresora, al encenderla se le asigna un puerto COMx (donde x es un número). Hay que mirar cual es este número, ya que se utilizará posteriormente. Se puede ver en el Administrador de Dispositivos, en el apartado Puertos COM y LPT:
2º- Tener la aplicación AvrDude.
Dentro de la carpeta de Skynet, en la ruta \Documentation\Troubleshoot\Troubleshoot\firmware_Rest\AvrDudes + Stock Firmware hex\, en la carpeta Avrdudess tenemos la aplicación.
En las carpetas A8stock y A6stock están los archivos del firmware original para cada modelo, aunque es muy posible que estos archivos sean más antiguos que la versión que traiga instalada la impresora, por lo que puede ser mejor extraerlo primero en lugar de utilizar estos.
AvrDude es una aplicación que corre en línea de comandos. Para facilitar su uso, junto con ella viene un GUI en el que gráficamente se pueden configurar todos los parámetros y realizar el proceso. Se llama AvrDudeSS y, simplemente, lo que hace es generar y lanzar la línea de comandos, en función de la configuración que hagamos en los distintos controles de la ventana.
La aplicación AvrDude necesita una librería de enlace dinámico (las famosas dll’s) que se llama libUSB.dll y que tiene que estar en la carpeta de la aplicación.
En el archivo readme.txt (en inglés) que se encuentra en la carpeta AvrDudess, se explica cómo conseguirla. Se puede descargar de aquí. Hay que extraer del zip el archivo libusb_x86.dll que se encuentra en la ruta libusb-win32-bin-1.2.6.0/bin/x86/ del zip y renombrarlo como libusb0.dll (ojo, el readme.txt está equivocado y no pone el 0. Si no se pone así, no la encuentra).
La ventana de la aplicación es la siguiente:
En ella los controles se encuentran agrupados por apartados. Para realizar las copias y restaurarlas utilizaremos Programmer, MCU, Flash y Options.
Los dos primeros se configuran, tanto para copiar como para restaurar, siempre así:
En Programmer hay que indicar con el desplegable que es Arduino, poner el puerto COMx en el que tengamos la impresora y la velocidad de conexión a 57600 baudios.
En MCU hay que seleccionar en el desplegable ATmega1284P. Quedaría algo así (en todos los ejemplos, hay que cambiar el puerto por el que corresponda):
¡ATENCIÓN! Todos los procesos que siguen los he probado y funcionan correctamente. En todo caso, si decidís hacerlos, será por vuestra propia cuenta y riesgo.
Crear la copia de seguridad
En el apartado Flash, en el cuadro de diálogo tenemos que poner donde y con qué nombre queremos guardar la copia del firmware. Para ello, pulsamos en el botón de la derecha (con los tres puntos), seleccionamos la carpeta donde queremos guardarlo e indicamos el nombre para el archivo.
Seleccionamos la opción Read y en Format, seleccionamos en el desplegable Intel hex.
Quedaría algo así:
Pulsamos en el botón GO de este apartado. Comienza la copia y al terminar tendremos un archivo con extensión .hex, con el nombre y en la carpeta que le hemos indicado. Este archivo, que contiene el firmware original que estaba cargado actualmente en la máquina, es el que se utilizará para restaurarla en caso necesario.
Restaurar la copia de seguridad
Este es el proceso en el que hay que tener más cuidado, ya que vamos a escribir en la memoria flash.
Para hacer la restauración de la copia que tengamos guardada, en el cuadro de diálogo del apartado Flash, pulsamos en el botón de la derecha (con los tres puntos) y seleccionamos el archivo (con extensión .hex) que contiene el firmware que queremos restaurar.
Seleccionamos la opción Write y en Format dejamos la opción por defecto Auto (writing only).
¡ATENCIÓN! Hay que marcar, en el apartado Options, la opción Disable flash erase (-D). Si no se marca, antes de grabar se borra toda la memoria (incluído el bootloader) y como el firmware de la copia de seguridad no lo lleva incorporado, puede que nos quede operativa la impresora, pero no podremos volver a cargar nada por USB hasta que restauremos de nuevo el bootloader.
Quedaría tal que así:
Pulsamos en el botón GO. Comienza la carga y cuando termina, tendremos la impresora de nuevo con el firmware original (o el que estemos restaurando).
Restaurar el bootloader
Si hemos tenido algún problema y hemos “enladrillado” la placa, tendremos que restaurar el bootloader.
Como indicaba al principio, hay que utilizar un programador externo, ya que el interno no tiene software que lo controle y por lo tanto, no funciona.
Se suele utilizar un Arduino (UNO o MEGA, vale cualquiera de los dos) programado como ISP. Para hacer esto, lo conectamos al ordenador por USB. Abrimos el IDE de Arduino, cargamos el sketch de ejemplo ArduinoISP:
seleccionamos como placa el tipo de Arduino que tengamos, como puerto el COMx que tenga asignado y dejamos como programador USBasp.
Por ejemplo, podría quedar así:
Le damos a la flecha de subir:
Ya podemos desconectar el USB. Tendremos ese Arduino programado como ISP externo.
Ahora tenemos que conectarlo con la placa Anet, utilizando el que corresponda al modelo que utilicemos, siguiendo uno de estos dos esquemas:
Para hacer las conexiones hay que tener desconectado todo en ambas placas. Lo mejor es conectar, antes que nada, el cable USB en el Arduino (¡ojo!, sin conectarlo al ordenador aún), así no se nos moverá nada al conectarlo después.
Fijaos también que hay que conectar un condensador (por ejemplo, uno electrolítico como el que indica el esquema) de 10uF-25V, con el positivo en el conector RESET y el negativo en GND.
¡ATENCIÓN! Hay que revisar varias veces las conexiones, para estar completamente seguros de que están bien, antes de seguir con el proceso. Una conexión errónea, puede arruinar cualquiera de las placas o ambas.
Con todo correctamente instalado, conectamos el cable USB al ordenador. Abrimos el IDE de Arduino, seleccionamos como placa Anet 1.0, como puerto el COMx correspondiente y como programador Arduino as ISP. Quedaría algo así:
Le damos a Quemar bootloader:
Cuando termine, desconectamos el cable USB del ordenador y después todo lo demás.
Con esto ya tendremos de nuevo el bootloader cargado en la placa. Ya la podemos instalar de nuevo en la impresora.
Ahora, seguramente la impresora no tendrá firmware operativo (la pantalla se queda con las dos líneas blancas al encenderla), por lo que primero tendremos que cargar uno.
Pero ya podremos hacerlo por USB como siempre.