Microordenadores - Desarrollos modernos para sistemas retro

Como instalar OpenWrt en Banana Pi R1
6 de Julio de 2017

Router neutro Banana Pi R1 con OpenWrt

Este tutorial explica como instalar OpenWrt en un ordenador Banana Pi R1 para construir un router Linux. Aunque no es necesario ya que hay imágenes precompiladas, aquí realizo todo el proceso a modo ilustrativo.

Este ordenador parece un buen candidato para hacer un punto de acceso wifi ya que trae 4 puertos LAN (en bridge) y 1 puerto WAN Ethernet, aparte del Wifi con dos conectores para antena, aunque realmente los puertos ethernet son un switch.

Con respecto a OpenWrt, una alternativa es el proyecto derivado LEDE, con un desarrollo más activo, y que también dispone de imágenes para Banana Pi R1 (Lamobo R1).

Implicaciones de seguridad

Como explican en linux-sunxi, en el Banana Pi R1 los 5 puertos ethernet van interconectados, por lo que no tiene realmente un puerto WAN y 4 LAN al estar conectados a nivel de capa 2. Se comporta como un switch y mi recomendación es buscar otra alternativa para construir un router (yo uso EdgeRouter Lite con OpenBSD). Esto no quita que pueda servir como punto de acceso Wifi dentro de tu red conectado a un router de verdad.

Necesitarás

  • Un ordenador con Debian u otra distribución de Linux.
  • Banana Pi R1.
  • Opcionalmente USB a TTL soportado (yo uso el CP2102).
  • Tarjeta SD.

La importancia de construir tu propia imagen

Es importante que compiles tu propia imagen o descargues una imagen desde la web oficial porque así tendrás una mayor seguridad de que el software que ejecutará tu Banana pi es el que pretenden los desarrolladores de OpenWrt. Si descargas una imagen precompilada de una fuente desconocida no sabes realmente si esa imagen tiene puertas traseras que pueden convertir tu router en un proveedor de contenidos ilegales o en bot controlado por un cracker para lanzar ataques.

Hay imágenes para Banana Pi R1 en la seccion de descargas de OpenWRT.

Lectura recomendada

Voy a hacer la instalación con Debian 8 y OpenWrt Chaos Calmer 15.05, que son las versiones estables actuales. Lo primero de todo es acudir a la fuente oficial de documentación. Aunque es posible descargar imágenes preparadas, lo mejor es compilarlo uno mismo para estar seguro de que lo que queremos ejecutar es lo que los desarrolladores programaron, y no puertas traseras de terceros.

Como preparar la imagen para la tarjeta SD

Doy por hecho que sabes instalar Debian; si no sabes cómo, hay un montón de tutoriales en la red, y es algo que escapa al propósito de esta web. Una vez instalado Debian necesitas instalar una serie de paquetes desde apt para poder compilar OpenWrt:

$ su
# apt-get install git make g++ gcc gawk openssl libncurses5-dev libssl-dev subversion zlib1g-dev

Una vez hecho esto ya tienes las herramientas necesarias para poder compilar OpenWrt en tu sistema. Siguiendo las instrucciones de la documentación oficial enlazada anteriormente, descargo las fuentes de la última versión estable de OpenWrt con git y lanzo make menuconfig para configurar la imagen que voy a generar.

Si quieres instalar paquetes (por ejemplo la interfaz gráfica Luci) debes ejecutar estos comandos antes de hacer make menuconfig, tal y como explica el documento Updating feeds. Una vez instalados los feeds aparecerá Luci en el menú y podrás activarlo de dos formas: pulsando espacio una vez (M) o pulsándolo dos veces (*). De la última forma irá incluido en la imagen sin necesidad de cargar el módulo, y es la mejor opción si no quieres complicarte. Si cambias la configuración, al recompilar es posible que falle; en este caso ejecuta antes make clean.

$ git clone -b chaos_calmer git://github.com/openwrt/openwrt.git
$ cd openwrt
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig

Dentro del menú hay que elegir solamente estas opciones (salvo que quieras customización). Considera también desactivar IPv6 si no lo necesitas para reducir la superficie de ataque.

  • Target System: Allwinner A1x/A20/A3x
  • Target Profile: Lamobo R1
Configuración de OpenWrt para Banana Pi R1 (Lamobo R1)

Una vez guardado el archivo .config sólo hay que ejecutar make. El proceso tardará bastante debido a que al ser un dispositivo ARM el sistema compila todo el toolchain para compilación cruzada. La imagen lista para flashear en la tarjeta estará en el directorio bin/sunxi. El archivo que he generado es openwrt-sunxi-Lamobo_R1-sdcard-vfat-ext4.img.gz. Lo siguiente será descomprimirlo y grabarlo a la tarjeta Micro SD. Al conectar el USB con la tarjeta y ejecutar dmesg puedo apreciar que el dispositivo es /dev/sdc, por lo que estos son los comandos que ejecuto (cambiar la X por la letra correspondiente):

$ cd bin/sunxi
$ su
# gzip -d openwrt-sunxi-Lamobo_R1-sdcard-vfat-ext4.img.gz
# dd if=openwrt-sunxi-Bananapi-sdcard-vfat-ext4.img of=/dev/sdX
# sync      

Surgió un problema

Pins para puerto serie en Banana Pi R1 Pins para puerto serie en BPI R1

Al arrancar he usado el dispositivo USB a TTL mencionado al inicio del tutorial conectando los pines como se indica en la figura para ver como arranca y comprobar que todo funciona perfectamente. No ha sido el caso, y gracias a la conexión serie puedo ver qué es lo que falla:

# minicom -b 115200 -D /dev/ttyUSB0	
...
reading uImage
Error reading cluster
** Unable to read file uImage **
SCRIPT FAILED: continuing...

La solución ha sido teclear entre comillas la frase Error reading cluster para llegar a un mensaje del foro oficial donde otro usuario tuvo este problema. Lo he solucionado de la misma forma que explican ahí, simplemente probando otra tarjeta MicroSD + Carcasa SD distinta (concretamente una Samsung).

Primer login

Una vez grabada la imagen a la tarjeta SD, simplemente arrancando el Banana Pi R1 tienes un ordenador con telnet y SSH. Tal y como se explica en el documento oficial First Login Howto, conecta un ordenador mediante cable ethernet a un puerto LAN del BPi R1, configúralo por DCHP en tu ordenador cliente y te asignará una IP del rango 192.168.1.1/32. Haz telnet y tendrás una shell root. Una vez en esta shell root cambia el password con el comando passwd y a partir de ahí ya necesitarás conectar a través de ssh de la siguiente forma:

ssh root@192.168.1.1 

Con esto ya tienes OpenWrt funcionando en tu dispositivo.

dmesg

Incluyo aquí el resultado de dmesg para que puedas ver con más detalle los dispositivos que lleva mi placa Banana Pi R1:

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.18.45 (fgm@debian) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r49389) ) #1 SMP PREEMPT Tue Jan 31 10:12:17 CST 2017
[    0.000000] CPU: ARMv7 Processor [410fc074] revision 4 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Lamobo R1
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] On node 0 totalpages: 260096
[    0.000000] free_area_init_node: node 0, pgdat c0505740, node_mem_map ef00a000
[    0.000000]   Normal zone: 1520 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 194560 pages, LIFO batch:31
[    0.000000]   HighMem zone: 512 pages used for memmap
[    0.000000]   HighMem zone: 65536 pages, LIFO batch:15
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: Using PSCI v0.1 Function IDs from DT
[    0.000000] PERCPU: Embedded 9 pages/cpu @eefe1000 s6272 r8192 d22400 u36864
[    0.000000] pcpu-alloc: s6272 r8192 d22400 u36864 alloc=9*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 258576
[    0.000000] Kernel command line: console=ttyS0,115200 earlyprintk rootwait root=/dev/mmcblk0p2
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 1025380K/1040384K available (3815K kernel code, 170K rwdata, 1068K rodata, 204K init, 606K bss, 15004K reserved, 262144K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xffe00000   (2048 kB)
[    0.000000]     vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc04ccef4   (4884 kB)
[    0.000000]       .init : 0xc04cd000 - 0xc0500000   ( 204 kB)
[    0.000000]       .data : 0xc0500000 - 0xc052a804   ( 171 kB)
[    0.000000]        .bss : 0xc052a804 - 0xc05c2148   ( 607 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] Architected cp15 timer(s) running at 24.00MHz (phys).
[    0.000009] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 2863311519744ns
[    0.000021] Switching to timer-based delay loop, resolution 41ns
[    0.000358] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns
[    0.000515] sched_clock: 32 bits at 160MHz, resolution 6ns, wraps every 26843545593ns
[    0.000675] Console: colour dummy device 80x30
[    0.000705] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[    0.000722] pid_max: default: 32768 minimum: 301
[    0.000827] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000838] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.001452] CPU: Testing write buffer coherency: ok
[    0.001757] /cpus/cpu@0 missing clock-frequency property
[    0.001777] /cpus/cpu@1 missing clock-frequency property
[    0.001790] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.001845] Setting up static identity map for 0x40011b40 - 0x40011b74
[    0.060431] CPU1: Booted secondary processor
[    0.060477] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.060547] Brought up 2 CPUs
[    0.060569] SMP: Total of 2 processors activated (96.00 BogoMIPS).
[    0.060576] CPU: All CPU(s) started in HYP mode.
[    0.060581] CPU: Virtualization extensions available.
[    0.064975] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 4
[    0.065381] pinctrl core: initialized pinctrl subsystem
[    0.065777] regulator-dummy: no parameters
[    0.072685] NET: Registered protocol family 16
[    0.073029] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.111457] reg-fixed-voltage ahci-5v: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/ahci_pwr_pin@0, deferring probe
[    0.111493] platform ahci-5v: Driver reg-fixed-voltage requests probe deferral
[    0.111523] reg-fixed-voltage usb1-vbus: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/usb1_vbus_pin@0, deferring probe
[    0.111536] platform usb1-vbus: Driver reg-fixed-voltage requests probe deferral
[    0.111560] reg-fixed-voltage usb2-vbus: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/usb2_vbus_pin@0, deferring probe
[    0.111573] platform usb2-vbus: Driver reg-fixed-voltage requests probe deferral
[    0.111782] vcc3v0: 3000 mV 
[    0.111999] vcc3v3: 3300 mV 
[    0.112231] vcc5v0: 5000 mV 
[    0.112317] reg-fixed-voltage gmac-3v3: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/gmac_power_pin@0, deferring probe
[    0.112333] platform gmac-3v3: Driver reg-fixed-voltage requests probe deferral
[    0.112783] SCSI subsystem initialized
[    0.112855] libata version 3.00 loaded.
[    0.113161] usbcore: registered new interface driver usbfs
[    0.113238] usbcore: registered new interface driver hub
[    0.113357] usbcore: registered new device driver usb
[    0.113504] pps_core: LinuxPPS API ver. 1 registered
[    0.113513] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti 
[    0.113542] PTP clock support registered
[    0.114592] Switched to clocksource arch_sys_counter
[    0.121677] NET: Registered protocol family 2
[    0.122725] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.122812] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.122933] TCP: Hash tables configured (established 8192 bind 8192)
[    0.123016] TCP: reno registered
[    0.123034] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.123092] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.123353] NET: Registered protocol family 1
[    0.124848] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.125002] audit: initializing netlink subsys (disabled)
[    0.125079] audit: type=2000 audit(0.110:1): initialized
[    0.134015] VFS: Disk quotas dquot_6.5.2
[    0.134266] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.136014] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.136037] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.136757] msgmni has been set to 1490
[    0.138943] bounce: pool size: 64 pages
[    0.138964] io scheduler noop registered
[    0.138976] io scheduler deadline registered
[    0.139025] io scheduler cfq registered (default)
[    0.139335] platform 1c13400.phy: Driver sun4i-usb-phy requests probe deferral
[    0.142036] sun7i-a20-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.184568] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[    0.187112] console [ttyS0] disabled
[    0.207530] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 33, base_baud = 1500000) is a U6_16550A
[    0.827813] console [ttyS0] enabled
[    0.854275] 1c28c00.serial: ttyS1 at MMIO 0x1c28c00 (irq = 36, base_baud = 1500000) is a U6_16550A
[    0.886190] 1c29c00.serial: ttyS2 at MMIO 0x1c29c00 (irq = 52, base_baud = 1500000) is a U6_16550A
[    0.898655] platform 1c50000.ethernet: Driver stmmaceth requests probe deferral
[    0.906126] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.912652] ehci-platform: EHCI generic platform driver
[    0.918046] platform 1c14000.usb: Driver ehci-platform requests probe deferral
[    0.925365] platform 1c1c000.usb: Driver ehci-platform requests probe deferral
[    0.932687] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.938919] ohci-platform: OHCI generic platform driver
[    0.944278] platform 1c14400.usb: Driver ohci-platform requests probe deferral
[    0.951589] platform 1c1c400.usb: Driver ohci-platform requests probe deferral
[    0.958987] usbcore: registered new interface driver usb-storage
[    0.965252] mousedev: PS/2 mouse device common for all mice
[    0.970930] 1c22800.lradc supply vref not found, using dummy regulator
[    0.977882] input: 1c22800.lradc as /devices/soc@01c00000/1c22800.lradc/input/input0
[    0.991104] axp20x-regulator axp20x-regulator: regulators node not found
[    0.997988] LDO1: 1300 mV 
[    1.001115] LDO2: at 3000 mV 
[    1.004490] LDO3: at 2275 mV 
[    1.007656] LDO4: at 2800 mV 
[    1.011033] LDO5: at 2800 mV 
[    1.014411] DCDC2: at 1400 mV 
[    1.017879] DCDC3: at 1250 mV 
[    1.021015] axp20x 0-0034: AXP20X driver loaded
[    1.026878] sunxi-wdt 1c20c90.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[    1.035440] sunxi-mmc 1c0f000.mmc: No vqmmc regulator found
[    1.041369] sunxi-mmc 1c0f000.mmc: Got CD GPIO
[    1.084819] sunxi-mmc 1c0f000.mmc: base:0xf00fa000 irq:64
[    1.092641] sunxi-ss 1c15000.crypto-engine: Die ID 0
[    1.097695] sunxi-ss: probe of 1c15000.crypto-engine failed with error -22
[    1.105364] TCP: cubic registered
[    1.108703] Initializing XFRM netlink socket
[    1.113028] NET: Registered protocol family 17
[    1.117630] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[    1.130258] 8021q: 802.1Q VLAN Support v1.8
[    1.134595] Registering SWP/SWPB emulation handler
[    1.139931] registered taskstats version 1
[    1.144837] ahci-5v: 5000 mV 
[    1.148227] usb1-vbus: 5000 mV 
[    1.151699] usb2-vbus: 5000 mV 
[    1.155256] gmac-3v3: 3300 mV 
[    1.181884] mmc0: host does not support reading read-only switch, assuming write-enable
[    1.192435] mmc0: new high speed SDHC card at address 59b4
[    1.198457] mmcblk0: mmc0:59b4 00000 14.8 GiB 
[    1.204089]  mmcblk0: p1 p2
[    1.264688] stmmaceth 1c50000.ethernet: no reset control found
[    1.270523]  Ring mode enabled
[    1.273574]  No HW DMA feature register supported
[    1.278122]  Normal descriptors
[    1.281443]  TX Checksum insertion supported
[    1.292426] libphy: stmmac: probed
[    1.295867] eth0: PHY ID 03625f24 at 0 IRQ POLL (stmmac-0:00) active
[    1.302215] eth0: PHY ID 03625f24 at 1 IRQ POLL (stmmac-0:01)
[    1.307968] eth0: PHY ID 03625f24 at 2 IRQ POLL (stmmac-0:02)
[    1.313707] eth0: PHY ID 03625f24 at 3 IRQ POLL (stmmac-0:03)
[    1.319457] eth0: PHY ID 03625f24 at 4 IRQ POLL (stmmac-0:04)
[    1.325207] eth0: PHY ID 03625f24 at 30 IRQ POLL (stmmac-0:1e)
[    1.331374] ehci-platform 1c14000.usb: EHCI Host Controller
[    1.337071] ehci-platform 1c14000.usb: new USB bus registered, assigned bus number 1
[    1.344952] ehci-platform 1c14000.usb: irq 71, io mem 0x01c14000
[    1.364607] ehci-platform 1c14000.usb: USB 2.0 started, EHCI 1.00
[    1.370897] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.377699] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.384936] usb usb1: Product: EHCI Host Controller
[    1.389810] usb usb1: Manufacturer: Linux 3.18.45 ehci_hcd
[    1.395301] usb usb1: SerialNumber: 1c14000.usb
[    1.400405] hub 1-0:1.0: USB hub found
[    1.404193] hub 1-0:1.0: 1 port detected
[    1.408898] ehci-platform 1c1c000.usb: EHCI Host Controller
[    1.414499] ehci-platform 1c1c000.usb: new USB bus registered, assigned bus number 2
[    1.422418] ehci-platform 1c1c000.usb: irq 72, io mem 0x01c1c000
[    1.444625] ehci-platform 1c1c000.usb: USB 2.0 started, EHCI 1.00
[    1.450897] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[    1.457705] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.464932] usb usb2: Product: EHCI Host Controller
[    1.469806] usb usb2: Manufacturer: Linux 3.18.45 ehci_hcd
[    1.475296] usb usb2: SerialNumber: 1c1c000.usb
[    1.480366] hub 2-0:1.0: USB hub found
[    1.484150] hub 2-0:1.0: 1 port detected
[    1.488694] ohci-platform 1c14400.usb: Generic Platform OHCI controller
[    1.495366] ohci-platform 1c14400.usb: new USB bus registered, assigned bus number 3
[    1.503230] ohci-platform 1c14400.usb: irq 96, io mem 0x01c14400
[    1.568797] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[    1.575606] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.582821] usb usb3: Product: Generic Platform OHCI controller
[    1.588752] usb usb3: Manufacturer: Linux 3.18.45 ohci_hcd
[    1.594234] usb usb3: SerialNumber: 1c14400.usb
[    1.599298] hub 3-0:1.0: USB hub found
[    1.603083] hub 3-0:1.0: 1 port detected
[    1.607632] ohci-platform 1c1c400.usb: Generic Platform OHCI controller
[    1.614268] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 4
[    1.622159] ohci-platform 1c1c400.usb: irq 97, io mem 0x01c1c400
[    1.688780] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
[    1.695585] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.702800] usb usb4: Product: Generic Platform OHCI controller
[    1.708732] usb usb4: Manufacturer: Linux 3.18.45 ohci_hcd
[    1.714213] usb usb4: SerialNumber: 1c1c400.usb
[    1.719295] hub 4-0:1.0: USB hub found
[    1.723089] hub 4-0:1.0: 1 port detected
[    1.732283] vcc3v0: disabling
[    1.735368] vcc5v0: disabling
[    1.738344] ahci-5v: disabling
[    1.743943] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities
[    1.753169] EXT4-fs (mmcblk0p2): couldn't mount as ext2 due to feature incompatibilities
[    1.766024] EXT4-fs (mmcblk0p2): mounted filesystem without journal. Opts: (null)
[    1.773558] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[    1.780656] Freeing unused kernel memory: 204K (c04cd000 - c0500000)
[    1.804668] usb 2-1: new high-speed USB device number 2 using ehci-platform
[    1.888895] init: Console is alive
[    1.892603] init: - watchdog -
[    1.956371] usb 2-1: New USB device found, idVendor=0bda, idProduct=8178
[    1.963184] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    1.970382] usb 2-1: Product: 802.11n WLAN Adapter
[    1.975230] usb 2-1: Manufacturer: Realtek
[    1.979444] usb 2-1: SerialNumber: 00e04c000001
[    2.094650] ahci-sunxi 1c18000.sata: controller can't do PMP, turning off CAP_PMP
[    2.102145] ahci-sunxi 1c18000.sata: forcing PORTS_IMPL to 0x1
[    2.108054] ahci-sunxi 1c18000.sata: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode
[    2.117031] ahci-sunxi 1c18000.sata: flags: ncq sntf pm led clo only pio slum part ccc 
[    2.126026] scsi host0: ahci_platform
[    2.130070] ata1: SATA max UDMA/133 mmio [mem 0x01c18000-0x01c18fff] port 0x100 irq 88
[    2.484613] ata1: SATA link down (SStatus 0 SControl 300)
[    2.896578] init: - preinit -
[    3.039241] b53_common: found switch: BCM53125, rev 4
[    3.054897]  RX IPC Checksum Offload disabled
[    3.059261]  No MAC Management Counters available
[    4.219734] random: mktemp urandom read with 6 bits of entropy available
[    5.034638] stmmaceth 1c50000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[    7.283845] mount_root: mounting /dev/root
[    7.288524] EXT4-fs (mmcblk0p2): warning: mounting unchecked fs, running e2fsck is recommended
[    7.391098] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[    7.402040] procd: - early -
[    7.405122] procd: - watchdog -
[    8.175260] procd: - ubus -
[    9.185514] procd: - init -
[    9.659959] NET: Registered protocol family 10
[    9.677056] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    9.704842] Loading modules backported from Linux version v4.4-rc5-1913-gc8fdf68
[    9.712259] Backport generated by backports.git backports-20151218-0-g2f58d9d
[    9.721265] ip_tables: (C) 2000-2006 Netfilter Core Team
[    9.739010] nf_conntrack version 0.5.0 (16024 buckets, 64096 max)
[    9.835662] xt_time: kernel timezone is -0000
[    9.878707] PPP generic driver version 2.4.2
[    9.884095] NET: Registered protocol family 24
[    9.900629] rtl8192cu: Chip version 0x11
[   10.010022] rtl8192cu: MAC address: 28:f3:66:41:c9:de
[   10.015163] rtl8192cu: Board Type 0
[   10.025030] rtl_usb: rx_max_size 15360, rx_urb_num 8, in_ep 1
[   10.031571] rtl8192cu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin
[   10.038989] ieee80211 phy0: Selected rate control algorithm 'rtl_rc'
[   10.041205] usbcore: registered new interface driver rtl8192cu
[   12.999379] b53_common: found switch: BCM53125, rev 4
[   13.015290]  RX IPC Checksum Offload disabled
[   13.019677]  No MAC Management Counters available
[   13.024872] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   13.035775] device eth0.1 entered promiscuous mode
[   13.040600] device eth0 entered promiscuous mode
[   13.047753] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   13.079714] IPv6: ADDRCONF(NETDEV_UP): eth0.2: link is not ready
[   14.994658] stmmaceth 1c50000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[   15.002881] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   15.009655] br-lan: port 1(eth0.1) entered forwarding state
[   15.015295] br-lan: port 1(eth0.1) entered forwarding state
[   15.021048] IPv6: ADDRCONF(NETDEV_CHANGE): eth0.2: link becomes ready
[   15.027944] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[   17.014651] br-lan: port 1(eth0.1) entered forwarding state

¿Y ahora qué?

Ahora que tienes OpenWrt instalado en tu Banana Pi R1 puedes construir un router o usar la infinidad de módulos que hay de este sistema operativo para realizar distintas tareas. Este artículo sólo explica cómo instalar OpenWrt, a partir de aquí tira de la documentación de OpenWrt. A cotinuación explico de forma sencilla como configurar un punto de acceso Wifi. Como podrás comprobar, lo más difícil ya está hecho.

Router neutro con punto de acceso Wifi con OpenWrt

El Banana Pi R1 es ideal para instalarle OpenWrt y montar un router neutro con punto de acceso Wifi. La única pega que le veo es el micro que lleva soldado a la placa, aunque siempre se puede desoldar o cortar. Aunque se puede conectar directamente al router en modo Cable Modem, mi recomendación es usar un firewall OpenBSD debido a los continuos ataques procedentes de la red. Para esta tarea uso el EdgeRouter Lite y va genial... ahí le conecto el punto de acceso Wifi.

Aunque no es necesario, Luci facilita mucho la configuración de un punto de acceso Wifi en tu Banana Pi R1. Simplemente actívalo a la hora de compilar OpenWrt como expliqué anteriormente.

Una vez grabada la imagen a la tarjeta SD y puesta en el Banana Pi R1 podrás acceder conectando mediante un cable ethernet a un puerto LAN y tecleando en el navegador http://192.168.1.1. Aparecerá una pantalla como esta:

Pantalla de acceso a Luci para configurar el router

Como configurar el punto de acceso Wifi

Simplemente ve al menú Network -> Wifi, dale a Enable, y luego a través del botón Edit podrás configurar los detalles de tu red. Mi recomendación es usar WPA2-PSK y solamente AES, aunque si necesitas usar algún dispositivo que necesite TKIP puedes activar AES+TKIP. Metes la contraseña y le das a Save & Apply.

Configuración de la red Wifi

Si tienes el acceso a internet conectado al puerto WAN, la red debe funcionar.

Enlaces


Contenido relacionado: