flak rss random

OpenBSD on EdgeRouter Lite

Having burned out both the original flash drive and its replacement, I can’t recommend using an ERL in a serious setting.

The Ubiquiti EdgeRouter Lite machine is an interesting alternative for a light router/gateway. It’s cheap, small, low power, and includes three network interfaces. Almost like it’s purpose built to be a router. The OpenBSD octeon port supports the ERL. Note that the EdgeRouter X is a quite different machine and not supported.

The web page and INSTALL.octeon file have more extensive notes, but sometimes it can be too much info. Here’s the short version.


On the network side, you need a DHCP and tftpd server, with the octeon bsd.rd in /tftproot.

You’ll need a serial cable like this one. The port is set to 115200, so to connect you run something like cu -l /dev/cuaU0 -s 115200. Plug it in, watch it boot, smash enter a few times to halt the boot process. First command: dhcp to get an IP. Then tftpboot 0 bsd.rd to load the kernel over the network. And finally bootoctlinux to actually run the kernel. This will take you to the installer.

The ERL, like other u-boot systems, doesn’t have an OpenBSD bootloader. Instead, the kernel is loaded from an MSDOS FAT partition. Keep this in mind during disk setup. The installer should set this up for you, or you can use fdisk to change the existing MBR and change the main partition type to A6 (OpenBSD). Space is a little tight, so I skipped the normal disklabel scheme and just made a single large root partition.

Installing the sets and working through the rest of the installer is pretty regular.

After rebooting, u-boot needs some touching up to boot OpenBSD by default. setenv old_bootcmd ${bootcmd} saves the old boot command, not that you’re likely to need it after wiping the disk. Now for the real magic.

setenv bootcmd 'fatload usb 0 $loadaddr bsd; bootoctlinux rootdev=/dev/sd0'

Note that we’re loading from usb, and also setting the root device to sd0. Now you can set a boot timeout with setenv bootdelay 5 if desired, and save everything with saveenv. Reboot and OpenBSD should start normally.


The ERL is an octeon machine, not a high octane machine. It does a pretty good job pushing packets around, certainly doesn’t struggle at this task for my network speeds, but it’s not the kind of thing you’d want to use as an IPsec gateway or more sophisticated proxy. Compiling software is almost unbelievably slow, even compared to an Atom machine.

The onboard USB stick is or was somewhat low quality. When it gets hot, as tends to happen inside the fanless case, it starts reporting errors and generally misbehaving. Many users, running the stock Ubiquiti software, have reported this on various forums. Some newer revisions of the hardware may or may not have fixed this. It’s hard to tell. The fix is to replace it with something small. I used a $7 16GB SanDisk Cruzer. On the bright side, if you’re installing onto a new system, it’s easy to dd miniroot.fs onto the USB stick, replace and reboot. No fussing with a netboot environment and easy to swap back if you want the stock software. Something to consider.

The power draw is consistently about 8 watts, measured over a period of one week.

The dwctwo USB driver is still a little raw. If it gets overwhelmed, you’ll get mutex locking panics. Fixable, but not fixed yet. (The driver was ported to OpenBSD, and some of the finer points of interrupts and recursion are apparently different.) In normal usage, this has not been a problem, but trying to build some ports and doing a cvs checkout at the same time didn’t fare so well.

After deciding I didn’t need my new home router to also be a build server, it’s been quite stable. It’s now the primary DHCP and DNS (unbound) server for my network, and pf NAT gateway to the world.

There’s no onboard clock, so you’ll need ntpd to keep the time straght.


Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2016 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 6.0-beta (GENERIC) #5: Wed Jul  6 03:40:21 UTC 2016
real mem = 536870912 (512MB)
avail mem = 524288000 (500MB)
warning: no entropy supplied by boot loader
mainbus0 at root
cpu0 at mainbus0: Cavium OCTEON CPU rev 0.1 500 MHz, Software FP emulation
cpu0: cache L1-I 32KB 4 way D 8KB 64 way, L2 128KB 8 way
clock0 at mainbus0: int 5
iobus0 at mainbus0
dwctwo0 at iobus0 base 0x1180068000000 irq 56
usb0 at dwctwo0: USB revision 2.0
uhub0 at usb0 "Octeon DWC2 root hub" rev 2.00/1.00 addr 1
octrng0 at iobus0 base 0x1400000000000 irq 0
cn30xxgmx0 at iobus0 base 0x1180008000000
cnmac0 at cn30xxgmx0: RGMII, address dc:9f:db:28:cc:68
atphy0 at cnmac0 phy 7: F1 10/100/1000 PHY, rev. 2
cnmac1 at cn30xxgmx0: RGMII, address dc:9f:db:28:cc:69
atphy1 at cnmac1 phy 6: F1 10/100/1000 PHY, rev. 2
cnmac2 at cn30xxgmx0: RGMII, address dc:9f:db:28:cc:6a
atphy2 at cnmac2 phy 5: F1 10/100/1000 PHY, rev. 2
uartbus0 at mainbus0
com0 at uartbus0 base 0x1180000000800 irq 34: ns16550a, 64 byte fifo
com0: console
com1 at uartbus0 base 0x1180000000c00 irq 35: ns16550a, 64 byte fifo
/dev/ksyms: Symbol table not valid.
umass0 at uhub0 port 1 configuration 1 interface 0 "SanDisk Cruzer Fit" rev 2.00/1.27 addr 2
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, initiator 0
sd0 at scsibus0 targ 1 lun 0: <SanDisk, Cruzer Fit, 1.27> SCSI4 0/direct removable serial.07815571010521122475
sd0: 14907MB, 512 bytes/sector, 30529536 sectors
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
boot device: sd0
root on sd0a (be749846b5a60751.a) swap on sd0b dump on sd0b

Posted 18 Aug 2015 12:03 by tedu Updated: 28 Nov 2018 23:13
Tagged: computers gadget openbsd