The following note is for installation of OpenWrt Kamikaze v 7.09 on Linksys WRTSL54GS. It is intended to be a quick and dirty guide to upgrade your Linksys WRT54G series, especially for WRTSL54GS.
0. It turns out Kamikaze v 7.09 does not have a stable wifi connection on kernel 2.6 for Broadcom platform. Currently, I am using Kamikaze 8.09 RC1 (as of 2008-11-20).
1. Use the firmware upgrade page via vendor supplied web interface to upload the OpenWrt firmware.
2. Unfortunately, there is no WAN DHCP for Kamikaze v 7.09 (2.6.22 kernel) on Linksys WRTSL54GS. Therefore, you need to once again update the firmware.
3. The problem now is that you don't have the web interface. You have to do the update via tftp, CFE, serial cable or OpenWrt command line.
4. It seems to me that the tftp approach only works when the bootloader can't load the current firmware and wait for a new firmware to be uploaded over the network. I don't have a serial cable, so OpenWrt command line is my last choice.
5. The problem now is how to send the new firmware to WRTSL54GS. When the size of new firmware is large, using flash memory may be the best choice for WRTSL54GS.
6. The default firmware has no USB storage device support. You must first instaill several packages.
7. You can send the following packages to WRTSL54GS using scp. Also, the default firmware only supports telnet. You need to set root password after login.
fdisk kmod-fs-vfat kmod-nls-base kmod-nls-cp437 kmod-nls-iso8859-1 kmod-scsi-core kmod-usb2 kmod-usb-core kmod-usb-ohci kmod-usb-storage
8. Sometimes, you may still not be able to get your WRTSL54GS work properly after the firmware is reflashed using command line "mtd -r write firmware.bin linux". For exmaple, the power light may keep flashing.
9. If you power cycle your WRTSL54GS, you may find out that it can't be accessed using either telnet or ssh. Finally, I reflash the firmware again using tftp. This time it works!
10. Also, you can reset WRTSL54GS to enter into failsafe mode.
11. Finally, you need apply the following patch to make DHCP work on WAN interface.
Add the following five lines in ./build_mipsel/linux-2.6-brcm47xx/linux-2.6.22/drivers/net/b44.c
static int b44_phy_reset(struct b44 *bp)
{
u32 val;
int err;
+ /* hackish fix for wrtsl54gs, 5 fails, 30 works for eth1 */
+ if ( bp->phy_addr == 5) {
+ printk(KERN_INFO PFX "%s: Forcing PHY address to 30.\n", bp->dev->name);
+ bp->phy_addr = 30;
+ }
if (bp->phy_addr == B44_PHY_ADDR_NO_PHY)
return 0;
err = b44_writephy(bp, MII_BMCR, BMCR_RESET);
Above is the best approach for me. You may use alternative method based on what you have.