This post was rattling around in my head before the current stay-at-home situation arose. Somehow, it never found its way to my fingers, until now.
This will be a typical techie post by me, in that it will be long, rambling/meandering, and likely bore the people who used to mostly read my music blogs.
tl;dr
Most newer (even years old) Asus routers now support AiMesh, a method of turning normal routers into a mesh system. When configured correctly, it works remarkably well and has some serious advantages over pre-built mesh systems (like Google WiFi, Eero, etc.).
My start with Asus Routers
For years, I purchased cheap (often refurbished) routers. I typically flashed them with dd-wrt firmware to make them better than new.
On December 13th, 2013 I broke the mold. I purchased my first high-end router, the Asus RT-AC66U. It was my first “AC” router (now called WiFi 5) and the first time I ever spent that much money on a router of any kind ($179.99 before tax!).
It has a (theoretical and nonsensical) top speed rating of 1750 megabits per second (mbps). That’s still pretty good even by today’s standards.
Back then, this router was glorious. I was very happy with my purchase and it was my main router for many years. It only got replaced when I switched to Verizon FiOS which at the time came with their own branded router.
This router still gets firmware updates (what a credit to Asus!). More on that later in this (happy ending) saga.
The big move
In 2015 we moved from NY to VA. Our house in VA is large, but not that large. The layout puts our master bedroom far away from every other room (no centrally placed router would reach that room).
Mesh routers hadn’t exploded in popularity yet, so I never considered one at the time. Given that I was installing FiOS there (the previous owner had FiOS as well), I knew that my main router would be a Verizon branded one.
I had an electrician put in a hard-wired Ethernet port in three rooms, in addition to the closet where the FiOS router lives. There is an Ethernet port in the wall in our office, the master bedroom, and the basement (where the TV is). Each of the three rooms is a home-run back to the closet, so each of the rooms connects into one of the four LAN ports on the back of the FiOS router.
The office is very close to the closet with the main router in it, so to begin with, I didn’t put another router in there.
The master bedroom and basement each got routers. Those routers were put in AP mode (Access Point, or Bridged). That meant that the main FiOS router still handed out all IP addresses (no matter the room or which WiFi router our devices were connected to).
For simplicity, each of the AP routers got a separate SSID (the WiFi Network Name). Devices that were fixed in a particular room always connected to their local SSID/Router (e.g., the TV, or a Fire Stick/Roku, etc.). Our cellphones had to switch to a new SSID when we moved from one room to another.
Since the main router signal really doesn’t reach the master bedroom at all, the phones would switch pretty quickly (without any manual intervention), simply because they would lose the signal completely and immediately begin searching for a new signal.
It wasn’t instantaneous, so you would have to think about starting something before you walked out of a room, because the connection would definitely drop for a few seconds.
After a few months, the FiOS router started getting flaky on the AC channel (this eventually straightened out years later after some arbitrary firmware update). This led me to pull out my old Asus RT-AC66U router (which was in a drawer for a while by then) and install it in the office.
Even though the office was close to the main router, I could no longer trust the WiFi on the main router, so I used the wired connection in the office to hook up the Asus as an AP and all was well again.
Growing the Asus family
The above setup continued for a while and worked fine. In the master bedroom I had an old TP-Link router (another brand that I really like). It worked fine, but wasn’t the fastest thing and would rarely cause me tiny frustrations.
Six weeks before buying my first Asus router, I bought a Nexus 5 phone from Google. That marked my switch from Verizon (where I was using the Galaxy Nexus) to T-Mobile. I’ve been a happy T-Mobile customer ever since.
My house had effectively zero coverage on T-Mobile when we moved in (it’s marginally better now, though I rarely ever have to use it in the house). After a few months in the house, I saw an ad for a T-Mobile Cellspot. It’s a rebranded Asus RT-AC68U router (one step up from the 66U that I owned).
T-Mobile was selling them very cheaply (much cheaper than the Asus branded 68U). I bought it not only because the price was excellent (if memory serves me well, I think I paid $75 for a new one, when the 68U was going for $199 new), but also because it was (supposedly) optimized for T-Mobile WiFi calling (which given my cell signal at home sounded like a great addition).
I replaced my (rarely) flaky TP-Link router with a T-Mobile Cellspot one in the master bedroom.
The dreaded, complicated upgrade
The new router ran great for months, but I never used the WiFi calling feature (that’s a long story for another post that I will likely never write).
At some point I stumbled on a post about “Turning a T-Mobile Cellspot into a Full Blown Asus RT-AC68U“. If you skim that article, and more importantly the tons of comments with a lot detail in them, you’ll see that this is not for the feint of heart.
Fortunately or otherwise, this is exactly the type of thing I enjoy (hey, you get your kicks your way, I’ll get mine my way…).
With some twists and turns, and needing to read a bunch of comments when I got stuck, I eventually turned the Cellspot into a full blown Asus router.
Why bother?
That’s a fair question. The Cellspot worked perfectly (for some definition of perfect). There are a few good reasons to consider the upgrade. By far the most important one is that the Cellspot firmware was way behind, and while occasionally upgraded, pretty rarely.
That meant that when the various kracks that have been discovered in recent years against WiFi routers are revealed, a real Asus router will be patched months (or years!) before the Cellspot will. That’s reason enough to bother if you don’t require any special handling of the WiFi calling feature for T-Mobile specifically.
Another reason to upgrade is to flash different firmware, e.g., dd-wrt (mentioned above). That’s not possible from the base Cellspot firmware, but is from the Asus firmware.
Finally, if you want to run the AiMesh software, you need to be on the real Asus firmware.
A quick look ahead
I’ll deal with this later on, but there are newer (shorter, better) ways of upgrading a Cellspot, and very important warnings and caveats which didn’t exist at the time I upgraded my first one.
The point of this interlude is to tell you to read on rather than follow the instructions in the article linked above.
Another Asus added to the family…
A year later, my better TP-Link router running in the basement started to have some issues (again, I think it was a firmware issue that I later resolved). I decided to replace it with another upgraded Cellspot.
I bought one refurbished on Amazon for $48. I followed the same upgrade instructions linked above, and had another working Asus RT-AC68U router installed in the basement the same day it arrived.
I now had four routers in the house. The main FiOS one which was mostly acting as a wired router to the Internet (a few legacy devices, security cameras, etc., were connected directly to the 2.4Ghz channel on that router), plus the original RT-AC66U in the office, and the two upgraded Cellspots, in the master bedroom and basement.
What? Asus doesn’t make infinitely perfect hardware?
About six months ago, I walked into the office and the old 66U router was dead. No lights, no Internet (obviously).
I disconnected the cables and pulled out the TP-Link Archer C9 that had previously been running in the basement. That’s the one that I asserted was flaky only because of a specific firmware.
I reconfigured it to take the place of the old 66U, made sure it was current on firmware, and turned it on. Problem solved, we were back in business.
I decided to try and diagnose what went wrong with the old 66U (just out of curiosity, as it was 6 years old at the time and didn’t need to provide any additional service to make it one of the more outstanding tech purchases).
I connected it directly to my laptop using the wired port and fired it up. The lights blinked for a second and then went dead. It only took me one more try to realize what was wrong. The power button was broken. It simply wouldn’t click and stay on.
In typical MacGyver mode, I found a round hard piece of plastic, scotch taped it on to the power button, then put a rubber band around that to ease the pressure on the scotch tape.
Voila! A working 66U router, once again…
I swapped it back for the TP-Link, which was now perfectly configured to be an instant backup router should my MacGyver skills prove unworthy.
Wasn’t this supposed to be about AiMesh???
Oh yeah, though I did specifically mention that this would meander and ramble and I didn’t want to disappoint on that front either…
Unfortunately, a bit more meandering is necessary, just for historical accuracy, not to discuss the merits of AiMesh.
Getting into trouble
Before getting the second Cellspot router, I upgraded the first one using the built-in Asus firmware upgrade tool once, and it worked great.
When I got the second one, I (of course) upgraded it to the same version of firmware as the first one was on, with no issues.
Toward the end of last year, another krack was discovered, and I checked whether Asus had an updated firmware to mitigate it. They did.
I updated the old 66U first, and it upgraded perfectly.
I updated the first 68U and it reverted back to the original Cellspot firmware (which had even more issues than I was currently trying to fix!).
Whoah, what just happened?
A bit of Googling and I found that Asus decided that if they noticed that a Cellspot router was being flashed with Asus firmware (rather than a T-Mobile branded firmware), they would roll it back to the original.
Darn!
Silver Lining?
This caused me to find newer methods of turning it back into an Asus router, including ways to thwart Asus from rolling it back. The old method (linked above) still works, and has the appropriate warnings and methods to avoid the rollback, but it’s still more complicated than the new ones.
This is a link to the instructions that I used the second time around. It looks long and complicated, but that’s because there are three different (analogous) methods for accomplishing the upgrade. The key point is that this avoids the full downgrade which the original method requires.
When I did this and got my first router back to the new firmware, and made sure that it wouldn’t downgrade again, I flashed the second one as well, apparently successfully.
Apparently???
Wait, what? Either it worked or it didn’t. Well, yes (and no).
I was so smart (being a seasoned techie) that I was incredibly stupid (being a seasoned know-it-all).
The first time that I upgraded each router, I meticulously followed the dozens of steps in the original article linked above. Amazingly, following detailed instructions worked (can you believe it?).
This second time around, using the simplified instructions (which are 100% accurate and would work if you followed them exactly!), I skipped one crucial section (a few commands) because I assumed that they were unnecessary the second time around (meaning, I thought I had the correct files from the first time around just sitting in my folder waiting to be reused).
Again, why apparently then? Because I don’t end up using the router in the basement all that often, and it took trying to get AiMesh to work (still coming, I promise) to finally see what I had done so wrong…
AiMesh, finally!
Well, actually, getting closer, not there quite yet…
Now that everything was running fine (or so I thought), I decided to finally experiment with turning on AiMesh in all three Asus routers.
I really didn’t need it, my setup was working well enough, but I was curious and now that I was running the latest version of Asus firmware on all three routers, I was in a position to find out. I could always roll back to non-AiMesh mode if it wasn’t to my liking.
Unfortunately, I hit a snag immediately. It turns out that the old 66U is not capable of running AiMesh software. There is a newer revision (RT-AC66U rev B) that can run full AiMesh, but mine is too old and can’t do it.
So, I popped on to Amazon and ordered another Cellspot for $48 (this time, it was labeled renewed rather then refurbished).
Unfortunately, I compounded my error by skipping the exact same block of steps on this newest router as I had on my others, because I hadn’t yet noticed the problem that I had introduced into my network…
Turning on AiMesh, finally, really, this time
I flashed the real Asus firmware onto the newest Cellspot and retired the old 66U once again. I was now ready to flip the switch and turn the three routers into an AiMesh mesh network.
All attempts to get them talking to each other failed! After some searching, it seemed that some people had more success using the Asus Router App on their phones, than using the web browser interface.
I broke down and installed the app on my phone. I did seem to get a bit further, but if I got something going on one router, another would disappear, and then that would be flipped. It was maddening.
Discovering the problem
Well, the problem was entirely created by me, so I was the problem. The crucial steps involved the following:
Upload original_cfe.bin to https://cfeditor.pipeline.sh/
Select 1.0.2.0 US 1.0.2.5 US for AC68P or 1.0.2.0 US AiMesh for AC68U with AiMesh as Source CFE
Download the new .bin
rename it to new_cfe.bin
I assumed that having done that once on the original router, I had the correctly modified CFE (now called new_cfe.bin). Meaning, I thought that all Asus routers (at least of the same model number, which mine were), shared the same identical new cfe.bin file.
You’ve all heard what the definition of the word assume is, right? I’ll spare the gentler ears/eyes from seeing it here again…
It turns out that the file is unique to each and every router. Why? Because among other things, it contains the MAC Address of the routers ports (both Ethernet and WiFi) embedded in it. So, by reusing the same cfe.bin file on all three routers, they were all running with the same exact MAC Address.
To be clear, they each had different IP addresses assigned, but that doesn’t make the problem better. The way local networking works, there is an ARP table maintained that tells the network how to reach the physical machine associated with an IP address, by translating it into the MAC Address.
So, when I tried to reach any of the three routers via their IP address, all of them returned (at a very low level) the same MAC Address, and therefore it was entirely random (perhaps based on distance in the house) as to which router would see my request!
Ugh.
The solution
Once I understood the problem, the solution was obvious and straightforward, but by no means simple. I needed to fix the individual cfe.bin files, but I could no longer follow the original instructions (uploading them to a website which would edit them) because I didn’t have the original files to upload!
Worse, I needed to figure out which MAC Address was correct for which router, which meant going to each of them and finding the stickers with the serial numbers and MAC Address printed on them.
Once I did that, I had to use a HEX Editor to load up each file, find the wrong MAC Addresses (yes, plural, since there are multiple interfaces in each router) and type over them (very carefully).
Then I needed to copy them over to the correct router, flash them, reboot the router, and pray.
Yes, that worked!
Are we there yet?
So, was I really done? Unfortunately, not quite.
I was able to get AiMesh going, but the speed in the bedroom was pathetic (reliable, but pathetic). The speed in the basement was great!
This one didn’t take long to diagnose, but it did take a while to fix…
By default, AiMesh sets the backhaul (how the mesh routers communicate with each other, rather than with the client devices or the Internet) to auto.
In the case of the basement router, that ended up using the wired connection over the Ethernet cable (which is exactly what I expected the default to be).
In the master bedroom, even though the router is fully wired like the basement one is, auto defaulted to wireless backhaul.
If you recall from a few days ago, when you started reading this post, the master bedroom is too far away to get a reliable signal, so the backhaul was awful (amazing that it worked at all!).
The solution is simple, force the backhaul to be wired. Yes, simple, in theory, but I couldn’t find any way to do that!
More searching on the Internet and I finally found a single forum post where someone linked to the official guide with highlighted screenshots.
Bless that individual, and Google, for surfacing the correct post (after much tribulation).
Here is a link to the guide, with step 6 being the secret sauce to finally see where the default backhaul could be changed/
Conclusion
So, was it all worth it? Yes, of course.
First, I love technology puzzles, even ones created by me. Once I screwed up the settings really badly, I just had to figure out how to get myself out of it. It wasn’t fun (on any level), but it was instructive, informative, and satisfying (in the end).
Much more importantly, I am now running a full mesh network and I like it. Our phones don’t drop when walking from our office to our bedroom. All three routers are effectively managed from the one main AiMesh one.
Why AiMesh is really cool
Most importantly, it’s a mix and match network. You don’t have to buy kits. You don’t have to have identical routers at each node. As long as a router supports the AiMesh firmware (which many Asus routers do!), it can be a node (or the master) of your AiMesh network.
This is crucial. Today, I don’t own a single WiFi 6 (AX) device. So, it would be overkill for me to buy a WiFi 6 router, let alone a WiFi 6 Mesh Kit.
However, if/when I get a new laptop (I’m typing this on a 6-year-old one) that has WiFi 6 in it, or a new phone (mine is 2.5 years old), I’ll be able to get an Asus WiFi 6 router (any of them!) and use it as my main AiMesh node (and place it wherever I use the laptop most frequently, which now, is in the office).
I won’t have to change the other routers, or change any settings on the other routers either. They will all just work. My laptop (and phone) will work with WiFi 6 when they’re connected to the new router, and automatically and gracefully downgrade to WiFi 5 when they roam to another AiMesh node that’s still on WiFi 5.
Further, I can even do the WiFi 6 upgrade piecemeal. For example, I could get a lower-end WiFi 6 AiMesh router first, and make that the master. Then, as I have more devices that can take advantage, I can get a higher-end WiFi 6 router, make that the main one, and move the older WiFi 6 router into the bedroom.
The ultimate beauty is that each of the routers can always be instantly returned to be non-AiMesh routers. So, I can pass them on to friends when I replace them with a WiFi 6 one and those people can use them as standalone routers, AP bridges, or create or augment an AiMesh of their own.
That’s what makes these more flexible than full-time mesh systems.
Also, it doesn’t hurt that the models I’m running can be picked up for $48, if you’re willing to be super careful and avoid the stupid mistake that I made.
Leave a Reply