diff --git a/includes/wifi_functions.php b/includes/wifi_functions.php index 66217425..f55e525a 100755 --- a/includes/wifi_functions.php +++ b/includes/wifi_functions.php @@ -160,19 +160,20 @@ function sortNetworksByRSSI(&$networks) */ function getWifiInterface() { - $arrHostapdConf = parse_ini_file(RASPI_CONFIG.'/hostapd.ini'); - $iface = $_SESSION['ap_interface'] = isset($arrHostapdConf['WifiInterface']) ? $arrHostapdConf['WifiInterface'] : RASPI_WIFI_AP_INTERFACE; - // check for 2nd wifi interface -> wifi client on different interface - exec("iw dev | awk '$1==\"Interface\" && $2!=\"$iface\" {print $2}'",$iface2); - $client_iface = $_SESSION['wifi_client_interface'] = (empty($iface2) ? $iface : trim($iface2[0])); + $hostapdIni = RASPI_CONFIG . '/hostapd.ini'; + $arrHostapdConf = file_exists($hostapdIni) ? parse_ini_file($hostapdIni) : []; - // specifically for rpi0W in AP-STA mode, the above check ends up with the interfaces - // crossed over (wifi_client_interface vs 'ap_interface'), because the second interface (uap0) is - // created by raspap and used as the access point. - if ($client_iface == "uap0" && ($arrHostapdConf['WifiAPEnable'] ?? 0)){ - $_SESSION['wifi_client_interface'] = $iface; - $_SESSION['ap_interface'] = $client_iface; - } + $iface = $_SESSION['ap_interface'] = $arrHostapdConf['WifiInterface'] ?? RASPI_WIFI_AP_INTERFACE; + + // check for 2nd wifi interface -> wifi client on different interface + exec("iw dev | awk '$1==\"Interface\" && $2!=\"$iface\" {print $2}'", $iface2); + $client_iface = $_SESSION['wifi_client_interface'] = empty($iface2) ? $iface : trim($iface2[0]); + + // handle special case for RPi Zero W in AP-STA mode + if ($client_iface === "uap0" && ($arrHostapdConf['WifiAPEnable'] ?? 0)) { + $_SESSION['wifi_client_interface'] = $iface; + $_SESSION['ap_interface'] = $client_iface; + } } /*