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.


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.


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.


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. 
   # 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.

  1. Run the following command to install the required libnl libraries through yum/dnf/apt-get/:

    # yum install libnl*
  2. Alternately, if you are unable to install libnl libraries using above method, follow the steps below where we download libnl source package and compile.

    1. Create a directory in the location where Tool chain and BSP are present.

      # mkdir build 
    2. 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
    3. 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.

    4. 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 
    5. 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' 


    6. 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.