• Instalar OpenWrt en la eMMC del router Banana Pi BPI-R3 usando un cable de consola

    Para realizar todo el proceso utilizaremos un ordenador con Ubuntu o con un Debian al que hayamos prostituido haciendo que tenga disponible sudo. Pero antes de empezar, tenemos que comprender algo escencial sobre la BPI-R3:

    La MicroSD y la EMMC comparten SoC, por lo que no podremos flashear una imagen hacia la EMMC si hemos iniciado desde la tarjeta MicroSD. El proceso de instalación hacia la EMMC debe realizarse siguiendo estos pasos:

    1. Flashear la imagen SD en la tarjeta MicroSD.
    2. Configurar el router para que inicie desde la tarjeta (todos los jumpers arriba).
    3. Iniciar el router desde la tarjeta MicroSD.
    4. Conectarse al puerto de consola.
    5. Flashear la imagen hacia la nand.
    6. Apagar el router.
    7. Configurar el router para que inicie desde la nand (todos los jumpers abajo).
    8. Iniciar el router desde la nand.
    9. Flashear la imagen hacia la EMMC.
    10. Apagar el router.
    11. Configurar el router para que inicie desde la EMMC (jumpers abajo, arriba, abajo, arriba, )
    12. Iniciar el router desde la EMMC.

    Entonces, entendiendo eso, vamos al lío:

    DESCARGAR LAS IMÁGENES

    Empezaremos descargando el archivo comprimido con la imagen de OpenWrt desde aquí. Siempre intentaremos descargar la imagen para versiones en producción, excepto que necesitemos compatibilidad con algún módulo 4G que sólo nos lo de una imagen que no sea la «production».

    Una vez descargado el .zip, descomprimimos su contenido en una carpeta. Se nos habrán creado en esa carpeta varios archivos diferentes. Para un mejor orden visual, dentro de la misma carpeta crearemos dos nuevas carpetas que llamaremos WANviaRJ45 y WANviaSFP1. Meteremos en cada una de ellas los archivos de imágenes correspondientes, según su nombre. Dependiendo si vamos a conectarnos a la WAN mediante el cable RJ45 o un cable SFP, utilizaremos unos archivos u otros.

    INSTALAR PAQUETES EN LA DISTRO

    Instalar el paquete pv (?), ejecutando:

    sudo apt-get -y install pv

    Instalar el paquete bpi-tools directamente desde GitHub, con:

    curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash -

    QUEMAR LA MICROSD

    Para quemar la imagen SD en la tarjeta, primero determinamos el identificador del device de la MicroSD (normalmente será /dev/mmcblk0) y luego quemamos la imagen con:

    bpi-copy mtk-bpi-r3-SD-WAN1-RJ45-20220601-single-image.img /dev/mmcblk0

    GUARDAR IMÁGENES EXTRA EN UN PENDRIVE

    En un pendrive formateado con FAT32 guardamos el archivo bl2* y las otras dos imágenes. Es decir, en la raíz del pendrive nos deberían quedar los siguientes archivos:

    bl2_emmc.img
    mtk-bpi-r3-NAND-WAN1-RJ45-20220619-single-image.bin
    mtk-bpi-r3-EMMC-WAN1-RJ45-20220619-single-image.img

    CONFIGURACIÓN DE JUMPERS PARA INCIAR DESDE LA MICROSD

    Configuramos los jumpers para iniciar desde la MicroSD. Para ello el 1, el 2 y el 4 deben estar arriba (el 3 da igual). Para no confundirte, pon todos para arriba y ya está.

    PREPARACIÓN PARA EL PRIMER INICIO

    Antes de conectar el cable de alimentación hacemos lo siguiente:

    • Insertamos la MicroSD en el slot.
    • Insertamos el pendrive en el puerto USB 3.
    • Conectamos el cable de consola, una punta a los pines de la BPI-R3 y la otra punta a ordenador (el chip del cable no debe ser el PL2303 sino alguno de los siguientes:  cp2102, ch340 o FDTI).

    NOTA: Es posible que Ubuntu no te reconozca el cable convertidor de USB a consola. Seguramente tendrás que desactivar el soporte braile del sistema para que Ubuntu pueda crear el dispositivo /dev/ttyUSB0 con alguno de esos dispositivos.

    PRIMER INICIO

    Conectamos el cable de corriente e inmediatamente abrimos una terminal en nuestra distro y nos conectamos a la consola de la BPI-R3 ejecutando:

    sudo screen /dev/ttyUSB0 115200

    Si el comando screen no está disponible, instalamos el paquete ejecutando como root:

    apt-get -y install screen

    Una vez en la consola, si iniciamos la imagen por defecto, hay un momento que nos dirá que si presionamos f+Enter entraremos en el modo a prueba de fallo. Lo hacemos y acabamos en la consola de la imagen de OpenWrt.

    El usuario de la imagen de Debian es root y su contraseña es bananapi.

    comprobamos que el Pendrive esté montado. Si no lo está, lo montamos con:

    mount -t vfat /dev/sda1 /mnt

    Borramos la nand, con:

    mtd erase /dev/mtd0

    Para ejecutar en la imagen de debian, primero hay que descargar mtd-utils

    dd if=/dev/zero of=/dev/mtdblock0 status=progress

    Y copiamos la imagen nand con:

    dd if=/Particiones/Pendrive/mtk-bpi-r3-NAND-WAN1-RJ45-20220601-single-image.bin of=/dev/mtdblock0 status=progress

    Apagamos la R3 quitándole el cable de alimentación y quitamos la MicroSD.

    CONFIGURACIÓN DE JUMPERS PARA INCIAR DESDE LA NAND

    Configuramos los jumpers para iniciar desde la SPIM-NoR. Para ello, los tres primeros jumpers (de izquierda a derecha) deben estar abajo y el último da igual..

    SEGUNDO INICIO

    Conectamos el cable de alimentación nuevamente a la R3 y nos conectamos mediante consola. Si todo ha ido bien acabaremos en la consola de OpenWrt. El usuario es root y no hay ningún password establecido para él.

    El pendrive se habrá montado en /mnt/sda1. Si no se ha montado lo hacemos con:

    mkdir -p /mnt/sda1
    mount -t vfat /dev/sda1 /mnt/sda1

    Una vez que el pendrive esté montado, ya podemos quemar la imagen a la MMC. Lo hacemos con:

    echo 0 > /sys/block/mmcblk0boot0/force_ro
    dd if=/mnt/sda1/bl2_emmc.img of=/dev/mmcblk0boot0
    dd if=/mnt/sda1/mtk-bpi-r3-EMMC-WAN1-RJ45-20220601-single-image.img of=/dev/mmcblk0
    mmc bootpart enable 1 1 /dev/mmcblk0

    Al finalizar de quemar la imagen en la EMMC seguimos este proceso:

    1. Quitamos el cable de alimentación.
    2. Desconectamos el pendrive.
    3. Configuramos los jumpers para iniciar desde la EMMC (de izquierda a derecha: abajo, arriba, abajo, arriba)
    4. Conectamos el cable ethernet al puerto WAN.
    5. Volvemos a ponerle el cable de alimentación

    TERCER INICIO

    Conectamos el cable de alimentación nuevamente a la R3 y ya podemos iniciar OpenWrt.

    EXTRA (UNIDAD NVMe)

    Podemos instalar una unidad NVMe para usarla como la nueva partición Overlay, de forma que OpenWrt guarde ahí los logs, archivos que descarguemos mediante torrents o cualquier otra cosa. Para ello apagamos la BPI-R3, le colocamos la unidad NVMe y la volvemos a iniciar.

    Una vez iniciado OpenWrt, nos conectamos mediante SSH y crearemos en la unidad NVMe una única partición de tipo MBR, ejecutando:

    fdisk /dev/nvme0n1

    Una vez que se nos abra el programa fdisk presionaremos o, n, p, 1, Enter, Enter y w.

    • o – crea una nueva tabla MBR.
    • n – crea una partición nueva.
    • p – …de tipo primaria y…
    • 1 – …indica que el numero de la partición será el 1.
    • Primer enter – indica que use el primer sector disponible y…
    • Segundo enter – indica que llegue hasta el último sector disponible.
    • w – escribe los cambios en el disco y vuelve a la shell.

    A continuación, formatearemos unidad NVMe como ext4 con el siguiente comando:

    mkfs.ext4 /dev/nvme0n1p1

    Para continuar, obtenemos el UUID de la partición que acabamos de crear, ejecutando:

    lsblk -f -m | grep nvme0n1p1

    Y, finalmente, reemplazaremos en el archivo /etc/config/fstab el UUID del punto de montaje /overlay, por el de la partición del NVMe. Por supuesto, en enabled, hay que cambiar el 0 por el 1.

    En este punto podemos, o reiniciar OpenWrt, con:

    reboot

    o, como cada vez después de tocar el archivo /etc/config/fstab, ejecutar:

    block umount
    block mount

    A partir de cualquiera de ambos comandos ya podremos utilizar el almacenamiento de la partición del NVMe para todas nuestras locuras con OpenWrt.

    Más info en la wiki oficial.


    Deja una respuesta