Ath9k, AR9160, Openwrt and 5 ghz

simone pascucci cxjepa at gmail.com
Sat Feb 14 07:30:17 EST 2009


Hi,

I'm running the configuration as in the title. I'm trying to set up a
5 ghz N mode access point, but hostapd fails with the following error

 root at OpenWrt:~# wifi up
Configuration file: /var/run/hostapd-wlan0.conf
Line 8: DEPRECATED: 'debug' configuration variable is not used anymore
Opening raw packet socket for ifindex 0
BSS count 1, BSSID mask ff:ff:ff:ff:ff:ff (0 bits)
SIOCGIWRANGE: WE(compiled)=22 WE(source)=21 enc_capa=0xf
nl80211: Added 802.11b mode based on 802.11g information
Allowed channel: mode=1 chan=1 freq=2412 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=2 freq=2417 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=3 freq=2422 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=4 freq=2427 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=5 freq=2432 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=6 freq=2437 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=7 freq=2442 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=8 freq=2447 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=9 freq=2452 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=10 freq=2457 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=11 freq=2462 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=1 freq=2412 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=2 freq=2417 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=3 freq=2422 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=4 freq=2427 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=5 freq=2432 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=6 freq=2437 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=7 freq=2442 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=8 freq=2447 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=9 freq=2452 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=10 freq=2457 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=11 freq=2462 MHz max_tx_power=20 dBm
wlan0: IEEE 802.11 Configured channel (44) not found from the channel
list of current mode (2) IEEE 802.11a
wlan0: IEEE 802.11 Hardware does not support configured channel
Could not select hw_mode and channel. (-1)
wlan0: Unable to setup interface.
rmdir[ctrl_interface]: No such file or directory
enable_mac80211(wlan0): Failed to set up wpa for interface wlan0

I'm trying to read the source code, but it's quite long and, if
possible, maybe someone could address me on the source of the error.
As you can see, the nl80211 is running a function which set up a B
mode network, based on the G datas taken from somewhere.
Hostapd seems to behave as expected, as it recognize correctly the 44
channel (which I selected) and associate it to the 802.11a mode. The
problem is that something is returning a list of channels from the 2.4
spectrum, and hostapd stops because the channel 44 is not between
them.
This is the config for hostapd in /lib/wifi/hostapd

root at OpenWrt:~# cat /lib/wifi/hostapd.sh
hostapd_setup_vif() {
        local vif="$1"
        local driver="$2"
        local hostapd_cfg=

        # Examples:
        # psk-mixed/tkip        => WPA1+2 PSK, TKIP
        # wpa-psk2/tkip+aes     => WPA2 PSK, CCMP+TKIP
        # wpa2/tkip+aes         => WPA2 RADIUS, CCMP+TKIP
        # ...

        # TODO: move this parsing function somewhere generic, so that
        # later it can be reused by drivers that don't use hostapd

        # crypto defaults: WPA2 vs WPA1
        case "$enc" in
                wpa2*|WPA2*|*PSK2*|*psk2*)
                        wpa=2
                        crypto="CCMP"
                ;;
                *mixed*)
                        wpa=3
                        crypto="CCMP TKIP"
                ;;
                *)
                        wpa=1
                        crypto="TKIP"
                ;;
        esac

        # explicit override for crypto setting
        case "$enc" in
                *tkip+aes|*TKIP+AES|*tkip+ccmp|*TKIP+CCMP) crypto="CCMP TKIP";;
                *tkip|*TKIP) crypto="TKIP";;
                *aes|*AES|*ccmp|*CCMP) crypto="CCMP";;
        esac

        # use crypto/auth settings for building the hostapd config
        case "$enc" in
                *psk*|*PSK*)
                        config_get psk "$vif" key
                        if [ ${#psk} -eq 64 ]; then
                                append hostapd_cfg "wpa_psk=$psk" "$N"
                        else
                                append hostapd_cfg "wpa_passphrase=$psk" "$N"
                        fi
                ;;
                *wpa*|*WPA*)
                        # required fields? formats?
                        # hostapd is particular, maybe a default
configuration for failures
                        config_get server "$vif" server
                        append hostapd_cfg "auth_server_addr=$server" "$N"
                        config_get port "$vif" port
                        port=${port:-1812}
                        append hostapd_cfg "auth_server_port=$port" "$N"
                        config_get secret "$vif" key
                        append hostapd_cfg
"auth_server_shared_secret=$secret" "$N"
                        config_get nasid "$vif" nasid
                        append hostapd_cfg "nas_identifier=$nasid" "$N"
                        append hostapd_cfg "eapol_key_index_workaround=1" "$N"
                        append hostapd_cfg
"radius_acct_interim_interval=300" "$N"
                        append hostapd_cfg "ieee8021x=1" "$N"
                        append hostapd_cfg "auth_algs=1" "$N"
                        append hostapd_cfg "wpa_key_mgmt=WPA-EAP" "$N"
                        append hostapd_cfg "wpa_group_rekey=300" "$N"
                        append hostapd_cfg "wpa_gmk_rekey=640" "$N"
                ;;
                *)
                        wpa=0
                        crypto=
                ;;
        esac
        config_get ifname "$vif" ifname
        config_get bridge "$vif" bridge
        config_get ssid "$vif" ssid
        config_get device "$vif" device
        config_get channel "$device" channel
        config_get hwmode "$device" hwmode
        case "$hwmode" in
                11a) hwmode=a;;
                11b) hwmode=b;;
                11g) hwmode=g;;
                *)
                        hwmode=
                        [ "$channel" -gt 14 ] && hwmode=a
                ;;
        esac
        cat > /var/run/hostapd-$ifname.conf <<EOF
ctrl_interface=/var/run/hostapd-$ifname
driver=$driver
interface=$ifname
hw_mode=${hwmode:-g}
channel=$channel
${bridge:+bridge=$bridge}
ssid=$ssid
debug=4
wpa=$wpa
${crypto:+wpa_pairwise=$crypto}

ieee80211n=1
ht_capab=[RX-STBC123][SHORT-GI-40][DSSS_CCK-40][HT40-]
$hostapd_cfg
EOF
        hostapd -dd -P /var/run/wifi-$ifname.pid -B
/var/run/hostapd-$ifname.conf
}


More information about the HostAP mailing list