-
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:
- Obtención de imagen para quemar en la eMMC.
- Quemado de la imagen en la tarjeta.
- Configuración de los jumpers para iniciar desde la eMMC.
- 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:
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 subsistema 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.