I recently bought Asus WL-330GE wireless router. I needed small travel router and I needed to run DD-WRT on it. It seemed like perfect match.
Upgrade to DD-WRT went without a hitch. However, as soon as it booted I noticed that I was getting DHCP address from my hotel’s server instead from router. Quick investigation revealed that there was no WAN port configured. Single port was in my LAN segment and thus it was leaking everything. Solution for that ought to be simple – I just went to Setup -> Networking and changed WAN assignment there. It seemed to work but, as soon as I rebooted router, everything went back to original state. Quite annoying.
Quick googling revealed something that looked quite close to solution but it didn’t work for me. I could get it to work sometime but every time after restart it would put my WAN port into default bridge. Not quite what I wanted.
In order to debug this I executed
nvram show after clean install and then I executed it again after everything got working. That gave me delta that I had to apply. And, as far as bridges go, I decided to manually remove eth0 (WAN port) from default bridge.
Final result was this start-up script (Administration > Commands):
brctl delif br0 eth0 nvram set lan_ifnames="eth1" nvram set wan_ifname="eth0" nvram set wan_ifname2="eth0" nvram set wan_ifnames="eth0" nvram set wanup=0 nvram unset dhcpc_done nvram commit udhcpc -i eth0 -p /var/run/udhcpc.pid -s /tmp/udhcpc &
First line just ensures that WAN port is thrown out of bridge. All those
nvram lines sort out minor differences. Last line enables DHCP renewal on WAN interface. After startup that should produce bridge state as displayed on picture. Just what I wanted. :)
Only thing that might look funny afterward is that both WLAN and LAN interface have same MAC address. To solve this we need to telnet (or ssh) to machine and execute following commands:
nvram get lan_hwaddr nvram get wan_hwaddr nvram get wl0_hwaddr
Each command will give you MAC address of each interface. In my case this was:
lan_hwaddr: F4:6D:06:94:02:39 wan_hwaddr: F4:6D:06:94:02:39 wl0_hwaddr: F4:6D:06:94:02:3B
From that we can interpolate that wan_hwaddr should be
F4:6D:06:94:02:3A(just before wireless and just after LAN). Only thing to do now is to enhance our startup script (somewhere BEFORE
nvram commit) with:
nvram set wan_hwaddr=F4:6D:06:94:02:3A nvram set et0macaddr=F4:6D:06:94:02:3A
This game with MAC is not strictly necessary but I like to set it anyhow.
I tested this on build 14896 (recommended for Asus WL-330GE in router database) and on special build 15962 (recommended on forums as stable).
P.S. Next time remember not to take router advice from Windows programmer.