• Instalar OpenWrt oficial en la SPI NAND del router BPI-R3 sin usar un cable de consola

    Para conseguir quemar una imagen de OpenWrt en la memoria SPI NAND del router BananaPi BPI-R3 sin usar un cable de consola tenemos que seguir estos pasos:

    1. Quemar la imagen en la MicroSD que hayamos preparado en este hack.
    2. Configurar los jumpers para iniciar desde la MicroSD, con acceso a la SPI NAND
    3. Iniciar desde la MicroSD y quemar la imagen en la SPI NAND
    4. Cambiar los jumpers para que la BPI-R3 inicie siempre desde la SPI NAND.

    QUEMAR LA IMAGEN EN UNA MICROSD

    Podemos quemar la imagen en la MicroSD de esta forma:

    dd if=/home/usuario/sd.img of=/dev/mmcblk0 bs=10M status=progress

    Eso sí, al acabar de quemar la imagen de la MMC en la tarjeta, hay que prestar atención a que la última partición (que es donde se montará el overlay) tiene de tamaño, como mucho, el total de espacio que suman los paquetes elegidos. Y eso es muy poco. Por eso, antes de sacarla del ordenador GNU/Linux donde la hemos «quemado» y antes también de meterla en la BPI-R3, hay que hacer que esa última partición (que es la que se llama «production») sea tan grande como todo el espacio libre disponible al final de la tarjeta de memoria. Esto lo hacemos abriendo en la distro donde la quemamos, una consola con permisos de administrador y ejecutando dentro:

    cfdisk /dev/mmcblk0

    …nos posicionamos sobre la última partición y le damos en resize. Al acabar le damos a write y ya estaremos listos para meterla en la BananaPi y empezar a operar con ella.

    PRIMER INCIO

    Ponemos todos los jumpers de la BPI-R3 hacia arriba para que inicie desde la MicroSD. Insertamos la tarjeta y conectamos el cable de corriente. Una vez que la BPI inicie, nos conectamos mediante SSH a ella (192.168.1.1) y vamos a hacer una serie de cosas:

    OBTENER INFO DEL TIPO DE NAND

    Para ver que tipos de NAND tiene la BPI-R3, podemos ejecutar:

    cat /proc/mtd

    Nos dará la siguiente salida (sin mis notas personales sobre los MB):

    dev:  size     erasesize name
    mtd0: 07a80000 00020000  "ubi"      - 122,5 MB
    mtd1: 00200000 00020000  "fip"      -   2,0 MB
    mtd2: 00300000 00020000  "reserved" -   3,0 MB
    mtd3: 00080000 00020000  "bl2"      -   0,5 MB

    Entonces, si sumamos todos los MB vemos que dan un total de 128. Es decir, estamos hablando de la  SPI NAND (SPIM-Nand) de 128MB, no de la SPI NOR (SPIM-NoR) de 32MB,

    BORRAR LA NAND

    Podemos borrar el contenido de las 4, así:

    mtd erase /dev/mtd0
    mtd erase /dev/mtd1
    mtd erase /dev/mtd2
    mtd erase /dev/mtd3

    QUEMAR LA IMAGEN DE LA MICROSD EN LA NAND

    Para hacer esto tenemos dos formas:

    MÉTODO 1 – U-BOOT

    Todavía conectados mediante SSH, vamos a modificar la variable de entorno bootcmd del bootloader U-Boot para que ejecute una serie de comandos al arrancar que van a hacer que el contenido de la MicroSD se copie en la NAND. Lo hacemos ejecutando:

    fw_setenv bootcmd "run ubi_init ; env default bootcmd ; saveenv ; reset"

    Esta línea indica a U-Boot que ejecute los siguientes comandos:

    run ubi_init: estableciende la secuencia de comandos de arranque ubi_init que inicializa el sistema de archivos UBI (Unsorted Block Images).

    env default bootcmd: Restablece la variable bootcmd a su valor por defecto establecido en U-Boot.

    saveenv: Guarda los cambios hechos en las variables de entorno en el almacenamiento persistente.

    reset: Reinicia el dispositivo, lo que permite que los cambios tomen efecto inmediatamente.

    De esa forma, la próxima vez que se inicie la BPI-R3, ejecutará lo que corresponde a la siguiente opción del menú del bootloader U-Boot, instalado por defecto en el router:

    Install bootloader, recovery and production to NAND

    Entonces, para ello, reiniciamos la BPI-R3 con:

    reboot

    Al reiniciar, la dejamos un buen rato, hasta que termine la copia. Al finalizar quitamos el cable de corriente y configuramos los jumpers para que inicie desde la NAND.

    NOTA: Es posible hacer la copia hacia la SPI NOR de 32MB (SPIM-NoR), en vez de hacia la SPI NAND de 128MB (SPIM-Nand). Para ello el comando sería:

    fw_setenv bootcmd "run nor_init ; env default bootcmd ; saveenv ; reset"

    Lo que sería equivalente a ejecutar el siguiente apartado del menú de U-Boot:

    Install bootloader, recovery and production to NOR

    Para ver si interesa copiarla hacia una u otra es mejor leer este artículo, para ver que diferencias hay entre una memoria y la otra.

    MÉTODO 2 – DIRECTO (TODAVÍA NO FINALIZADO)

    Flasheamos la mtd1 ejecutando:

    dd if=/Particiones/openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-bl31-uboot.fip of=/dev/mtdblock1

    Flasheamos la mtd3 ejecutando:

    dd if=/Particiones/openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-preloader.bin of=/dev/mtdblock3

    QUEMAR LA IMAGEN EN LA EMMC

    Si hemos logrado bootear con éxito desde la NAND, modificaremos otra vez la variable de entorno del bootloader U-Boot para que, al inciar, copie el contenido, pero esta vez hacia la eMMC:

    fw_setenv bootcmd "run emmc_init ; env default bootcmd ; saveenv ; saveenv ; reset"

    De esa forma, la próxima vez que se inicie la BPI, hará la copia de la NAND a la EMMC.

    Entonces, reiniciamos la BPI-R3 con:

    reboot

    Al reiniciar, la dejamos un buen rato, hasta que termine la copia. Al finalizar quitamos el cable de corriente y configuramos los jumpers para que inicie desde la EMMC.

     

     


    Deja una respuesta