How does the firmware choose Wifi connection


I found out, the core does not choose the strongest WiFi signal for its connection (to the cloud). I running a core in the basement, sending some data to a webserver in my intranet. Logging the Wifi strength, I found that the connection signal only has a value of -70db to -80db. But the core is located within 1m of the access point in the basement. The other access point is on the first floor. If I switch off the AP at the 1st floor, the core switches to the basement AP and measures a strong WiFi signal about -40db.

How does the core decide which Wifi connection to use?

@digixx, i believe the core does that where it chooses the strong Wifi signal.

That’s what i notice using a hotspot within proximity and a home router sitting in the living room.

It’s interesting why it decides to go for the 1st floor AP instead! :smiley:

You can also try to erase the wifi credentials. (Place in listening mode, hold on the MODE button till it flashes blue rapidly)

Enter the basement credentials first followed by 1st floor. It shouldn’t be the case where the sequence matter but let’s try it if you want :wink:

Hhm, the credentials are the same for both AP. Same SSID, same password

Enter the basement credentials first followed by 1st floor. It shouldn’t be the case where the sequence matter but let’s try it if you want wink

Can I enter more the one WiFi connection?

Yes you can by placing the core back in to Listening mode. Hmmm… Since it is the same SSID and password, i guess you don’t have to do it.

Over the past few days doing testing, my core does select the nearer AP with a different credentials.

Maybe you can try setting it to a different one at the basement if that’s a possibility? :wink:

I also had the same problem with 3 AP’s. I ended up having to change the SSID of all my access points for Spark to go to the correct place so there is definitely some kind of bug lurking here where spark does not always pick the strongest AP. :stuck_out_tongue_winking_eye:

1 Like

I doubt its a bug. I suspect the CC3000 will connect to the last AP it was connected to if it is available, regardless of signal strength. An access point is identified by its SSID and its BSSID (AP mac address and always unique). If the last access point isn’t available then by strongest signal available


The “Troubleshooting” section of the Docs states

Enterprise networks. We have had mixed results connecting the Spark Core to enterprise networks, although we don’t yet have a great understanding of what’s causing the issue. This is something that we are working to improve.

I’ve interpreted this as “networks with multiple AP’s using the same SSID” and my personal experience has been that the Spark will either fail to connect completely, or connect to less than ideal AP’s in this scenario. Hopefully the Proton handles this better/

@sberkovitz, the issue with Enterprise networks is the user/password LDAP/Domain authentication requirements. This is not supported in the Photon either.

I’ve got a 15 AP cisco wireless network at my office with a WLAN controller, all WPA2 (no radius or anything like that), and the core won’t join the network…

Even at my house with 3 AP’s, I couldn’t get the core to hold a network connection, so I ended up adding a SSID just to one AP specifically for the core.

1 Like

@sberkovitz, I see. With the Photon using the Broadcom hardware, I suspect it will have more reliable connectivity. :smile:

In my case there is no enterprise wifi involved. It’s 3 apple airport wireless AP’s configured with WPA2.

EDIT: 5GHZ AP’s are separately named.

1 Like

@sullrich are you able to get your cores working?

@sberkovitz are all the 3 AP at your house the same SSID and password?

Yep my cores work fine - its just the spark would drop all the time because I initially configured the device in my basement and moved it upstairs which uses another AP. The core would connect back to the downstairs AP regardless that the upstairs AP with the same username/password/ssid is closer.


Yes they all use the same config


dot11 ssid AirTareyton
authentication open
authentication key-management wpa version 2
wpa-psk ascii 7 ****


interface Dot11Radio0
no ip address
no ip route-cache
encryption mode ciphers aes-ccm
ssid AirTareyton
antenna gain 0
beamform ofdm
power local 16
station-role root
dot11 qos class video local
admit-traffic signaling infinite
dot11 qos class voice local
admit-traffic narrowband max-channel 75 roam-channel 6
dot11 qos class video cell
dot11 qos class voice cell
l2-filter bridge-group-acl
bridge-group 1
bridge-group 1 subscriber-loop-control
bridge-group 1 input-address-list 700
bridge-group 1 output-address-list 700
bridge-group 1 spanning-disabled
bridge-group 1 block-unknown-source
no bridge-group 1 source-learning
no bridge-group 1 unicast-flooding

In both scenarios I have QoS enabled, I wonder if that doesn’t play well with the Spark?

Not sure but it might be though you be more familiar! :smile: