- Choosing the hardware (this part)
- Bringing up the network interfaces (part 2)
- Setting-up a 802.11ac (5Ghz) access-point (part 3)
I?ve spent the last decade buying cheap networking hardware and upgrading them to DD-WRT in order to get back $500+ worth of ?features? that have been expunged from the Linux kernel on which the stock firmwares were based on.
Despite unstable builds, unfixed bugs and the controversy about it, DD-WRT was still a better choice than stock firmwares. But nowadays, decent hardware is cheaper than ever and Linux is the new fad among the DIY community (I?m looking at you, Mr Raspberry), so why not making your own, tailor-made, wireless router once and for all?
Among the important pieces of hardware you?ll have to pick, you must first choose your platform: x86 or ARM? I?m not going to explain the key differences in details since that information is available, but long story short: the former have better performance while the latter is all about being cost and power effective. Whereas Raspberry Pi boards (or alike) are extremely cheap and probably have more horsepower than most wireless routers you?ll find on commercial off-the-shelf products, keep in mind that x86-based platforms are widespreads and benefits of well-standardized form factors and extension ports.
Of course, the most important piece of hardware is the wireless chipset: both 802.11n (2.4Ghz) and 802.11ac (5Ghz) are de-facto standards today, but choosing a wireless device for Linux might be a daunting task, even more if AP mode must be supported. Long story short again: Atheros chipsets are the way to go for a painless road. Both ath9k and ath20k drivers are well maintained, and you?ll easily find those chipsets in USB and/or mini-PCIe shape depending on your available ports.
While a single NIC interface is the minimum requirement, RAM and storage may be freely chosen according to your needs.
Bill of Material
Making some personal trade-off on price and power-consumption, I chose an x86-based platform to benefit of a modular, upgradable (and relatively beefy) setup.
If you?re not going to pick an ARM platform, be sure to go fanless.
- Gigabyte GA-J1900N-D3V (J1900 Quad-Core 2Ghz Celeron, dual NIC)
- Airetos AEX-QCA9880-NX (dual band 802.11ac, MIMO)
- 4GB RAM (DDR3-LP, 1333Mhz, 1.35v)
- mPCIe Extender
- MX500 mini-ITX case
- 3 x 6dBi RP-SMA Dual Band Antenna + RP-SMA Pigtail Cable
- Spare 2.5? HDD
The case is spacious, and have pre-cut holes for the AC/DC plug. The motherboard, RAM and the Pico-PSU installation went smoothly:
The trickiest part has been the mini-PCIe WiFi card since the board only supports half-sized cards: here come the mPCIe Extender to the rescue. I used a 20cm FFC cable (included) to connect both sides of the adapter and fixed the mini-PCIe side to the chassis using some double sided tape.
Luckily, the case comes with 3 pre-cut holes for the antennas. Here?s the final result:
The next part will show you how to setup your network interfaces and enable a minimal 802.11n access-point.