iPhones on iOS 15.x cannot automatically reconnect to an open WiFi captive portal network

Hello There,

My company is running a open/public wifi network with captive portal authentication, and in the recent month, many users widely reported a WiFi issue that iPhone on iOS 15.x cannot automatically join to the network. On those devices, the user has to manually click the SSID in Wireless setting to make WiFI connected. It is pretty odd that the problem seems only happen to device running on iOS 15.x especially 15.4 and 15.5 which are newly released. Lower version iOS devices such as iOS 12, Andriod device and Windows laptop are all working perfectly for the wifi auto-join/re-connection.

On the problem iPhone, following checks have been made,

  1. This iPhone can join the network and connect to the internet by manually clicking the SSID in wireless setting.
  2. The auto-join tap is on in this SSID setting, and the device is within the WiFi range with a good signal strength ( -65 dBm and 30+ dB SNR on both 2.4G and 5G).

Furthermore, I also conducted a packet capture on the Access Point to monitor the progress of wireless association between problem iPhone and the access point. When the iPhone come to the WiFi range and turn on the wireless, over the air we cannot see any probe request from the iPhone. After manually click the SSID in wireless setting on the iPhone, the iPhone sent the probe request to the access point, and the wireless association begins to work perfectly.

All the tests above mentioned lead me to the suspicious on the iPhone itself, so I enabled WiFi log on the iPhone for the further investigation, and following is odd part,

05/24/2022 5:36:13.622 {AUTOJOIN+} __WiFiDeviceManagerStateMachineRun: current state: Scanning Remaining Channels 05/24/2022 5:36:13.622 {AUTOJOIN*} __WiFiDeviceManagerProcessMultiStageScanResults: current state: Scanning Remaining Channels 05/24/2022 5:36:13.622 {AUTOJOIN, SCAN*} Scanning Remaining Channels found 7 networks 05/24/2022 5:36:13.622 __WiFiDeviceManagerProcessMultiStageScanResults: scanned# 7, known# 1, isHS20AccountConfigured 0, topRankedKnownNetwork (null) 05/24/2022 5:36:13.624 WiFiNetworkSetDisabledUntilDate: null disabled until date, removing property 05/24/2022 5:36:13.625 __WiFiDeviceManagerPrepareDeferredNetworkList: duplicate network MadeUpExpSSID found, skipping. 05/24/2022 5:36:13.625 Deferring auto-join attempt for MadeUpExpSSID(HS)
...... 05/24/2022 5:36:13.849 {AUTOJOIN, ASSOC*} Auto join association succeeded, network: MadeUpExpSSID ...... 05/24/2022 5:36:40.072 __WiFiDeviceManagerKnownNetworkSuitabilityCheck: MadeUpExpSSID auto-join disabled for potentially bypassing captive detection 05/24/2022 5:36:40.072 {AUTOJOIN*} __WiFiDeviceManagerFilterNetworks: MadeUpExpSSID not suitable

As above log, the iPhone successfully auto joined the WiFi network in 5:36:13.849, and all the sudden it failed to auto join in 5:36:40.072. This iPhone was left there over night, and no one was touching it during these period. It seems to me that this iPhone made a change on the treatment of very same WiFi network in between the time.

Wondering if anyone can help to sort it out, and explain how and why "auto-join disabled for potentially bypassing captive detection“.

I attached the full log as below for the reference. Thank you so much.

iPhones on iOS 15.x cannot automatically reconnect to an open WiFi captive portal network
 
 
Q