I have been using TP-Link TD-W8970 as my primary router since 2014.
Then, a pair of weeks ago, its modem died because of a storm. Also, the connected Ethernet ports ceased working. Luckily, the lightning did not propagate over the LAN; otherwise, damages would have been thousands of euros.
The hell of DSL users
The TD-W8970 was one of the few devices based on the Lantiq platform, the only one whose xDSL modem is supported by OpenWrt.
Most of the home networking appliances are based on the Broadcom platform. Their modem employs proprietary drivers that work only with ancient and insecure Linux kernels. And in many cases, with OpenWrt, you also lose some WiFi features.
The usual workaround is to rely on two routers. One in bridge mode, i.e., as a pure modem, connected with another one running OpenWrt. I have never liked it because it is much less clean: more devices, more heat, more power consumption, less integrated, etc… But now, I surrendered to it.
On the plus side, this gave me much more freedom in the TD-W8970 replacement choice.
The infernal week with the Raspberry
Since the release of the original Raspberry Pi, more and more single-board computers have become available. Each one with higher performances and at a lower cost. Think, for instance, to all the various AllWinner H3-based boards.
But routers remain super-specialized devices, with powerless MIPS processors, RAM in the order of hundreds of MBs, or even less, and flash memories of a few tens of MBs. Therefore, relatively speaking, they are much more expensive than SBCs.
So, since I was not using my Pi 3B, I tried to use it as a router.
I bought a USB Ethernet dongle (for far too much money, more on that later), a USB WiFi 5GHz adapter, and the umpteenth gigabit Ethernet switch.
How is USB 5GHz WiFi on Linux in 2021?
I tried a similar experiment almost 5 years ago. The situation is somewhat similar but, luckily, improved.
There are still only two chip vendors: MediaTek and Realtek. And Realtek drivers are still non-standard. The company still releases an update only every now and then, and the community does its best to keep them usable.
With MediaTek, at that time, I could not use that adapter as an access point. Now their drivers are mainlined, they are much better supported, and I could do everything I needed. They even had surprisingly good performances: almost 300Mbps in iperf3
, between my desktop (set as AP) and my Pixel 4a.
So, why infernal?
I thought I could create both a 2,4GHz and a 5GHz network, at least from some docs I found on the net. That turned out false, so I had to rely on Pi’s integrated WiFi for the lower frequency.
On the other hand, the 3B’s internal WiFi is just not made for this. I could connect to it only from 3-4 meters, and my phone continuously switched to mobile data.
The Cudy WR2100 to the rescue
My network equipment is at the center of the house and close to some junction boxes. That is the best both for Ethernet and for wireless.
Or it would be if only that room did not have load-bearing walls in reinforced concrete. Moving everything just a few meters would be too demanding, but I was about to do it.
Then I found a lightning deal on Amazon for the Cudy WR2100, I ordered it, and I fell in love with it.
From a hardware point of view, it is an entry-level device. It is based on MediaTek architecture and is equipped with a dual-core 880MHz MIPS CPU, 128MB of RAM, and 16MB of flash. Sadly, it does not have USB ports.
However, from the software point of view, it is super impressive.
Its original software must be based on OpenWrt. Its web UI has even luci
in its URL, though it is a skin, not the usual OpenWrt interface. But it is still packed with features: WireGuard, DNS-over-TLS, lots of DDNS providers (including OVH), and many, many more. Amazing!
The official OpenWrt
But that is not all, folks! Cudy even releases a standard OpenWrt, which can be installed through the administration panel without any hack 🤩️!
And there are also official builds from openwrt.org, but they use a slightly different string to identify the board. For this reason, the stock firmware does not accept them, but Cudy’s OpenWrt can be forced to 😏️.
⚠️ Of course, I do not take any responsibility in case of any issue with this procedure. If you decide to do that, it is just your own choice. ⚠️
Just in case, the manufacturer provides a recovery image and a TFTP server (for Windows) in the same zip as their OpenWrt build. I thought they were overly cautious, but I had to change my mind when I needed it 😂️. I tried to customize the image before flashing it, but it did not work.
Anyway, by restoring the OEM software and repeating the steps I wrote, I succeeded. The only caveat is that opkg
could not work with wolfSSL, and I had to switch to OpenSSL.
The performances
So far, the router is working perfectly! It can cover the whole house, and the 5GHz reaches every corner of my ground floor. At 7-8m from the router, I managed to run iperf3
at more than 400Mbps between my Pixel 4a and my wired NAS.
If you try to access any service from within your LAN through your public IP, all your packages will be NAT’ted, and the router will likely be the bottleneck. The TD-W8970 was a tight one for sure: it allowed like 6-7MB/s. The WR2100 is much better: I managed to download via HTTP at more than 50MB/s. For reference: when using the private IP on the LAN, I saturate Gigabit Ethernet, i.e., 112MB/s.
Is everything good?
Actually: no. We have an old computer with an Intel Centrino-N 100, so a prehistoric card. It just could not connect to it, and, eventually, I had to replace it with a 2008 Atheros card I bought from a local guy for 6€.
The Wii could not connect to it, as well. I sorta expected it; I tried only to confirm my suspicion. I use the Wii very, very rarely, and I have never used its (limited) online capabilities. It was the handiest 802.11g device I had, so I wanted to see if I managed to run compatibility/legacy settings on the access point.
Another problem is that one time the router rebooted without any reason. However, it happened only once, in more than a week, so I am not too worried for the moment.
Finally, about USB: this device has 16MB of flash, which is enough now, but may not be tomorrow. USB can save the day with extroot (it did, with the TP-Link). For example, that OpenSSL thing took some hundreds of kB.
Anyway, I do not consider these issues too serious. Quite the opposite, I am immensely excited about this device, especially of this open source-friendliness.
The economic point of view
[Prices at the end of September 2021]
I was quite upset after the incident. I had to rely on the horrible and unfunctional ISP modem, which I was forced to pay almost 240€ in four years. So I just wanted to find a quick solution to that situation, and I rushed too much the first order.
I spent 19€ on the 8-port gigabit switch: it was 3€ off, and it is the only device I kept from that order, although it is my fourth gigabit switch.
Then, I spent 9,99€ on the USB 2.0 to Fast Ethernet adapter. It was expensive, considering that with 11,99€ I could have bought a 3.0 Gigabit adapter. Although capped by Pi’s USB 2.0, it would have better performances than a 100Mbps one. Still, it would have been okay for my needs, so I would have kept it if I continued with the Raspberry as a router. I actually do not like returning items.
Finally, the first order included a Cudy USB 3.0 WiFi AC adapter for 24,69€ (instead of 25,99€). It is a Realtek device, which worked on my Debian-based PC after installing the drivers with dkms
. But repeating the procedure on OpenWrt would have been difficult.
So I returned it immediately and bought a MediaTek dongle instead. It cost 24,99€, but it included a USB 3.0 extender, which would have been very handy. These USB devices usually are voluminous; quite a problem with narrow USB hubs like the Pi one.
This was the third return to Amazon in my life. The first one was literally the opposite: I exchanged a MediaTek adapter for a Realtek one.
The WR2100 cost 33,91€ (about the same as the adapters together), instead of 39€, but eventually I returned all the USB stuff. However, the discount was canceled by the new WiFi card.
Bonus: the power consumption point of view
I have a power meter, and I have been monitoring the solutions. For the VDSL2, I am using a Technicolor TG789vac v2, which consumes 5,5-6W alone.
By adding the Raspberry and the switch, power raised to about 13W.
The Technicolor and the WR2100 arrive at 10-11W. Probably, a single device solution would be more efficient. And these appliances are 24 hours on, so they add up to the consumption rapidly.
I do not remember TD-W8970 consumption exactly; I think it was about the same, probably a few lesser.
Conclusions
If you have a VDSL, an ADSL, or any other phone-based Internet connection, it is impossible to find new devices which can run OpenWrt with the modem functionality. The solution is linking two routers in a cascade. Almost all modem routers can be set to bridge mode, or you can do a double NAT at worst.
And if you search online stores, you can easily find OpenWrt-friendly routers with modern features without spending too much. I found a Cudy WR2100, but there were more, and I hope this is the start of a new good trend.