This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

WL1807MOD: Setting the Roaming threshold parameters in WIFI module

Part Number: WL1807MOD

Tool/software:

We are using WL1807MOD WIFI module in one of our project running Yocto linux. The module is configured in Concurrent mode (AP + STA).

    When we connect the WFI in STA mode to mesh network or Router having same SSID for 2.4 and 5 GHz band, what will be the default RSSI limits to trigger AP switch and also what is the RSSI difference between connected AP and other AP to trigger switch.

     Below document mention there is a mechanism to change this RSSI switch limit (in 4.15 section). Please provide some steps or way to change these limits,
   https://www.ti.com/lit/ug/swru423a/swru423a.pdf?ts=1730115718621&ref_url=https%253A%252F%252Fwww.google.com%252F 

Also is there a way to disable these roaming feature. We are using NetworkManager to configure the network.

Other than RSSI is there any other parameter which will trigger the AP switch.

Also below is the observation when we connect to router having same SSID for 2.4 and 5 GHz band

When we connect to SSID it will connect to 2.4 GHz which is having good signal strength. The AP roaming will switch to 5GHz which is having less signal strength. After sometime again it will switch to 2.4GHz this will continue.

[ 2964.277306] wlan0: disconnect from AP 9c:c9:eb:1a:d2:31 for new auth to a2:c9:eb:1a:d2:2f
[ 2964.401454] wlan0: authenticate with a2:c9:eb:1a:d2:2f
[ 2964.433908] wlan0: send auth to a2:c9:eb:1a:d2:2f (try 1/3)
[ 2964.586359] wlan0: authenticated
[ 2964.654489] wlan0: associate with a2:c9:eb:1a:d2:2f (try 1/3)
[ 2964.694907] wlan0: RX ReassocResp from a2:c9:eb:1a:d2:2f (capab=0x1431 status=0 aid=1)
[ 2964.728574] wlan0: associated
[ 2964.928352] wlcore: Association completed.
[ 3057.574863] wlan0: disassociated from a2:c9:eb:1a:d2:2f (Reason: 1=UNSPECIFIED)
[ 3058.817391] wlan0: authenticate with 9c:c9:eb:1a:d2:31
[ 3058.883672] wlan0: send auth to 9c:c9:eb:1a:d2:31 (try 1/3)
[ 3058.933228] wlan0: authenticated
[ 3058.964537] wlan0: associate with 9c:c9:eb:1a:d2:31 (try 1/3)
[ 3059.006467] wlan0: RX AssocResp from 9c:c9:eb:1a:d2:31 (capab=0x1511 status=0 aid=1)
[ 3059.037915] wlan0: associated
[ 3059.163584] wlcore: Association completed.
[ 3102.097032] wlan0: disconnect from AP 9c:c9:eb:1a:d2:31 for new auth to a2:c9:eb:1a:d2:2f
[ 3102.238292] wlan0: authenticate with a2:c9:eb:1a:d2:2f
[ 3102.271768] wlan0: send auth to a2:c9:eb:1a:d2:2f (try 1/3)
[ 3102.420688] wlan0: authenticated
[ 3102.474507] wlan0: associate with a2:c9:eb:1a:d2:2f (try 1/3)
[ 3102.517152] wlan0: RX ReassocResp from a2:c9:eb:1a:d2:2f (capab=0x1431 status=0 aid=1)
[ 3102.550627] wlan0: associated
[ 3102.744725] wlcore: Association completed.






  • Hi,

    As far as I know, you can control the weights for calculating the average RSSI via wlconf tool. You can see the default values under wl18xx_conf structure (and specifically the roam_trigger structure). The threshold themselves also have they own command to the firmware (via ACX_RSSI_SNR_TRIGGER) but I haven't changed them before. I believe this command is sent upon initialization so we can print the values during this command. The structure should contain the threshold as well as the enable/disable state of this threshold (so you can theoretically disable the threshold) .

    Shlomi

  • Hi Shlomi, 

           Thanks for the reply, when I disable the bgscan configuration in wpa_supplicant we are not seeing the AP roaming depending on RSSI. But what we are observing is 

    1. When the SSID of both 2.4Ghz and 5Ghz band is same in a router.

    2. When WL1807MOD wifi module connects to router in STA mode it connects to 5Ghz even when 2.4 Ghz has good signal strength.

    3. Also the module will switch to 5GHz AP even when we connect to 2.4Ghz.

    How to disable this feature of preferring 5Ghz band over 2.4Ghz band.

    We want to switch AP or roam AP based on  only signal strength.

  • Hi,

    There is no preference to 5GHz over 2.4GHz with this feature.

    How do you measure the RSSI? using iw? using the scan results?

    when you get de-authenticated, are you sure it is because of roaming and not other reasons? you can open some logs in the driver to see more.

    Regards,

    Shlomi

  • Hi Shlami,

        yes I am using iw command to read the RSSI, below are some if the iw event logs 

    wlan0: del station a2:c9:eb:1a:d2:2f
    wlan0 (phy #0): disassoc a2:c9:eb:1a:d2:2f -> 90:48:46:33:dc:3d reason 1: Unspecified
    wlan0 (phy #0): disconnected (by AP) reason: 1: Unspecified
    phy #0: regulatory domain change: set to world roaming by the wireless core upon initialization request
    phy #0: beacon hint:
    phy0 5180 MHz [36]:
            o Initiating radiation enabled
    phy #0: beacon hint:
    phy0 5220 MHz [44]:
            o Initiating radiation enabled
    phy #0: beacon hint:
    phy0 5745 MHz [149]:
            o Initiating radiation enabled
    ap0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, ""
    wlan0 (phy #0): scan started
    wlan0 (phy #0): scan finished: 5180, ""
    wlan0: new station 9c:c9:eb:1a:d2:31
    wlan0 (phy #0): auth 9c:c9:eb:1a:d2:31 -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): assoc 9c:c9:eb:1a:d2:31 -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): connected to 9c:c9:eb:1a:d2:31
    wlan0 (phy #0): ctrl. port TX status (cookie 3): acked
    wlan0 (phy #0): ctrl. port TX status (cookie 4): acked
    ap0 (phy #0): scan started
    wlan0 (phy #0): CQM event: RSSI (-71 dBm) went below threshold
    ap0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, ""
    wlan0 (phy #0): scan started
    wlan0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, "ORBI11"
    wlan0: del station 9c:c9:eb:1a:d2:31
    wlan0 (phy #0): deauth 90:48:46:33:dc:3d -> 9c:c9:eb:1a:d2:31 reason 1: Unspecified
    wlan0 (phy #0): disconnected (local request) reason: 1: Unspecified
    wlan0: new station a2:c9:eb:1a:d2:2f
    phy #0: regulatory domain change: set to world roaming by the wireless core upon initialization request
    wlan0 (phy #0): auth a2:c9:eb:1a:d2:2f -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): assoc a2:c9:eb:1a:d2:2f -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): connected to a2:c9:eb:1a:d2:2f
    wlan0 (phy #0): ctrl. port TX status (cookie 5): acked
    wlan0 (phy #0): ctrl. port TX status (cookie 6): acked
    ap0 (phy #0): scan started
    phy #0: beacon hint:
    phy0 5180 MHz [36]:
            o Initiating radiation enabled
    phy #0: beacon hint:
    phy0 5220 MHz [44]:
            o Initiating radiation enabled
    phy #0: beacon hint:
    phy0 5745 MHz [149]:
            o Initiating radiation enabled
    ap0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, ""
    wlan0 (phy #0): scan started
    wlan0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, "ORBI11"
    ap0 (phy #0): scan started
    ap0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, ""
    wlan0 (phy #0): scan started
    wlan0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, "ORBI11"
    ap0 (phy #0): scan started
    ap0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, ""
    wlan0: del station a2:c9:eb:1a:d2:2f
    wlan0 (phy #0): disassoc a2:c9:eb:1a:d2:2f -> 90:48:46:33:dc:3d reason 1: Unspecified
    wlan0 (phy #0): disconnected (by AP) reason: 1: Unspecified
    phy #0: regulatory domain change: set to world roaming by the wireless core upon initialization request
    wlan0 (phy #0): scan started
    phy #0: beacon hint:
    phy0 5180 MHz [36]:
            o Initiating radiation enabled
    wlan0 (phy #0): scan finished: 5180, "ORBI11"
    wlan0: new station 9c:c9:eb:1a:d2:31
    wlan0 (phy #0): auth 9c:c9:eb:1a:d2:31 -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): assoc 9c:c9:eb:1a:d2:31 -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): connected to 9c:c9:eb:1a:d2:31
    wlan0 (phy #0): ctrl. port TX status (cookie 7): acked
    wlan0 (phy #0): ctrl. port TX status (cookie 8): acked
    wlan0 (phy #0): CQM event: RSSI (-72 dBm) went below threshold
    wlan0 (phy #0): scan started
    phy #0: beacon hint:
    phy0 5220 MHz [44]:
            o Initiating radiation enabled
    phy #0: beacon hint:
    phy0 5745 MHz [149]:
            o Initiating radiation enabled
    phy #0: beacon hint:
    phy0 5785 MHz [157]:
            o Initiating radiation enabled
    wlan0 (phy #0): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 2484 5180 5190 5200 5210 5220 5230 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5745 5765 5785 5805 5825, "ORBI11"
    wlan0: del station 9c:c9:eb:1a:d2:31
    wlan0 (phy #0): deauth 90:48:46:33:dc:3d -> 9c:c9:eb:1a:d2:31 reason 1: Unspecified
    wlan0 (phy #0): disconnected (local request) reason: 1: Unspecified
    wlan0: new station a2:c9:eb:1a:d2:2f
    phy #0: regulatory domain change: set to world roaming by the wireless core upon initialization request
    wlan0 (phy #0): auth a2:c9:eb:1a:d2:2f -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): assoc a2:c9:eb:1a:d2:2f -> 90:48:46:33:dc:3d status: 0: Successful
    wlan0 (phy #0): connected to a2:c9:eb:1a:d2:2f
    wlan0 (phy #0): ctrl. port TX status (cookie 9): acked
    wlan0 (phy #0): ctrl. port TX status (cookie a): acked

    If we observe the above event log the network is switching from 5GHz band to 2.4 Ghz band because of signal strength 

    wlan0 (phy #0): CQM event: RSSI (-73 dBm) went below threshold

    But after some scan it will again switch to 5Ghz band without any valid event it shows unspecified event 

    wlan0: del station a2:c9:eb:1a:d2:2f
    wlan0 (phy #0): disassoc a2:c9:eb:1a:d2:2f -> 90:48:46:33:dc:3d reason 1: Unspecified

    Attached the driver logs when we saw this behavior 

    wlcore_logs.txt

  • The CQM event is usually used with the bgscan parameter in wpa_supplicant.cong for backgroud scan.

    Maybe the threshold is defined such that the RSSI is crossed and then the device roam.

  • Hi Shlomi, 

          Is the roaming happening only from upper layer like wpa_supplicant, is there any AP roaming happens form driver if we disable Roaming in wpa-supplicant?

  • Hi Shlomi,

               Exactly what I am trying to understand is, wpa-supplicant is the one responsible for enable roaming and setting the threshold Or by default there are some setting for roaming in driver level. 

  • if we are talking about the bgscan that I mentioned, it is enabled by the wpa_supplicant configuration file and is based on RSSI levels that are translated into CQM events.

    The RSSI levels are controlled and set by the driver. This is where I believe default values are used. The driver needs to also enable getting those events (via a mask) but this should be enabled by default.

    Without opening driver logs, would be hard to know.

    To do that you can read https://www.ti.com/lit/ug/swru575/swru575.pdf?ts=1731929568395&ref_url=https%253A%252F%252Fwww.google.com%252F

    The DYNAMIC_DEBUG needs to be opened in kernel. I would start by masking all events except for DEBUG_EVENT, DEBUG_MAC80211 and DEBUG_ACX.

    you can also run in the background the events to upper layer: "iw event -t &."

    Shlomi