ndl@home

Asus WL-500g Deluxe Router

· updated

This page contains some information related to Asus WL-500g Deluxe router and my experience on running OpenWrt firmware on this router, as well as my work related to bcm43xx WiFi driver modification to support Master Mode (= Access Point mode).

General information

I believe there are two key preconditions that implied creation of this particular router and also other routers with similar characteristics:

Therefore, quite a lot of manufactures started to produce devices which are powered by operating systems such as Linux, as it appeared to be cheaper to install appropriate hardware that is capable of running Linux and take advantage of existing software rather than designing firmware from scratch.

The key advantage for end users here is that in the case existing firmware for device does not suit users needs, it’s more or less easy to modify or even replace it, as manufactures provide sources of their firmware (this is required by GPL that Linux kernel uses).

There are available now even separate Linux distributions that were designed as replacements for existing firmwares in a lot of different routers, OpenWrt being one of them (and, to the best of my knowledge, the most advanced one).

Limitations

It should be understood that no embedded low-cost hardware can (and will - in the nearest future) match desktops or servers - therefore, you should carefully check whether using your router, for example, is indeed adequate for the tasks you’re trying to solve.

Currently, typical CPU speed for these kinds of routers is between 200MHz - 300MHz. To give you an idea on what does it mean: routing speeds from LAN to WAN using small set of firewall rules and NAT will be approximately in range 2.0 - 3.0 MB/s. (so, these CPUs are not capable of utilizing full 100Mb/s Ethernet, if you have that luxury on WAN interface :-))

Also RAM is typically limited to 32 MB, thus you hardly can run anything really big there.

Size of flash memory is typically 4 - 8 MB, that is enough for basic set of software only. Typically there are ways to extend storage, though - I used external HDD connected to router via USB port.

Example of usage

On the other hand, for home or small office use, this hardware can perform quite well. Here’s just partial list of things I was able to run simultaneously on my router for home use (1-2 users):

Basic set (provided by firmware):

Extended set (complied separately and placed on external HDD):

Of course, to make these things run simultaneously I had also to add swap partition on external HDD, but it wasn’t used that much.

In the end, however, I’ve abandoned usage of router for all these extended tasks, as CPU limitations were too strict for me, and also porting & cross-compiling all packages I needed took quite a lot of time, so I’ve just set up separate server PC for all these extended tasks.

bcm43xx WiFi driver modifications

There is one very serious issue with drivers for the hardware that is present on Asus router: namely, Broadcomm does not provide sources or specifications for its WiFi chip used by this router. Therefore, when constructing althernative firmware you either have to use binary driver (which works only with 2.4.x Linux kernels) or use bcm43xx WiFi driver that was written by enthusiasts by reverse-engineering Broadcomm binary driver.

bcm43xx driver is useable for quite some time already for scenarios when router should work as WiFi client, but support for acting as Access Point was missing.

Therefore I had to spend quite some time adding this support in bcm43xx driver in order to use it in Access Point mode. Results of my modifications were included in the bcm43xx mainstream driver, and are also available as patch on OpenWrt forum.

This support is not full, however, as power-saving mode is not supported, and it is required by many modern devices, such as PDAs or notebooks to work correctly.

If there’s anyone who’d like to continue working on this topic - just contact me and I’ll try to explain the things from the place where I left them so that it can be easier to continue this work.