Unbricking And Upgrading An ASUS Wl520 Router


[Andrew] has an ASUS wl520-gU router that he is pretty fond of, despite its numerous problems. CPU clock bug aside, the router only has 16MB or memory like many others on the market. While tooling around with the bootloader he bricked the device, so he decided it was time for an overhaul.

After some searching online, he found that the router could be unbricked by shorting out one of the pins on its flash chip. With an emergency unbrick button installed on the board, he can now reset it in seconds by power cycling the device.

Now that he had a working router again, he proceeded to remedy his initial gripe – the lackluster amount of memory. He soldered in a 512Mbit (64MB) module in the original chip’s place, crossed his fingers and booted the router. It started up just fine, so he ran a few commands to instruct the router to recognize the new memory capacity. After rebooting, he found that it only recognized 32MB of RAM, which was remedied by soldering a 22 Ohm resistor to one of the module’s pins.

It did take a bit of careful soldering to get things upgraded and working, but we think it was well worth the effort.

19 thoughts on “Unbricking And Upgrading An ASUS Wl520 Router

  1. serious question here – how does a RAM upgrade actually help a router? i guess i can see if you’re doing some extra-curricular stuff with openWRT (torrenting, other services, etc) but for a stock firmware router…does it actually help somehow?

    1. Stock firmware in standard household usage? No, I wouldn’t think so.

      Running OpenWRT with lighttpd or someshit, probably.

      I’d be more interested in upgrading the flash memory instead of the RAM, IMHO.

      1. Just to add that I have a couple of foneras 2200 (16Mb RAM) and the python interpreter runs just fine, however it fails to load pretty much all the modules due to missing free RAM. So yeah, upgrading to 64Mb is big difference.

    2. OK, this is somewhat interesting, but can someone explain the “pop in a resistor to an unpopulated place near sdram chip. Short circuiting is ok, it will work, but better – pop in some 22 Ohms resitor.”


      1. Memory address lines are often connected with a resistor in series to reduce signal reflections that slow down rise/fall times (or do worse things). The resistor was probably in one of the lines that the smaller part didn’t use.

  2. OK, this is somewhat interesting, but can someone explain the “pop in a resistor to an unpopulated place near sdram chip. Short circuiting is ok, it will work, but better – pop in some 22 Ohms resitor.”


    1. Your creating a pullup/current limiter with the 22ohm. Not a very good pullup if it is a signal pin but I am suspecting this is just a bank 2 enable type situation. With the resistor the chip wont be sinking the full brunt of the powersupply. I am guessing that just about any resistor value here would work as this is just putting a logic “high” on the pin, then again maybe you do need a fair amount of power. Check the datasheet. In general the resistor is just better practice then a dead short to power.

    2. I like Bill’s explanation better. There’s probably a memory address line that’s unused when a 16Meg chip is installed, but needs to be connected if a 32Meg (or 64Meg) chip is there. Since the router came with a 16Meg chip, the resistor is removed, disconnecting the address line (in an attempt to save $0.01 or prevent user upgrades). The low value series resistor, as Bill points out, is used to impedance match the memory bus driver to the PCB trace.

      1. Ah. Hadn’t considered that. My digital signals professor would have shook his head. That is likely the better answer then “pullup”. Wonder what the performance differences are between matched resistor and short circuit.

  3. 16 MB is fine for DD-WRT, or Open-WRT. But when you start getting into more sophisticated functionality (it is a Linux box after all), it never hurts for more.

    But I’ve not had problems with my 520gu. It runs fine at 240 MHz and never locks up (I have uptimes of months generally). I run DD-WRT though, so maybe it’s just a problem with OpenWRT?

    This hack seems overkill though. Not to discredit it, because I think it’s kinda cool and I’m glad that he didn’t give up and fixed it (and added RAM), but I am pretty sure that you can use TFTP during bootup even if they are “bricked” to the level that is described here. I’ve generally been able to do it even when it seems that the router is toasted but it takes several tries to get the timing right sometimes.

    Before that, I would even try to reset it defaults by holding the reset button on power-up. It doesn’t detail that this was even attempted here. But judging by the solution of shorting the RAM, it probably would have worked since it effectively performs the same task.

    I am also pretty fond of these routers and I use it as a wireless bridge. I’ve probably hacked over half a dozen of these for various projects. I also have a Buffalo WHR_HP-G54 which has been running strong with DD-WRT for 5 years now.

    1. IIRC there was a bug in some version of OpenWRT’s radio driver for this router, which has been fixed as of RC5 of Backfire. I could be wrong, but I am running RC5 Backfire on a project and it is very stable (so far).

  4. Okay guys, to clear things out.
    I use the router to do some email tossing around. Basically it now runs OpenWRT, getmail and procmail to collect and sort mail from different mailboxes, sort them and expose via imap with dovecot.
    Plus a bunch of vpn tunnels and other stuff, that original firmware wouldn’t allow me too.
    I’m running openwrt trunk at the moment.
    I didn’t look into flash memory upgrade, since I just use external overlay on a usb flash and usb-hdd for all the big data stuff and a swap partition.
    Hell, I even got hiawatha webserver and php5 running on the box! Still, roundcube webmail is a bit too slow.
    The resistor connects the A12 line of the memory to the SoC. It was unpopulated at production. It does boot if you short it, but soldering a 22 Ohm resistor is a better solution. That has already been explained by commenters above.
    Now I wonder if soldering a 30M quartz will solve the clock bug…

  5. Ive done 5 routers up like this. Largest one has 64mb. It lest you run programs without being out of memory and crashing.

    When I ran the x86 port of openwrt trunk on a laptop it ran MUCH MUCH faster. All you need is a switch and a screen-less laptop.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.