Why cant we downgrade to 1.21 again? I just dont get that. You cant physically change anything in the router, so we should be able to clear the EEprom and restart with 1.21 ?
Many have asked "Why can't we downgrade?" A downgrade is not impossible, it just requires more effort on the part of the engineering staff to figure out. The explanation is a bit technical, but here it is for anyone who cares.
The router's flash memory is divided into two arbitrarily sized logical regions. The first, smaller of the two regions is called the boot block. The second region is called the application block. The arbitrary partition between these two regions is decided on when the firmware is designed and compiled.
The boot block contains the code that the router begins executing when it wakes up from a power-on reset. The microprocessor in the router is obligated by hardware to always begin execution at the beginning of the boot block no matter what. The boot block code is responsible for performing several start-up tasks before eventually jumping to the hard-coded address of the application block which begins at the end of the boot block.
The application block performs most of the functions of the router, and is designed to be replaced by new application code during an upgrade. The boot block code handles the upgrading process and is designed to never be overwritten or upgraded itself. This protects the router from bricking in case power is lost during an upgrade. The boot block is always there and always checks to see if a valid application block is present before jumping to it. Thus the boot block can always recover from a botched upgrade.
So now, why can't we downgrade? Well, we could, but a kink was introduced in the upgrade from 1.2 to 1.3. It seems the application grew so large that there was no room to fit the next upgrade into the space partitioned to the application block up to this time. What to do? They went ahead and squeezed the boot block down to make room for a larger application block. This requires re-writing the boot block to point to the new partition address where the new application block starts.
So what happens when you try to downgrade from 1.3 to 1.2? The 1.2 code gets loaded into a lower starting address than it was designed to run at, and it wont execute there when the boot block eventually jumps to it. None of the pre-1.3 upgrades are designed to re-flash the boot block back to the way it was, so you can't go back just like that. The boot/application partition has been moved.
So is it impossible to go back to 1.2? No it isn't, but "D-Link" would have to release a down-grader that would include restoring the boot block to the way it was.
Why won't they do this? Well it's very risky. Perhaps nearly as risky as it was to release 1.3 that rewrote the boot block. If they release a new boot block re-writer to downgrade, they risk a new truckload of bricked router complaints that they probably suffered with the 1.3 upgrade. Or maybe, they think that the fix to the 1.32 application code is just around the corner, just around the corner, just around the corner..... and why go through the trouble of making and testing a downgrading re-flasher?
They are probably gun-shy about releasing a fix for 1.32 until they know it's "right". Or maybe the space they gained by expanding the application block for 1.3 is already used up and they are trying to bum a few more bytes of space out of it. Or maybe the only guy that really knew the system well was canned and there's no time for someone new to figure out what to do. Or maybe the upgrade has reformatted the eeprom and going back means having to save and reload parameters and it's too complicated for some engineer to figure out in one sitting. Or maybe their engineering resources are just too strained with new products and the 655 is really taking a back seat. Who knows.
Downgrading to 1.2 is possible, it's just problematic. /shrug