User Tools

Site Tools


es:doc:howto:generic.flashing

Installar OpenWrt (genérico)

OpenWrt no puede ser instalado con facilidad y seguridad en tu dispositibo como cualquier otra distribución de GNU/Linux. Instalandolo en una memoria flash soldada en la placa PCB, desafortunadamente no es facil ni seguro como una instalacion desde un dvd al disco duro. Despues de que escojas un metodo para obtener un firmware en un archivo de imagen específico para tu dispositivo y tal vez incluso para tu version de hardware, tienes que sobre escribir el firmware original en la memoria flash con este archivo.

Warning!
This section describes actions that might damage your device or firmware. Proceed with care!

:!: Flashear con un archivo equivocado no necesariamente va a destruir tu dispositivo, pero vas a tener seguir un camino laborioso para despegar tu router de nuevo. Algunas veces vas a necesitar un cable serial modificado y puede que no funcione al primer intento.

:!: Este HowTo es muy genérico. No puedes llegar y usarlo, tendras uqe adaptar los valores y otras cosas a tu hardware. Se ha escrito, porque obviamente nadie a escrito una explicacion para los cientos de dispositivos soportados. Fijate si tu hardware tiene una explicacion de si mismo: toh. Si no, continua leyendo.

Generalmente, tienes dos opciones: Flashear OpenWrt en la memomria no volatil de tu router, o bootear (arrancar) Openwrt desde la red (mas conocido como "netboot"). Bootear desde la red no está soportado por todos los dispositivos ni por todos los cargadores de arranque (boot loaders). Por favor consulta la pagina wiki de tu router, para saber como proceder.

Abre la interfaz web de configuracion del router, con el firmware original, con tu navegador de paginas web y instala el archivo de imagen usando la seccion "actualizar firmware" ("firmware Upgrade").

NOTA: No todos los firmwares originales ofrecen este metodo. Si el tuyo lo tiene, hazte la vida mas simple y usalo!

TFTP

Casi todos los cargadores de arranque (bootloaders) contienen un cliente-TFTP funcionando. Si algo va mal, automaticamente intentara bootear desde el servidor TFTP corriendo en tu computador. Puedes realizar esta conección desde Ethernet o mediante un Cable Serial.

via Ethernet

Para hacerlo, mira → first.time.installation o → generic.flashing.tftp.

via Serial Cable

Howto pequeño para recuperarse de un mal flasheo: (log completo)

Requerimientos:

  • Un programa terminal ( por ejemplo: minicom) configurado a 115200 8N1, sin control de flujo
  • Un archivo de nombre code.bin que contenga el firmware de OpenWrt.
  • el servidor tftpd configurado en la direccion ip 192.168.0.5 (configurable mediante el comando setenv, si no estas seguro, puedes usar printenv primero)

NO OCUPES ESTOS VALORES. BUSCA LOS TUYOS! NO, NO ES BROMA.

Commands:

erase 0xbf020000 +7c0000 # 7c0000: tamaño de tu firmware (ten en cuenta que el tuyo puede tener un tamaño distinto, por lo que podrías dejar pegador tu router)
tftpboot 0x81000000 code.bin
cp.b 0x81000000 0xbf020000 0x7c0000
bootm 0xbf020000

Kermit

Puedes usar un cliente que utlize el protocolo Kermit Kermit (protocol) para transferir la nueva imagen. Podría tardar mucho (15-20min) en copiarse. Pero es mucho mas facil y mas seguro que correr un servidor tftpd. Estas instrucciones asumen que estas usando un sistema Linux, pero te darán todo lo que necesitas para hacer lo mismo en una maquina con Windows.

Requerimientos:

  • Un programa terminal (por ejemplo: minicom) configurado a 115200 8N1, sin control de flujo
  • Un archivo de nombre code.bin que contenga el firmware de OpenWrt.
  • Un cliente Kermit (estas instrucciones fueron llevadas a cabo utilizando C-Kermit bajo Linux)

NO OCUPES ESTOS VALORES. BUSCA LOS TUYOS! NO, NO ES BROMA.

erase 0xbf020000 +7c0000 # 7c0000: tamaño de tu firmware (ten en cuenta que el tuyo puede tener un tamaño distinto, por lo que podrías dejar pegador tu router)
loadb 0x81000000

Ejecuta C-Kermit y corre los siguientes comandos ( o configura tu cliente Kermit con estos parametros):

set line /dev/ttyUSB0 # Asegurate de que sea la interfaz USB correcta
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
send code.bin # Asegurate de incluir el directorio correcto del archivo. Por eso lo dejo en /home/$user

Despues de 15-20min de transferir el archivo, el nuevo firmware debería estar en tu router y podrias continuar en el terminal:

NO OCUPES ESTOS VALORES. BUSCA LOS TUYOS! NO, NO ES BROMA.

<code>
cp.b 0x81000000 0xbf020000 0x7c0000
bootm 0xbf020000

Hardware

generic.debrick (JTAG tambien pueden ser usados para escribir en la Memoria Flash)

OpenWrt

Una vez que ya tienes OpenWrt instalado y corriendo, tienes opciones mas confortables para reflashear usando la herramienta de linea de comando mtd direccionando la partición deseada (por favor lee flash.layout o flash.layout o flashlayout para los nombres.

Asique para borrar completamente la particion JFFS2, en un WR1043ND y similares tendrias que ejecutar:

mtd erase rootfs_data

Para sobre escribir toda la flash ademas de la particion que contiene el cargador de arranque (bootloader) y la que contiene el arte, en un WR1043ND y similares, tendrias que ejecutar:

wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr1043nd-v1-squashfs-factory.bin /tmp/openwrt-firmware.bin
mtd -r write openwrt-firmware.bin firmware

:!: Por supuesto mtd no es todo poderoso, y si tu dispositivo necesita alguna mierda lujosa, como lo hace el router dir-300, no podras usar mtd para actualizar.

You can, though this is not recommended, use pipes instead of copying the firmware to the tmpfs-partition before the flashing. The steps are as follows:

  • On the serving machine, Tell netcat to listen on port 5050, and send the firmware when a connection is made:
    nc -l -p 5050 -q 1 < openwrt-XXXX-XXXX.trx
  • now ssh to the router, and tell it to get the image from the server and install it:
    nc 192.168.1.6 5050 | mtd -e linux -r write - linux

:!: The latter procedure is not recommended but it could prove useful, if you have low memory.

Volver al firmware original

OpenWrt no tiene bromas ni trucos que le impidan volver al firmware originale. Es tan facil como flashear un nuevo firmware de OpenWrt:

mtd write /tmp/original-firmware.bin firmware

NOTA: Algunas veces esto no es tan simple: back.to.original.firmware. Asi que ten cuidado.

Ejemplos

Si no hay ninguna pagina wiki designada para tu dispositivo y las explicaciones anteriores no te ayudaron o te sientes inseguro acerca de ellas, puedes intentar leer alguna wiki de algun dispositivo similar, el cual no solo es el que tenga la misma plataforma si no, que tenga tambien el mismo cargador de arranque (bootloader).

  • para ar71xx con Das U-Boot podrias encontrar ayuda interesante aquí: installation
  • para atheros con RedBoot podrias encontrar ayuda interesante aquí: first.time.installation

Configuración básica

Despues de flashear, sigue con esto: Configuración básica.

Aprueba de fallos (failsafe)

generic.failsafe (usar solamente si la pagina wiki de tu router no tiene una seccion llamada Aprueba de fallos (failsafe))

actualizacion del sistema (sysupgrade)

generic.sysupgrade (usar solamente si la pagina wiki de tu router no tiene una seccion llamada Aprueba de fallos (sysupgrade))

Explicaciones

¿Qué es un archivo de Imágenes?

Si instalastes debian o windows de la forma usual de una o dos particiones de discos duros y despues quieres copiar todo el contenido byte por byte desde el disco duro a un archivo:

dd if=/dev/sda of=/media/sdb3/backup.dd

para obtener el archivo de copia de seguridad (backup file) /media/sdb3/backup.dd, puede ser usado exactamente de la misma manera que un archivo de imagen de OpenWrt (OpenWrt-Image-File).

La diferencia es, que el archivo de imagen de OpenWrt no es creado de esa forma ;-) Son creados usando el Generador de imagenes (Image Generator (mas llamado Image Builder)). Puedes leer:

es/doc/howto/generic.flashing.txt · Last modified: 2011/11/05 14:56 (external edit)