Wireless Bridge and WPA(2) on Linksys Router ... or how to look for a needle in a haystack

I was searching half a night and 2 hours today to get a Linksys Router working a wireless bridge with WPA(2) encryption. I tried Openwrt White Russian RC5 and DD-Wrt V23 SP1 and many combinations of WPA, WPA2, TKIP, AES. The bridge works well with WEP and without any encryption....

So ... after more than one hour googling I found the following in the broadcom kernel module source:

if (val && strstr(v, "psk")) {
    val = (strstr(v, "psk2") ? 0x84 : 0x4);
    v = nvram_safe_get(wl_var("wpa_psk"));
    if ((strlen(v) >= 8) && (strlen(v) < 63)) {

        bcom_ioctl(skfd, ifname, WLC_SET_WPA_AUTH, &val;, sizeof(val));

        if (nvram_match(wl_var("mode"), "wet")) {
            /* Enable in-driver WPA supplicant */
            wsec_pmk_t pmk;

            pmk.key_len = (unsigned short) strlen(v);
            pmk.flags = WSEC_PASSPHRASE;
            strcpy(pmk.key, v);
            bcom_ioctl(skfd, ifname, WLC_SET_WSEC_PMK, &pmk;, sizeof(pmk));
            bcom_set_int(skfd, ifname, "sup_wpa", 1);
        }
    }
}

So ... this means, that the WPA-PSK length has to be >= 8 and < 63, mine was 65. This wasn't a problem yet, cause I used the routers only in AP mode, where this restriction doesn't effect. Shorting the WPA-PSK length 62 did the trick!

Show Comments