Admin Libre - Administración de sistemas y redes

OpenBSD en Banana Pi R1
Por Francisco Gaitán el 19 de Abril de 2023

Banana Pi R1 (también llamado Lamobo R1) es un miniordenador ARM que usa el chip Allwinner A20, y es soportado parcialmente por OpenBSD/armv7. Ethernet aún no funciona pero al menos sí tiene conectividad wifi con urtwn(4).

Este proceso lo he realizado con la versión de OpenBSD-current disponible a día 19 de Abril de 2023.

Herramientas necesarias

  • Banana Pi R1
  • Un ordenador con OpenBSD
  • Un adaptador USB a serie TTL soportado (yo uso el CP2102)
  • Tarjeta MicroSD (recomiendo mínimo 32 GB) y adaptador USB para grabarla

Lectura recomendada

Cómo preparar la imagen

Para preparar la imagen para esta placa, en OpenBSD 7.3 usaré miniroot-cubie-73.img, la descargo y verifico para después modificarla para que tenga salida serie añadiendo un archivo que viene en el paquete u-boot-arm.

Descarga de la imagen

$ ftp https://ftp.hostserver.de/pub/OpenBSD/snapshots/armv7/miniroot-cubie-73.img
$ ftp https://ftp.hostserver.de/pub/OpenBSD/snapshots/armv7/SHA256.sig 
$ signify -C -p /etc/signify/openbsd-73-base.pub -x SHA256.sig miniroot-cubie-73.img
Signature Verified
miniroot-cubie-73.img: OK

Instalación del paquete u-boot-arm

# pkg_add u-boot-arm 

Modificación de la imagen para Banana Pi R1

Una vez instalado u-boot-arm satisfactoriamente, consultando el archivo /usr/src/distrib/armv7/ramdisk/install.md en la sección correspondiente a cubie hay una referencia al archivo u-boot-sunxi-with-spl.bin y el procedimiento para modificar la imagen miniroot usando dd(1) y vnconfig(8):

# vnconfig vnd0 miniroot-cubie-73.img
$ doas dd if=/usr/local/share/u-boot/Lamobo_R1/u-boot-sunxi-with-spl.bin of=/dev/rvnd0c bs=1024 seek=8
505+1 records in
505+1 records out
517776 bytes transferred in 0.240 secs (2156986 bytes/sec)
# vnconfig -u vnd0

Grabación de la imagen en la tarjeta

Ahora que miniroot-cubie-73.img está listo para funcionar con la Banana Pi R1, dando salida serie. Una vez hecho esto, prepara la tarjeta en su adaptador USB tal como indica el FAQ de OpenBSD.

Como conectar el puerto serie

Prolific CP2102 USB a serie RS232

Usaré el adaptador Silicon Labs CP2102 que es compatible con OpenBSD, muy barato y funciona perfectamente. También sirve para otros sistemas como la Raspberry Pi y para instalar OpenWrt.

Conecto solamente los pines TX, RX y GND tal y como indico en la siguiente figura, teniendo en cuenta lo siguiente:

  • Es de vital importancia no conectar ningún pin de alimentación.
  • En el diagrama, TX y RX indican la parte del USB TTL donde va conectado, por lo que en la placa Banana Pi R1 están cambiados
  • Si no aparece ninguna salida es posible que estén intercambiados TX y RX; se puede apagar, cambiar el orden y probar de nuevo
Banana Pi R1 GPIO pinout (TX y RX están intercambiados)

Para ello usaré el programa cu(1) (para Linux está Minicom) de esta forma, añadiendo previamente al usuario al grupo dialer para no necesitar root. Una vez con los pines conectados y el USB conectado al ordenador enciendo la Banana Pi:

$ cu -l cuaU0 -s 115200 
Connected to /dev/cuaU0 (speed 115200)

U-Boot SPL 2021.10 (Apr 17 2023 - 01:17:35 -0600)
DRAM: 1024 MiB
CPU: 912000000Hz, AXI/AHB/APB: 3/2/2
Trying to boot from MMC1


U-Boot 2021.10 (Apr 17 2023 - 01:17:35 -0600) Allwinner Technology

CPU:   Allwinner A20 (SUN7I)
Model: Lamobo R1
I2C:   ready
DRAM:  1 GiB
MMC:   mmc@1c0f000: 0
Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1... Unknown monitor
Unknown monitor
In:    serial
Out:   serial
Err:   serial
Net:   eth0: ethernet@1c50000
starting USB...
Bus usb@1c14000: USB EHCI 1.00
Bus usb@1c14400: USB OHCI 1.0
Bus usb@1c1c000: USB EHCI 1.00
scanning bus usb@1c14000 for devices... 1 USB Device(s) found
scanning bus usb@1c14400 for devices... 1 USB Device(s) found
scanning bus usb@1c1c000 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
Scanning disk mmc@1c0f000.blk...                                                                                                                     
Found 3 disks                                                                                                                                        
No EFI system partition                                                                                                                              
Unknown monitor                                                                                                                                      
DE is present but not probed                                                                                                                         
BootOrder not defined                                                                                                                                
EFI boot manager: Cannot load any image                                                                                                              
Found EFI removable media binary efi/boot/bootarm.efi                                                                                                
119952 bytes read in 7 ms (16.3 MiB/s)                                                                                                               
libfdt fdt_check_header(): FDT_ERR_BADMAGIC                                                                                                          
DE is present but not probed                                                                                                                         
Booting /efi\boot\bootarm.efi                                                                                                                        
disks: sd0*                                                                                                                                          
>> OpenBSD/armv7 BOOTARM 1.20                                                                                                                        
boot>

A partir de aquí el procedimiento de instalación es el ordinario, tal y como se explica en la guía de instalación de OpenBSD. Ten en cuenta que como el soporte Ethernet no funciona a día de hoy necesitarás conectar a internet a través de la interfaz urtwn(4).

dmesg

OpenBSD 7.3-current (GENERIC) #121: Tue Apr 18 14:35:57 MDT 2023
    deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/GENERIC
real mem  = 954228736 (910MB)
avail mem = 926556160 (883MB)
random: good seed from bootblocks
mainbus0 at root: Lamobo R1
cpu0 at mainbus0 mpidr 0: ARM Cortex-A7 r0p4
cpu0: 32KB 32b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
cpu0: 256KB 64b/line 8-way L2 cache
cortex0 at mainbus0
psci0 at mainbus0: PSCI 0.0
sxiccmu0 at mainbus0
agtimer0 at mainbus0: 24000 kHz
simplebus0 at mainbus0: "soc"
sxiccmu1 at simplebus0
sxipio0 at simplebus0: 175 pins
sxirtc0 at simplebus0
sxisid0 at simplebus0
ampintc0 at simplebus0 nirq 160, ncpu 2: "interrupt-controller"
"system-control" at simplebus0 not configured
"interrupt-controller" at simplebus0 not configured
"dma-controller" at simplebus0 not configured
"spi" at simplebus0 not configured
"lcd-controller" at simplebus0 not configured
"lcd-controller" at simplebus0 not configured
"video-codec" at simplebus0 not configured
sximmc0 at simplebus0
sdmmc0 at sximmc0: 4-bit, sd high-speed, mmc high-speed, dma
"usb" at simplebus0 not configured
"phy" at simplebus0 not configured
ehci0 at simplebus0
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1
ohci0 at simplebus0: version 1.0
"crypto-engine" at simplebus0 not configured
"hdmi" at simplebus0 not configured
sxiahci0 at simplebus0: AHCI 1.1
scsibus0 at sxiahci0: 32 targets
ehci1 at simplebus0
usb1 at ehci1: USB revision 2.0
uhub1 at usb1 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1
"timer" at simplebus0 not configured
sxidog0 at simplebus0
"ir" at simplebus0 not configured
"codec" at simplebus0 not configured
sxits0 at simplebus0
com0 at simplebus0: dw16550
com0: console
com1 at simplebus0: dw16550
com2 at simplebus0: dw16550
sxitwi0 at simplebus0
iic0 at sxitwi0
axppmic0 at iic0 addr 0x34: AXP209
sxitwi1 at simplebus0
iic1 at sxitwi1
"gpu" at simplebus0 not configured
dwge0 at simplebus0: rev 0x00, address xx:xx:xx:xx:xx:xx
ukphy0 at dwge0 phy 0: Generic IEEE 802.3u media interface, rev. 4: OUI 0x00d897, model 0x0032
"hstimer" at simplebus0 not configured
"display-frontend" at simplebus0 not configured
"display-frontend" at simplebus0 not configured
"display-backend" at simplebus0 not configured
"display-backend" at simplebus0 not configured
gpio0 at sxipio0: 32 pins
gpio1 at sxipio0: 32 pins
gpio2 at sxipio0: 32 pins
gpio3 at sxipio0: 32 pins
gpio4 at sxipio0: 32 pins
gpio5 at sxipio0: 32 pins
gpio6 at sxipio0: 32 pins
gpio7 at sxipio0: 32 pins
gpio8 at sxipio0: 32 pins
usb2 at ohci0: USB revision 1.0
uhub2 at usb2 configuration 1 interface 0 "Generic OHCI root hub" rev 1.00/1.00 addr 1
scsibus1 at sdmmc0: 2 targets, initiator 0
sd0 at scsibus1 targ 1 lun 0:  removable
sd0: 59664MB, 512 bytes/sector, 122191872 sectors
urtwn0 at uhub1 port 1 configuration 1 interface 0 "Realtek 802.11n WLAN Adapter" rev 2.00/2.00 addr 2
urtwn0: MAC/BB RTL8192CU, RF 6052 2T2R, address xx:xx:xx:xx:xx:xx
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
bootfile: sd0a:/bsd
boot device: sd0
root on sd0a (d07e11097cc24149.a) swap on sd0b dump on sd0b

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org