Wireless Client Bridge

2019.08.16

Nathan Thompson

Originally Posted 2013.08.19

My attempt to get an old Linksys WRT54G-TM to function as a wireless client bridge has been fraught with problems. This configuration needs to be:

  • Reliable
  • Compatible with WPA2.
  • Easy to manage.


Unfortunately, DD-WRT seemed to work fine initially, but the WRT54G-TM would eventually stop bridging. Unplugging the Ethernet cable from client to bridge would not work. Rebooting client would not work. Rebooting my mobile data WiFi hotspot (Internet access point for my network) would not work. Tested multiple clients connected to the bridge. The only solution was to reboot bridge.

Let The Flashing Commence

If not Tomato, perhaps Gargoyle

Next, I gave Tomato a go. Installation went well as a flash from DD-WRT. Might have worked fine, but I will never know since Tomato did not support WPA2 in bridge mode.{1} Oh well. Probably should have done a bit more research before flashing. Finally, I remembered Gargoyle. Reset the Tomato installation, NVRAM reset, and flashed straight into Gargoyle. Changed login password and time zone, and the next page prompted me to configure WAN/LAN/Wireless and a few options later I have what seems like a working bridge.


Without further testing, I will not know for sure if the fix will stick, but if nothing else, Gargoyle is probably the most user friendly of alternate firmwares I have used (DD-WRT, Tomato, OpenWrt*, and Gargoyle). Tomato was pretty straightforward as well, but maybe a step back from Gargoyle. DDWRT is pretty easy, but not as slick, in my opinion as those two. OpenWrt is very powerful, but seems like the most technical of the bunch when it comes to presentation.


*I run a port of OpenWrt by dony71 (scroll down to see his post) on my current router. Yes, the link resolves to a DD-WRT forum link, but that is where I first read about the OpenWrt post. The Vizio XWR100 router has cripplingly buggy firmware that now runs much better after the flash to Openwrt. I paid less than $40 a couple years back and thought I was getting a pretty good deal. Well, two years later and the deal finally ended up being pretty decent.

{1} Note from 2019: Advanced Tomato is a newer version for more recent hardware but FreshTomato is probably the most up to date fork of Tomato.)

"WRT, what now?"

Yes, there are a lot of software projects being bandied about. What is the difference between them? From what I have read, Gargoyle is based off OpenWrt and you can (could?) install the Gargoyle packages directly on top of OpenWrt. I just used my router compatible pre-rolled image on the Gargoyle site. DD-WRT development seems to have slowed compared (Note from 2019: As far as "stable" builds, there are plenty of "beta" builds released for many different devices. Since pretty much all of the current builds are deemed "beta" how stable, not as a tier of software but literally how it functions, will depend on which device and which beta build) to OpenWrt and I think DD-WRT does (did?) use the OpenWrt kernel. Tomato is also Linux based like those other three distributions, but it is not directly related to OpenWrt. OpenWrt seems like a popular base for creating more specialized firmware distros. Reminds me of Debian; actually, where so many later Linux distros can trace their lineage back to Debian (often through Ubuntu granted).


My process for selecting a third party firmware was to look at what firmware was compatible with my hardware, then see if the specific feature was supported, and wrap up with real world reliability test. Do not get me wrong, user friendliness is greatly appreciated. While I am not a novice to home networking, I am far from an expert. From that standpoint, I find the Gargoyle GUI to be more engaging than the other three. Tomato was pretty nice as well. DD-WRT looks like the old Linksys interface I am used to, but with even more options to wade through. OpenWrt seemed the most technical to me, but I did not have any problems finding the basic settings, even if it took me longer to configure everything.

Just A Layman

I should reiterate, I do not do development and I have not looked at source code, I am just relaying the info I have read from various sources. An actual expert should probably chime in and offer a real explanation. 😉