Set up a 802.11ac access point and client

All nodes of type DSS and MOBILE are equipped with one 802.11a/b/g/n WiFi card (mostly wlan0) and one 802.11ac WiFi card (mostly wlan1).

Reserve two nodes of type DSS or MOBILE to run this tutorial, preferably right next to eachother to achieve high throughput. The default image on these nodes should have all necessary drivers, firmware and config files in place.

To setup an 802.11ac AP, log into a node and execute the following the following script:

/usr/local/bin/start80211acAP.sh

Take a look at the script to see which configuration options need to be passed to hostapd in order to succesfully set up an AP using 802.11ac. The script will assign an IP address to wlan1 in the 172.22.22.0/24 range. The last octet is taken from the IP address of the wired control interface (mostly eth0). For example node 43 (see the inventory) will have IP address 172.22.22.43 . It will also start a UDP iPerf server instance on wlan1.

Check for errors by running the following command:

screen -r hostapd

Now log into the second node and execute the following script to connect to the AP:

/usr/local/bin/start80211acStation.sh

This script will associate with the AP and set an IP address on wlan1 as shown in the previous section (prefix 172.22.22.X with X as the last octet from the control IP).

Check for errors by running the following command:

screen -r wpas

If all went fine, you can now try to ping the AP (172.22.22.43 in this example) from the client (172.22.22.44 in this example). If that succeeds, it is time to do some througput tests with iPerf:

/usr/bin/iperf -c 172.22.22.43 -i 1 -t 10000 -b 650M

In the above example, we could reach a throughput of about 400Mbits/sec. This is because 10dB attenuators are attached to every antenna (so 20dB attenuation per link). The AC cards on the MOBILE nodes have no attenuators, which means that if the mobile node is very near to the AP, throughput of more that 550Mbits/sec can be reached!

If the above tutorial does not work for you, please do the following troubleshooting steps and see if it can be fixed:

# verify the version of the ath10k_pci driver (this tutorial was tested using backports version 3.18).
# Check previous tutorials on how to update the driver.
modinfo ath10k_pci

# this tutorial is known to cause troubles with some firmware versions.
# If dmesg is complaining about not finding firmware-2.bin, you probably don't have the correct firmware files.
dmesg | grep ath10k
# Try the commands below to fix it, or try to find a solution on https://wireless.wiki.kernel.org/en/users/Drivers/ath10k/firmware
rm /lib/firmware/ath10k/QCA988X/hw2.0/*
cp /share/80211ac/firmware/* /lib/firmware/ath10k/QCA988X/hw2.0/
reboot

# This tutorial uses a custom compiled hostapd version located at /usr/local/bin/hostapd.
# If for some reason the file is not there, or hostapd gives errors at startup, try the following:
wget http://w1.fi/releases/hostapd-2.4.tar.gz
tar xzvf hostapd-2.4.tar.gz
cd hostapd-2.4/hostapd
cp defconfig .config
nano .config
# Check if the following variables are all set to 'y' (more info can be found on https://wireless.wiki.kernel.org/en/users/documentation/hostapd)
CONFIG_WPS=y
CONFIG_DRIVER_NL80211=y
CONFIG_IEEE80211N=y
CONFIG_IEEE80211AC=y
CONFIG_ACS=y
# Now recompile hostapd and copy the resulting binary
make
cp hostapd /usr/local/bin/

# If some of the config files or scripts are missing, copy them from the share:
cp /share/80211ac/scripts/* /usr/local/bin/
mkdir -p /usr/share/11ac/
cp /share/80211ac/conf/* /usr/share/11ac/