How to Turn a Tiny SBC into a Fully Functional Home Router

Md. Tanjil Bhuiyan
4 min readSep 16, 2024

--

Most homes today rely on routers to connect to the internet, which combine an access point, switch, and router into one compact device. These all-in-one routers are popular because they provide Wi-Fi, handle network switching, and, in some cases, even support mesh networks for wider coverage.

However, they have several drawbacks. Many receive infrequent or no updates, leaving them vulnerable to bugs and security issues. They also offer limited customization and tend to have low processing power, leading to performance issues. Worse yet, many are filled with vulnerabilities that expose your network to potential attacks.

With these limitations in mind, I decided to build my own DIY router. After doing some research, I purchased a small ARM-based SBC from Taobao, had it shipped to my country, and got to work. My goal was to create a custom router that would offer better performance, more control, and regular updates — something that the typical consumer-grade routers couldn’t provide.

I went with the Orange Pi R1 Plus LTS for my DIY router project. Here’s the link to the device: [Orange Pi R1 Plus LTS](http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-R1-Plus-LTS-With-Metal-Case.html). It features a powerful A53 RK3328 SoC, 1GB of LPDDR3 RAM, two Gigabit ports for LAN and WAN, and a Type-C port for power. The metal case also acts as a heatsink, helping to keep the device cool during operation.

Orange Pi R1 Plus LTS

While they provide an OpenWRT image on their Google Drive, it’s a bit outdated. Instead, I prefer using the OpenWRT Firmware Selector, which is an excellent tool. You simply enter your device name and version, and it gives you the most up-to-date image download link. It’s quick and easy, and ensures you’re running the latest firmware.

https://firmware-selector.openwrt.org

Now, all you need to do is download the OpenWRT image, either in squashfs or ext4 format, and use Balena Etcher to write it to a microSD card. Once that’s done, just pop the SD card into the Orange Pi, boot it up, and you’re good to go. You can access the router’s dashboard at [http://192.168.1.1](http://192.168.1.1), configure it to your needs, and voilà — you’ve got yourself a custom router!

Sounds simple, right?

Now, here’s where the rough part comes in. It wasn’t as simple as it seemed at first. Before buying, I had to carefully research compatible devices, but even after that, I ran into issues. When I ran a speed test, I noticed huge fluctuations compared to my old router, and I couldn’t figure out why.

So, I started troubleshooting and found that the `eth0` interface wasn’t working properly. There’s even an ongoing GitHub issue about it: [OpenWRT Issue #13759](https://github.com/openwrt/openwrt/issues/13759). Some users were compiling their own firmware, others were backporting patches, and a few were pushing fixes to the mainline kernel. It was a messy situation, and at that point, I had a custom router, but it wasn’t performing the way I needed it to. I was really dissatisfied.

That’s when I discovered ImmortalWRT: [ImmortalWRT Firmware Selector](https://firmware-selector.immortalwrt.org/). It’s a fork of OpenWRT with a lot of patches specifically for devices like mine that are popular in China. Amazingly, it worked as expected, and I was finally able to get my custom router up and running smoothly. I was thrilled — both because my router was working and because this experience reminded me of the power of open-source software. Even when OpenWRT didn’t work out, another open-source fork did, and that’s what makes OSS so incredible.

So, do you need a custom router? Not necessarily. This was more of a hobby project for me. I’m still using a Wi-Fi 6 TP-Link router as my access point, and for most people, you don’t need to go through all the trouble of building a custom router. However, if you have the time and patience, you can create something tailored exactly to your needs.

Over the past few months, I’ve done a lot of experimenting with my custom router. I’ve used it as a WireGuard VPN client to route all my traffic through a VPN to bypass restrictions. I’ve also added a statistics package to monitor network usage, and even set up Cloudflared to create a tunnel for exposing my private services or applications to the outside world without opening any ports or exposing a public IP. The customization options are nearly endless.

If you’re interested in a similar experience, you don’t have to buy a device like mine. Many existing routers support OpenWRT, and you can find a list of compatible devices on the firmware selector page. Just be cautious when flashing new firmware, as there’s a risk of bricking the device. But for those willing to take the plunge, the rewards can be well worth it.

Thanks for reading through this long article!

--

--

Md. Tanjil Bhuiyan
Md. Tanjil Bhuiyan

Written by Md. Tanjil Bhuiyan

DevOps Engineer | Passionate about Cloud Computing , Automation and Containerization

No responses yet