I had this router around for quite a long time, but unfortunately it sucked at some points.
1. The clock bug. It’s 200Mhz, not 240, the clock’s off and the result is usb 1.1 hangups. Luckily this is cured by installing a 2.0 hub, to do transaction translation
2. Memory. 16mb is a not enough! Esapecially with the leaking wl driver. b43 seems quite greedy as well. The trunk builds of OpenWRT did not work for me any more, so…
I was of for an upgrade.
The SDRAM is initialised by the bootloader (CFE) which lives at the beginning of the flash with parameters from nvram, a place of flash at the very end to store configuration data. CFE has it’s own backup of failsafes, in case the nvram region gets corrupt. Well, I bricked it setting the wrong data for sdram initialisation! No jtag whatsoever, but there was a better solution to reset the nvram.
Googling over the forums I found a small and simple solution: short pin 9 of NOR flash chip to GND upon startup. CFE then fails to read the nvram, uses the default and voila. Reflash some dd-wrt image for this router, since they overwrite nvram with something working, unlike OpenWRT. That’s it for unbricking. For this dire situations I even made a button!
So the debricking sequence is simple:
Unpower the router, press the ‘debricking’ button, supply power, release the button (don’t hold it longer than 3-4 secs, okay?)
Next step was the actual SDRAM upgrade. I popped in the MT48LC32M16A2 512Mbit chip. That’s 8*16*4 configuration. Anything similar should work. Just don’t pop the DDR. AFAIK the controller supports that, but PCB routing might be different. Anyways, I haven’t tried – just sticked with sdram.
Next is some console magic, that should be run on the router when it boots. It is required so that it will see all the ram available.
nvram set sdram_init=0x0012
nvram set sdram_ncdl=0x0000
At this point pull the power, cross your fingers and supply power again. You will see 32Megabytes of ram reported in the loader. So, where are 32 more? Well, we have to do a little more soldering at this point: 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. Obligatory pic follows:
The result is a fully alive and working 200Mhz router with 64Megs of RAM. Yappee!
Now off for washing PCB from the flux.