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.

CC3235MODSF: CC3235MODSF: soft roaming - how it should work

Part Number: CC3235MODSF
Other Parts Discussed in Thread: UNIFLASH, CC3235SF

Recently I asked how the soft roaming should work and back then I thought the issues were caused by using the "Update" API instead of Delete/Add.

Now after a few measurements I'm thinking it wasn't the update API that caused my confusion.

So the issue is that I set up the link-quality trigger with id=1 (soft roaming) and set the trigger level to -65dB, hysteresis=1

I have a few SSIDs added to the profiles. ROUTERs are named "TEST_2G4" and "TEST_2G4_2", "TEST_5G" and "TEST_5G_2", profiles are setup accordingly.

Router #1 is located ~50meters from router #2 (SSID = "***_2")

In the "SimpleLinkWlanEventHandler" function whenever I receive a notification with "SL_WLAN_EVENT_LINK_QUALITY_TRIGGER" I print out the latest scan results returned by sl_WlanGetNetworkList to see the RSSI values.

And here it is where it gets confusing. The list confirms that the device sees the #2 router with much higher RSSI value yet it will not hop to that SSID.

When walking towards router #2 I get the following notifications:

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-66 TriggerId=1
[SCAN] Results 28:
01 -64 dB SSID: TEST_2G4
02 -87 dB SSID: TEST_5G
25 -74 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-70 TriggerId=1
[SCAN] Results 30:
01 -61 dB SSID: TEST_2G4
02 -87 dB SSID: TEST_5G
24 -71 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-69 TriggerId=1
[SCAN] Results 30:
01 -61 dB SSID: TEST_2G4
02 -87 dB SSID: TEST_5G
24 -71 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-72 TriggerId=1
[SCAN] Results 30:
01 -61 dB SSID: TEST_2G4
02 -87 dB SSID: TEST_5G
24 -71 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-75 TriggerId=1
[SCAN] Results 30:
01 -66 dB SSID: TEST_2G4
02 -87 dB SSID: TEST_5G
24 -66 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-76 TriggerId=1
[SCAN] Results 30:
01 -66 dB SSID: TEST_2G4
22 -66 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-78 TriggerId=1
[SCAN] Results 30:
01 -66 dB SSID: TEST_2G4
22 -66 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-79 TriggerId=1
[SCAN] Results 30:
01 -77 dB SSID: TEST_2G4
21 -63 dB SSID: TEST_2G4_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-82 TriggerId=1
[SCAN] Results 27:
01 -77 dB SSID: TEST_2G4
17 -63 dB SSID: TEST_2G4_2
27 -83 dB SSID: TEST_5G_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-83 TriggerId=1
[SCAN] Results 27:
01 -77 dB SSID: TEST_2G4
17 -63 dB SSID: TEST_2G4_2
27 -74 dB SSID: TEST_5G_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-86 TriggerId=1
[SCAN] Results 21:
01 -84 dB SSID: TEST_2G4
08 -58 dB SSID: TEST_2G4_2
16 -74 dB SSID: TEST_5G_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-86 TriggerId=1
[SCAN] Results 21:
01 -84 dB SSID: TEST_2G4
08 -58 dB SSID: TEST_2G4_2
16 -74 dB SSID: TEST_5G_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-83 TriggerId=1
[SCAN] Results 21:
01 -84 dB SSID: TEST_2G4
08 -58 dB SSID: TEST_2G4_2
16 -74 dB SSID: TEST_5G_2

[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-81 TriggerId=1
[SCAN] Results 21:
01 -84 dB SSID: TEST_2G4
08 -58 dB SSID: TEST_2G4_2
16 -74 dB SSID: TEST_5G_2

Below RSSI -75 the data throughput using router #1 is extremely low, it would be nice to make this roaming work.

In another scenario when I configure #1 router to lower TX power with 5Ghz and switch of 2G4 network, have the device connected to 5Ghz.
Then I activate the 2G4 radio again and I get the notification from the device via the same linkquality callback that I got disconnected from 5Ghz and got reconnected to 2G4 reason=200.
This translates to "SL_WLAN_DISCONNECT_USER_INITIATED" I would maybe expect "SL_WLAN_DISCONNECT_ROAMING_TRIGGER_LOW_QUALITY"?

Questions:

1) What does the hysteresis configure in case the roaming feature is requested with the link-quality api?
2) What do we need to enable or setup/configure in addition to make the soft roaming work?
3) Why do I get reason=200 code when the roaming feature hops from 5G to 2G4?

  • Question
    4) When roaming is scanning for SSIDs. The device has a limited list of 30 entries? Does the device prefer the known SSID so IF we have 7 profiles stored will those 7 always be preferred to show up in the list of 30 SSID or could it happen (in a urban environment where you have 60+ SSIDs) that none of the SSID will be able to fit into the list? How is the scanning implemented in regards to what profiles stored?

  • Hello,

    Is soft roaming working for you at all?

    1. Do you mean sl_WlanSet API with the link quality option? I'm not aware of any specific link quality API. I just want to make sure we are on the same page. I'm not sure I understand this question. The hysteresis will be configured to whatever you set it to in the SlWlanRegisterLinkQualityEvents_t structure you passed to sl_WlanSet.

    2. There is a code excerpt in section 4.3.6 of the programmer's guide to enable soft roaming. Main things that stand out to me is making sure trigger ID = 1 (which it looks like you did), enable = 1 (obviously), and call the sl_WlanSet API with the rest of your configurations. Soft roaming will not work if you have fast connection enabled in your connection policy. Please verify this. If you don't know how to set your connection policy, check the WLAN section of the programmers guide. 

    3. When you perform that disable on the router it may be disconnecting the stations before it fully shuts down. You can verify this with sniffer logs but this is my educated guess. Try hopping 

    4. Yes, 30 entries is the limit. Scanning will choose first based on priority of the profile stored and then by RSSI.

    Jesu

  • Thanks for the reply. I believe I reported this issue because I can not tell if it is working properly or not, or if it is even working.

    1) I believe it is a simple question. in the structure "SlWlanRegisterLinkQualityEvents_t" you have a field "Hysteresis".
    Documentation: "Hysteresis range around the threshold value. Units: dB ; Threshold range: (0 .. 255)"
    I cna imagine that hysteresis is applied on Threshold when TirrgerId=0 but what does it do in case TriggerId=1?
    I saw no difference in having different values here.
    Does it mean the other/candidate SSID has to have RSSI = current + Hyst higher? 

    2) Thanks, I believe I followed the instruction there. (see below)

    3) I'm sorry but I'm not sure I understand these sentences.
    I do not perform anything. I setup an app with roaming (i believe) and then I have 1 router with 2 interfaces, one interface has less power  output set hence weaker link the other has higher. So when device is connected to the weaker interface and I get the callback with a printout confirming that my RSSI is waaaaay below  the value "RegisterLinkQuality.Threshold" I would expect that roaming happens. What I see is it rarely happens and then I get code=200.

    4) I understand 30 is the limit. My question was: IF i have 60 SSID in my neighborhood and i have 7 profiles configured. Will the device always prefer the stored profiled SSID during  _STORING_ scanning and thus? Or it will be random an I might not see any of my 7 profile SSIDs in the list of 30 entries even though they are there all 7 visible surrounded by 53 other SSID?
    Or in other words: is the scanning 
     4/a) just a stupid "look for SSID/beacon frames for a period of time" mechanism  
     4/b) or is it "look for SSIDs perferebly that I know and store the remaining if i still have list entries free"?

    I took the following code sample from the programmers guide:

        SlWlanRegisterLinkQualityEvents_t RegisterLinkQuality;
        RegisterLinkQuality.Enable = 1;
        RegisterLinkQuality.TriggerId = 1;
        RegisterLinkQuality.Metric = SL_WLAN_METRIC_EVENT_RSSI_BEACON;
        RegisterLinkQuality.Direction = SL_WLAN_RSSI_EVENT_DIR_LOW;
        RegisterLinkQuality.Threshold = -65;
        RegisterLinkQuality.Hysteresis = 1;
        RegisterLinkQuality.Type = SL_WLAN_RX_QUALITY_EVENT_LEVEL;
        RegisterLinkQuality.Pacing = 5000;
    
        status = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,
                            SL_WLAN_GENERAL_PARAM_REGISTER_LINK_QUALITY_EVENT,
                            sizeof(SlWlanRegisterLinkQualityEvents_t),
                            (_u8*)&RegisterLinkQuality);

    FastConnect is disabled in UNIFLASH config and I'm not overwriting it in my app.

    I also have the following printout that generates above copied log:

    void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent)
    {
        switch(pWlanEvent->Id)
        {
        case SL_WLAN_EVENT_LINK_QUALITY_TRIGGER:
        {
            int8_t rssi = pWlanEvent->Data.LinkQualityTrigger.Data;
    
            UART_PRINT("[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER");
            UART_PRINT(" rssi=%d", rssi);
            UART_PRINT(" TriggerId=%x", pWlanEvent->Data.LinkQualityTrigger.TriggerId);
            UART_PRINT("\r\n");
    
            SlWlanNetworkEntry_t Entries[32];
            int32_t rssi_max = -255;
            uint32_t i = 0;
    
            _i16 resultsCount = sl_WlanGetNetworkList(0,32,&Entries[0]);
    
            UART_PRINT("[SCAN] Results %d: \r\n", resultsCount);
    
            if( resultsCount > 0 )
            {
                for(i=0; i < resultsCount; i++)
                {
                    UART_PRINT("%02d ", i + 1);
                    UART_PRINT("%02x:%02x:%02x:%02x:%02x:%02x ", Entries[i].Bssid[0], Entries[i].Bssid[1], Entries[i].Bssid[2], Entries[i].Bssid[3], Entries[i].Bssid[4], Entries[i].Bssid[5]);
                    UART_PRINT("%4d dB ", Entries[i].Rssi);
                    UART_PRINT("SSID: %.32s", Entries[i].Ssid);
                    UART_PRINT("\r\n");
                }
            }
        } break;
      }
    }

    So the question is again: assuming above sample codes are correct, fast-connect is disabled and I have a threshold with -65dB, I see that my reported current RSSI=-85dB and I see that a profile stored RSSI=-58dB -> How come that soft-roaming jump/hop does not happen?

  • Hello,

    Apologies for the confusion.

    4. As I mentioned in my previous response. 

    Scanning will choose first based on priority of the profile stored and then by RSSI.

    In other words, scanning will populate the list of results first based on priority of the profiles stored and then by RSSI. I hope this is clear.

    So the question is again: assuming above sample codes are correct, fast-connect is disabled and I have a threshold with -65dB, I see that my reported current RSSI=-85dB and I see that a profile stored RSSI=-58dB -> How come that soft-roaming jump/hop does not happen?

    Your configuration looks okay to me. It's similar to the code excerpt in the programmer's guide. I might have to work on a test setup myself here with the same configuration. What SDK and service pack version are you using so I can match your setup? Luckily I have two routers at home so I should be able to test this.

    Jesu

  • SDK: simplelink_cc32xx_sdk_4_20_00_07

    SP: sp_4.7.0.3_3.1.0.5_3.1.0.26

  • Thanks. Please give me a couple days to test. I'm thinking I will just store the two profiles of the routers I have at home, disable fast connect and match your soft roaming settings which you have provided above. Both routers will be 2.4GHz. I will be out of the office on Friday so please give me until early next week to get back to you.

    Thanks,

    Jesu

  • Part Number: CC3235MODSF

    I have a printout of san results  (sl_WlanGetNetworkList) in SimpleLinkWlanEventHandler when the LINK_QUALITY_TRIGGER event.
    Scan interval is at default value.
    Trigger interval is 5000ms.

    Normally [SCAN] Reulsts shows 10+ SSIDs with RSSI values but sometimes after a while I get the following result and it stays that way:

    [wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-66 TriggerId=1
    [SCAN] Results -2073:
    [wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-65 TriggerId=1
    [SCAN] Results -2073:
    [wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-66 TriggerId=1
    [SCAN] Results -2073:
    [wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-64 TriggerId=1
    [SCAN] Results -2073:

    -2073 is an undocumented error code behind this define: SL_ERROR_WLAN_GET_NETWORK_LIST_EAGAIN

    Could someone explain me what is happening and why?

  • Hello,

    I am also supporting you on the other thread about soft roaming. Have not forgotten about you we just have very high volume right now.

    Please check the thread below for your answer. You just need a delay:

    e2e.ti.com/.../605541

    Jesu

  • Thanks but i wrote:

    Scan interval is default (i believe it is 20s, correct me if i'm wrong).

    The LINK_QUALITY_TRIGGER happens every 5second.

    So it should report 4-5 times the code -2073 then it should return at least 1 result (as this is the only place where I read out scan results).

    But this is not what I wrote and what I'm seeing.

    Sometimes it just returns -2073 and will not recover (meaning it reports -2073 for minutes and not just a few times).

  • Are you working off of a modified SDK example? Could you provide me code to reproduce this issue?

    Jesu

  • Yes the basis was an example project that I modified over weeks.
    
    Setup/init code:
    
        SlWlanRegisterLinkQualityEvents_t RegisterLinkQuality;
        RegisterLinkQuality.Enable = 1;
        RegisterLinkQuality.TriggerId = 1;
        RegisterLinkQuality.Metric = SL_WLAN_METRIC_EVENT_RSSI_BEACON;
        RegisterLinkQuality.Direction = SL_WLAN_RSSI_EVENT_DIR_LOW;
        RegisterLinkQuality.Threshold = -65;
        RegisterLinkQuality.Hysteresis = 1;
        RegisterLinkQuality.Type = SL_WLAN_RX_QUALITY_EVENT_LEVEL;
        RegisterLinkQuality.Pacing = 5000;
    
        status = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,
                            SL_WLAN_GENERAL_PARAM_REGISTER_LINK_QUALITY_EVENT,
                            sizeof(SlWlanRegisterLinkQualityEvents_t),
                            (_u8*)&RegisterLinkQuality);
    
    
    Eventhandler:
    
    void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent)
    {
        // pWlanEvent->Id, look for "SlWlanEventId_e"
        switch(pWlanEvent->Id)
        {
        case SL_WLAN_EVENT_LINK_QUALITY_TRIGGER:
        {
            int8_t rssi = pWlanEvent->Data.LinkQualityTrigger.Data;
    
            UART_PRINT("[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER");
            UART_PRINT(" rssi=%d", rssi);
            UART_PRINT(" TriggerId=%x", pWlanEvent->Data.LinkQualityTrigger.TriggerId);
            UART_PRINT("\r\n");
    
            SlWlanNetworkEntry_t Entries[32];
            int32_t rssi_max = -255;
            uint32_t i = 0;
    
            _i16 resultsCount = sl_WlanGetNetworkList(0, 32, &Entries[0]);
    
            UART_PRINT("[SCAN] Results %d: \r\n", resultsCount);
    
            if( resultsCount > 0 )
            {
                for(i=0; i < resultsCount; i++)
                {
                    UART_PRINT("%02d ", i + 1);
                    UART_PRINT("%02x:%02x:%02x:%02x:%02x:%02x ", Entries[i].Bssid[0], Entries[i].Bssid[1], Entries[i].Bssid[2], Entries[i].Bssid[3], Entries[i].Bssid[4], Entries[i].Bssid[5]);
                    UART_PRINT("%4d dB ", Entries[i].Rssi);
                    UART_PRINT("SSID: %.32s", Entries[i].Ssid);
                    UART_PRINT("\r\n");
                }
            }
        } break;
    
        default:
            UART_PRINT("[wifi] SimpleLinkWlanEventHandler %d \r\n", pWlanEvent->Id);
            break;
        }
    }

  • Hello,

    Apologies for the delay. I have not forgotten about this, I just recently moved and no longer have access to a second AP so I cannot test this right now. I'm currently testing the code you provided on the other E2E and will respond to you today. As a reminder, I'm going to try to test soft roaming. In other words, verify I can hop from one AP to another based on RSSI value.

    Thanks for your patience.

    Jesu

  • Hello,

    Thank you for providing this code. You should not be calling sl_WlanGetNetworkList inside your event handler. It is safer for you to signal a task from the event handler that will call sl_WlanGetNetworkList. I'm surprised it's even working for you at all. Out of curiosity I tested your code and kept on getting HW fault for calling sl_WlanGetNetworkList inside the event handler. I made some slight optimizations but it's basically your code. If I uncomment the sl_WlanGetNetworkList call I will get a hard fault error in my code. I'm still trying to figure out the cause because I get the hard fault before the code even calls sl_WlanSet to enable link quality events. But I know it has to do with sl_WlanGetNetworkList because if I comment it out the code runs fine. I will get back to you on this after I get feedback from another engineer. Anyway, you should try handling this outside of the event handler. Create a task, a semaphore and signal the task from the link quality event. 

    With this code the trigger is working fine for me. I had to drop the threshold to -40 since my AP is closer to me but the results is the same. This is my terminal output when I comment out the sl_WlanGetNetworkList call:

     It just goes on....

    trigger:  rssi=-58       triggerId=1
    trigger:  rssi=-58       triggerId=1
    trigger:  rssi=-57       triggerId=1
    trigger:  rssi=-57       triggerId=1

    Let me know how it goes.

    Jesu

  • I just setup AC1750 routers with OpenWRT and testing the roaming on 2G4.

    Using these commands I can play with the 1 router's TX power.

    "iw phy1 set txpower fixed 20000"

    "iw phy1 set txpower fixed 0"

    So I have a relatively stable way to reproduce it.

    I contineusly get reports:

    [wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_LINK_QUALITY_TRIGGER rssi=-71 TriggerId=1

    Where I see my routers:

    06 -72 dB SSID: TEST_2G4_2

    18 -46 dB SSID: TEST_2G4

    Roaming doesnt seem to happen.
    Disconnect happens from time to time with various reasons (this time i got reason code = 40) and then the device of course jumps to the stronger AP.

  • Thanks. The reason I added this code isn't to use it for the end application. I was just curious what are the RSSIs when the trigger happens and this seemed the shortest and seemingly working way.

    My problem isn't the printout.

    My problem is that when I get such event id=SL_WLAN_EVENT_LINK_QUALITY_TRIGGER triggerId=1 then (since roaming is enabled) the device should jump to the stronger AP. But this isn't happening.

    In your case I only see that the "trigger level" works. So you set an RSSI threshold to -40 and you got the notification for values below this.
    But I do not see that you would get disconnected from the current and connected to other AP.

    Please add this code to the switchcase:

        case SL_WLAN_EVENT_CONNECT:
            UART_PRINT("[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_CONNECT");
            UART_PRINT(" channel=%d", pWlanEvent->Data.Connect.Channel);
            UART_PRINT(" bssid=");
            UART_PRINT(mac);
            UART_PRINT(" ssid=");
            UART_PRINT(pWlanEvent->Data.Connect.SsidName);
            UART_PRINT("\r\n");
            break;
    
        case SL_WLAN_EVENT_DISCONNECT:
            UART_PRINT("[wifi] SimpleLinkWlanEventHandler SL_WLAN_EVENT_DISCONNECT");
            UART_PRINT(" ssid=");
            UART_PRINT(pWlanEvent->Data.Disconnect.SsidName);
            UART_PRINT(" reason=%d", pWlanEvent->Data.Disconnect.ReasonCode); // #SL_WLAN_DISCONNECT_UNSPECIFIED
            UART_PRINT("\r\n");
            break;

  • Hello,

    My problem isn't the printout.

    As I understand, your question in this E2E is why you are getting the -2073 error which is the error from calling sl_WlanGetNetworkList. 

    As you know, I've had an AP limitation for the past week due to COVID. I only ran this test with one AP profile stored. I will be getting another AP tomorrow. I will run this test and get back to you.

    Jesu

  • I've merged these two threads since the questions are related. I need to be able to test this myself before we move forward. Please give me time to get my hands on another AP tomorrow.

    Jesu

  • My problem:

    1) I see the callback firing and reporting RSSI way below the set -60dB limit but roaming (jumping to stronger AP which is shown in the scan and is added among the profiles) isn't happening.

    2) Sometimes I get "disconnected" event with various error codes but none of the "roaming" error codes.

  • Hello,

    I did some testing today and last week. I can confirm I'm seeing similar behavior as you. I am going to check with the rest of the team tomorrow to get to the bottom of this. Thanks for your patience.

    Jesu

  • Hello.

    Just to update you again. I did some more testing today. 

    Test setup: I’m running network terminal example on CC3235SF LP. Using sp_4.8.0.8_3.7.0.1_3.1.0.26.bin and SDK v4.3. I setup 2 APs (home AP and mobile hotspot on Samsung S10). Phone AP and home AP are 50-60 feet away.  I add AP profiles for my home network and mobile hotspot and they are same security (WPA2) and same priority. I connect to home AP first (NETGEAR34) then enable soft roaming (SoftRoamingEnable –r 65). I can see the SL_WLAN_EVENT_LINK_QUALITY_TRIGGER events occurring but no AP change never occurs. It seems that the AP disconnects after -85 RSSI is exceeded and then after some time the CC3235 decides to connect to the phone AP due to the connection policy I believe (auto connect enabled). No AP change due to soft roaming seems to be occurring.

    You can see in the logs after I get AP disconnect then I try the scan command and my phone AP (S10e_jp) is -59 RSSI and my home AP is -89 RSSI but it still does not disconnect.

    I've reach out to R&D to understand why AP change is not triggering by soft roaming. As soon as they have answers I will get back to you.

    Has anything changed on your side? Anything new?

    Jesu

  • No change on my side. After I reported that the issue is fairly easily reproducible I did not investigate further. Not much an end-user can do on the application level.

  • Gotcha. I heard back from R&D and I'm getting looped in with the people who implemented this feature. Slow but steady progress. Also, I will be on time off for the holidays coming up so I will not be responding on here for a few weeks. Thank you for your patience. 

    Happy holidays!

    Jesu

  • Actually I just heard back from R&D again. Below are their remarks:

    The transition will occur only after passing the threshold and by finding better AP that has +5 better RSSI (if you used -65, so only if the second one has -60 or more it will connect to it. 

    Could you try to test this scenario again with a new configuration of at least 10dB between the APs (just to ensure the functionality works as expected)? I have not tested this myself since I am on PTO. I just wanted to get you a response.

    Please ensure that the FAST connection is disabled as part of the feature requirements.

    Jesu

  • The code and log I posted above exactly shows that I set the threshold to -65 and the newly picked up router is reported with -58?

  • Hi,

    I am experiencing a similar issue here. I am using SDK 4.20 with sp "sp_4.7.0.3_3.1.0.5_3.1.0.26.bin".

    In my case, auto provisioning is also enabled with auto connection, which is "SL_WLAN_CONNECTION_POLICY(1, 0, 0, 1)". However, I receive SL_WLAN_DISCONNECT_ROAMING_TRIGGER_BSS_LOSS only if I am really far away from the first AP, after I get several Link Trigger Events with RSSI -90 or lower.

    It would be great to have a solution about this, otherwise we will have to develop a disconnect/connect feature within the application.

    Best,

    Ogulcan

  • Hi everyone,

    Thank you for your patience. I've been working with R&D in the background and running additional test. I had to collect data to progress the internal discussion we've been having about the soft roaming feature. We will keep you updated as we progress through this but as it stands currently I am seeing the same issue as you. I could sometimes trigger a network change but it is not consistent. I'm sharing all of this with the relevant experts so we can identify what is wrong here. 

    If R&D agrees there is an issue we will likely commit to fixing this for the next quarterly SDK release but this is not a certainty. I will be transferring this thread to a different engineer and they will continue supporting you next week. In the meantime please be patient as we continue working on this.

    Jesu