Finally got WDS working between my two Linksys WRT54Gs running the current OpenWRT WhiteRussian release. The trick, which I had to figure out for myself because I couldn't find it anywhere, is to remove /etc/init.d/S50dnsmasq on the "slave" routers, that is, those without the internet connection. Then the only DHCP server is the one that can provide a network link, probably what most people will want. Another question which I had which was not obvious, is what MAC address to use: the wireless MAC is normally 2 above the base, e.g. a router that has 000F664AC295 on the label will have 00:0F:66:4A:C2:97 as its $(nvram get wl0_hwaddr) address. But in your wl0_wds variable you should use the base, that is, 00:0F:66:4A:C2:95. Make sure to nvram commit each change, and reboot (or just ifdown/ifup the interfaces if you like) to activate the changes. Now I'm plugged into the slave router with my (non-wifi) laptop, and connected through the master router to the internet. Also remember the SSIDs can be different, at least if no encryption is used, but channels need to be the same. I've got both set to the default of 6.

Even more amazing, is that my Clié works with either access point! It's usually very fussy, so that's a pleasant surprise.

Back to blog or home page

last updated 2013-01-10 20:41:05. served from tektonic.jcomeau.com