OpenWRT is an aftermarket firmware for consumer routers. It's open source and very powerful.
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. For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.
If you have the opportunity to purchase some new or refurbished hardware, you absolutely need to consult the supported devices table and do your choices.
I suggest you choose a device with more than one ethernet port (WAN or LAN doesnt matter), since you never know when plugging in a cable might be useful, and one port will always be required for the connection to the wired backbone.
Be careful of the notes, since sometimes different models can be sold with the same brand/part number even if they are not compatible.
I have selected a Netgear R6220 which is a nice 2.4Ghz/5Ghz WiFi router/Access Point with 4 LAN and 1 WAN gigabit ethernet ports. It's very versatile and quite capable. It comes in different models. with or without USB port. It's not available to buy new anymore, but i managed to buy five of them and they have been going rock solid for many years.
Follow the instructions on the OpenWRT device page (like this one).
Be patient, sometime it can take a bit to flash and reboot. Make use of the OpenWRT support forums if you need extra support.
Before continuing, you need to have worked out the static IP address of this OpenWRT device and it's hostname. For more details regarding IP subnets and the home network topology, see this page.
When your device reboots, it will have an hardcoded 192.168.0.1 IP address and will have DHCP enabled. You should at this point, plug a direct ethernet cable to your router, let your PC get it's dynamic IP and fire up your browser for the initial configuration.
At this point you need to login (default username and password are “root” and “” empty password), then go to network configuration and change the device static IP to the one that you assigned to this device.
The next step is to configure your WiFi here.