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.

  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' 

      OR

    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.