It’s been a while since I’ve done something really… EPIC. Like, REALLY EPIC. And that doesn’t sound nice, so I decided to pick another router and make it EPIC.
This time I picked a nice Mercury MW4530R, which is known to be supported by OpenWRT trunk (No bloody Openwrt patching/hacking this time, so no pain in rebasing a patchset on every update), and for 60$ is a deal. So, I got the hardware, and set down to work. Since a few people asked this time I even took the time to record a small video of the whole build. My thanks fly out to Dmitry Zganyaiko for his awesome music.
So the stock specs are:
- 128MiB DDR2 SDRAM (BGA. Still can be upgraded, by how much? Need to look through uboot sources!)
- 8 MiB SPI Flash (with a footprint for 16MiB flash! Yay! No more wireporn!)
- 4PIN 2.54 inpopulated place for UART.
- GBit ethernets FTW
- 2.4Ghz & 5.0Ghz dual wireless
- 12V 1500mA Power brick
Okay, let’s settle down with the not so big upgrade plan:
- Stock shit -> OpenWRT
- 8MiB SPI Flash -> 16MiB SPI flash
- USB Hub
- USB WiFi dongle for cjdns.
- A nice 750GiB USB HDD for storage
- Better power brick
- 4G modem for the internet failover connection
- Extra 3A DC-DC for all the power-hungry USB device
- Spare antenna for nrf24l01 module (planned, PCBs are on the way by Russian SlowPost ™
- Custom acrylic cover!
First thing that worried me was the USB power circuit. Each HDD can eat up up to 500mA, or even more during spinup. The stock hardware had a nice 2A stepdown, that turned out to be 1.2A in reality (Looks like the inductor in the DC-DC wasn’t specced for such a current). Anyway, due to the voltage drop on the wires, USB HDD won’t spin up when connected via hub.
In the end I decided to rewire the hub in a way when router’s internal DC-DC powers the hub IC itself and one of the ports, while the three other ports have a separate 5.3V DC-DC, that I put into the router. The 0.3 volts compensate any voltage drops and provide smoth operation even at peak loads.
Next goes the flash. Since I planned on running quite a bunch of stuff there I needed more flash. And I didn’t want to use any external overlay. It makes upgrading the kernel a headache, and the kernel is a part that SHOULD be upgraded once in a while, unless you want to be pwned with some exploit (Okay, just being paranoid here, relax). Anyway, a nice and shiny 16MiB SPI Flash chip did the trick.
The good people at our local robotics lab helped me out with the lasercut acrylic cover, since I don’t have a laser cutter of my own. Once assembled I had a nice place to setup all the USB stuff. I added an external 750 GB HDD, an LTE YOTA Modem (I ditched the plastic ages ago and added a heatsink. This thing is running really hot when you download something big). Finally, I also added a nice USB wireless dongle, so that I can run CJDNS and wifi client along with my usual home AP.
There’s also a planned nrf24l01 usb board, to interface with some home automation, but alas our Russian SlowPost Service ™ is delaying the PCBs as usual… So I just added an extra SMA antenna making the whole device look really alien (especially when the blue backlight of the Yota modem lights it up). I’ll hook it there once the board arrives.
Wonder if there’ll be any crosstalk with THAT many antennas!
The software stack I’m running there is pretty much usual. An OpenWRT-powered firmware with nginx, OpenVPN client, cjdns, nfs server, my own fork of melissa jabber bot, and the rest of the stuff not worth mentioning.
Nginx is the very core the http traffic routing. I’m using the external HDD to serve my own debian repos with updates for my ARM boards (mostly kernel upgrades and a few packages with homebrew stuff). Nginx also provides vhost-based http proxy to a few ARM boards in my internal network. (The blog you are currently reading is running on a wordpress installation on an odroid-x2, btw)
The worst part of this whole setup was the failover to the 4G modem I’m still working on. Besides switching to the yota modem, I need to automate some stuff on their website, but it still needs some love.
Well, that’s it. Checkout the photos here.