Q4-Send-probe-request =========================================== .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Version Info ` * :ref:`Problem Statement ` * :ref:`Approach and code flow ` * :ref:`Actual change and Patch ` * :ref:`Wireshark capture ` .. _wifi_ldd_wi-fi_dev_sta_ques4_step_1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow * How to send a probe-request every 30 seconds .. _wifi_ldd_wi-fi_dev_sta_ques4_step_2: .. tab-set:: .. tab-item:: Version Info =============================== ======================================= # Version =============================== ======================================= Ubuntu Ubuntu 22.04 64 bit Linux Kernel 6.9.2 Supplicant wpa_supplicant 2.10 =============================== ======================================= .. _wifi_ldd_wi-fi_dev_sta_ques4_step_3: .. tab-set:: .. tab-item:: Problem Statement .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow * Send a probe-request every 30 seconds * Add a configuration parameter called "periodic_probe=30" in supplicant conf file * If "periodic_probe=0", then this feature is disabled * If "periodic_probe=5", then probe is sent at every 5th second .. _wifi_ldd_wi-fi_dev_sta_ques4_step_4: .. tab-set:: .. tab-item:: Approach and code flow * Call flow for send a probe-request every 30 seconds .. literalinclude:: send_probe_req_every_30sec_callflow.txt .. _wifi_ldd_wi-fi_dev_sta_ques4_step_5: .. tab-set:: .. tab-item:: Actual change and Patch * Download the below patch file :download:`send_probe_req_every_30sec.patch ` .. dropdown:: See the full content of patch file .. literalinclude:: send_probe_req_every_30sec.patch .. code-block:: shell test:~$ pwd /home/test * Make sure internet is available in laptop to download supplicant package .. code-block:: shell test:~$ sudo wget https://w1.fi/releases/wpa_supplicant-2.10.tar.gz * Create a directory .. code-block:: shell test:~$ mkdir supplicant * Change directory to supplicant .. code-block:: shell test:~$ cd supplicant * Note : Your present working directory should be supplicant .. code-block:: shell test:~$ pwd /home/test/supplicant/ * Extract wpa_supplicant .. code-block:: shell test:~$ sudo tar -xvf ~/wpa_supplicant-2.10.tar.gz * Run the below command to apply patch .. code-block:: shell test:~$ patch -p1 < send_probe_req_every_30sec.patch patching file wpa_supplicant-2.10/src/utils/os.h patching file wpa_supplicant-2.10/src/utils/os_unix.c patching file wpa_supplicant-2.10/wpa_supplicant/config_file.c patching file wpa_supplicant-2.10/wpa_supplicant/config.h patching file wpa_supplicant-2.10/wpa_supplicant/scan.c * Change directory to wpa_supplicant .. code-block:: shell test:~$ cd wpa_supplicant-2.10/wpa_supplicant/ * Check the current working directory using pwd command * Make sure your current working directory is wpa_supplicant .. code-block:: shell test:~$ pwd /home/test/supplicant/wpa_supplicant-2.10/wpa_supplicant * Copy the contents of defconfig file to .config file .. code-block:: shell test:~$ sudo cp defconfig .config * Compile wpa_supplicant .. code-block:: shell test:~$ sudo make * Create run_supplicant.conf .. code-block:: shell test:~$ sudo vim ./run_supplicant.conf ctrl_interface=/run/wpa_supplicant update_config=1 periodic_probe=30 network={ ssid="test_open" key_mgmt=NONE } * Run wpa_supplicant .. code-block:: shell test:~$ sudo ./wpa_supplicant -Dnl80211 -i wlan1 -c ./run_supplicant.conf .. _wifi_ldd_wi-fi_dev_sta_ques4_step_6: .. tab-set:: .. tab-item:: Wireshark capture * Download file to check wireshark output :download:`send_probe_req_every_30sec.pcapng ` .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow * Check for probe-request packet * Apply display filter * wlan.addr == 02:00:00:00:01:00 && wlan.fc.type_subtype == 4 .. image:: probe_req_wireshark_image1.png :alt: Diagram :width: 800 :height: 400 .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow * Observe the probe-request packets with 30 sec time interval .. image:: probe_req_wireshark_image2.png :alt: Diagram :width: 800 :height: 400