• Instalar OpenWrt oficial personalizado en la eMMC del router BPI-R3 mini

    Para quemar una imagen oficial personalizada de OpenWrt en la eMMC y que esta imagen inicie correctamente en una BPI-R3 mini tenemos que seguir los siguientes pasos:

    1. Obtención de imagen para quemar en la eMMC.
    2. Quemado de la imagen en la tarjeta.
    3. Configuración de los jumpers para iniciar desde la eMMC.
    4. Inicio de la eMMC.

    OBTENCIÓN DE LA IMAGEN PERSONALIZADA DE OPENWRT

    La BananaPi BPI-R3 mini tiene un procesador MediaTek Filogic MT7986a. OpenWrt ofrece una herramienta web para personalizar la creación de la imagen de instalación. Con esta herramienta web podemos compilar una imagen personalizada, con los paquetes que nos interesa. Lo bueno de esto es que, elijamos los paquetes que elijamos, la propia herramienta de compilación seleccionará automáticamente todas las dependencias.

    Los enlaces a la herramienta web para las diferentes versiones son:

    Snapshot
    24.10.5

    En mi caso, personalizo los paquetes desplegando la flecha hacia abajo, borro todos los que aparecen y los reemplazo con esta lista personalizada:

    uboot-envtools mt7986-wo-firmware kmod-mt7986-firmware kmod-crypto-hw-safexcel kmod-nft-offload kmod-phy-airoha-en8811h kmod-hwmon-pwmfan kmod-mt7915e usbutils usbids kmod-usb3 kmod-gpio-button-hotplug kmod-leds-gpio mtd kmod-nvme pciutils pciids base-files busybox dnsmasq dropbear wpad-basic-mbedtls libc libgcc libustream-mbedtls logd netifd nftables procd procd-ujail procd-seccomp uci ca-bundle odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe urandom-seed urngd mc nano curl git hwclock ethtool e2fsprogs f2fsck fstools mkf2fs blkid block-mount blockd blockdev dosfstools fdisk kmod-fs-vfat kmod-usb-storage parted nand-utils lsblk fitblk luci luci-i18n-base-es adblock luci-app-adblock luci-i18n-adblock-es tcpdump msmtp ddns-scripts ddns-scripts-services luci-app-ddns luci-i18n-ddns-es bind-host firewall4 luci-app-firewall luci-i18n-firewall-es opkg luci-app-package-manager luci-i18n-package-manager-es wifischedule luci-app-wifischedule luci-i18n-wifischedule-es luci-app-samba4 luci-i18n-samba4-es luci-app-ttyd luci-i18n-ttyd-es luci-app-upnp luci-i18n-upnp-es luci-app-wol luci-i18n-wol-es luci-app-watchcat luci-i18n-watchcat-es luci-app-commands luci-i18n-commands-es kmod-wireguard wireguard-tools luci-proto-wireguard qrencode luci-proto-modemmanager kmod-usb-serial kmod-usb-serial-wwan kmod-usb-serial-option kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan wwan uqmi usb-modeswitch minicom
    

    kmod-eeprom-at24: driver del kernel para memorias EEPROM I²C AT24, usado para leer/escribir datos persistentes (MAC, calibración, configuración).

    apk-mbedtls: paquete que integra mbedTLS como backend criptográfico para apk, permitiendo descargas y verificaciones TLS seguras en OpenWrt

     

    uboot-envtools mt7986-wo-firmware kmod-mt7986-firmware kmod-crypto-hw-safexcel kmod-nft-offload kmod-phy-airoha-en8811h kmod-hwmon-pwmfan kmod-mt7915-firmware kmod-mt7915e kmod-mac80211 kmod-mt7615e kmod-sfp kmod-usb2 kmod-usb-core kmod-usb-ehci kmod-usb-ohci usbutils usbids kmod-usb3 kmod-usb-xhci-hcd kmod-usb-xhci-mtk kmod-gpio-button-hotplug kmod-i2c-gpio kmod-leds-gpio mtd kmod-nvme pciutils pciids base-files busybox dnsmasq dropbear wpad-basic-mbedtls libc libgcc libustream-mbedtls logd netifd nftables openssh-sftp-server procd procd-ujail procd-seccomp uci ca-bundle odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe uclient-fetch urandom-seed urngd mc nano curl git hwclock ethtool e2fsprogs f2fsck fstools mkf2fs blkid block-mount blockd blockdev dosfstools fdisk kmod-fs-vfat kmod-usb-storage parted nand-utils lsblk fitblk luci luci-i18n-base-es adblock luci-app-adblock luci-i18n-adblock-es tcpdump msmtp ddns-scripts ddns-scripts-services luci-app-ddns luci-i18n-ddns-es bind-host firewall4 luci-app-firewall luci-i18n-firewall-es opkg luci-app-package-manager luci-i18n-package-manager-es wifischedule luci-app-wifischedule luci-i18n-wifischedule-es luci-app-samba4 luci-i18n-samba4-es luci-app-ttyd luci-i18n-ttyd-es luci-app-upnp luci-i18n-upnp-es luci-app-wol luci-i18n-wol-es luci-app-watchcat luci-i18n-watchcat-es luci-app-commands luci-i18n-commands-es kmod-wireguard wireguard-tools luci-proto-wireguard qrencode luci-proto-modemmanager kmod-usb-serial kmod-usb-serial-wwan kmod-usb-serial-option kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan wwan uqmi usb-modeswitch minicom
    

    Abajo una explicación de cada uno de esos paquetes:

    U-BOOT
    uboot-envtools Utilidad para leer y modificar las variables de entorno de U-Boot sin reiniciar ni entrar al bootloader
    HARDWARE
    Chipset
    mt7986-wo-firmware Firmware del Wireless Offload (WO) del SoC MediaTek MT7986, necesario para acelerar por hardware el Wi-Fi en OpenWrt
    kmod-mt7986-firmware Carga el firmware base del SoC MediaTek MT7986, necesario para que funcionen correctamente sus aceleradores y subsistemas internos en OpenWrt
    kmod-crypto-hw-safexcel Descarga operaciones crypto al hardware mejorando el rendimiento de VPNs, IPsec, TLS, etc. si el SoC lo soporta
    kmod-nft-offload Offload de NAT / conntrack al hardware usando nftables. Reduce carga de CPU y aumenta throughput en routing / NAT. Útil en routers con soporte de flow offload
    Ethernet
    kmod-phy-airoha-en8811h Driver del kernel para el PHY Ethernet Airoha EN8811H (2.5 GbE), necesario para que el puerto 2.5G funcione
    Ventilador
    kmod-hwmon-pwmfan Driver de hardware monitoring que permite controlar ventiladores por PWM y leer su estado desde OpenWrt
    Wifi
    kmod-mt7915-firmware Firmware Wi-Fi 6 necesario para que los chips MediaTek MT7915/MT7916 funcionen correctamente
    kmod-mt7915e Módulo para tarjetas Wi-Fi 6 (802.11ax) MediaTek MT7915/MT7916 conectadas por PCIe
    kmod-mac80211 Subsistema Wi-Fi del kernel que proporciona la capa 802.11 común sobre la que funcionan los drivers inalámbricos
    kmod-mt7615e Módulo para tarjetas Wi-Fi 5 (802.11ac) MediaTek MT7615 conectadas por PCIe
    SFP
    kmod-sfp Módulo para puertos SFP/SFP+ que gestiona módulos ópticos y de cobre (detección, enlace, potencia)
    USB 2
    kmod-usb2 Módulo que habilita controladores USB 2.0 (EHCI/OHCI/UHCI)
    kmod-usb-core Módulo del sub­sistema USB, imprescindible para que cualquier dispositivo USB funcione
    kmod-usb-ehci Módulo para el controlador USB 2.0 EHCI, usado para puertos USB de alta velocidad
    kmod-usb-ohci Módulo para el controlador USB 1.1 OHCI, usado en hardware antiguo o embebido
    usbutils Utilidades de usuario (como lsusb) para listar y diagnosticar dispositivos USB desde la línea de comandos
    usbids Base de datos de IDs USB usada por herramientas como lsusb para identificar fabricantes y dispositivos
    USB 3
    kmod-usb3 Habilita controladores USB 3.x (xHCI) para puertos USB de alta velocidad
    kmod-usb-xhci-hcd Módulo para el controlador USB xHCI, necesario para USB 3.x y compatibilidad con USB 2.0
    kmod-usb-xhci-mtk Driver xHCI específico de MediaTek, imprescindible para que los puertos USB 3.x del SoC MTK funcionen
    GPIO
    kmod-gpio-button-hotplug Módulo que detecta pulsaciones de botones físicos GPIO y lanza eventos hotplug
    kmod-i2c-gpio Módulo que implementa un bus I2C por software usando GPIOs, para comunicar sensores y periféricos I2C
    kmod-leds-gpio Módulo para controlar LEDs conectados al GPIO
    MTD
    mtd Herramientas y soporte para gestionar memorias flash MTD (NAND/NOR), usadas para leer, escribir y mantener el almacenamiento interno
    NVMe
    kmod-nvme Módulo que habilita dispositivos NVMe sobre PCIe, permitiendo usar SSD NVMe
    PCIe
    pciutils Utilidades de usuario (como lspci) para listar y diagnosticar dispositivos PCI/PCIe
    pciids Base de datos de IDs PCI/PCIe usada por herramientas como lspci para identificar fabricantes y dispositivos
    SOFTWARE
    Herramientas para terminal (mandatorias)
    base-files Instala la estructura mínima del sistema, archivos esenciales y scripts de inicio de OpenWrt
    busybox Binario único que agrupa las herramientas básicas de Unix (ls, cp, sh, etc.)
    dnsmasq Servicio ligero que proporciona DNS, DHCP y TFTP para redes pequeñas
    dropbear Servidor y cliente SSH ligero para sistemas embebidos
    wpad-basic-mbedtls Alternativa ligera a hostapd-openssl para WPA/WPA2 en Wi-Fi con cifrado mbedTLS, sin funciones avanzadas (802.11r/k/v)
    libc Biblioteca C estándar del sistema, base sobre la que se compilan y ejecutan todos los programas
    libgcc Biblioteca de soporte de GCC que aporta rutinas de bajo nivel necesarias para ejecutar binarios compilados
    libustream-mbedtls Alternativa ligera a la biblioteca libustream-openssl de streams y TLS basada en mbedTLS para conexiones seguras (HTTPS) de servicios y utilidades
    logd Demonio que recoge, gestiona y expone los logs del sistema
    netifd Demonio que gestiona interfaces de red, enlaces, IPs, bridges y su integración con el firewall
    nftables Framework de filtrado y control de tráfico del kernel usado como base del firewall moderno
    openssh-sftp-server Componente de OpenSSH que proporciona el servicio SFTP para transferencia de archivos segura sobre SSH
    procd Init system de OpenWrt, gestiona el arranque, servicios, hotplug y la supervisión de procesos
    procd-ujail Extensión de procd que permite aislar servicios en jaulas (sandbox) usando ujail para mayor seguridad
    procd-seccomp Soporte para filtros seccomp en procd, que restringe llamadas al sistema de los servicios para mejorar la seguridad
    uci Sistema de configuración unificada de OpenWrt que permite leer y modificar ajustes del sistema desde CLI y scripts
    ca-bundle Conjunto de certificados raíz para que el sistema confíe en conexiones HTTPS/TLS. Sin esto, HTTPS falla
    odhcp6c Cliente DHCPv6 que se usa para obtener IPv6 desde el ISP (prefijo, DNS, etc.) en la interfaz WAN
    odhcpd-ipv6only Asigna direcciones IPv6 (sin IPv4) y anuncios de router a la LAN. Normalmente va junto con odhcp6c
    ppp Soporte base de PPP (Point-to-oint Protocol). Capa común para conexiones PPP (PPP over serial, PPPoE, etc.)
    ppp-mod-pppoe Módulo PPPoE. Permite conectar a ISPs que usan PPPoE (muy común en fibra y ADSL)
    uclient-fetch Cliente HTTP/HTTPS ligero. Lo usa OpenWrt para descargar archivos (actualizaciones, scripts, feeds) sin depender de wget/curl completos
    urandom-seed Guarda y restaura una semilla de entropía entre reinicios. Evita que el sistema arranque con entropía baja, lo cual es crítico para crypto
    urngd Daemon que alimenta /dev/random usando /dev/random. Mantiene un nivel saludable de entropía, especialmente en sistemas sin buen RNG hardware
    Herramientas para terminal (extra)
    mc Midnight Commander, gestor de archivos en modo texto con paneles, editor y visor integrados
    nano Editor de texto simple y ligero para editar archivos desde la terminal
    curl Herramienta de línea de comandos para transferir datos por red (HTTP, HTTPS, FTP, etc.) y probar APIs o servicios remotos
    git Sistema de control de versiones distribuido para gestionar y sincronizar código fuente
    hwclock Herramienta para leer y ajustar el reloj hardware (RTC) del sistema
    ethtool utilidad para consultar y configurar parámetros de interfaces Ethernet (velocidad, dúplex, offloads=
    Acceso a volúmenes
    e2fsprogs Conjunto de herramientas para crear, comprobar y reparar sistemas de archivos ext2/3/4.
    f2fsck Herramienta para comprobar y reparar sistemas de archivos F2FS, optimizados para memoria flash.
    fstools Utilidades de OpenWrt para detectar, montar y gestionar sistemas de archivos y overlays
    mkf2fs Herramienta para crear (formatear) sistemas de archivos F2FS sobre dispositivos de almacenamiento flash
    blkid Utilidad para identificar dispositivos de bloque y detectar UUID, LABEL y tipo de sistema de archivos
    block-mount Componente que gestiona el montaje automático de dispositivos de almacenamiento según la configuración en fstab
    blockd Demonio que detecta cambios en dispositivos de bloque y coordina el automontaje con block-mount
    blockdev Herramienta para consultar y ajustar parámetros de dispositivos de bloque desde la línea de comandos
    dosfstools Herramientas para crear y reparar sistemas de archivos FAT/FAT32, usados en USBs y particiones EFI
    fdisk Utilidad para crear y modificar tablas de particiones en discos
    kmod-fs-vfat Módulo del kernel que permite montar sistemas de archivos FAT/VFAT
    kmod-usb-storage Módulo que habilita dispositivos de almacenamiento masivo USB (pendrives, discos externos)
    parted Herramienta para crear, modificar y redimensionar particiones en discos usando tablas MBR y GPT
    nand-utils Herramientas para gestionar y mantener memorias NAND (leer, escribir, borrar, comprobar) en sistemas embebidos
    lsblk Utilidad para listar dispositivos de bloque y su jerarquía (discos, particiones, puntos de montaje)
    fitblk Soporte para imágenes FIT con particiones en bloque. Se usa en firmwares modernos para manejar el arranque y actualizaciones desde imágenes FIT almacenadas en flash o eMMC
    LUCI
    Web base
    luci Interfaz web de OpenWrt para configurar y administrar el sistema desde el navegador
    luci-i18n-base-es Paquete de traducción al español de la interfaz base de LuCI
    Adblock
    adblock Servicio de OpenWrt que bloquea publicidad y rastreadores a nivel DNS usando listas de filtros
    luci-app-adblock Módulo de LuCI para configurar y gestionar Adblock desde la interfaz web
    luci-i18n-adblock-es Paquete de traducción al español de luci-app-adblock
    tcpdump Herramienta de línea de comandos para capturar y analizar tráfico de red en tiempo real
    msmtp Cliente SMTP ligero para enviar correos salientes desde scripts o servicios del sistema
    DDNS
    ddns-scripts Scripts para actualizar automáticamente DNS dinámico (IP pública cambiante) en proveedores DDNS
    ddns-scripts-services Colección de plantillas y proveedores predefinidos para que ddns-scripts funcione con servicios DDNS conocidos
    luci-app-ddns Módulo de LuCI para configurar y gestionar DNS dinámico (DDNS) desde la interfaz web
    luci-i18n-ddns-es Paquete de traducción al español de luci-app-ddns
    bind-host Utilidades del paquete BIND (como dig/nslookup) para consultar y diagnosticar DNS desde la línea de comandos
    Cortafuegos
    firewall4 Sistema de cortafuegos de OpenWrt basado en nftables, encargado de gestionar reglas, zonas y NAT
    luci-app-firewall Módulo de LuCI para configurar el firewall4 (nftables) desde la interfaz web
    luci-i18n-firewall-es Paquete de traducción al español de luci-app-firewall
    OPKG
    opkg Gestor de paquetes de OpenWrt para instalar, actualizar y eliminar software desde repositorios
    luci-app-package-manager Módulo de LuCI que proporciona la interfaz web para gestionar paquetes opkg (instalar, actualizar y eliminar)
    luci-i18n-package-manager-es Paquete de traducción al español de luci-app-package-manager
    Programación Wifi
    wifischedule Servicio que programa el encendido y apagado del Wi-Fi por horarios para ahorro energético o control de acceso
    luci-app-wifischedule Módulo de LuCI para configurar horarios de activación/desactivación del Wi-Fi usando Wifischedule
    luci-i18n-wifischedule-es Paquete de traducción al español de luci-app-wifischedule
    Samba
    luci-app-samba4 Módulo de LuCI para configurar y gestionar Samba 4, compartiendo archivos en red (SMB/CIFS)
    luci-i18n-samba4-es Paquete de traducción al español de luci-app-samba4
    Terminal en LUCI
    luci-app-ttyd Módulo de LuCI que expone un terminal web interactivo (ttyd) para acceder a la consola del router desde el navegador
    luci-i18n-ttyd-es Paquete de traducción al español de luci-app-ttyd
    uPnP
    luci-app-upnp Módulo de LuCI para configurar UPnP/NAT-PMP, permitiendo apertura automática de puertos en el firewall
    luci-i18n-upnp-es Paquete de traducción al español de luci-app-upnp
    Wake on LAN
    luci-app-wol Módulo de LuCI para enviar paquetes Wake-on-LAN y encender equipos remotamente (Instala la dependencia etherwake)
    luci-i18n-wol-es Paquete de traducción al español de luci-app-wol
    Watchcat
    luci-app-watchcat Módulo de LuCI para configurar Watchcat, que vigila la conectividad y reinicia servicios o el router si detecta fallos
    luci-i18n-watchcat-es Paquete de traducción al español de luci-app-watchcat
    Ejecutar scripts desde LUCI (Agrega Sistema > Comandos personalizados)
    luci-app-commands Módulo de LuCI que permite ejecutar comandos o scripts predefinidos desde la interfaz web
    luci-i18n-commands-es Paquete de traducción al español de luci-app-commands
    VPN
    kmod-wireguard Módulo del kernel que añade soporte WireGuard
    wireguard-tools Utilidades de usuario (wg, wg-quick) para configurar y gestionar túneles WireGuard
    luci-proto-wireguard Soporte de LuCI para configurar interfaces WireGuard como protocolo de red
    qrencode Herramienta para generar códigos QR desde texto o datos en la línea de comandos
    Módem
    luci-proto-modemmanager Soporte de LuCI para configurar interfaces de red gestionadas por ModemManager (módems 3G/4G/5G)
    Módem EC25 (QMI)
    kmod-usb-serial Módulo que habilita adaptadores serie USB (USB-to-UART)
    kmod-usb-serial-wwan Módulo para módems WWAN (3G/4G/5G) basados en interfaces serie USB
    kmod-usb-serial-option Módulo para módems USB 3G/4G/5G tipo Option/Huawei/ZTE, habilita sus puertos serie AT
    kmod-mii Módulo que proporciona soporte MII/MDIO para la comunicación entre MAC Ethernet y PHYs
    kmod-usb-net Módulo que habilita adaptadores de red USB
    kmod-usb-wdm Módulo que habilita la interfaz USB WDM usada por módems WWAN (QMI/MBIM) para control y gestión
    kmod-usb-net-qmi-wwan Módulo para módems USB WWAN en modo QMI, proporcionando interfaz de red de alta velocidad
    wwan Conjunto de herramientas y soporte para conectividad móvil (3G/4G/5G), gestionando interfaces WWAN
    uqmi Herramienta de línea de comandos para controlar módems QMI (conexión, estado, SIM, APN)
    usb-modeswitch Herramienta que cambia el modo USB de módems (de almacenamiento a red/serie) para que funcionen correctamente
    minicom Terminal serie en modo texto para comunicarse con dispositivos vía UART/USB-serial

    Todos los paquetes de arriba garantizan que la BPI-R3 mini funcione correctamente, con todas sus funcionalidades activadas. La propia herramienta selecciona todas las dependencias para esa compilación y se asegura que no falte ninguno que tenga relación con los paquetes que le pegamos. Esto nos asegura una instalación funcional de OpenWrt en la BPI-R3 mini en la que podremos utilizar todos sus componentes y hacer todas las funciones básicas de un router (y alguna más).

    De los paquetes oficiales que vienen cuando uno instala la compilación por defecto, he dejado fuera los siguientes:

    kmod-phy-aquantia (Driver para PHYs Aquantia 10G/5G/2.5G/1G. Necesario si el hardware usa chips Aquantia para Ethernet multigigabit)

    …porque no entiendo para que viene incluido si las BPI-R3 mini no tienen hardware Aquantia.

    Al quemar una imagen personalizada, debemos tener en cuenta que, además de preparar la imagen para la eMMC , si vamos a querer tener instalado OpenWrt en la SPI NAND de la BPI-R3 mini, deberemos tener cuidado con que la imagen generada no ocupe más de 128MB, pues es el tamaño máximo que disponemos para quemar imágenes en ella.

    Después de ingresar estos paquetes en el personalizador, y antes de compilar, podemos crear un script que se ejecutará la primera vez que la imagen de OpenWrt se inicie en la BPI-R3 mini. Esto lo hacemos en el campo de texto que está por debajo del campo de selección de paquetes (uci-defaults). Un script básico podría ser:

    .

    Después de darle a compilar, y de que la compilación haya resultado exitosa, podremos descargar 7 tipos de archivos individuales:

    • *emmc-bl31-uboot.fip: imagen combinada con ARM Trusted Firmware (BL31) + U-Boot, usada como bootloader principal en eMMC.
    • *emmc-gpt.bin: tabla de particiones GPT para inicializar correctamente la eMMC.
    • *emmc-preloader.bin: preloader MediaTek, primer código que ejecuta la CPU para inicializar RAM y arrancar desde eMMC.
    • *snand-bl31-uboot.fip: imagen BL31 + U-Boot específica para arranque desde SPI-NAND (SNAND).
    • *snand-factory.bin: imagen factory para flasheo inicial en SPI-NAND, incluye layout y sistema base.
    • *snand-preloader.bin: preloader MediaTek para sistemas que arrancan desde SPI-NAND.
    • *squashfs-sysupgrade.itb: imagen sysupgrade para actualizar OpenWrt desde un sistema ya instalado, válida independientemente del medio de arranque.

    Descargaremos el gpt, todos los de la emmc y el sysupgrade.

    RENOMBRADO DE LOS ARCHIVOS PARA UN MEJOR MANEJO

    Vamos a proceder a renombrar los archivos para que tengan un nombre mas corto:

    mv openwrt-xx.xx-mediatek-filogic-bananapi_bpi-r3-mini-emmc-gpt.bin            gpt.bin
    mv openwrt-xx.xx-mediatek-filogic-bananapi_bpi-r3-mini-emmc-preloader.bin      mmcblk0boot0.bin
    mv openwrt-xx.xx-mediatek-filogic-bananapi_bpi-r3-mini-emmc-bl31-uboot.fip     mmcblk0p3.fip
    mv openwrt-xx.xx-mediatek-filogic-bananapi_bpi-r3-mini-squashfs-sysupgrade.itb mmcblk0p5.itb

    QUEMADO DE LA IMAGEN EN LA eMMC

    Para quemar la imagen hacemos lo siguiente:

    • Ponemos el jumper hacia la derecha para iniciar desde la SPI NAND.
    • Encendemos la BPI-R3 mini.
    • Nos conectamos al puerto LAN (el RJ-45 de al lado del USB-C de corriente. Nos asignará una IP en 192.168.1.0/24
    • Copiamos mediante scp el archivo gpt.bin a la carpeta /tmp de la BPI:
      scp gpt.bin root@192.168.1.1:/tmp/
      Si scp no está disponible podemos crear en el ordenador un servidor web con python y descargarnos el archivo desde la BPI con wget.
    • Nos conectamos como root a la BPI:
      ssh root@192.168.1.1
    • Escribimos la tabla GPT en la memoria eMMC (reconocible como /dev/mmcblk0):
      dd if=/tmp/gpt.bin of=/dev/mmcblk0
      Esto nos pone la tabla de particiones con las siguientes particiones:
      mmcblk0 mmcblk0boot0 mmcblk0boot1 mmcblk0p1 mmcblk0p128 mmcblk0p2 mmcblk0p3 mmcblk0p4 mmcblk0p5 cmmcblk0rpmb
      …cuando originalmente solía estar así de fabrica:
      mmcblk0 mmcblk0boot0 mmcblk0boot1 mmcblk0p1 mmcblk0p2 mmcblk0p3 mmcblk0p4 mmcblk0p5 mmcblk0p6 mmcblk0rpmb
    • Reiniciamos la BPI quitando el cable de corriente y volviéndolo a poner para que cargue la tabla de particiones:
    • Volvemos a copiar otros archivos a la carpeta de la BPI:
      scp mmcblk0boot0.bin root@192.168.1.1:/tmp/
      scp mmcblk0p3.fip    root@192.168.1.1:/tmp/
      scp mmcblk0p5.itb    root@192.168.1.1:/tmp/
    • Nos conectamos como root a la BPI:
      ssh root@192.168.1.1
    • Escribimos las imágenes en las particiones correspondientes:
      echo 0 > /sys/block/mmcblk0boot0/force_ro
      dd if=/tmp/mmcblk0boot0.bin of=/dev/mmcblk0boot0
      dd if=/tmp/mmcblk0p3.fip    of=/dev/mmcblk0p3
      dd if=/tmp/mmcblk0p5.itb    of=/dev/mmcblk0p5
      sync
    • Quitamos el cable de corriente.
    • Ponemos el jumper a la izquierda para que inicie desde la eMMC.
    • OPCIONAL: Una vez que inicie vamos a agregar funcionalidad ethernet dentro de U-Boot para, llegado el caso, poder bootear con TFTP:
      echo 0 > /sys/block/mmcblk0boot1/force_ro
      dd if=/lib/firmware/airoha/EthMD32.dm.bin                  of=/dev/mmcblk0boot1
      dd if=/lib/firmware/airoha/EthMD32.DSP.bin bs=16384 seek=1 of=/dev/mmcblk0boot1

    Listo, ya tenemos una Banana Pi R3 mini funcional, booteando desde la eMMC.

    EXTRA: Si por alguna razón la BPI-R3 mini no bootea correctamente, o no nos da una IP, etc, siempre podemos conectarnos por Serie/UART con un adaptador USB conectando los pines de la siquiente manera:

    Poniendo la bpi con los puertos rj45 hacia abajo:

    • El primer puerto de la izquierda es masa/tierra/ground/gnd.
    • El segundo es rx, por lo que hay que conectarle el cable tx.
    • El segundo es tx, por lo que hay que conectarle el cable rx.

    Enlaces relacionados:

    Uno.

    Otro.


    Los comentarios están cerrados.