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.

How does CC3000 deal with finding multiple copies of an SSID?

Other Parts Discussed in Thread: CC3200, CC3100

I'm trying to connect the CC3000 to a university network. I have managed to connect it and communicate out to the internet in some locations, but I'm having major reliability problems in most locations. I have to register the MAC address with the university for a start, no big deal, and having done that it should behave as a normal unsecured open network. I can generally connect and get an IP address and network config via DHCP (with some patience) via:

wlan_ioctl_set_connection_policy(0, 0, 0);
wlan_connect(WLAN_SEC_UNSEC, (const char*)ssid, strlen(ssid), 0 ,NULL,0);

But then basic things like DNS resolution and Ping don't work reliably. I *think* the issue is that the university has multiple access points broadcasting the same SSID in any given area and the CC3000 doesn't handle that very well. The multiplicity is plain to see in the results of an SSID Scan - I think I counted nine scan results with the same name and various RSSI levels at one point. Generally at least one of the access point indicates RSSI above 80, so I think signal strength shouldn't be an issue logically, unless the CC3000 is not being intelligent about which access point it picks given multiple choices with the same SSID.

I've got multiple CC3000's exhibiting the same exact behavior. Can anyone shed light on the CC3000's behavior in the context I've described? I'm using the latest firmware on the CC3000 (i.e. v1.32). Is my experience unique here? This strikes me as a pretty common situation. Are there any workarounds? I'm pretty stuck at the moment.

  • Hi Victor,

    In the context that you have mentioned above, after issuing a wlan_connect, the CC3000 would look for the AP with the correct credentials provided as arguments to wlan_connect and connect to it. And if there are APs with same SSID/credentials it would connect to the AP with better signal strength.

    With respect to DNS, please ensure that the internet connectivity of the AP is consistent. And for ping, please do not expect one to one mapping with respect to ping request and ping response, as it is a known issue.

    As a side note, the CC3000 does not support WPA enterprise connection (Just in case if your application is trying to connect to an AP with enterprise security).

    Regards,
    Raghavendra

  •  thanks for responding. The policy you described is basically what I would have expected. I took the devices to a less heavily populated area of campus and they worked fine. I wonder if the number of computers connected to the access point and/or the number of Bluetooth devices are factors that would affect the resiliency of the CC3000's network interactions, and whether there is any way to cope with that in a practical sense. I'm talking about an unsecured open network, so WPA Enterprise is a non-issue in this case.

  •  I'm in a university setting and connecting to an Open campus network (i.e. security = None), where I had to register the MAC address ahead of time. Where I'm sitting right now, there are 46 visible 2.4GHz Wi-FI networks (using linssid to scan), and 16 of them are the SSID I'm trying to connect to (on various channels and ranging from signal strength of -46 to -88 says my laptop). The CC3000 is running 1.32 firmware, is there anything I can do to encourage it to connect? Please don't suggest that I switch to the CC3100/CC3200, I understand that's a more capable chipset, but it's not an option for me at the moment.

  • I have been studying the driver code more closely. It looks like wlan_connect has an argument for bssid. It looks like the application level driver that invokes this API always passes NULL (0) for this argument. Do you think this could be to blame for connection failures in the presence of multiple access points in an area broadcasting the same SSID? It looks like the TI driver code (where my application code can never reach the first block presently):

    // padding shall be zeroed
    if(bssid)
    {
    ARRAY_TO_STREAM(args, bssid, ETH_ALEN);
    }
    else
    {
    ARRAY_TO_STREAM(args, bssid_zero, ETH_ALEN);
    }
  • I don't know if this is helpful but here is some Serial output of my connection attempt. You can see there are multiple instances of the RedRover network to which I'm trying to connect, and that it is an unsecured network.

    Hello, CC3000!

    RX Buffer : 512 bytes
    TX Buffer : 512 bytes
    Free RAM: 14765

    Initialising the CC3000 ...
    Firmware V. : 1.32
    MAC Address : XXXXXXXXXXXXXX (redacted)
    Networks found: 15
    ================================================
    SSID Name : RedRover
    RSSI : 72
    Security Mode: 0

    SSID Name : Cornell-Visitor
    RSSI : 72
    Security Mode: 0

    SSID Name : RedRover
    RSSI : 83
    Security Mode: 0

    SSID Name : eduroam
    RSSI : 83
    Security Mode: 3

    SSID Name : Cornell-Visitor
    RSSI : 83
    Security Mode: 0

    SSID Name : RedRover
    RSSI : 83
    Security Mode: 0

    SSID Name : Cornell-Visitor
    RSSI : 83
    Security Mode: 0

    SSID Name :
    RSSI : 76
    Security Mode: 3

    SSID Name : RedRover
    RSSI : 72
    Security Mode: 0

    SSID Name : RedRover
    RSSI : 83
    Security Mode: 0

    SSID Name : Cornell-Visitor
    RSSI : 83
    Security Mode: 0

    SSID Name : eduroam
    RSSI : 83
    Security Mode: 3

    SSID Name :
    RSSI : 79
    Security Mode: 3

    SSID Name : eduroam
    RSSI : 83
    Security Mode: 3

    SSID Name : eduroam
    RSSI : 72
    Security Mode: 3

    ================================================

    Deleting old connection profiles

    Attempting to connect to RedRover