Configuring and Compiling the Latest Supplicant for Roaming#
Configure and Compile Latest Supplicant#
Download the supplicant from wpa_supplicant
Extract the supplicant using the following command.
# tar xvf wpa_supplicant-2.6.tar.gz
# cd wpa_supplicant-2.6/wpa_supplicant
# cp defconfig .config
Enable the following parameters in the supplicant configuration file (.config) for roaming.
CONFIG_DRIVER_NL80211=y
CONFIG_LIBNL20=y
CONFIG_LIBNL32=y
Save the configuration file and exit.
Compile the supplicant using "make" command in the following path.
# cd wpa_supplicant-2.6/wpa_supplicant
# make clean
# make
After successful compilation, the supplicant executable will be found in the same path. Copy the supplicant executable to the driver release folder.
# cp wpa_supplicant SIWT917.w.x.y.z/release.
Roaming#
Configure and Compile Supplicant for Roaming#
Follow the steps provided in the Configure and Compile latest Supplicant section.
Enable the following parameters in the supplicant configuration file (.config file) for roaming.
```
CONFIG_BGSCAN_SIMPLE=y
NL80211_CMD_ROAM=y
CONFIG_BGSCAN=y
```
Configure Connection Quality Monitoring (CQM) RSSI and Hysteresis using iw Command#
For more information about the iw tool, see the Wireless Tools section.
# iw dev <devname> cqm rssi <threshold|off> [<hysteresis>]
Set the connection quality monitor RSSI threshold.
Example:
# iw dev wlan0 cqm rssi -45 4
For more information about the background scan and set parameters configuration, see the Background Scan & Roaming section.
Installing Netlink Libraries#
libnl CFlags should be enabled with CONFIG_LIBNL32=y in supplicant and hostpad .config file [The above configuration settings should be set to "y" in case NL80211 is used].
If libnl libraries are not installed in the platform, follow any of the two methods given below.
Run the following command to install the required libnl libraries through yum/dnf/apt-get/:
# yum install libnl*
Alternately, if you are unable to install libnl libraries using above method, follow the steps below where we download libnl source package and compile.
Create a directory in the location where Tool chain and BSP are present.
# mkdir build
Download the libnl 3.2.xx.tar.gz[Referring 3.2.27.tar.gz as an example here ] library and extract it in the build directory.
# cd build<br># tar xvf 3.2.27.tar.gz
Configure the libnl library for target platfrom.
# CC=/path to the toochain/bin/arm-linux-gnueabihf-gcc # ./configure --host=arm-linux-gnueabihf -prefix=<complete path to build directory>
In this case, headers will be installed in ${prefix}/include/libnl3.
Make and install the libraries in the destination directory or else they will be installed in /usr/local/lib and /usr/local/include/libnl folders of host machine by default.
Follow the example given below:
# make DESTDIR=$(arm-cortex_a8-linux-gnueabihf-gcc -print -/<path to build directory>/build/) # make install
Exporting the path for build directory in the command line or add these flags in the supplicant and hostapd config files under CONFIG_DRIVER_NL80211= y variable.
# export LDFLAGS='-L/<path to build directory>/lib/libnl'
OR
Add these flags in the supplicant and hostapd .config files under CONFIG_DRIVER_NL80211= y variable.
CFLAGS += -I/<path to build directory>/include/libnl3 Ex: LIBS += -L/<path to build directory>/lib/libnl LIBS : Contains a list of additional libraries to pass to the linker command.