Archivo

Entradas Etiquetadas ‘OpenWRT’

Zyxel NSA-325 V2 pasa a OpenWRT

viernes, 28 de julio de 2023 Sin comentarios

Hace 8 años compré por un precio más que razonable un NAS de 2 bahías de Zyxel que me permitió hacer bastantes más cosas de las oficiales gracias a repositorios de la comunidad. Pero todo tiene un límite, concretamente en lo que se refiere a su compatibilidad con discos duros de gran capacidad. Resulta que el sistema de archivos que utiliza es ext2, el cual permite un tamaño de volumen máximo de 16TiB, algo que me impedía hacer uso de dos discos duros de 20TB. Frustrado por ello busqué alternativas y encontré la posibilidad de instalar OpenWRT reescribiendo la NAND, lo cuál me permitía hacer uso de ext3 entre otras muchas cosas.

Para llevar a cabo la operación, me enfrenté con documentación incompleta desde el punto de vista de alguien que no lo había hecho nunca. Se hablaba de utilizar una conexión serie USB, de poner comandos en un terminal, hacer uso de un pendrive antiguo y de soldar cosas. Al final fue relativamente sencillo, sin soldar ni comprar nada adicional porque ya tenía en mi posesión una Raspberry Pi 2 para hacer el trabajo de conector serie USB.

Importante

El proceso puede dejar inservible el dispositivo NAS e incluso la Raspberry Pi si confundís algún cable. Así que cada uno es responsable de lo que hace.

Obtención de la MAC

Durante el proceso habrá que configurar la MAC del NAS a mano, con lo que antes de empezar sería buena idea obtenerlo.

Sacar la placa base

Para sacar la placa base hay que extraer las bahías de los discos duros, sacar un par de tornillos de la base, deslizar una parte de la carcasa sobre la otra y seguir desatornillando un poco más, nada difícil ni nada clicks. Hay un vídeo muy ilustrativo de los primeros pasos:

Conectar la Raspberry Pi

Teniendo en cuenta de que en mi caso estaba usando una Rasperry Pi 2 B y que sun GPIO difiere de otros modelos, la conexión me quedó así:

 

En caso de utilizar un adaptador USB serie, la conexión sería como esta:

Preparando un pendrive

Parece ser que esto es algo que da bastantes problemas, donde algunas personas han tenido que recurrir a pendrive antiguos anteriores al 2.0, pero yo me he arreglado con un Sandisk de 16GB que tenía por ahí. Lo tendremos que formatear en FAT32 y depositaremos en él dos ficheros:

  • Los ficheros de u-boot en su versión 18.06.0 porque las más recientes parecen tener un bug que afecta al arranque con USB.
  • El firmware de OpenWRT (la más reciente, a día de hoy la versión 22.03.5).

Colocaremos el pendrive en la placa base del NAS, procurando que sea uno de los puertos traseros 2.0.

Preparando la Raspeberry Pi

Arrancamos la Raspberry Pi (en mi caso llevaba una Hyperbian), nos logueamos y, utilizando el comando «raspi-config», dentro de «Interface options» -> «Serial Port», desactivamos el puerto serie para el login shell y activamos el puerto serie por hardware. Reiniciamos las Raspberry Pi y ya la tenemos lista.

Flasheando

Le damos corriente al NAS a través de su adaptador habitual y lo encendemos desde su botón. Desde la Raspberry Pi descargamos el u-boot y le damos una orden con él a través del USB serie que hemos montado con los cables:

wget https://archive.openwrt.org/releases/18.06.0/targets/kirkwood/generic/u-boot-nsa325/u-boot.kwb

kwboot -p -t -b u-boot.kwb -o 5 -B 115200 /dev/ttyAMA0

Nos pedirá que reiniciemos el dispositivo NAS de Zyxel, con lo que le quitaremos la corriente y se la volveremos a dar. Nos mostrará el progreso de flasheo y cuando haya terminado cargará una especie de shell interactiva en la cual tendremos que dar algunas órdenes.

usb reset
fatload usb 0 0x1000000 u-boot.kwb
nand erase 0x0 0x100000
nand write 0x1000000 0x00000 0x100000
reset

Seguiremos configurando algunas variables de entorno:

setenv mtdparts ‘mtdparts=orion_nand:0x00c0000(uboot),0x80000(uboot_env),0x7ec0000(ubi)’
setenv bootcmd ‘run setenv bootargs; ubi part ubi; ubi read 0x800000 kernel; bootm 0x800000’
saveenv
reset

Le configuraremos la MAC que tenía:

setenv ethaddr AB:CD:EF:00:00:00
saveenv

Flashearemos el fichero «openwrt-22.03.5-kirkwood-zyxel_nsa325-squashfs-factory.bin» que habíamos descargado:

usb reset
fatload usb 0 0x2000000 openwrt-22.03.5-kirkwood-zyxel_nsa325-squashfs-factory.bin
nand erase.part ubi
nand write 0x2000000 ubi 0x600000

Una vez finalizado podremos reiniciarlo con el siguiente comando:

reset

El sistema arrancará y ya tendremos disponible desde el navegador una interfaz web para configurarlo.

Fuentes:

Documentación de OpenWRT

Apuntes de Panticz.de