The OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application(…)
Yeeeah baby! good soup!
Have you ever hated your wireless router so much that you wanted to smash it to the wall because it is just a piece of useless shit?
Well, I have. Because, let's face it, Internet provider's routers are pretty limited and might freeze with more than 5 connected devices. So you opt to buy a more powerfull with a better processor and more downloadable ram (yes, downloading more ram is still a thing), and yes, the vendor router performs better, but it is still just a router, you are limited to the vendor software (which is close to nothing), it freezes from time to time and you still lag when gaming online!
OpenWrt, as you previously read, is a filesystem which can replace vendor filesystem and comes with a package management that will allow you to install applications to expand the functionality of the router. This is like uninstalling Windows from your PC and install Linux (or doing it the wrong way, installing windows on a Mac…. Why?).
Also, OpenWrt is more secure and stable than vendor systems due to continuous updates, since its code is open to the community and developers. This also means that it can support more and more devices in the future.
At the end, this is the goal:
- Stable internet connection,
- Router stability for more device connections,
- Network security and
- Additional functionalities.
You have to be aware that if your going to modify something on your devices, you need to have at least basic knowledge of what you attempt to do, because you will void the device warranty or brick it and make it useless.
OpenWrt officially supports a wide variety of devices (see the Table of Hardware for Firmware downloads) and each of them comes with specific instructions depending on the model and version, but most of the times you will just need to:
- Download and install the OpenWrt Factory Firmware through the WebUI of the vendor using the “Firmware Upgrade” option.
- Flash a "…sysupgrade.bin" specific for your device.
It might sound complicated at first sight, but there are plenty of tutorials online and a Forum where you can look for help.
Popular devices offer the most help, available tutorials and sometimes the easiest installation methods. So which routers are the best choices to buy?
How to choose?
Well, recommended specs are:
- At least 16 MB of flash memory and
- 128MB of RAM
Then you can focus on other needs such as:
- How many USB ports does it have? are they 3.0?
- Does it have 5G antenna or just 2.4G? are both antennas supported?
Routers from Linksys, TP-Link, Netgear, ASUS or Xiaomi are good options.
Other elaborated alternatives
What I mean with elaborated it that you need another more extra steps than the usual OpenWrt installation in a built-in router.
The great thing of OpenWrt is that it is not limited only to routers. It can also be installed in PCs as it has x86/64 support and have you heard of Raspberry Pi? Well yes, you can install OpenWrt on a Raspberry Pi!
Of course the drawback is that you will lose WiFi capabilities but you can solve it with a wireless Access Point (AP) like TP-Link, Cisco, blah blah and a USB 3.0 to Gigabit Ethernet adapter.
Now what? Give me more steroids!
Once you successfully installed OpenWrt, you have so many options to install through LuCI, the web interface of OpenWrt:
Ad Blocking: This will not block ads from YouTube App, but will block most of the ads when surfing the net (what a 90's expression!) and will speed internet navigation on your devices. It can also block trackers and other abuse sites, like your SmartTV annoying need to send information and reach vendor's website.
- VPN Client and Server: This is important if you want privacy and/or bypass firewalls. The router will encrypt all the internet traffic of all the devices connected to the router. Also, while setting a VPN server you will be able to connect securely to your home network while you are away and perform task remotely.
- Download Manager: Achieved through aria2 and the webui-aria2, you can download files directly to the router, torrent directly in the router! Just load the torrent in the webui-aria2, poweroff your laptop/PC and go to sleep, all your Linux ISOs torrents will continue to download in the router.
- File Sharing: You can set a Samba server or ftp, to share files among your devices. Remember those ISOs you downloaded? This is the way to copy them into your devices. Or if you installed OpenWrt on a PC, you could create a own Network-attached storage (NAS). The simplest and lightweight implementation of Samba for OpenWrt is ksmbd through its luci app.
- Media Server: Maybe you downloaded some ISOs on your router, that you want to watch immediately on your SmartTV. You can achieve this by setting a DLNA Media Server (with the MiniDLNA implementation) in order to allow the ISOs be visble to the SmartTV connected to the router.
- SQM (Smart Queue Management): Or in other words, your ally against Bufferbloat and best partner to improve streaming, general internet navigation and reduce latency for gaming online. SQM is heavily CPU-based, so if you need +500mbps speeds, you better consider a x86/64 router and some APs. You can also do QoS over Nftables for User Bandwidth Management.
- Virtualization: Since the OpenWrt 20.xx release, you can run Docker containers on OpenWrt, at least for the x86/64 version, because virtualization requires more power than a router can offer. But just imagine this: You have your x86/64 OpenWrt with some APs, a few HDD with some Terabytes for NAS where you download your Linux ISOs and Plex installed in a Docker container to stream some ISOs to your SmartTV. Oooh yeah baby.
- Theming: It might not be important to some people, but it is always pleasant to have a nice theme. Some examples are Material and Argon.
The above described is just a tip of the iceberg. There are a lot of reasons to use OpenWrt, some more are:
- DNS encryption, DNS hijacking and access to several DDNS services (not only the provided for the vendor of your router).
- Create a guest WiFi allowing access to internet, but not your personal devices.
- Parental control.
- Add webcams and interact with IoT devices for home automation.
There are over 3000 steroids for OpenWrt. You can try and find the ones suitable for your needs and remember: it's Open Source, it's Linux and it's free (but if you are able to donate to the project, please do).
- I mean, OpenWrt team is still working on the project so better and better improvements might come.
- If you already have a router, it might not be officially supported due to proprietary drivers, but since OpenWrt code in open to everyone, there are some forks of the project that might have support for your device such as X-Wrt which is based on the Snapshots of OpenWrt (the most updated version). Another and more popular fork is Lean's OpenWrt (which at the time this entry is posted, it is compiling the 21.xx version of OpenWrt). Don't be afraid of Chinese language, grab a translator, be a man and do not fear what you don't understand.
- There are other alternatives to OpenWrt like: DD-WRT, FreshTomato and Gargoyle, but I personally recommend OpenWrt.
- If you are thinking about a x86/64 device + APs combo, you may want to take a look on OPNsense and pfSense projects. They are more Firewall-enterprise oriented but I have seen many post of people using them for homelab.
As for me, I use a X-Wrt build on a ASUS router that is not officially supported by OpenWrt in which I injected the following steroids:
- Argon themed,
- Ad Blocking with AdGuard Home,
- aria2 and webui-aria2,
- ksmbd and ftp for file sharing and
I think this is long enough. I might write about Plex and File Sharing on separate entries (and maybe how to build your custom X-Wrt/OpenWrt).
If you found this content useful, please support me: